summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeonah Moon <seonah1.moon@samsung.com>2016-04-07 11:41:57 +0900
committerSeonah Moon <seonah1.moon@samsung.com>2016-04-07 13:29:05 +0900
commit8a08705db260779441360e959b97b6c172f8acb0 (patch)
treee5cfc1f4bc28cd81e93a96f9707a0efb143d278a
parentf7bbc1c9b6a8e2c815d09612b53f453c90d962e0 (diff)
downloadcurl-8a08705db260779441360e959b97b6c172f8acb0.tar.gz
curl-8a08705db260779441360e959b97b6c172f8acb0.tar.bz2
curl-8a08705db260779441360e959b97b6c172f8acb0.zip
Imported Upstream version 7.44.0
Change-Id: I04e7fac0b620653ff8c174e87039756e98c4fb02
-rw-r--r--CHANGES7192
-rw-r--r--CMake/FindGSS.cmake2
-rw-r--r--CMakeLists.txt72
-rwxr-xr-xMacOSX-Framework4
-rw-r--r--Makefile13
-rw-r--r--Makefile.am141
-rw-r--r--Makefile.in211
-rw-r--r--README4
-rw-r--r--RELEASE-NOTES265
-rw-r--r--acinclude.m459
-rw-r--r--aclocal.m457
-rwxr-xr-xbuildconf4
-rwxr-xr-xcompile2
-rwxr-xr-xconfigure596
-rw-r--r--configure.ac276
-rw-r--r--curl-config.in2
-rwxr-xr-xdepcomp2
-rw-r--r--docs/BINDINGS47
-rw-r--r--docs/BUGS6
-rw-r--r--docs/CODE_OF_CONDUCT.md32
-rw-r--r--docs/CONTRIBUTE48
-rw-r--r--docs/DISTRO-DILEMMA14
-rw-r--r--docs/FAQ42
-rw-r--r--docs/FEATURES12
-rw-r--r--docs/HTTP-COOKIES2
-rw-r--r--docs/HTTP2.md107
-rw-r--r--docs/INSTALL53
-rw-r--r--docs/INSTALL.devcpp2
-rw-r--r--docs/INTERNALS909
-rw-r--r--docs/KNOWN_BUGS11
-rw-r--r--docs/LIBCURL-STRUCTS245
-rw-r--r--docs/LICENSE-MIXING46
-rw-r--r--docs/MAIL-ETIQUETTE2
-rw-r--r--docs/MANUAL4
-rw-r--r--docs/Makefile.am6
-rw-r--r--docs/Makefile.in35
-rw-r--r--docs/RELEASE-PROCEDURE17
-rw-r--r--docs/ROADMAP.md139
-rw-r--r--docs/SSL-PROBLEMS26
-rw-r--r--docs/THANKS72
-rw-r--r--docs/TODO339
-rw-r--r--docs/TheArtOfHttpScripting64
-rw-r--r--docs/VERSIONS20
-rw-r--r--docs/curl-config.html11
-rw-r--r--docs/curl-config.pdfbin6016 -> 6016 bytes
-rw-r--r--docs/curl.1113
-rw-r--r--docs/curl.html110
-rw-r--r--docs/curl.pdfbin104875 -> 108728 bytes
-rw-r--r--docs/examples/10-at-a-time.c9
-rw-r--r--docs/examples/Makefile.in77
-rw-r--r--docs/examples/Makefile.inc5
-rw-r--r--docs/examples/Makefile.m3245
-rw-r--r--docs/examples/Makefile.netware8
-rw-r--r--docs/examples/anyauthput.c7
-rw-r--r--docs/examples/asiohiper.cpp10
-rw-r--r--docs/examples/cacertinmem.c14
-rw-r--r--docs/examples/certinfo.c6
-rw-r--r--docs/examples/chkspeed.c6
-rw-r--r--docs/examples/cookie_interface.c14
-rw-r--r--docs/examples/curlgtk.c7
-rw-r--r--docs/examples/curlx.c7
-rw-r--r--docs/examples/debug.c6
-rw-r--r--docs/examples/evhiperfifo.c6
-rw-r--r--docs/examples/externalsocket.c7
-rw-r--r--docs/examples/fileupload.c6
-rw-r--r--docs/examples/fopen.c30
-rw-r--r--docs/examples/ftp-wildcard.c6
-rw-r--r--docs/examples/ftpget.c12
-rw-r--r--docs/examples/ftpgetinfo.c8
-rw-r--r--docs/examples/ftpgetresp.c10
-rw-r--r--docs/examples/ftpsget.c12
-rw-r--r--docs/examples/ftpupload.c11
-rw-r--r--docs/examples/ftpuploadresume.c12
-rw-r--r--docs/examples/getinfo.c11
-rw-r--r--docs/examples/getinmemory.c13
-rw-r--r--docs/examples/ghiper.c6
-rw-r--r--docs/examples/hiperfifo.c6
-rw-r--r--docs/examples/href_extractor.c14
-rw-r--r--docs/examples/htmltidy.c13
-rw-r--r--docs/examples/htmltitle.cpp8
-rw-r--r--docs/examples/http-post.c6
-rw-r--r--docs/examples/http2-download.c292
-rw-r--r--docs/examples/http2-serverpush.c317
-rw-r--r--docs/examples/http2-upload.c356
-rw-r--r--docs/examples/httpcustomheader.c6
-rw-r--r--docs/examples/httpput.c6
-rw-r--r--docs/examples/https.c6
-rw-r--r--docs/examples/imap-append.c6
-rw-r--r--docs/examples/imap-ssl.c2
-rw-r--r--docs/examples/multi-debugcallback.c7
-rw-r--r--docs/examples/multi-double.c6
-rw-r--r--docs/examples/multi-post.c11
-rw-r--r--docs/examples/multi-single.c11
-rw-r--r--docs/examples/multi-uv.c6
-rw-r--r--docs/examples/multithread.c8
-rw-r--r--docs/examples/opensslthreadlock.c13
-rw-r--r--docs/examples/persistant.c6
-rw-r--r--docs/examples/pop3-multi.c2
-rw-r--r--docs/examples/pop3-retr.c2
-rw-r--r--docs/examples/pop3-ssl.c4
-rw-r--r--docs/examples/pop3-tls.c2
-rw-r--r--docs/examples/post-callback.c6
-rw-r--r--docs/examples/postinmemory.c3
-rw-r--r--docs/examples/postit2.c2
-rw-r--r--docs/examples/sftpget.c2
-rw-r--r--docs/examples/smtp-mail.c2
-rw-r--r--docs/examples/smtp-ssl.c2
-rw-r--r--docs/examples/xmlstream.c2
-rw-r--r--docs/libcurl/ABI70
-rw-r--r--docs/libcurl/Makefile.am64
-rw-r--r--docs/libcurl/Makefile.in477
-rw-r--r--docs/libcurl/curl_easy_cleanup.37
-rw-r--r--docs/libcurl/curl_easy_cleanup.html32
-rw-r--r--docs/libcurl/curl_easy_cleanup.pdfbin4477 -> 4581 bytes
-rw-r--r--docs/libcurl/curl_easy_duphandle.36
-rw-r--r--docs/libcurl/curl_easy_duphandle.html14
-rw-r--r--docs/libcurl/curl_easy_duphandle.pdfbin4028 -> 4058 bytes
-rw-r--r--docs/libcurl/curl_easy_escape.36
-rw-r--r--docs/libcurl/curl_easy_escape.html35
-rw-r--r--docs/libcurl/curl_easy_escape.pdfbin4193 -> 4154 bytes
-rw-r--r--docs/libcurl/curl_easy_getinfo.322
-rw-r--r--docs/libcurl/curl_easy_getinfo.html55
-rw-r--r--docs/libcurl/curl_easy_getinfo.pdfbin17534 -> 18522 bytes
-rw-r--r--docs/libcurl/curl_easy_init.html29
-rw-r--r--docs/libcurl/curl_easy_init.pdfbin4197 -> 4197 bytes
-rw-r--r--docs/libcurl/curl_easy_pause.html11
-rw-r--r--docs/libcurl/curl_easy_pause.pdfbin7373 -> 7373 bytes
-rw-r--r--docs/libcurl/curl_easy_perform.34
-rw-r--r--docs/libcurl/curl_easy_perform.html29
-rw-r--r--docs/libcurl/curl_easy_perform.pdfbin4987 -> 4986 bytes
-rw-r--r--docs/libcurl/curl_easy_recv.37
-rw-r--r--docs/libcurl/curl_easy_recv.html13
-rw-r--r--docs/libcurl/curl_easy_recv.pdfbin5445 -> 5493 bytes
-rw-r--r--docs/libcurl/curl_easy_reset.html11
-rw-r--r--docs/libcurl/curl_easy_reset.pdfbin3701 -> 3701 bytes
-rw-r--r--docs/libcurl/curl_easy_send.37
-rw-r--r--docs/libcurl/curl_easy_send.html13
-rw-r--r--docs/libcurl/curl_easy_send.pdfbin5174 -> 5208 bytes
-rw-r--r--docs/libcurl/curl_easy_setopt.324
-rw-r--r--docs/libcurl/curl_easy_setopt.html54
-rw-r--r--docs/libcurl/curl_easy_setopt.pdfbin24241 -> 25370 bytes
-rw-r--r--docs/libcurl/curl_easy_strerror.html13
-rw-r--r--docs/libcurl/curl_easy_strerror.pdfbin3667 -> 3667 bytes
-rw-r--r--docs/libcurl/curl_easy_unescape.34
-rw-r--r--docs/libcurl/curl_easy_unescape.html13
-rw-r--r--docs/libcurl/curl_easy_unescape.pdfbin4179 -> 4179 bytes
-rw-r--r--docs/libcurl/curl_escape.html11
-rw-r--r--docs/libcurl/curl_escape.pdfbin4014 -> 4014 bytes
-rw-r--r--docs/libcurl/curl_formadd.35
-rw-r--r--docs/libcurl/curl_formadd.html159
-rw-r--r--docs/libcurl/curl_formadd.pdfbin12395 -> 12533 bytes
-rw-r--r--docs/libcurl/curl_formfree.html11
-rw-r--r--docs/libcurl/curl_formfree.pdfbin3767 -> 3767 bytes
-rw-r--r--docs/libcurl/curl_formget.34
-rw-r--r--docs/libcurl/curl_formget.html56
-rw-r--r--docs/libcurl/curl_formget.pdfbin4410 -> 4403 bytes
-rw-r--r--docs/libcurl/curl_free.html11
-rw-r--r--docs/libcurl/curl_free.pdfbin3356 -> 3356 bytes
-rw-r--r--docs/libcurl/curl_getdate.34
-rw-r--r--docs/libcurl/curl_getdate.html61
-rw-r--r--docs/libcurl/curl_getdate.pdfbin6462 -> 6462 bytes
-rw-r--r--docs/libcurl/curl_getenv.html11
-rw-r--r--docs/libcurl/curl_getenv.pdfbin4188 -> 4188 bytes
-rw-r--r--docs/libcurl/curl_global_cleanup.html11
-rw-r--r--docs/libcurl/curl_global_cleanup.pdfbin3860 -> 3860 bytes
-rw-r--r--docs/libcurl/curl_global_init.html11
-rw-r--r--docs/libcurl/curl_global_init.pdfbin5107 -> 5107 bytes
-rw-r--r--docs/libcurl/curl_global_init_mem.310
-rw-r--r--docs/libcurl/curl_global_init_mem.html20
-rw-r--r--docs/libcurl/curl_global_init_mem.pdfbin4083 -> 4281 bytes
-rw-r--r--docs/libcurl/curl_mprintf.html13
-rw-r--r--docs/libcurl/curl_mprintf.pdfbin5924 -> 5924 bytes
-rw-r--r--docs/libcurl/curl_multi_add_handle.html13
-rw-r--r--docs/libcurl/curl_multi_add_handle.pdfbin4737 -> 4737 bytes
-rw-r--r--docs/libcurl/curl_multi_assign.html13
-rw-r--r--docs/libcurl/curl_multi_assign.pdfbin4570 -> 4570 bytes
-rw-r--r--docs/libcurl/curl_multi_cleanup.html11
-rw-r--r--docs/libcurl/curl_multi_cleanup.pdfbin3812 -> 3812 bytes
-rw-r--r--docs/libcurl/curl_multi_fdset.html28
-rw-r--r--docs/libcurl/curl_multi_fdset.pdfbin5480 -> 5480 bytes
-rw-r--r--docs/libcurl/curl_multi_info_read.324
-rw-r--r--docs/libcurl/curl_multi_info_read.html56
-rw-r--r--docs/libcurl/curl_multi_info_read.pdfbin4915 -> 5883 bytes
-rw-r--r--docs/libcurl/curl_multi_init.html11
-rw-r--r--docs/libcurl/curl_multi_init.pdfbin3423 -> 3423 bytes
-rw-r--r--docs/libcurl/curl_multi_perform.351
-rw-r--r--docs/libcurl/curl_multi_perform.html65
-rw-r--r--docs/libcurl/curl_multi_perform.pdfbin5668 -> 7082 bytes
-rw-r--r--docs/libcurl/curl_multi_remove_handle.32
-rw-r--r--docs/libcurl/curl_multi_remove_handle.html15
-rw-r--r--docs/libcurl/curl_multi_remove_handle.pdfbin3980 -> 3953 bytes
-rw-r--r--docs/libcurl/curl_multi_setopt.340
-rw-r--r--docs/libcurl/curl_multi_setopt.html51
-rw-r--r--docs/libcurl/curl_multi_setopt.pdfbin4596 -> 5358 bytes
-rw-r--r--docs/libcurl/curl_multi_socket.html42
-rw-r--r--docs/libcurl/curl_multi_socket.pdfbin9402 -> 9402 bytes
-rw-r--r--docs/libcurl/curl_multi_socket_action.html46
-rw-r--r--docs/libcurl/curl_multi_socket_action.pdfbin9638 -> 9638 bytes
-rw-r--r--docs/libcurl/curl_multi_strerror.html15
-rw-r--r--docs/libcurl/curl_multi_strerror.pdfbin3433 -> 3433 bytes
-rw-r--r--docs/libcurl/curl_multi_timeout.318
-rw-r--r--docs/libcurl/curl_multi_timeout.html32
-rw-r--r--docs/libcurl/curl_multi_timeout.pdfbin4628 -> 4872 bytes
-rw-r--r--docs/libcurl/curl_multi_wait.32
-rw-r--r--docs/libcurl/curl_multi_wait.html44
-rw-r--r--docs/libcurl/curl_multi_wait.pdfbin4944 -> 4947 bytes
-rw-r--r--docs/libcurl/curl_share_cleanup.html11
-rw-r--r--docs/libcurl/curl_share_cleanup.pdfbin3630 -> 3630 bytes
-rw-r--r--docs/libcurl/curl_share_init.html11
-rw-r--r--docs/libcurl/curl_share_init.pdfbin3839 -> 3839 bytes
-rw-r--r--docs/libcurl/curl_share_setopt.html11
-rw-r--r--docs/libcurl/curl_share_setopt.pdfbin5585 -> 5585 bytes
-rw-r--r--docs/libcurl/curl_share_strerror.html15
-rw-r--r--docs/libcurl/curl_share_strerror.pdfbin3432 -> 3432 bytes
-rw-r--r--docs/libcurl/curl_slist_append.36
-rw-r--r--docs/libcurl/curl_slist_append.html34
-rw-r--r--docs/libcurl/curl_slist_append.pdfbin3817 -> 3842 bytes
-rw-r--r--docs/libcurl/curl_slist_free_all.html11
-rw-r--r--docs/libcurl/curl_slist_free_all.pdf18
-rw-r--r--docs/libcurl/curl_strequal.html11
-rw-r--r--docs/libcurl/curl_strequal.pdfbin4148 -> 4148 bytes
-rw-r--r--docs/libcurl/curl_unescape.html11
-rw-r--r--docs/libcurl/curl_unescape.pdfbin3967 -> 3967 bytes
-rw-r--r--docs/libcurl/curl_version.html11
-rw-r--r--docs/libcurl/curl_version.pdfbin3490 -> 3490 bytes
-rw-r--r--docs/libcurl/curl_version_info.34
-rw-r--r--docs/libcurl/curl_version_info.html63
-rw-r--r--docs/libcurl/curl_version_info.pdfbin8849 -> 8845 bytes
-rw-r--r--docs/libcurl/index.html1
-rw-r--r--docs/libcurl/libcurl-easy.html11
-rw-r--r--docs/libcurl/libcurl-easy.pdfbin4914 -> 4914 bytes
-rw-r--r--docs/libcurl/libcurl-errors.34
-rw-r--r--docs/libcurl/libcurl-errors.html13
-rw-r--r--docs/libcurl/libcurl-errors.pdfbin17578 -> 17585 bytes
-rw-r--r--docs/libcurl/libcurl-multi.351
-rw-r--r--docs/libcurl/libcurl-multi.html41
-rw-r--r--docs/libcurl/libcurl-multi.pdfbin11840 -> 11820 bytes
-rw-r--r--docs/libcurl/libcurl-share.html11
-rw-r--r--docs/libcurl/libcurl-share.pdfbin4999 -> 4999 bytes
-rw-r--r--docs/libcurl/libcurl-symbols.31616
-rw-r--r--docs/libcurl/libcurl-symbols.html1578
-rw-r--r--docs/libcurl/libcurl-symbols.pdfbin0 -> 38043 bytes
-rw-r--r--docs/libcurl/libcurl-thread.395
-rw-r--r--docs/libcurl/libcurl-thread.html90
-rw-r--r--docs/libcurl/libcurl-thread.pdfbin0 -> 6705 bytes
-rw-r--r--docs/libcurl/libcurl-tutorial.356
-rw-r--r--docs/libcurl/libcurl-tutorial.html244
-rw-r--r--docs/libcurl/libcurl-tutorial.pdfbin74083 -> 71613 bytes
-rw-r--r--docs/libcurl/libcurl.315
-rw-r--r--docs/libcurl/libcurl.html16
-rw-r--r--docs/libcurl/libcurl.pdfbin13825 -> 13572 bytes
-rw-r--r--docs/libcurl/mksymbolsmanpage.pl93
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html13
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdfbin4079 -> 4079 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html13
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdfbin4035 -> 4035 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html13
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdfbin4199 -> 4199 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.310
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html18
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdfbin4209 -> 4324 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html13
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf18
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html13
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdfbin4098 -> 4098 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.327
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.html28
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.pdfbin4003 -> 4497 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdfbin4046 -> 4043 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdfbin3790 -> 3787 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.349
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.html70
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.pdfbin0 -> 3790 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3132
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html131
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdfbin0 -> 6933 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.html20
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdfbin3836 -> 3836 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html31
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdfbin4421 -> 4421 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.html20
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.pdfbin3792 -> 3792 bytes
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.356
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html68
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdfbin4481 -> 5815 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdfbin3663 -> 3663 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdfbin4671 -> 4671 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdfbin3515 -> 3515 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.pdfbin3599 -> 3599 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.pdfbin3603 -> 3603 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdfbin4047 -> 4047 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.33
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.html17
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.pdfbin4306 -> 4416 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.35
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.pdfbin4289 -> 4289 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.313
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.html17
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.pdfbin3942 -> 3939 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdfbin4558 -> 4558 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdfbin3765 -> 3762 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html25
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdfbin3885 -> 3885 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdfbin3813 -> 3813 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdfbin4160 -> 4160 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.314
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdfbin3907 -> 4037 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.314
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdfbin3893 -> 4026 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdfbin4060 -> 4060 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html31
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdfbin5150 -> 5150 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html31
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdfbin5050 -> 5050 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html31
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdfbin5129 -> 5129 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.322
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.pdfbin4379 -> 4913 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.pdfbin4173 -> 4173 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.pdfbin4607 -> 4607 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.351
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.html67
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.pdfbin4195 -> 6463 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html40
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdfbin4668 -> 4668 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.pdfbin3753 -> 3753 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.pdfbin4541 -> 4541 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdfbin6299 -> 6299 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.pdfbin3822 -> 3822 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html233
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdfbin7759 -> 7759 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdfbin4586 -> 4586 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdfbin4454 -> 4454 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdfbin3946 -> 3946 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdfbin4048 -> 4048 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdfbin4060 -> 4060 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdfbin4081 -> 4081 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdfbin4015 -> 4015 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.pdfbin3736 -> 3736 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.326
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.html56
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdfbin4609 -> 5769 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdfbin3851 -> 3851 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.35
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.html16
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.pdfbin4046 -> 4089 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.pdfbin3849 -> 3849 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdfbin3756 -> 3756 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html29
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdfbin3948 -> 3948 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html33
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdfbin4656 -> 4656 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdfbin3990 -> 3990 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdfbin4013 -> 4013 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.html25
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.pdfbin4725 -> 4725 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdfbin4065 -> 4065 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdfbin3777 -> 3777 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdfbin3933 -> 3933 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html33
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdfbin4696 -> 4696 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdfbin4441 -> 4449 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdfbin4087 -> 4087 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdfbin4127 -> 4127 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdfbin3918 -> 3918 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdfbin3999 -> 3999 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdfbin3956 -> 3956 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdfbin3708 -> 3708 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdfbin4142 -> 4142 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.319
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.html33
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.pdfbin3815 -> 4076 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.pdfbin3901 -> 3901 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.325
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html36
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdfbin6359 -> 6757 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.312
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.html17
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.pdfbin4412 -> 4438 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.38
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html24
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdfbin4152 -> 4251 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.html20
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.pdfbin7475 -> 7475 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.pdfbin4043 -> 4043 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.335
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.html43
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.pdfbin5350 -> 6648 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.html66
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.pdfbin4474 -> 4474 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.37
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html18
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdfbin3964 -> 4188 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdfbin3785 -> 3785 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdfbin3635 -> 3635 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdfbin4178 -> 4205 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.314
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html36
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdfbin3904 -> 4063 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.317
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.html30
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.pdfbin4254 -> 4384 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.317
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html39
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdfbin4224 -> 4356 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.pdfbin4392 -> 4392 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdfbin3852 -> 3852 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdfbin4939 -> 4939 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.pdfbin3781 -> 3781 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html47
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdfbin4728 -> 4728 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.pdfbin3784 -> 3784 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.pdfbin4457 -> 4457 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.pdfbin3969 -> 3969 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.pdfbin3868 -> 3868 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdfbin4116 -> 4116 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdfbin4083 -> 4083 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdfbin3822 -> 3822 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdfbin3763 -> 3763 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdfbin4377 -> 4377 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.pdfbin3879 -> 3879 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdfbin4289 -> 4289 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdfbin4258 -> 4258 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdfbin4081 -> 4081 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdfbin4083 -> 4083 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.html40
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.pdfbin4129 -> 4129 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdfbin3970 -> 3970 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdfbin4011 -> 4011 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.pdfbin4768 -> 4768 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.pdfbin3990 -> 3990 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdfbin4091 -> 4091 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdfbin4053 -> 4053 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.pdfbin3883 -> 3883 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.pdfbin3733 -> 3733 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.pdfbin4514 -> 4514 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdfbin3816 -> 3816 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html59
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdfbin6058 -> 6058 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.pdfbin3952 -> 3952 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.363
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.html79
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdfbin0 -> 4220 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.387
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html96
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdfbin0 -> 5848 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.363
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.html69
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.pdfbin0 -> 4577 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.pdfbin3981 -> 3981 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.pdfbin5251 -> 5251 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.33
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.html42
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.pdfbin5674 -> 5851 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html39
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html50
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdfbin3880 -> 3880 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.html49
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.pdfbin4682 -> 4682 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.pdfbin3868 -> 3868 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.319
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.html32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.pdfbin3895 -> 4170 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdfbin3809 -> 3809 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdfbin5873 -> 5873 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.html97
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.pdfbin5240 -> 5240 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.pdfbin6395 -> 6395 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.pdfbin4289 -> 4289 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.pdfbin4117 -> 4117 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdfbin4050 -> 4050 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.pdfbin3853 -> 3853 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.pdfbin4194 -> 4194 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdfbin4059 -> 4059 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdfbin4166 -> 4166 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.345
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html65
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdfbin0 -> 3812 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdfbin4042 -> 4042 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.pdfbin3830 -> 3830 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.pdfbin5637 -> 5637 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdfbin3574 -> 3574 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.pdfbin4492 -> 4492 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.316
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.html29
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.pdfbin4177 -> 4334 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.311
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.html17
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.pdfbin5073 -> 5194 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html97
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdfbin5208 -> 5208 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.314
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.pdfbin3916 -> 4048 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.35
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.html57
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.pdfbin4987 -> 5745 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.html45
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.pdfbin4411 -> 4411 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html59
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdfbin4323 -> 4323 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdfbin3654 -> 3654 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdfbin7519 -> 7519 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdfbin4028 -> 4028 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdfbin4313 -> 4313 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdfbin3874 -> 3874 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.pdfbin3862 -> 3862 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.313
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html36
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdfbin4883 -> 5022 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.346
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.html65
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdfbin0 -> 3783 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.pdfbin4248 -> 4248 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html47
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdfbin6183 -> 6183 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdfbin3684 -> 3684 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdfbin3841 -> 3841 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdfbin4003 -> 4003 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdfbin3812 -> 3812 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdfbin3792 -> 3792 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html78
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdfbin6709 -> 6709 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf18
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdfbin4210 -> 4210 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdfbin4321 -> 4321 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.pdfbin4341 -> 4341 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdfbin3933 -> 3933 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.pdfbin3954 -> 3954 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdfbin3981 -> 3981 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.pdfbin4171 -> 4171 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdfbin4186 -> 4186 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.pdfbin4783 -> 4783 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdfbin4476 -> 4476 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.33
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html15
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdfbin3824 -> 3847 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.331
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdfbin4965 -> 4969 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdfbin3662 -> 3662 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdfbin3663 -> 3663 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.348
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html65
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdfbin0 -> 3947 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.326
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html19
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdfbin4100 -> 4570 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdfbin3844 -> 3844 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.314
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdfbin4993 -> 5814 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.314
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdfbin4932 -> 5713 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.353
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html67
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf111
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.313
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.html26
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.pdfbin3672 -> 3794 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html33
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdfbin3872 -> 4122 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html33
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdfbin3761 -> 4011 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html33
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdfbin3608 -> 3856 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdfbin4246 -> 4246 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdfbin3661 -> 3661 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdfbin3830 -> 3830 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.pdfbin4165 -> 4165 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.314
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.pdfbin4495 -> 4618 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.314
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html27
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdfbin4623 -> 4735 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.pdfbin3732 -> 3732 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdfbin3940 -> 3940 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdfbin4117 -> 4117 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdfbin3922 -> 3922 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdfbin3972 -> 3972 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdfbin4111 -> 4111 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdfbin5029 -> 5029 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdfbin3808 -> 3808 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.html52
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.pdfbin4742 -> 4742 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.325
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.html38
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.pdfbin14943 -> 15854 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.313
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.html26
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.pdfbin4014 -> 4142 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.html22
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.pdfbin4731 -> 4731 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.pdfbin5037 -> 5037 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.pdfbin4371 -> 4371 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.html35
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.pdfbin4253 -> 4254 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdfbin5926 -> 5926 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.312
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.html17
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.pdfbin4668 -> 4674 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html23
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdfbin5273 -> 5273 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.pdfbin3814 -> 3814 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdfbin5111 -> 5111 bytes
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html13
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdfbin4044 -> 4044 bytes
-rw-r--r--docs/libcurl/opts/Makefile.am95
-rw-r--r--docs/libcurl/opts/Makefile.in123
-rw-r--r--docs/libcurl/symbols-in-versions16
-rwxr-xr-xdocs/libcurl/symbols.pl4
-rw-r--r--docs/mk-ca-bundle.html18
-rw-r--r--docs/mk-ca-bundle.pdfbin7056 -> 7060 bytes
-rw-r--r--include/Makefile.in29
-rw-r--r--include/curl/Makefile.in31
-rw-r--r--include/curl/curl.h32
-rw-r--r--include/curl/curlver.h16
-rw-r--r--include/curl/mprintf.h9
-rw-r--r--include/curl/multi.h38
-rw-r--r--include/curl/typecheck-gcc.h2
-rwxr-xr-xinstall-sh366
-rw-r--r--lib/CMakeLists.txt5
-rw-r--r--lib/Makefile.Watcom4
-rw-r--r--lib/Makefile.am14
-rw-r--r--lib/Makefile.b324
-rw-r--r--lib/Makefile.in183
-rw-r--r--lib/Makefile.inc16
-rw-r--r--lib/Makefile.m3231
-rw-r--r--lib/Makefile.netware18
-rw-r--r--lib/Makefile.vc1018
-rw-r--r--lib/Makefile.vc11677
-rw-r--r--lib/Makefile.vc12677
-rw-r--r--lib/Makefile.vc14677
-rw-r--r--lib/Makefile.vc618
-rw-r--r--lib/Makefile.vc7677
-rw-r--r--lib/Makefile.vc818
-rw-r--r--lib/Makefile.vc918
-rw-r--r--lib/README.ares69
-rw-r--r--lib/README.curl_off_t68
-rw-r--r--lib/README.curlx61
-rw-r--r--lib/README.encoding60
-rw-r--r--lib/README.hostip35
-rw-r--r--lib/README.httpauth74
-rw-r--r--lib/README.memoryleak55
-rw-r--r--lib/README.multi_socket53
-rw-r--r--lib/README.pingpong30
-rw-r--r--lib/README.pipelining44
-rw-r--r--lib/amigaos.c4
-rw-r--r--lib/asyn-ares.c19
-rw-r--r--lib/asyn-thread.c19
-rw-r--r--lib/base64.c16
-rw-r--r--lib/bundles.c110
-rwxr-xr-xlib/checksrc.pl82
-rw-r--r--lib/checksrc.whitelist10
-rw-r--r--lib/config-amigaos.h3
-rw-r--r--lib/config-dos.h12
-rw-r--r--lib/config-mac.h3
-rw-r--r--lib/config-symbian.h10
-rw-r--r--lib/config-tpf.h4
-rw-r--r--lib/config-vxworks.h7
-rw-r--r--lib/config-win32.h14
-rw-r--r--lib/config-win32ce.h6
-rw-r--r--lib/conncache.c161
-rw-r--r--lib/conncache.h21
-rw-r--r--lib/connect.c95
-rw-r--r--lib/cookie.c97
-rw-r--r--lib/curl_addrinfo.c16
-rw-r--r--lib/curl_config.h.cmake5
-rw-r--r--lib/curl_config.h.in30
-rw-r--r--lib/curl_des.c63
-rw-r--r--lib/curl_des.h34
-rw-r--r--lib/curl_endian.c8
-rw-r--r--lib/curl_fnmatch.c7
-rw-r--r--lib/curl_gssapi.c6
-rw-r--r--lib/curl_gssapi.h13
-rw-r--r--lib/curl_memory.h3
-rw-r--r--lib/curl_memrchr.c8
-rw-r--r--lib/curl_multibyte.c15
-rw-r--r--lib/curl_multibyte.h8
-rw-r--r--lib/curl_ntlm.c23
-rw-r--r--lib/curl_ntlm_core.c91
-rw-r--r--lib/curl_ntlm_core.h4
-rw-r--r--lib/curl_ntlm_msgs.c22
-rw-r--r--lib/curl_ntlm_wb.c36
-rw-r--r--lib/curl_printf.h56
-rw-r--r--lib/curl_rtmp.c8
-rw-r--r--lib/curl_sasl.c597
-rw-r--r--lib/curl_sasl.h126
-rw-r--r--lib/curl_sasl_gssapi.c44
-rw-r--r--lib/curl_sasl_sspi.c168
-rw-r--r--lib/curl_setup.h34
-rw-r--r--lib/curl_sspi.c30
-rw-r--r--lib/curl_sspi.h4
-rw-r--r--lib/curl_threads.c10
-rw-r--r--lib/curlx.h5
-rw-r--r--lib/dict.c16
-rw-r--r--lib/easy.c10
-rw-r--r--lib/escape.c13
-rw-r--r--lib/file.c12
-rw-r--r--lib/fileinfo.c6
-rw-r--r--lib/firefox-db2pem.sh4
-rw-r--r--lib/formdata.c53
-rw-r--r--lib/ftp.c163
-rw-r--r--lib/ftp.h11
-rw-r--r--lib/ftplistparser.c9
-rw-r--r--lib/getinfo.c11
-rw-r--r--lib/gopher.c12
-rw-r--r--lib/hash.c72
-rw-r--r--lib/hash.h10
-rw-r--r--lib/hmac.c6
-rw-r--r--lib/hostasyn.c14
-rw-r--r--lib/hostcheck.c6
-rw-r--r--lib/hostip.c274
-rw-r--r--lib/hostip.h14
-rw-r--r--lib/hostip4.c7
-rw-r--r--lib/hostip6.c7
-rw-r--r--lib/hostsyn.c6
-rw-r--r--lib/http.c360
-rw-r--r--lib/http.h64
-rw-r--r--lib/http2.c1169
-rw-r--r--lib/http2.h12
-rw-r--r--lib/http_chunks.c12
-rw-r--r--lib/http_digest.c10
-rw-r--r--lib/http_negotiate.c110
-rw-r--r--lib/http_negotiate.h6
-rw-r--r--lib/http_negotiate_sspi.c93
-rw-r--r--lib/http_proxy.c55
-rw-r--r--lib/http_proxy.h7
-rw-r--r--lib/if2ip.c6
-rw-r--r--lib/imap.c982
-rw-r--r--lib/imap.h23
-rw-r--r--lib/inet_ntop.c3
-rw-r--r--lib/inet_ntop.h4
-rw-r--r--lib/krb5.c29
-rw-r--r--lib/ldap.c89
-rw-r--r--lib/libcurl.plist6
-rw-r--r--lib/md4.c494
-rw-r--r--lib/md5.c579
-rw-r--r--lib/memdebug.c39
-rw-r--r--lib/memdebug.h20
-rwxr-xr-xlib/mk-ca-bundle.pl35
-rw-r--r--lib/multi.c350
-rw-r--r--lib/multihandle.h52
-rw-r--r--lib/multiif.h16
-rw-r--r--lib/netrc.c20
-rw-r--r--lib/nwlib.c8
-rw-r--r--lib/openldap.c17
-rw-r--r--lib/pingpong.c12
-rw-r--r--lib/pipeline.c111
-rw-r--r--lib/pipeline.h12
-rw-r--r--lib/pop3.c973
-rw-r--r--lib/pop3.h23
-rw-r--r--lib/progress.c6
-rw-r--r--lib/rtsp.c24
-rw-r--r--lib/security.c137
-rw-r--r--lib/select.c8
-rw-r--r--lib/sendf.c19
-rw-r--r--lib/setup-vms.h16
-rw-r--r--lib/share.c27
-rw-r--r--lib/share.h4
-rw-r--r--lib/slist.c4
-rw-r--r--lib/smb.c22
-rw-r--r--lib/smtp.c931
-rw-r--r--lib/smtp.h21
-rw-r--r--lib/socks.c4
-rw-r--r--lib/socks_gssapi.c61
-rw-r--r--lib/socks_sspi.c41
-rw-r--r--lib/splay.c10
-rw-r--r--lib/ssh.c36
-rw-r--r--lib/ssh.h8
-rw-r--r--lib/strdup.c4
-rw-r--r--lib/strerror.c31
-rw-r--r--lib/telnet.c139
-rw-r--r--lib/tftp.c123
-rw-r--r--lib/timeval.c4
-rw-r--r--lib/transfer.c51
-rw-r--r--lib/transfer.h5
-rw-r--r--lib/url.c456
-rw-r--r--lib/url.h6
-rw-r--r--lib/urldata.h84
-rw-r--r--lib/version.c6
-rw-r--r--lib/vtls/axtls.c34
-rw-r--r--lib/vtls/axtls.h12
-rw-r--r--lib/vtls/cyassl.c216
-rw-r--r--lib/vtls/cyassl.h22
-rw-r--r--lib/vtls/darwinssl.c (renamed from lib/vtls/curl_darwinssl.c)25
-rw-r--r--lib/vtls/darwinssl.h (renamed from lib/vtls/curl_darwinssl.h)13
-rw-r--r--lib/vtls/gskit.c15
-rw-r--r--lib/vtls/gskit.h22
-rw-r--r--lib/vtls/gtls.c308
-rw-r--r--lib/vtls/gtls.h26
-rw-r--r--lib/vtls/nss.c327
-rw-r--r--lib/vtls/nssg.h24
-rw-r--r--lib/vtls/openssl.c751
-rw-r--r--lib/vtls/openssl.h23
-rw-r--r--lib/vtls/polarssl.c128
-rw-r--r--lib/vtls/polarssl.h12
-rw-r--r--lib/vtls/polarssl_threadlock.c5
-rw-r--r--lib/vtls/schannel.c (renamed from lib/vtls/curl_schannel.c)631
-rw-r--r--lib/vtls/schannel.h (renamed from lib/vtls/curl_schannel.h)7
-rw-r--r--lib/vtls/vtls.c135
-rw-r--r--lib/vtls/vtls.h28
-rw-r--r--lib/wildcard.c20
-rw-r--r--lib/x509asn1.c24
-rw-r--r--lib/x509asn1.h7
-rw-r--r--m4/curl-confopts.m436
-rw-r--r--m4/curl-openssl.m49
-rwxr-xr-xmaketgz9
-rwxr-xr-xmissing402
-rwxr-xr-xmkinstalldirs162
-rw-r--r--packages/AIX/Makefile.in29
-rw-r--r--packages/AIX/RPM/Makefile.in29
-rw-r--r--packages/EPM/Makefile.in29
-rw-r--r--packages/Linux/Makefile.in29
-rw-r--r--packages/Linux/RPM/Makefile.in31
-rw-r--r--packages/Makefile.in29
-rw-r--r--packages/OS400/README.OS40016
-rw-r--r--packages/OS400/ccsidcurl.c48
-rw-r--r--packages/OS400/ccsidcurl.h6
-rw-r--r--packages/OS400/curl.inc.in68
-rw-r--r--packages/OS400/makefile.sh2
-rw-r--r--packages/OS400/os400sys.c58
-rw-r--r--packages/Solaris/Makefile.in29
-rw-r--r--packages/Symbian/group/libcurl.mmp8
-rw-r--r--packages/TPF/curl.mak1
-rw-r--r--packages/Win32/Makefile.in29
-rw-r--r--packages/Win32/cygwin/Makefile.in29
-rw-r--r--packages/vms/Makefile.in29
-rw-r--r--packages/vms/build_gnv_curl_pcsi_desc.com8
-rw-r--r--packages/vms/build_vms.com2
-rw-r--r--packages/vms/gnv_link_curl.com13
-rw-r--r--projects/README51
-rw-r--r--projects/Windows/VC10/curl-all.sln (renamed from projects/Windows/VC10/curl.sln)42
-rw-r--r--projects/Windows/VC10/lib/libcurl.sln40
-rw-r--r--projects/Windows/VC10/lib/libcurl.vcxproj793
-rw-r--r--projects/Windows/VC10/src/curl.sln (renamed from projects/Windows/VC10/src/curlsrc.sln)26
-rw-r--r--projects/Windows/VC10/src/curl.vcxproj (renamed from projects/Windows/VC10/src/curlsrc.vcxproj)958
-rw-r--r--projects/Windows/VC11/curl-all.sln (renamed from projects/Windows/VC11/curl.sln)42
-rw-r--r--projects/Windows/VC11/lib/libcurl.sln40
-rw-r--r--projects/Windows/VC11/lib/libcurl.vcxproj801
-rw-r--r--projects/Windows/VC11/src/curl.sln (renamed from projects/Windows/VC11/src/curlsrc.sln)26
-rw-r--r--projects/Windows/VC11/src/curl.vcxproj (renamed from projects/Windows/VC11/src/curlsrc.vcxproj)966
-rw-r--r--projects/Windows/VC12/curl-all.sln (renamed from projects/Windows/VC12/curl.sln)42
-rw-r--r--projects/Windows/VC12/lib/libcurl.sln40
-rw-r--r--projects/Windows/VC12/lib/libcurl.vcxproj801
-rw-r--r--projects/Windows/VC12/src/curl.sln (renamed from projects/Windows/VC12/src/curlsrc.sln)26
-rw-r--r--projects/Windows/VC12/src/curl.vcxproj (renamed from projects/Windows/VC12/src/curlsrc.vcxproj)966
-rw-r--r--projects/Windows/VC14/curl-all.sln298
-rw-r--r--projects/Windows/VC14/lib/libcurl.sln181
-rw-r--r--projects/Windows/VC14/lib/libcurl.vcxproj2617
-rw-r--r--projects/Windows/VC14/src/curl.sln181
-rw-r--r--projects/Windows/VC14/src/curl.vcxproj2786
-rw-r--r--projects/Windows/VC6/curl-all.dsw (renamed from projects/Windows/VC6/curl.dsw)2
-rw-r--r--projects/Windows/VC6/lib/libcurl.dsp116
-rw-r--r--projects/Windows/VC6/src/curl.dsp (renamed from projects/Windows/VC6/src/curlsrc.dsp)200
-rw-r--r--projects/Windows/VC6/src/curl.dsw (renamed from projects/Windows/VC6/src/curlsrc.dsw)2
-rw-r--r--projects/Windows/VC7.1/curl-all.sln (renamed from projects/Windows/VC7.1/curl.sln)2
-rw-r--r--projects/Windows/VC7.1/lib/libcurl.vcproj71
-rw-r--r--projects/Windows/VC7.1/src/curl.sln (renamed from projects/Windows/VC7.1/src/curlsrc.sln)2
-rw-r--r--projects/Windows/VC7.1/src/curl.vcproj (renamed from projects/Windows/VC7.1/src/curlsrc.vcproj)74
-rw-r--r--projects/Windows/VC7/curl-all.sln (renamed from projects/Windows/VC7/curl.sln)2
-rw-r--r--projects/Windows/VC7/lib/libcurl.vcproj71
-rw-r--r--projects/Windows/VC7/src/curl.sln (renamed from projects/Windows/VC7/src/curlsrc.sln)2
-rw-r--r--projects/Windows/VC7/src/curl.vcproj (renamed from projects/Windows/VC7/src/curlsrc.vcproj)74
-rw-r--r--projects/Windows/VC8/curl-all.sln (renamed from projects/Windows/VC8/curl.sln)2
-rw-r--r--projects/Windows/VC8/lib/libcurl.sln20
-rw-r--r--projects/Windows/VC8/lib/libcurl.vcproj328
-rw-r--r--projects/Windows/VC8/src/curl.sln (renamed from projects/Windows/VC8/src/curlsrc.sln)2
-rw-r--r--projects/Windows/VC8/src/curl.vcproj (renamed from projects/Windows/VC8/src/curlsrc.vcproj)340
-rw-r--r--projects/Windows/VC9/curl-all.sln (renamed from projects/Windows/VC9/curl.sln)2
-rw-r--r--projects/Windows/VC9/lib/libcurl.sln20
-rw-r--r--projects/Windows/VC9/lib/libcurl.vcproj368
-rw-r--r--projects/Windows/VC9/src/curl.sln (renamed from projects/Windows/VC9/src/curlsrc.sln)2
-rw-r--r--projects/Windows/VC9/src/curl.vcproj (renamed from projects/Windows/VC9/src/curlsrc.vcproj)436
-rw-r--r--projects/build-openssl.bat44
-rw-r--r--projects/build-wolfssl.bat353
-rw-r--r--projects/checksrc.bat63
-rwxr-xr-xscripts/zsh.pl77
-rw-r--r--src/CMakeLists.txt15
-rw-r--r--src/Makefile.Watcom6
-rw-r--r--src/Makefile.am14
-rw-r--r--src/Makefile.b324
-rw-r--r--src/Makefile.in47
-rw-r--r--src/Makefile.m3225
-rw-r--r--src/Makefile.netware4
-rw-r--r--src/Makefile.vc108
-rw-r--r--src/Makefile.vc11544
-rw-r--r--src/Makefile.vc12544
-rw-r--r--src/Makefile.vc14544
-rw-r--r--src/Makefile.vc68
-rw-r--r--src/Makefile.vc7544
-rw-r--r--src/Makefile.vc88
-rw-r--r--src/Makefile.vc98
-rw-r--r--src/checksrc.whitelist3
-rw-r--r--src/mkhelp.pl10
-rw-r--r--src/tool_cb_dbg.c6
-rw-r--r--src/tool_cb_hdr.c7
-rw-r--r--src/tool_cb_wrt.c81
-rw-r--r--src/tool_cb_wrt.h3
-rw-r--r--src/tool_cfgable.c4
-rw-r--r--src/tool_cfgable.h11
-rw-r--r--src/tool_dirhie.c4
-rw-r--r--src/tool_easysrc.c6
-rw-r--r--src/tool_formparse.c22
-rw-r--r--src/tool_getparam.c85
-rw-r--r--src/tool_getpass.c12
-rw-r--r--src/tool_help.c18
-rw-r--r--src/tool_helpers.c6
-rw-r--r--src/tool_homedir.c6
-rw-r--r--src/tool_hugehelp.c9502
-rw-r--r--src/tool_metalink.c51
-rw-r--r--src/tool_msgs.c14
-rw-r--r--src/tool_msgs.h4
-rw-r--r--src/tool_operate.c103
-rw-r--r--src/tool_paramhlp.c19
-rw-r--r--src/tool_parsecfg.c45
-rw-r--r--src/tool_setopt.c6
-rw-r--r--src/tool_setopt.h2
-rw-r--r--src/tool_strdup.c4
-rw-r--r--src/tool_urlglob.c22
-rw-r--r--src/tool_urlglob.h4
-rw-r--r--src/tool_version.h2
-rw-r--r--src/tool_writeenv.c5
-rw-r--r--src/tool_writeout.c9
-rwxr-xr-xtest-driver139
-rw-r--r--tests/FILEFORMAT17
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/Makefile.in31
-rw-r--r--tests/README27
-rw-r--r--tests/certs/EdelCurlRoot-ca.cacert119
-rw-r--r--tests/certs/EdelCurlRoot-ca.crt119
-rw-r--r--tests/certs/EdelCurlRoot-ca.csr30
-rw-r--r--tests/certs/EdelCurlRoot-ca.derbin916 -> 918 bytes
-rw-r--r--tests/certs/EdelCurlRoot-ca.key50
-rw-r--r--tests/certs/EdelCurlRoot-ca.prm2
-rw-r--r--tests/certs/Makefile.am37
-rw-r--r--tests/certs/Makefile.in67
-rw-r--r--tests/certs/Server-localhost-sv.crl29
-rw-r--r--tests/certs/Server-localhost-sv.crt101
-rw-r--r--tests/certs/Server-localhost-sv.csr14
-rw-r--r--tests/certs/Server-localhost-sv.derbin837 -> 835 bytes
-rw-r--r--tests/certs/Server-localhost-sv.dhp5
-rw-r--r--tests/certs/Server-localhost-sv.key26
-rw-r--r--tests/certs/Server-localhost-sv.p12bin2958 -> 0 bytes
-rw-r--r--tests/certs/Server-localhost-sv.pem136
-rw-r--r--tests/certs/Server-localhost-sv.prm4
-rw-r--r--tests/certs/Server-localhost-sv.pub.derbin162 -> 162 bytes
-rw-r--r--tests/certs/Server-localhost-sv.pub.pem8
-rw-r--r--tests/certs/Server-localhost.nn-sv.crl30
-rw-r--r--tests/certs/Server-localhost.nn-sv.crt101
-rw-r--r--tests/certs/Server-localhost.nn-sv.csr14
-rw-r--r--tests/certs/Server-localhost.nn-sv.derbin843 -> 841 bytes
-rw-r--r--tests/certs/Server-localhost.nn-sv.dhp5
-rw-r--r--tests/certs/Server-localhost.nn-sv.key26
-rw-r--r--tests/certs/Server-localhost.nn-sv.pem136
-rw-r--r--tests/certs/Server-localhost.nn-sv.prm4
-rw-r--r--tests/certs/Server-localhost.nn-sv.pub.derbin162 -> 162 bytes
-rw-r--r--tests/certs/Server-localhost.nn-sv.pub.pem8
-rw-r--r--tests/certs/Server-localhost0h-sv.crl32
-rw-r--r--tests/certs/Server-localhost0h-sv.crt101
-rw-r--r--tests/certs/Server-localhost0h-sv.csr14
-rw-r--r--tests/certs/Server-localhost0h-sv.derbin839 -> 837 bytes
-rw-r--r--tests/certs/Server-localhost0h-sv.dhp5
-rw-r--r--tests/certs/Server-localhost0h-sv.key26
-rw-r--r--tests/certs/Server-localhost0h-sv.p12bin2970 -> 0 bytes
-rw-r--r--tests/certs/Server-localhost0h-sv.pem136
-rw-r--r--tests/certs/Server-localhost0h-sv.prm4
-rw-r--r--tests/certs/Server-localhost0h-sv.pub.derbin162 -> 162 bytes
-rw-r--r--tests/certs/Server-localhost0h-sv.pub.pem8
-rw-r--r--tests/certs/scripts/Makefile.in29
-rwxr-xr-xtests/certs/scripts/genroot.sh8
-rwxr-xr-xtests/certs/scripts/genserv.sh4
-rw-r--r--tests/data/CMakeLists.txt7
-rw-r--r--tests/data/Makefile.am2
-rw-r--r--tests/data/Makefile.in56
-rw-r--r--tests/data/Makefile.inc23
-rw-r--r--tests/data/test10014
-rw-r--r--tests/data/test10026
-rw-r--r--tests/data/test10302
-rw-r--r--tests/data/test10322
-rw-r--r--tests/data/test10402
-rw-r--r--tests/data/test10412
-rw-r--r--tests/data/test10422
-rw-r--r--tests/data/test10432
-rw-r--r--tests/data/test10582
-rw-r--r--tests/data/test10712
-rw-r--r--tests/data/test10752
-rw-r--r--tests/data/test10792
-rw-r--r--tests/data/test10872
-rw-r--r--tests/data/test10884
-rw-r--r--tests/data/test10952
-rw-r--r--tests/data/test11006
-rw-r--r--tests/data/test11012
-rw-r--r--tests/data/test11174
-rw-r--r--tests/data/test11214
-rw-r--r--tests/data/test11344
-rw-r--r--tests/data/test113595
-rw-r--r--tests/data/test122
-rw-r--r--tests/data/test12042
-rw-r--r--tests/data/test12122
-rw-r--r--tests/data/test12154
-rw-r--r--tests/data/test12292
-rw-r--r--tests/data/test12372
-rw-r--r--tests/data/test124164
-rw-r--r--tests/data/test1301
-rw-r--r--tests/data/test13104
-rw-r--r--tests/data/test13312
-rw-r--r--tests/data/test14012
-rw-r--r--tests/data/test14124
-rw-r--r--tests/data/test14184
-rw-r--r--tests/data/test142172
-rw-r--r--tests/data/test142263
-rw-r--r--tests/data/test142357
-rw-r--r--tests/data/test142476
-rw-r--r--tests/data/test14284
-rw-r--r--tests/data/test14342
-rw-r--r--tests/data/test1504
-rw-r--r--tests/data/test15101
-rw-r--r--tests/data/test151314
-rw-r--r--tests/data/test15272
-rw-r--r--tests/data/test1536
-rw-r--r--tests/data/test153030
-rw-r--r--tests/data/test1531bin0 -> 552 bytes
-rw-r--r--tests/data/test1542
-rw-r--r--tests/data/test1554
-rw-r--r--tests/data/test15930
-rw-r--r--tests/data/test162
-rw-r--r--tests/data/test160027
-rw-r--r--tests/data/test160126
-rw-r--r--tests/data/test160226
-rw-r--r--tests/data/test1622
-rw-r--r--tests/data/test1642
-rw-r--r--tests/data/test1674
-rw-r--r--tests/data/test1686
-rw-r--r--tests/data/test1696
-rw-r--r--tests/data/test172
-rw-r--r--tests/data/test1702
-rw-r--r--tests/data/test1764
-rw-r--r--tests/data/test18015
-rw-r--r--tests/data/test1842
-rw-r--r--tests/data/test1854
-rw-r--r--tests/data/test1884
-rw-r--r--tests/data/test1894
-rw-r--r--tests/data/test190210
-rw-r--r--tests/data/test1942
-rw-r--r--tests/data/test22
-rw-r--r--tests/data/test202310
-rw-r--r--tests/data/test202410
-rw-r--r--tests/data/test202516
-rw-r--r--tests/data/test202610
-rw-r--r--tests/data/test202712
-rw-r--r--tests/data/test202816
-rw-r--r--tests/data/test202914
-rw-r--r--tests/data/test203016
-rw-r--r--tests/data/test203120
-rw-r--r--tests/data/test20328
-rw-r--r--tests/data/test20338
-rw-r--r--tests/data/test203963
-rw-r--r--tests/data/test204069
-rw-r--r--tests/data/test204158
-rw-r--r--tests/data/test204244
-rw-r--r--tests/data/test204333
-rw-r--r--tests/data/test2082
-rw-r--r--tests/data/test2334
-rw-r--r--tests/data/test2344
-rw-r--r--tests/data/test2394
-rw-r--r--tests/data/test2422
-rw-r--r--tests/data/test2436
-rw-r--r--tests/data/test2454
-rw-r--r--tests/data/test2464
-rw-r--r--tests/data/test2562
-rw-r--r--tests/data/test2576
-rw-r--r--tests/data/test2584
-rw-r--r--tests/data/test2594
-rw-r--r--tests/data/test2642
-rw-r--r--tests/data/test2674
-rw-r--r--tests/data/test2732
-rw-r--r--tests/data/test2754
-rw-r--r--tests/data/test2782
-rw-r--r--tests/data/test2792
-rw-r--r--tests/data/test2872
-rw-r--r--tests/data/test2992
-rw-r--r--tests/data/test32
-rw-r--r--tests/data/test3012
-rw-r--r--tests/data/test318
-rw-r--r--tests/data/test32011
-rw-r--r--tests/data/test332
-rw-r--r--tests/data/test382
-rw-r--r--tests/data/test468
-rw-r--r--tests/data/test5032
-rw-r--r--tests/data/test5194
-rw-r--r--tests/data/test5222
-rw-r--r--tests/data/test5232
-rw-r--r--tests/data/test5406
-rw-r--r--tests/data/test5476
-rw-r--r--tests/data/test5486
-rw-r--r--tests/data/test5512
-rw-r--r--tests/data/test552bin142985 -> 142985 bytes
-rw-r--r--tests/data/test5556
-rw-r--r--tests/data/test562
-rw-r--r--tests/data/test5652
-rw-r--r--tests/data/test5906
-rw-r--r--tests/data/test5982
-rw-r--r--tests/data/test612
-rw-r--r--tests/data/test624
-rw-r--r--tests/data/test632
-rw-r--r--tests/data/test642
-rw-r--r--tests/data/test652
-rw-r--r--tests/data/test674
-rw-r--r--tests/data/test684
-rw-r--r--tests/data/test696
-rw-r--r--tests/data/test704
-rw-r--r--tests/data/test724
-rw-r--r--tests/data/test732
-rw-r--r--tests/data/test802
-rw-r--r--tests/data/test814
-rw-r--r--tests/data/test822
-rw-r--r--tests/data/test834
-rw-r--r--tests/data/test83756
-rw-r--r--tests/data/test83856
-rw-r--r--tests/data/test83956
-rw-r--r--tests/data/test842
-rw-r--r--tests/data/test84056
-rw-r--r--tests/data/test852
-rw-r--r--tests/data/test882
-rw-r--r--tests/data/test88357
-rw-r--r--tests/data/test88457
-rw-r--r--tests/data/test88556
-rw-r--r--tests/data/test88656
-rw-r--r--tests/data/test898
-rw-r--r--tests/data/test908
-rw-r--r--tests/data/test916
-rw-r--r--tests/data/test922
-rw-r--r--tests/data/test9382
-rw-r--r--tests/data/test94256
-rw-r--r--tests/data/test94356
-rw-r--r--tests/data/test94455
-rw-r--r--tests/data/test94555
-rw-r--r--tests/data/test962
-rw-r--r--tests/data/test992
-rwxr-xr-xtests/extern-scan.pl60
-rw-r--r--tests/libtest/CMakeLists.txt122
-rw-r--r--tests/libtest/Makefile.am6
-rw-r--r--tests/libtest/Makefile.in800
-rw-r--r--tests/libtest/Makefile.inc10
-rw-r--r--tests/libtest/first.c31
-rw-r--r--tests/libtest/lib1515.c3
-rw-r--r--tests/libtest/lib1527.c1
-rw-r--r--tests/libtest/lib1530.c67
-rw-r--r--tests/libtest/lib1531.c144
-rw-r--r--tests/libtest/lib506.c3
-rw-r--r--tests/libtest/lib530.c16
-rw-r--r--tests/libtest/lib539.c3
-rw-r--r--tests/libtest/lib557.c3
-rw-r--r--tests/libtest/lib568.c5
-rw-r--r--tests/libtest/lib569.c7
-rw-r--r--tests/libtest/lib570.c7
-rw-r--r--tests/libtest/lib571.c6
-rw-r--r--tests/libtest/lib572.c5
-rw-r--r--tests/libtest/lib582.c6
-rw-r--r--tests/libtest/lib586.c3
-rw-r--r--tests/libtest/test.h8
-rw-r--r--tests/libtest/testtrace.c6
-rwxr-xr-xtests/memanalyze.pl9
-rw-r--r--tests/runtests.html11
-rw-r--r--tests/runtests.pdfbin7639 -> 7639 bytes
-rwxr-xr-xtests/runtests.pl52
-rw-r--r--tests/server/CMakeLists.txt62
-rw-r--r--tests/server/Makefile.am2
-rw-r--r--tests/server/Makefile.in35
-rw-r--r--tests/server/getpart.c9
-rw-r--r--tests/server/rtspd.c44
-rw-r--r--tests/server/sws.c66
-rw-r--r--tests/server/tftpd.c6
-rw-r--r--tests/testcurl.html63
-rw-r--r--tests/testcurl.pdfbin7224 -> 7224 bytes
-rwxr-xr-xtests/testcurl.pl47
-rw-r--r--tests/unit/Makefile.in179
-rw-r--r--tests/unit/Makefile.inc14
-rw-r--r--tests/unit/curlcheck.h14
-rw-r--r--tests/unit/unit1305.c18
-rw-r--r--tests/unit/unit1397.c2
-rw-r--r--tests/unit/unit1600.c63
-rw-r--r--tests/unit/unit1601.c (renamed from lib/bundles.h)40
-rw-r--r--tests/unit/unit1602.c80
-rw-r--r--winbuild/BUILD.WINDOWS.txt29
-rw-r--r--winbuild/Makefile.vc15
-rw-r--r--winbuild/MakefileBuild.vc33
1354 files changed, 51386 insertions, 27316 deletions
diff --git a/CHANGES b/CHANGES
index ddcd07e6e..056e27463 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,5321 +6,5159 @@
Changelog
-Version 7.40.0 (7 Jan 2015)
+Version 7.44.0 (11 Aug 2015)
-Daniel Stenberg (7 Jan 2015)
-- RELEASE-NOTES: version 7.40.0
+Daniel Stenberg (11 Aug 2015)
+- RELEASE-NOTES: synced with c75a1e775061
-- darwinssl: fix session ID keys to only reuse identical sessions
-
- ...to avoid a session ID getting cached without certificate checking and
- then after a subsequent _enabling_ of the check libcurl could still
- re-use the session done without cert checks.
-
- Bug: http://curl.haxx.se/docs/adv_20150108A.html
- Reported-by: Marc Hesse
+- [Svyatoslav Mishyn brought this change]
-- tests: make sure CRLFs can't be used in URLs passed to proxy
+ curl_formget.3: correct return code
- Bug: http://curl.haxx.se/docs/adv_20150108B.html
+ Closes #375
-- url-parsing: reject CRLFs within URLs
+- [Svyatoslav Mishyn brought this change]
+
+ libcurl-tutorial.3: fix formatting
- Bug: http://curl.haxx.se/docs/adv_20150108B.html
- Reported-by: Andrey Labunets
+ Closes #374
-Steve Holme (7 Jan 2015)
-- ldap: Convert attribute output to UTF-8 when Unicode
+- [Svyatoslav Mishyn brought this change]
-- ldap: Convert DN output to UTF-8 when Unicode
+ curl_easy_recv.3: fix formatting
-Daniel Stenberg (7 Jan 2015)
-- hostip: remove 'stale' argument from Curl_fetch_addr proto
-
- Also, remove the log output of the resolved name is NOT in the cache in
- the spirit of only telling when something is actually happening.
+- [Anders Bakken brought this change]
-Steve Holme (7 Jan 2015)
-- ldap/imap: Fixed spelling mistake in comments and variable names
+ http2: discard frames with no SessionHandle
- Reported-by: Michael Osipov
+ Return 0 instead of NGHTTP2_ERR_CALLBACK_FAILURE if we can't locate the
+ SessionHandle. Apparently mod_h2 will sometimes send a frame for a
+ stream_id we're finished with.
+
+ Use nghttp2_session_get_stream_user_data and
+ nghttp2_session_set_stream_user_data to identify SessionHandles instead
+ of a hash.
+
+ Closes #372
-Daniel Stenberg (7 Jan 2015)
-- RELEASE-NOTES: updated with ./contributors.sh output
+- RELEASE-NOTES: synced with 9ee40ce2aba
-Dan Fandrich (5 Jan 2015)
-- curl_multibyte.h: Eliminated some trailing whitespace
+- [Viktor Szakats brought this change]
-Steve Holme (4 Jan 2015)
-- RELEASE-NOTES: Synced with ea93252ef1
-
-- ldap: Fixed Unicode usage for all Win32 builds
+ build: refer to fixed libidn versions
- Otherwise, the fixes in the previous commits would only be applicable
- to IDN and SSPI based builds and not others such as OpenSSL with LDAP
- enabled.
+ closes #371
-- ldap: Fixed memory leak from commit efb64fdf80
+- Revert "configure: disable libidn by default"
+
+ This reverts commit e6749055d65398315fd77f5b5b8234c5552ac2d3.
+
+ ... since libidn has since been fixed.
-- ldap: Fix memory leak from commit 3a805c5cc1
+- [Jakub Zakrzewski brought this change]
-- ldap: Fixed attribute variable warnings when Unicode is enabled
+ CMake: s/HAVE_GSS_API/HAVE_GSSAPI/ to match header define
- Use 'TCHAR *' for local attribute variable rather than 'char *'.
-
-- ldap: Fixed DN variable warnings when Unicode is enabled
+ Otherwise the build only pretended to use GSS-API
- Use 'TCHAR *' for local DN variable rather than 'char *'.
+ Closes #370
-- ldap: Remove the unescape_elements() function
+- SFTP: fix range request off-by-one in size check
- Due to the recent modifications this function is no longer used.
-
-- ldap.c: Fixed compilation warning
+ Reported-by: Tim Stack
- ldap.c:98: warning: extra tokens at end of #endif directive
+ Closes #359
-- ldap: Fixed support for Unicode filter in Win32 search call
-
-- ldap.c: Fixed compilation warning
+- test46: update cookie expire time
- ldap.c:802: warning: comparison between signed and unsigned integer
- expressions
+ ... since it went old and thus was expired and caused the test to fail!
-- ldap: Fixed support for Unicode attributes in Win32 search call
+Steve Holme (9 Aug 2015)
+- generate.bat: Use buildconf.bat for prerequisite file generation
-- ldap: Fixed memory leak from commit efb64fdf80
+- buildconf.bat: Tidy up of comments after recent commits
+
+- buildconf.bat: Added full generation of src\tool_hugehelp.c
- The unescapped DN was not freed after a successful character conversion.
+ Added support for generating the full man page based on code from
+ generate.bat.
-- ldap.c: Fixed compilation error
+- buildconf.bat: Added detection of groff, nroff, perl and gzip
- ldap.c:738: error: macro "LDAP_TRACE" passed 2 arguments, but takes
- just 1
+ To allow for the full generation of tool_hugehelp.c added detection of
+ the required programs - based on code from generate.bat.
-- ldap.c: Fixed compilation warning
+- buildconf.bat: Move DOS variable clean-up code to separate function
- ldap.c:89: warning: extra tokens at end of #endif directive
+ Rather than duplicate future variables, during clean-up of both success
+ and error conditions, use a common function that can be called by both.
-- ldap: Fixed support for Unicode DN in Win32 search call
+- RELEASE-NOTES: Synced with 39dcf352d2
-- ldap: Fixed Unicode user and password in Win32 bind calls
+- buildconf.bat: Added error messages on failure
-- ldap: Fixed Unicode host name in Win32 initialisation calls
+- buildconf.bat: Generate and clean files in the same order
-- ldap: Use host.dispname for infof() connection failure messages
+- buildconf.bat: Maintain compatibility with DOS based systems
- As host.name may be encoded use dispname for infof() failure messages.
-
-- ldap: Prefer 'CURLcode result' for curl result codes
+ Commit f08e30d7bc broke compatibility with DOS and non Windows NT based
+ versions of Windows due to the use of the setlocal command.
-- ldap: Pass write length in all Curl_client_write() calls
+Jay Satiro (9 Aug 2015)
+- CURLOPT_RESOLVE.3: Note removal support was added in 7.42
- As we get the length for the DN and attribute variables, and we know
- the length for the line terminator, pass the length values rather than
- zero as this will save Curl_client_write() from having to perform an
- additional strlen() call.
+ Bug: http://curl.haxx.se/mail/lib-2015-08/0019.html
+ Reported-by: Inca R
-- ldap: Fixed attribute memory leaks on failed client write
+Steve Holme (8 Aug 2015)
+- checksrc.bat: Fixed error when missing *.c and *.h files
- Fixed memory leaks from commit 086ad79970 as was noted in the commit
- comments.
+ File Not Found
-- ldap: Fixed DN memory leaks on failed client write
+- checksrc.bat: Fixed incorrect 'lib\vtls' path check in commit 333c36b276
+
+- checksrc.bat: Fixed error when [directory] isn't a curl source directory
- Fixed memory leaks from commit 086ad79970 as was noted in the commit
- comments.
+ The system cannot find the file specified.
-- curl_ntlm_core.c: Fixed compilation warning from commit 1cb17b2a5d
+- checksrc.bat: Added check for unknown arguments
+
+- scripts: Added missing comments
+
+- scripts: Always perform setlocal and endlocal calls in pairs
- curl_ntlm_core.c:146: warning: passing 'DES_cblock' (aka 'unsigned char
- [8]') to parameter of type 'char *' converts
- between pointers to integer types with different
- sign
+ Ensure that there isn't a mismatch between setlocal and endlocal calls,
+ which could have happened due to setlocal being called after certain
+ error conditions were checked for.
-- ntlm: Use extend_key_56_to_64() for all cryptography engines
+- scripts: Allow -help to be specified in any argument
- Rather than duplicate the code in setup_des_key() for OpenSSL and in
- extend_key_56_to_64() for non-OpenSSL based crypto engines, as it is
- the same, use extend_key_56_to_64() for all engines.
+ Allow the -help command line argument to be specified in any argument
+ and not just as the first.
-- RELEASE-NOTES: Synced with 34f0bd110f
+Daniel Stenberg (6 Aug 2015)
+- [juef brought this change]
-- curl_ntlm_core.c: Fixed compilation warning
+ curl_multi_remove_handle.3: fix formatting
- curl_ntlm_core.c:458: warning: 'ascii_uppercase_to_unicode_le' defined
- but not used
+ closes #366
-- endian: Fixed bit-shift in 64-bit integer read functions
+Steve Holme (6 Aug 2015)
+- README: Added notes about 'Running DLL based configurations'
- From commit 43792592ca and 4bb5a351b2.
+ ...as well as a TODO for a future enhancement to the project files.
- Reported-by: Michael Osipov
+ Thanks-to: Jay Satiro
-- smb: Use endian functions for reading NBT and message size values
+- RELEASE-NOTES: Synced with cf8975387f
-- endian: Added big endian read functions
-
-- endian: Added 64-bit integer read function
+- buildconf.bat: Synchronise no repository error with generate.bat
-- COPYING: Bumped copyright year to 2015
+- generate.bat: Added a check for the presence of a git repository
-- version: Bump copyright year to 2015
+- [Jay Satiro brought this change]
-- smb.c: Fixed compilation warnings
+ build: Added wolfSSL configurations to VC10+ project files
- smb.c:780: warning: passing 'char *' to parameter of type 'unsigned
- char *' converts between pointers to integer types with
- different sign
- smb.c:781: warning: passing 'char *' to parameter of type 'unsigned
- char *' converts between pointers to integer types with
- different sign
- smb.c:804: warning: passing 'char *' to parameter of type 'unsigned
- char *' converts between pointers to integer types with
- different sign
+ URL: https://github.com/bagder/curl/pull/174
-- smb: Use endian functions for reading length and offset values
+- [Jay Satiro brought this change]
-- endian: Added 16-bit integer write function
+ build: Added wolfSSL build script for Visual Studio projects
+
+ Added the wolfSSL build script, based on build-openssl.bat, as well as
+ the property sheet and header file required for the upcoming additions
+ to the Visual Studio project files.
-- endian: Fixed Linux compilation issues
+Daniel Stenberg (6 Aug 2015)
+- CHANGES: refer to the online changelog
- Having files named endian.[c|h] seemed to cause issues under Linux so
- renamed them both to have the curl_ prefix in the filenames.
+ Suggested-by: mc0e
-- [Julien Nabet brought this change]
+- [Isaac Boukris brought this change]
- lib1900.c: Fixed cppcheck error
+ NTLM: handle auth for only a single request
- lib1900.c:182: (style) Array index 'handlenum' is used before limits
- check
+ Currently when the server responds with 401 on NTLM authenticated
+ connection (re-used) we consider it to have failed. However this is
+ legitimate and may happen when for example IIS is set configured to
+ 'authPersistSingleRequest' or when the request goes thru a proxy (with
+ 'via' header).
- Bug: https://github.com/bagder/curl/pull/133
+ Implemented by imploying an additional state once a connection is
+ re-used to indicate that if we receive 401 we need to restart
+ authentication.
+
+ Closes #363
-- endian: Added standard function descriptions
+Steve Holme (5 Aug 2015)
+- RELEASE-NOTES: Synced with 473807b95f
-- endian: Renamed functions for curl API naming convention
+- generate.bat: Use buildconf.bat for prerequisite file clean-up
-- endian: Moved write functions to new module
+- buildconf.bat: Added support for file clean-up via -clean
-- endian: Moved read functions to new module
+- buildconf.bat: Added progress output
-- endian: Introduced endian module
-
- To allow the little endian functions, currently used in two of the NTLM
- source files, to be used by other modules such as the SMB module.
+- buildconf.bat: Avoid using goto for file not in repository
-- sepheaders.c: Applied curl oding standards
+Daniel Stenberg (5 Aug 2015)
+- curl_slist_append.3: add error checking to the example
-- [Julien Nabet brought this change]
+Steve Holme (5 Aug 2015)
+- buildconf.bat: Added display of usage text with -help
- sepheaders.c: Fixed resource leak on failure
+- buildconf.bat: Added exit codes for error handling
-- vtls: Use '(void) arg' for unused parameters
+- buildconf.bat: Added our standard copyright header
+
+- buildconf.bat: Use lower-case for commands and reserved keywords
+
+- generate.bat: Only clean prerequisite files when in ALL mode
+
+- generate.bat: Moved error messages out of sub-routines
+
+- generate.bat: More use of lower-case for commands and reserved keywords
+
+Daniel Stenberg (3 Aug 2015)
+- libcurl.3: fix a single typo
- Prefer void for unused parameters, rather than assigning an argument to
- itself as a) unintelligent compilers won't optimize it out, b) it can't
- be used for const parameters, c) it will cause compilation warnings for
- clang with -Wself-assign and d) is inconsistent with other areas of the
- curl source code.
+ Closes #361
-- smb.c: Fixed compilation warning
+- RELEASE-NOTES: synced with c4eb10e2f06f
+
+- SSH: three state machine fixups
- smb.c:586: warning: conversion to 'short unsigned int' from 'int' may
- alter its value
+ The SSH state machine didn't clear the 'rc' variable appropriately in a
+ two places which prevented it from looping the way it should. And it
+ lacked an 'else' statement that made it possible to erroneously get
+ stuck in the SSH_AUTH_AGENT state.
+
+ Reported-by: Tim Stack
+
+ Closes #357
-- [Bill Nagel brought this change]
+- curl_gssapi: remove 'const' to fix compiler warnings
+
+ initialization discards 'const' qualifier from pointer target type
- smb: Use the connection's upload buffer
+- docs: formpost needs the full size at start of upload
- Use the connection's upload buffer instead of allocating our own send
- buffer.
+ Closes #360
-- RELEASE-NOTES: Synced with 1933f9d33c
+Steve Holme (1 Aug 2015)
+- sspi: Fix typo from left over from old code which referenced NTLM
+
+ References to NTLM in the identity generation should have been removed
+ in commit c469941293 but not all were.
-- schannel: Moved the ISC return flag definitions to the SSPI module
+- win32: Fix compilation warnings from commit 40c921f8b8
- Moved our Initialize Security Context return attribute definitions to
- the SSPI module, as a) these can be used by other SSPI based providers
- and b) the ISC required attributes are defined there.
+ connect.c:953:5: warning: initializer element is not computable at load
+ time
+ connect.c:953:5: warning: missing initializer for field 'dwMinorVersion'
+ of 'OSVERSIONINFOEX'
+ curl_sspi.c:97:5: warning: initializer element is not computable at load
+ time
+ curl_sspi.c:97:5: warning: missing initializer for field 'szCSDVersion'
+ of 'OSVERSIONINFOEX'
-- [Bill Nagel brought this change]
+- schannel: Fix compilation warning from commit 7a8e861a56
+
+ schannel.c:1125:5: warning: missing initializer for field 'dwMinorVersion'
+ of 'OSVERSIONINFOEX' [-Wmissing-field-initializers
- smb: Close the connection after a failed client write
+Daniel Stenberg (31 Jul 2015)
+- libcurl-thread.3: minor reformatting
-- darwinssl: Fixed compilation warning
+Jay Satiro (31 Jul 2015)
+- curl_global_init_mem.3: Warn threaded resolver needs thread safe funcs
- vtls.c:683:43: warning: unused parameter 'data'
+ Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html
+ Reported-by: Eric Ridge
-- sockfilt.c: Fixed compilation warnings
+- libcurl-thread.3: Warn memory functions must be thread safe
- sockfilt.c:288: warning: conversion to 'DWORD' from 'size_t' may alter
- its value
- sockfilt.c:291: warning: conversion to 'DWORD' from 'size_t' may alter
- its value
- sockfilt.c:323: warning: conversion to 'DWORD' from 'size_t' may alter
- its value
- sockfilt.c:326: warning: conversion to 'DWORD' from 'size_t' may alter
- its value
+ Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html
+ Reported-by: Eric Ridge
-- test1509: Fixed compilation warning
+Steve Holme (31 Jul 2015)
+- RELEASE-NOTES: Synced with 8b1d00ac1a
+
+- INSTALL: Minor formatting correction in 'Legacy Windows and SSL' section
- lib1509.c:93:18: warning: conversion to 'long int' from 'size_t' may
- alter its value
+ ...as well as some rewording.
-- test556: Fixed compilation warning
+Kamil Dudka (30 Jul 2015)
+- http: move HTTP/2 cleanup code off http_disconnect()
- lib556.c:90: warning: conversion to 'unsigned int' from 'size_t' may
- alter its value
+ Otherwise it would never be called for an HTTP/2 connection, which has
+ its own disconnect handler.
+
+ I spotted this while debugging <https://bugzilla.redhat.com/1248389>
+ where the http_disconnect() handler was called on an FTP session handle
+ causing 'dnf' to crash. conn->data->req.protop of type (struct FTP *)
+ was reinterpreted as type (struct HTTP *) which resulted in SIGSEGV in
+ Curl_add_buffer_free() after printing the "Connection cache is full,
+ closing the oldest one." message.
+
+ A previously working version of libcurl started to crash after it was
+ recompiled with the HTTP/2 support despite the HTTP/2 protocol was not
+ actually used. This commit makes it work again although I suspect the
+ root cause (reinterpreting session handle data of incompatible protocol)
+ still has to be fixed. Otherwise the same will happen when mixing FTP
+ and HTTP/2 connections and exceeding the connection cache limit.
+
+ Reported-by: Tomas Tomecek
+ Bug: https://bugzilla.redhat.com/1248389
-- sasl_gssapi: Fixed use of dummy username with real username
+Daniel Stenberg (30 Jul 2015)
+- [Viktor Szakats brought this change]
-- vtls: Fixed compilation warning and an ignored return code
+ ABI doc: use secure URL
+
+- ABI: remove the ascii logo
- curl_schannel.h:123: warning: right-hand operand of comma expression
- has no effect
+ and made the indent level to 1
+
+- libcurl-multi.3: mention curl_multi_wait
- Some instances of the curlssl_close_all() function were declared with a
- void return type whilst others as int. The schannel version returned
- CURLE_NOT_BUILT_IN and others simply returned zero, but in all cases the
- return code was ignored by the calling function Curl_ssl_close_all().
+ ... and some general rewordings to improve this docs.
- For the time being and to keep the internal API consistent, changed all
- declarations to use a void return type.
+ Reported-by: Tim Stack
- To reduce code we might want to consider removing the unimplemented
- versions and use a void #define like schannel does.
+ Closes #356
-Daniel Stenberg (28 Dec 2014)
-- TODO: 2.3 Better support for same name resolves
-
-Steve Holme (28 Dec 2014)
-- test1520: Fixed initial teething problems
+Steve Holme (30 Jul 2015)
+- maketgz: Fixed some VC makefiles missing from the release tarball
- * Missing initialisation of upload status caused a seg fault
- * Missing data termination caused corrupt data to be uploaded
- * Data verification should be performed in <upload> element
- * Added missing recipient list cleanup
+ VC7, VC11, VC12 and VC14 makefiles were missing from the release
+ tarball.
-- test1520: Fixed compilation errors
+- RELEASE-NOTES: Synced with 2d7e165761
-- tests: Added test for bug #1456
+- build: Added VC14 project files to Makefile.am
-- checksrc.bat: Fixed a problem opening files with spaces in the filename
+- build: Added VC14 project files
+
+ Updates to Makefile.am for the generation of the project files in
+ the tarball to follow.
-- openldap: Prefer use of 'CURLcode result'
+Jay Satiro (29 Jul 2015)
+- libcurl-thread.3: Clarify CURLOPT_NOSIGNAL takes long value 1L
-- openldap: Use 'LDAPMessage *msg' for messages
+Steve Holme (28 Jul 2015)
+- generate.bat: Use lower-case for commands and reserved keywords
- This frees up the 'result' variable for CURLcode based result codes.
+ Whilst there are no coding standards for the batch files used in curl,
+ most tend to use lower-case for keywords and upper-case for variables.
-- nss: Don't ignore Curl_extract_certinfo() OOM failure
+- build: Added initial VC14 support to generate.bat
+
+ Visual Studio project files and updates to makefile.am to follow.
-- nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
+- build: Fixed missing .opensdf files from VC10+ .gitignore files
-- nss: Use 'CURLcode result' for curl result codes
+- build: Use $(ProjectName) macro for curl.exe and curld.exe filenames
- ...and don't use CURLE_OK in failure/success comparisons.
+ This wasn't possible with the old curlsrc project filenames, but like
+ commit 2a615a2b64 and 11397eb6dd for libcurl use the built in Visual
+ Studio macros for the output filenames.
-- getinfo: Code style policing
+- build: Renamed curl src Visual Studio project files
+
+ Following commit 957fcd9049 and in preparation for adding the VC14
+ project files renamed the curl source project files.
-- getinfo: Use 'CURLcode result' for curl result codes
+Daniel Stenberg (28 Jul 2015)
+- [Jay Satiro brought this change]
-- darwinssl: Use 'CURLcode result' for curl result codes
+ libcurl-thread.3: Revert to stricter handle wording
+
+ .. also update formatting and add WinSSL and wolfSSL to the SSL/TLS
+ handlers list.
-- polarssl: Use 'CURLcode result' for curl result codes
+- [Jay Satiro brought this change]
-- docs: Updated following the addition of SASL GSSAPI via GSS-API libraries
+ libcurl-thread.3: Consolidate thread safety info
- As this feature has been implemented for 7.40.0.
+ This is a new document to consolidate our thread safety information from
+ several documents (curl-www:features, libcurl.3, libcurl-tutorial.3).
+ Each document's section on multi-threading will now point to this one.
-- asiohiper.cpp: No need to initialise members of ConnInfo
+Steve Holme (27 Jul 2015)
+- README: Corrected formatting for 'Legacy Windows and SSL' section
- ...as calloc() automatically clears the area of memory with zeros.
+ ...as well as some wording.
-- asiohiper.cpp: Updated for curl coding standards
+- build-openssl.bat: Added support for VC14
+
+Daniel Stenberg (26 Jul 2015)
+- RELEASE-NOTES: synced with 0f645adc95390e8
+
+- test1902: attempt to make the test more reliable
- ...with the exception of the start of block statement curly brackets.
+ Closes #355
-- code/docs: Use correct case for IPv4 and IPv6
+- comment: fix comment about adding new option support
+
+Jay Satiro (25 Jul 2015)
+- build-openssl.bat: Show syntax if required args are missing
+
+Daniel Stenberg (26 Jul 2015)
+- TODO: improve how curl works in a windows console window
- For consistency, as we seem to have a bit of a mixed bag, changed all
- instances of ipv4 and ipv6 in comments and documentations to use the
- correct case.
+ Closes #322 for now
-- runtests: Fixed detection of Unix Sockets feature
+- 1.11 minimize dependencies with dynamicly loaded modules
- ...following change in curl --version output.
+ Closes #349 for now
-- code/docs: Use Unix rather than UNIX to avoid use of the trademark
+Jay Satiro (25 Jul 2015)
+- tool_operate: Fix CURLOPT_SSL_OPTIONS for builds without HTTPS
- Use Unix when generically writing about Unix based systems as UNIX is
- the trademark and should only be used in a particular product's name.
+ - Set CURLOPT_SSL_OPTIONS only if the tool enabled an SSL option.
+
+ Broken by me several days ago in 172b2be.
+ https://github.com/bagder/curl/commit/172b2be#diff-70b44ee478e58d4e1ddcf9c9a73d257b
+
+ Bug: http://curl.haxx.se/mail/lib-2015-07/0119.html
+ Reported-by: Dan Fandrich
-- ip2ip.c: Fixed compilation warning when IPv6 Scope ID not supported
+Daniel Stenberg (25 Jul 2015)
+- configure: check if OpenSSL linking wants -ldl
- if2ip.c:119: warning: unused parameter 'remote_scope_id'
+ To make it easier to link with static versions of OpenSSL, the configure
+ script now checks if -ldl is needed for linking.
- ...and some minor code style policing in the same function.
+ Help-by: TJ Saunders
-- vtls: Don't set cert info count until memory allocation is successful
+- [Michael Kaufmann brought this change]
+
+ HTTP: ignore "Content-Encoding: compress"
- Otherwise Curl_ssl_init_certinfo() can fail and set the num_of_certs
- member variable to the requested count, which could then be used
- incorrectly as libcurl closes down.
+ Currently, libcurl rejects responses with "Content-Encoding: compress"
+ when CURLOPT_ACCEPT_ENCODING is set to "". I think that libcurl should
+ treat the Content-Encoding "compress" the same as other
+ Content-Encodings that it does not support, e.g. "bzip2". That means
+ just ignoring it.
-- vtls: Use CURLcode for Curl_ssl_init_certinfo() return type
+- [Marcel Raad brought this change]
+
+ openssl: work around MSVC warning
- The return type for this function was 0 on success and 1 on error. This
- was then examined by the calling functions and, in most cases, used to
- return CURLE_OUT_OF_MEMORY.
+ MSVC 12 complains:
- Instead use CURLcode for the return type and return the out of memory
- error directly, propagating it up the call stack.
+ lib\vtls\openssl.c(1554): warning C4701: potentially uninitialized local
+ variable 'verstr' used It's a false positive, but as it's normally not,
+ I have enabled warning-as-error for that warning.
-- configure: Use camel case for UNIX sockets feature output
+- [Michał Fita brought this change]
+
+ configure: add --disable-rt option
- To match the curl --version output.
+ This option disables any attempts in configure to create dependency on
+ stuff requiring linking to librt.so and libpthread.so, in this case this
+ means clock_gettime(CLOCK_MONOTONIC, &mt).
+
+ We were in need to build curl which doesn't link libpthread.so to avoid
+ the following bug:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=16628.
-Marc Hoersken (26 Dec 2014)
-- sockfilt.c: Reduce the number of individual memory allocations
+Kamil Dudka (23 Jul 2015)
+- http2: verify success of strchr() in http2_send()
- Merge multiple internal arrays into one, even if some variables
- will not not be used. They are all created with the number of
- file descriptors as their size.
+ Detected by Coverity.
- Also fix possible thread handle leak in CloseHandle-loop.
+ Error: NULL_RETURNS:
+ lib/http2.c:1301: returned_null: "strchr" returns null (checked 103 out of 109 times).
+ lib/http2.c:1301: var_assigned: Assigning: "hdbuf" = null return value from "strchr".
+ lib/http2.c:1302: dereference: Incrementing a pointer which might be null: "hdbuf".
+ 1300|
+ 1301| hdbuf = strchr(hdbuf, 0x0a);
+ 1302|-> ++hdbuf;
+ 1303|
+ 1304| authority_idx = 0;
-- sockfilt.c: Replace 100ms sleep with thread throttle
+Jay Satiro (22 Jul 2015)
+- Windows: Fix VerifyVersionInfo calls
- Improves performance of test cases 574 and 575 by 50%.
+ - Fix the VerifyVersionInfo calls, which we use to test for the OS major
+ version, to also test for the minor version as well as the service pack
+ major and minor versions.
- A value of zero causes the thread to relinquish the remainder
- of its time slice to any other thread of equal priority that is
- ready to run. If there are no other threads of equal priority
- ready to run, the function returns immediately, and the thread
- continues execution.
+ MSDN: "If you are testing the major version, you must also test the
+ minor version and the service pack major and minor versions."
- http://msdn.microsoft.com/library/windows/desktop/ms686307.aspx
-
-Steve Holme (25 Dec 2014)
-- tool_help: Use camel case for UNIX sockets feature output
+ https://msdn.microsoft.com/en-us/library/windows/desktop/ms725492.aspx
- In line with the other features listed in the --version output,
- capitalise the UNIX socket feature.
+ Bug: https://github.com/bagder/curl/pull/353#issuecomment-123493098
+ Reported-by: Marcel Raad <MarcelRaad@users.noreply.github.com>
-- vtls: Use bool for Curl_ssl_getsessionid() return type
-
- The return type of this function is a boolean value, and even uses a
- bool internally, so use bool in the function declaration as well as
- the variables that store the return value, to avoid any confusion.
+- [Marcel Raad brought this change]
-- schannel: Minor code style policing for casts
+ schannel: Replace deprecated GetVersion with VerifyVersionInfo
-- schannel: Prefer 'CURLcode result' for curl result codes
+Steve Holme (21 Jul 2015)
+- makefile: Added support for VC14
-- cyassl: Prefer 'CURLcode result' for curl result codes
+Patrick Monnerat (21 Jul 2015)
+- os400: ebcdic wrappers for new functions. Upgrade ILE/RPG bindings.
-- tool_xattr: Use 'CURLcode result' for curl result codes
+- libcurl: VERSIONINFO update
+ Addition of new procedures curl_pushheader_bynum and curl_pushheader_byname
+ requires VERSIONINFO updating.
-- curl_ntlm_core.c: Fixed compilation warnings
-
- curl_ntlm_core.c:301: warning: pointer targets in passing argument 2 of
- 'CryptImportKey' differ in signedness
- curl_ntlm_core.c:310: warning: passing argument 6 of 'CryptEncrypt' from
- incompatible pointer type
- curl_ntlm_core.c:540: warning: passing argument 4 of 'CryptGetHashParam'
- from incompatible pointer type
+- http2: satisfy external references even if http2 is not compiled in.
-- RELEASE-NOTES: Synced with 8830df8b66
+Daniel Stenberg (20 Jul 2015)
+- http2: add stream != NULL checks for reliability
+
+ They should not trigger, but in case of internal problems we at least
+ avoid crashes this way.
-- gtls: Use preferred 'CURLcode result'
+Jay Satiro (18 Jul 2015)
+- symbols-in-versions: Add new CURLSSLOPT_NO_REVOKE symbol
-- openldap: Use standard naming for setup connection function
+- SSL: Add an option to disable certificate revocation checks
- Renamed ldap_setup() to ldap_setup_connection() to follow more widely
- used function naming.
-
-- rtmp: Use standard naming for setup connection function
+ New tool option --ssl-no-revoke.
+ New value CURLSSLOPT_NO_REVOKE for CURLOPT_SSL_OPTIONS.
- Renamed rtmp_setup() to rtmp_setup_connection() to follow more widely
- used function naming.
-
-- smb: Use standard naming for setup connection function
+ Currently this option applies only to WinSSL where we have automatic
+ certificate revocation checking by default. According to the
+ ssl-compared chart there are other backends that have automatic checking
+ (NSS, wolfSSL and DarwinSSL) so we could possibly accommodate them at
+ some later point.
- Renamed smb_setup() to smb_setup_connection() to follow more widely
- used function naming.
+ Bug: https://github.com/bagder/curl/issues/264
+ Reported-by: zenden2k <zenden2k@gmail.com>
-- config-win32.h: Fixed line length > 79 columns
-
-- openssl: Prefer we don't use NULL in comparisons
-
-- build: Removed WIN32 definition from the Visual Studio projects
+- runtests: Allow for spaces in curl custom path
- As this pre-processor definition is defined in curl_setup.h there is no
- need to include it in the Visual Studio project files.
+ .. also fix some typos in test's FILEFORMAT spec.
-- build: Removed WIN64 definition from the libcurl Visual Studio projects
+- [David Woodhouse brought this change]
+
+ ntlm_wb: Fix theoretical memory leak
- Removed the WIN64 pre-processor definition from the libcurl project
- files as:
+ Static analysis indicated that my commit 9008f3d564 ("ntlm_wb: Fix
+ hard-coded limit on NTLM auth packet size") introduced a potential
+ memory leak on an error path, because we forget to free the buffer
+ before returning an error.
- * WIN64 is not used in our source code
- * The curl projects files don't define it
- * It isn't required by or used in the platform SDK
- * For backwards compatability curl_setup.h defines WIN32
- * The compiler automatically defines _WIN64 for x64 builds
+ Fix this.
- Historically Visual Studio projects have defined WIN32, in addition to
- the compiler defined _WIN32 definition, and I had incorrectly changed
- that to WIN64 for the x64 libcurl builds but not in the curl projects.
-
- As such, it is questionable whether this should be defined or not. For
- more information see the following cache of a discussion that took
- place on the microsoft.public.vc.mfc newsgroup:
+ Although actually, it never happens in practice because we never *get*
+ here with state == NTLMSTATE_TYPE1. The state is always zero. That
+ might want cleaning up in a separate patch.
- http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2008-06/msg00074.html
+ Reported-by: Terri Oda
-- openssl.c Fix for compilation errors with older versions of OpenSSL
+- strerror: Add CRYPT_E_REVOKED to SSPI error strings
+
+Kamil Dudka (14 Jul 2015)
+- libtest: call PR_Cleanup() on exit if NSPR is used
- openssl.c:1408: error: 'TLS1_1_VERSION' undeclared
- openssl.c:1411: error: 'TLS1_2_VERSION' undeclared
+ This prevents valgrind from reporting possibly lost memory that NSPR
+ uses for file descriptor cache and other globally allocated internal
+ data structures.
+
+ Reported-by: Štefan Kremeň
-Daniel Stenberg (22 Dec 2014)
+Jay Satiro (14 Jul 2015)
- [John Malmberg brought this change]
- Fix comment edit in vms/backup_gnv_curl_src.com
+ openssl: VMS support for SHA256
- packages/vms/backup_gnv_curl_src.com: Originally copied from Bash port.
-
-- curl: show size of inhibited data when using -v
+ setup-vms.h: More symbols for SHA256, hacks for older VAX
- To offer some more info and yet it doesn't use more lines.
+ openssl.h: Use OpenSSL OPENSSL_NO_SHA256 macro to allow building on VAX.
+
+ openssl.c: Use OpenSSL version checks and OPENSSL_NO_SHA256 macro to
+ allow building on VAX and 64 bit VMS.
-- openssl: fix SSL/TLS versions in verbose output
+- examples: Fix typo in multi-single.c
-- openssl: make it compile against openssl 1.1.0-DEV master branch
+Daniel Stenberg (7 Jul 2015)
+- [Tatsuhiro Tsujikawa brought this change]
-Marc Hoersken (22 Dec 2014)
-- sshserver.pl: clarify and streamline variable names
+ http2: Fix memory leak in push header array
-Daniel Stenberg (21 Dec 2014)
-- openssl: warn for SRP set if SSLv3 is used, not for TLS version
-
- ... as it requires TLS and it was was left to warn on the default from
- when default was SSL...
+Dan Fandrich (2 Jul 2015)
+- test2041: fixed line endings in protocol part
-- smb: use memcpy() instead of strncpy()
-
- ... as it never copies the trailing zero anyway and always just the four
- bytes so let's not mislead anyone into thinking it is actually treated
- as a string.
-
- Coverity CID: 1260214
+- cyassl: fixed mismatched sha256sum function prototype
-- [John E. Malmberg brought this change]
+Daniel Stenberg (1 Jul 2015)
+- [moparisthebest brought this change]
- VMS: Updates for 0740-0D1220
-
- lib/setup-vms.h : VAX HP OpenSSL port is ancient, needs help.
- More defines to set symbols to uppercase.
-
- src/tool_main.c : Fix parameter to vms_special_exit() call.
-
- packages/vms/ :
- backup_gnv_curl_src.com : Fix the error message to have the correct package.
+ SSL: Pinned public key hash support
+
+- examples: provide <DESC> sections
+
+- [John Malmberg brought this change]
+
+ OpenVMS: VMS Software, Inc now the supplier.
- build_curl-config_script.com : Rewrite to be more accurate.
+ setup-vms.h: Symbol case fixups submitted by Michael Steve
- build_libcurl_pc.com : Use tool_version.h now.
+ build_gnv_curl_pcsi_desc.com: VSI aka as VMS Software, is now the
+ supplier of new versions of VMS. The install kit needs to accept
+ VSI as a producer.
+
+Jay Satiro (30 Jun 2015)
+- multi: Move http2 push function declarations to header end
- build_vms.com : Fix to handle lib/vtls directory.
+ This change necessary for binary compatibility.
- curl_gnv_build_steps.txt : Updated build procedure documentation.
+ Prior to this change test 1135 failed due to the order of functions.
+
+- symbols-in-versions: Add new http2 push symbols
- generate_config_vms_h_curl.com :
- * VAX does not support 64 bit ints, so no NTLM support for now.
- * VAX HP SSL port is ancient, needs some help.
- * Disable NGHTTP2 for now, not ported to VMS.
- * Disable UNIX_SOCKETS, not available on VMS yet.
- * HP GSSAPI port does not have gss_nt_service_name.
+ Prior to this change test 1119 failed due to the missing symbols.
+
+Daniel Stenberg (30 Jun 2015)
+- RELEASE-NOTES: synced with e6749055d653
+
+- configure: disable libidn by default
- gnv_link_curl.com : Update for new curl structure.
+ For security reasons, until there is a fix.
- pcsi_product_gnv_curl.com : Set up to optionally do a complete build.
+ Bug: http://curl.haxx.se/mail/lib-2015-06/0143.html
+ Reported-by: Gustavo Grieco, Feist Josselin
-Marc Hoersken (21 Dec 2014)
-- sockfilt.c: use non-Ex functions that are available before WinXP
+- SSL-PROBLEMS: mention WinSSL problems in WinXP
+
+- CODE_OF_CONDUCT.md: added
- It was initially reported by Guenter that GetFileSizeEx
- requires (_WIN32_WINNT >= 0x0500) to be true.
+ Just to underscore how we treat each other in this project. Nothing new
+ really, but could be useful for newcomers and outsiders to see our
+ values.
-- tests: use Cygwin-style paths in SSH, SSHD and SFTP config files
+- tool_header_cb: fflush the header stream
- Second patch to enable Windows support using Cygwin-based OpenSSH.
+ Flush the header stream when -D is used so that they are sent off
+ earlier.
- Tested with CopSSH 5.0.0 free edition using an msys shell on Windows 7.
+ Bug: https://github.com/bagder/curl/issues/324
+ Reported-by: Cédric Connes
-- tests: support spaces in paths to SSH, SSHD and SFTP binaries
-
- First patch to enable Windows support using Cygwin-based OpenSSH.
+- [Roger Leigh brought this change]
-Steve Holme (20 Dec 2014)
-- non-ascii: Reduce variable usage
-
- Removed 'next' variable in Curl_convert_form(). Rather than setting it
- from 'form->next' and using that to set 'form' after the conversion
- just use 'form = form->next' instead.
+ tests: Distribute CMakeLists.txt files in subdirectories
-- non-ascii: Prefer while loop rather than a do loop
+- CURLOPT_FAILONERROR.3: mention that it closes the connection
- This also removes the need to check that the 'form' argument is valid.
+ Reported-by: bemoody
+ Bug: https://github.com/bagder/curl/issues/325
-- non-ascii: Reduce variable scope
-
- As 'result' isn't used out side the conversion callback code and
- previously caused variable shadowing in the libiconv based code.
+- curl_multi_setopt.3: alpha sort the options
-- non-ascii: We prefer 'CURLcode result'
-
- This also fixes a variable shadowing issue when HAVE_ICONV is defined
- as rc was declared for the result code of libiconv based functions.
+- curl_multi_setopt.3: add the new push options
-Marc Hoersken (19 Dec 2014)
-- secureserver.pl: clean up formatting of config and fix verbose output
-
- Verbose output was not matching the actual configuration file,
- because FIPS and Windows conditions were ignored.
+- [Tatsuhiro Tsujikawa brought this change]
-- secureserver.pl: update Windows detection and fix path conversion
+ http2: Use nghttp2 library error code for error return value
-- secureserver.pl: make OpenSSL CApath and cert absolute path values
+- [Tatsuhiro Tsujikawa brought this change]
+
+ http2: Harden header validation for curl_pushheader_byname
- Recent stunnel versions (5.08) seem to have trouble with relative
- paths on Windows. This turns the relative paths into absolute ones.
+ Since we do prefix match using given header by application code
+ against header name pair in format "NAME:VALUE", and VALUE part can
+ contain ":", we have to careful about existence of ":" in header
+ parameter. ":" should be allowed to match HTTP/2 pseudo-header field,
+ and other use of ":" in header must be treated as error, and
+ curl_pushheader_byname should return NULL. This commit implements
+ this behaviour.
-Patrick Monnerat (18 Dec 2014)
-- if2ip: dummy scope parameter for Curl_if2ip() call in SIOCGIFADDR-enabled code.
+- [Tatsuhiro Tsujikawa brought this change]
-- [Kyle J. McKay brought this change]
+ CURLMOPT_PUSHFUNCTION.3: Remove unused variable
- parseurlandfillconn(): fix improper non-numeric scope_id stripping.
- Fixes SF bug 1149: http://sourceforge.net/p/curl/bugs/1449/
+- CURLMOPT_PUSHFUNCTION.3: added example
-- IPV6: address scope != scope id
- There was a confusion between these: this commit tries to disambiguate them.
- - Scope can be computed from the address itself.
- - Scope id is scope dependent: it is currently defined as 1-based local
- interface index for link-local scoped addresses, and as a site index(?) for
- (obsolete) site-local addresses. Linux only supports it for link-local
- addresses.
- The URL parser properly parses a scope id as an interface index, but stores it
- in a field named "scope": confusion. The field has been renamed into "scope_id".
- Curl_if2ip() used the scope id as it was a scope. This caused failures
- to bind to an interface.
- Scope is now computed from the addresses and Curl_if2ip() matches them.
- If redundantly specified in the URL, scope id is check for mismatch with
- the interface index.
-
- This commit should fix SF bug #1451.
+- http2: curl_pushheader_byname now takes a const char *
-- connect: singleipconnect(): properly try other address families after failure
+- http2-serverpush.c: example code
-Daniel Stenberg (16 Dec 2014)
-- SFTP: work-around servers that return zero size on STAT
-
- Bug: http://curl.haxx.se/mail/lib-2014-12/0103.html
- Pathed-by: Marc Renault
+- http2: free all header memory after the push callback
-- glob_next_url: make the loop count upwards
-
- As the former contruct apparently caused a compiler warning, mentioned
- in d8efde07e556c.
+- http2: init the pushed transfer properly
-- tool_operate: we prefer 'CURLcode result'
+- http2: fixed the header accessor functions for the push callback
-- tool_urlglob: unify return codes to use CURLcode
-
- There was a mix of GlobCode, CURLcode and ints and they were mostly
- passing around CURLcode errors. This change makes the functions use only
- CURLcode and removes the GlobCode type completely.
+- http2: setup the new pushed stream properly
-- tool_urlglob.c: partly reverse dc19789444
-
- The loop in glob_next_url() needs to be done backwards to maintain the
- logic. dc19789444 caused test 1235 to fail.
+- http2: initial implementation of the push callback
-- KNOWN_BUGS: the SFTP code doesn't support CURLINFO_FILETIME
+- http2: initial HTTP/2 server push types/docs
-- [Jay Satiro brought this change]
+- test1531: verify POSTFIELDSIZE set after add_handle
+
+ Following the fix made in 903b6e05565bf.
- opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
+- pretransfer: init state.infilesize here, not in add_handle
- Change CURLOPT_TIMEOUT doc to warn that if CURLOPT_TIMEOUT and
- CURLOPT_TIMEOUT_MS are both set whichever one is set last is the one
- that will be used.
+ ... to properly support that options are set to the handle after it is
+ added to the multi handle.
- Prior to this change that behavior was only noted in the
- CURLOPT_TIMEOUT_MS doc.
+ Bug: http://curl.haxx.se/mail/lib-2015-06/0122.html
+ Reported-by: Stefan Bühler
-Nick Zitzmann (15 Dec 2014)
-- darwinssl: fix incorrect usage of aprintf()
-
- Commit b13923f changed an snprintf() to use aprintf(), but the API usage
- wasn't correct, and was causing a crash to occur. This fixes it.
+Jay Satiro (21 Jun 2015)
+- [Lior Kaplan brought this change]
-Steve Holme (14 Dec 2014)
-- copyright: Updated the copyright year following recent updates
+ tool_help: fix --tlsv1 help text to use >= for TLSv1
-Daniel Stenberg (14 Dec 2014)
-- tool_urlglob.c: reverse two loops
+- INSTALL: Advise use of non-native SSL for Windows <= XP
- By counting from 0 and up instead of backwards like before, we remove
- the need for the "funny" check of the unsigned variable when decreased
- passed zero. Easier to read and less risk for compiler warnings.
-
-Marc Hoersken (14 Dec 2014)
-- tool_urlglob.c: Added braces to clarify the conditions
-
-- tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
+ Advise that WinSSL in versions <= XP will not be able to connect to
+ servers that no longer support the legacy handshakes and algorithms used
+ by those versions, and to use an alternate backend like OpenSSL instead.
- The >= 0 is actually not required, since i underflows and
- the for-loop is stopped using the < condition, but this
- makes the VS2012 compiler and code analysis happy.
+ Bug: https://github.com/bagder/curl/issues/253
+ Reported-by: zenden2k <zenden2k@gmail.com>
-- tool_binmode.c: Explicitly ignore the return code of setmode
+Kamil Dudka (19 Jun 2015)
+- curl_easy_setopt.3: restore contents removed by mistake
- Fixes code analysis warning C6031:
- return value ignored: <function> could return unexpected value
+ ... in commit curl-7_43_0-18-g570076e
-- lib: Fixed multiple code analysis warnings if SAL are available
+Daniel Stenberg (19 Jun 2015)
+- curl_easy_setopt.3: mention CURLOPT_PIPEWAIT
+
+Jay Satiro (18 Jun 2015)
+- cookie: Fix bug in export if any-domain cookie is present
- warning C28252: Inconsistent annotation for function:
- parameter has another annotation on this instance
+ In 3013bb6 I had changed cookie export to ignore any-domain cookies,
+ however the logic I used to do so was incorrect, and would lead to a
+ busy loop in the case of exporting a cookie list that contained
+ any-domain cookies. The result of that is worse though, because in that
+ case the other cookies would not be written resulting in an empty file
+ once the application is terminated to stop the busy loop.
-Steve Holme (14 Dec 2014)
-- smb.c: Fixed code analysis warning
+Dan Fandrich (18 Jun 2015)
+- FTP: fixed compiling with --disable-proxy, broken in b88f980a
+
+Daniel Stenberg (18 Jun 2015)
+- tool: always provide negotiate/kerberos options
- smb.c:320: warning C6297: Arithmetic overflow: 32-bit value is shifted,
- then cast to 64-bit value. Result may not be an expected
- value
+ libcurl can still be built with it, even if the tool is not. Maintain
+ independence!
-Marc Hoersken (14 Dec 2014)
-- tool_util.c: Use GetTickCount64 if it is available
+- TODO: Support IDNA2008
-Steve Holme (14 Dec 2014)
-- smb: Use HAVE_PROCESS_H for process.h inclusion
+- [Viktor Szakats brought this change]
+
+ Makefile.m32: add support for CURL_LDFLAG_EXTRAS
- Rather than testing against _WIN32 use the preferred HAVE_PROCESS_H
- pre-processor define when including process.h.
+ It is similar to existing CURL_CFLAG_EXTRAS, but for
+ extra linker option.
-Daniel Stenberg (14 Dec 2014)
-- darwinssl: aprintf() to allocate the session key
+- RTSP: removed another piece of dead code
- ... to avoid using a fixed memory size that risks being too large or too
- small.
+ Coverity CID 1306668
-Marc Hoersken (14 Dec 2014)
-- curl_schannel: Improvements to memory re-allocation strategy
+- openssl: fix use of uninitialized buffer
- - do not grow memory by doubling its size
- - do not leak previously allocated memory if reallocation fails
- - replace while-loop with a single check to make sure
- that the requested amount of data fits into the buffer
+ Make sure that the error buffer is always initialized and simplify the
+ use of it to make the logic easier.
- Bug: http://curl.haxx.se/bug/view.cgi?id=1450
- Reported-by: Warren Menzer
+ Bug: https://github.com/bagder/curl/issues/318
+ Reported-by: sneis
-Steve Holme (14 Dec 2014)
-- asyn-ares: We prefer use of 'CURLcode result'
+- examples: more descriptions
-Marc Hoersken (14 Dec 2014)
-- curl_schannel.c: Data may be available before connection shutdown
+- examples: add descriptions with <DESC>
+
+ Using this fixed format for example descriptions, we can generate a
+ better list on the web site.
-Steve Holme (14 Dec 2014)
-- http2: Use 'CURLcode result' for curl result codes
+- libcurl-errors.3: fix typo
-- asyn-thread: We prefer 'CURLcode result'
+- curl_easy_setopt.3: option order doesn't matter
-- smb: Fixed unnecessary initialisation of struct member variables
+- openssl: fix build with BoringSSL
- There is no need to set the 'state' and 'result' member variables to
- SMB_REQUESTING (0) and CURLE_OK (0) after the allocation via calloc()
- as calloc() initialises the contents to zero.
+ OPENSSL_load_builtin_modules does not exist in BoringSSL. Regression
+ from cae43a1
-- ntlm: Fixed return code for bad type-2 Target Info
-
- Use CURLE_BAD_CONTENT_ENCODING for bad type-2 Target Info security
- buffers just like we do for bad decodes.
+- [Paul Howarth brought this change]
-- ntlm: Remove unnecessary casts in readshort_le()
+ openssl: Fix build with openssl < ~ 0.9.8f
- I don't think both of my fix ups from yesterday were needed to fix the
- compilation warning, so remove the one that I think is unnecessary and
- let the next Android autobuild prove/disprove it.
+ The symbol SSL3_MT_NEWSESSION_TICKET appears to have been introduced at
+ around openssl 0.9.8f, and the use of it in lib/vtls/openssl.c breaks
+ builds with older openssls (certainly with 0.9.8b, which is the latest
+ older version I have to try with).
-- curl_ntlm_msgs.c: Another attempt to fix compilation warning
+- FTP: do the HTTP CONNECT for data connection blocking
- curl_ntlm_msgs.c:170: warning: conversion to 'short unsigned int' from
- 'int' may alter its value
+ ** WORK-AROUND **
+
+ The introduced non-blocking general behaviour for Curl_proxyCONNECT()
+ didn't work for the data connection establishment unless it was very
+ fast. The newly introduced function argument makes it operate in a more
+ blocking manner, more like it used to work in the past. This blocking
+ approach is only used when the FTP data connecting through HTTP proxy.
+
+ Blocking like this is bad. A better fix would make it work more
+ asynchronously.
+
+ Bug: https://github.com/bagder/curl/issues/278
-Guenter Knauf (13 Dec 2014)
-- synctime.c: added own user-agent string.
+- bump: start the journey toward 7.44.0
-Steve Holme (13 Dec 2014)
-- smb.c: Fixed line longer than 79 columns
+Jay Satiro (17 Jun 2015)
+- CURLOPT_ERRORBUFFER.3: Fix example, escape backslashes
-- curl_ntlm_msgs.c: Fixed compilation warning from commit 783b5c3b11
-
- curl_ntlm_msgs.c:169: warning: conversion to 'short unsigned int' from
- 'int' may alter its value
+- CURLOPT_ERRORBUFFER.3: Improve example
-Guenter Knauf (13 Dec 2014)
-- mk-ca-bundle.pl: restored forced run again.
+Version 7.43.0 (17 Jun 2015)
-- synctime.c: removed another timeserver URL.
-
- worldtimeserver.com seems also no longer available.
+Daniel Stenberg (17 Jun 2015)
+- RELEASE-NOTES: 7.43.0 release
-- synctime.c: fixed timeserver URLs.
-
- For getting the date header its not necessary to access special
- pages or even CGI scripts - all pages including the main index
- reply with the date header, therefore shortened URLs to domain.
- Removed worldtime.com; added pool.ntp.org.
+- THANKS: updated with 7.43.0 names
-Steve Holme (13 Dec 2014)
-- ftp.c: Fixed compilation warning when no verbose string support
-
- ftp.c:819: warning: unused parameter 'lineno'
+- [Kamil Dudka brought this change]
-- smb: Added state change functions to assist with debugging
+ http: do not leak basic auth credentials on re-used connections
- For debugging purposes, and as per other protocols within curl, added
- state change functions rather than changing the states directly.
+ CVE-2015-3236
+
+ This partially reverts commit curl-7_39_0-237-g87c4abb
+
+ Reported-by: Tomas Tomecek, Kamil Dudka
+ Bug: http://curl.haxx.se/docs/adv_20150617A.html
-- ntlm: Use short integer when decoding 16-bit values
+- [Kamil Dudka brought this change]
-- RELEASE-NOTES: Synced with 6291a16b20
+ test2040: verify basic auth on re-used connections
-- smtp.c: Fixed compilation warnings
+- SMB: rangecheck values read off incoming packet
- smtp.c:2357 warning: adding 'size_t' (aka 'unsigned long') to a string
- does not append to the string
- smtp.c:2375 warning: adding 'size_t' (aka 'unsigned long') to a string
- does not append to the string
- smtp.c:2386 warning: adding 'size_t' (aka 'unsigned long') to a string
- does not append to the string
+ CVE-2015-3237
- Used array index notation instead.
-
-- smb: Disable SMB when 64-bit integers are not supported
+ Detected by Coverity. CID 1299430.
- This fixes compilation issues with compilers that don't support 64-bit
- integers through long long or __int64.
+ Bug: http://curl.haxx.se/docs/adv_20150617B.html
-- ntlm: Disable NTLM v2 when 64-bit integers are not supported
+Jay Satiro (17 Jun 2015)
+- schannel: schannel_recv overhaul
- This fixes compilation issues with compilers that don't support 64-bit
- integers through long long or __int64 which was introduced in commit
- 07b66cbfa4.
-
-- ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
+ This commit is several drafts squashed together. The changes from each
+ draft are noted below. If any changes are similar and possibly
+ contradictory the change in the latest draft takes precedence.
- Previously USE_NTLM2SESSION would only be defined automatically when
- USE_NTRESPONSES wasn't already defined. Separated the two definitions
- so that the user can manually set USE_NTRESPONSES themselves but
- USE_NTLM2SESSION is defined automatically if they don't define it.
-
-- smtp.c: Fixed line longer than 79 columns
-
-- config-win32.h: Don't enable Windows Crypt API if using OpenSSL
+ Bug: https://github.com/bagder/curl/issues/244
+ Reported-by: Chris Araman
- As the OpenSSL and NSS Crypto engines are prefered by the core NTLM
- routines, to the Windows Crypt API, don't define USE_WIN32_CRYPT
- automatically when either OpenSSL or NSS are in use - doing so would
- disable NTLM2Session responses in NTLM type-3 messages.
-
-- smtp: Fixed inappropriate free of the scratch buffer
+ %%
+ %% Draft 1
+ %%
+ - return 0 if len == 0. that will have to be documented.
+ - continue on and process the caches regardless of raw recv
+ - if decrypted data will be returned then set the error code to CURLE_OK
+ and return its count
+ - if decrypted data will not be returned and the connection has closed
+ (eg nread == 0) then return 0 and CURLE_OK
+ - if decrypted data will not be returned and the connection *hasn't*
+ closed then set the error code to CURLE_AGAIN --only if an error code
+ isn't already set-- and return -1
+ - narrow the Win2k workaround to only Win2k
- If the scratch buffer was allocated in a previous call to
- Curl_smtp_escape_eob(), a new buffer not allocated in the subsequent
- call and no action taken by that call, then an attempt would be made to
- try and free the buffer which, by now, would be part of the data->state
- structure.
+ %%
+ %% Draft 2
+ %%
+ - Trying out a change in flow to handle corner cases.
- This bug was introduced in commit 4bd860a001.
-
-- smtp: Fixed dot stuffing when EOL characters were at end of input buffers
+ %%
+ %% Draft 3
+ %%
+ - Back out the lazier decryption change made in draft2.
- Fixed a problem with the CRLF. detection when multiple buffers were
- used to upload an email to libcurl and the line ending character(s)
- appeared at the end of each buffer. This meant any lines which started
- with . would not be escaped into .. and could be interpreted as the end
- of transmission string instead.
+ %%
+ %% Draft 4
+ %%
+ - Some formatting and branching changes
+ - Decrypt all encrypted cached data when len == 0
+ - Save connection closed state
+ - Change special Win2k check to use connection closed state
- This only affected libcurl based applications that used a read function
- and wasn't reproducible with the curl command-line tool.
+ %%
+ %% Draft 5
+ %%
+ - Default to CURLE_AGAIN in cleanup if an error code wasn't set and the
+ connection isn't closed.
- Bug: http://curl.haxx.se/bug/view.cgi?id=1456
- Assisted-by: Patrick Monnerat
-
-Daniel Stenberg (11 Dec 2014)
-- telnet: fix "cast increases required alignment of target type"
-
-- ntlm_wb_response: fix "statement not reached"
+ %%
+ %% Draft 6
+ %%
+ - Save the last error only if it is an unrecoverable error.
- ... and I could use a break instead of a goto to end the loop.
+ Prior to this I saved the last error state in all cases; unfortunately
+ the logic to cover that in all cases would lead to some muddle and I'm
+ concerned that could then lead to a bug in the future so I've replaced
+ it by only recording an unrecoverable error and that state will persist.
- Bug: http://curl.haxx.se/mail/lib-2014-12/0089.html
- Reported-by: Tor Arntsen
-
-Steve Holme (10 Dec 2014)
-- RELEASE-NOTES: Synced with 1cc5194337
+ - Do not recurse on renegotiation.
- Added some bug fixes that I had missed in previous synchronisations.
-
-Daniel Stenberg (10 Dec 2014)
-- Curl_unix2addr: avoid using the variable name 'sun'
+ Instead we'll continue on to process any trailing encrypted data
+ received during the renegotiation only.
- I suspect this causes compile failures on Solaris:
+ - Move the err checks in cleanup after the check for decrypted data.
- Bug: http://curl.haxx.se/mail/lib-2014-12/0081.html
-
-Steve Holme (10 Dec 2014)
-- url.c: Fixed compilation warning when USE_NTLM is not defined
+ In either case decrypted data is always returned but I think it's easier
+ to understand when those err checks come after the decrypted data check.
- url.c:3078: warning: variable 'credentialsMatch' set but not used
-
-- parsedate.c: Fixed compilation warning
+ %%
+ %% Draft 7
+ %%
+ - Regardless of len value go directly to cleanup if there is an
+ unrecoverable error or a close_notify was already received. Prior to
+ this change we only acknowledged those two states if len != 0.
- parsedate.c:548: warning: 'parsed' may be used uninitialized in this
- function
+ - Fix a bug in connection closed behavior: Set the error state in the
+ cleanup, because we don't know for sure it's an error until that time.
- As curl_getdate() returns -1 when parsedate() fails we can initialise
- parsed to -1.
-
-Daniel Stenberg (10 Dec 2014)
-- TODO: Cache negative name resolves
+ - (Related to above) In the case the connection is closed go "greedy"
+ with the decryption to make sure all remaining encrypted data has been
+ decrypted even if it is not needed at that time by the caller. This is
+ necessary because we can only tell if the connection closed gracefully
+ (close_notify) once all encrypted data has been decrypted.
- Worth exploring
-
-- ldap: check Curl_client_write() return codes
+ - Do not renegotiate when an unrecoverable error is pending.
- There might be one or two memory leaks left in the error paths.
-
-- ldap: rename variables to comply to curl standards
-
-Dan Fandrich (10 Dec 2014)
-- sws.c: Fixed 'rc' may be used uninitialized warning
-
-- cookies: Improved OOM handling in cookies
+ %%
+ %% Draft 8
+ %%
+ - Don't show 'server closed the connection' info message twice.
- This fixes the test 506 torture test. The internal cookie API really
- ought to be improved to separate cookie parsing errors (which may be
- ignored) with OOM errors (which should be fatal).
+ - Show an info message if server closed abruptly (missing close_notify).
-Guenter Knauf (9 Dec 2014)
-- synctime.c: fixed user-agent setting.
+Daniel Stenberg (16 Jun 2015)
+- [Paul Oliver brought this change]
+
+ Fix typo in docs
- Some websites meanwhile refuse to reply to requests from ancient
- browsers like IE6, therefore I've comment out this setting, but
- also fixed the string to now fake IE8 if someone enables it.
+ s/curret/current/
-Daniel Stenberg (9 Dec 2014)
-- smb: fix unused return code warning
+- [Viktor Szakats brought this change]
-Patrick Monnerat (9 Dec 2014)
-- Curl_client_write() & al.: chop long data, convert data only once.
+ docs: update URLs
-Guenter Knauf (9 Dec 2014)
-- VC build: added sspi define for winssl-zlib builds.
+- RELEASE-NOTES: synced with f29f2cbd00dbe5f
-Daniel Stenberg (9 Dec 2014)
-- schannel_recv: return the correct code
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1462
- Reported-by: Tae Hyoung Ahn
+- [Viktor Szakats brought this change]
-- http2: avoid logging neg "failure" if h2 was not requested
+ README: use secure protocol for Git repository
-- openldap: do not ignore Curl_client_write() return codes
+- [Viktor Szakats brought this change]
-- compile: warn on unused return code from Curl_client_write()
+ HTTP2.md: use SSL/TLS IETF URLs
-Patrick Monnerat (8 Dec 2014)
-- SMB: Fix a data size mismatch that broke SMB on big-endian platforms
+- [Viktor Szakats brought this change]
-Steve Holme (7 Dec 2014)
-- smb: Fixed Windows autoconf builds following commit eb88d778e7
+ LICENSE-MIXING: update URLs
- As Windows based autoconf builds don't yet define USE_WIN32_CRYPTO
- either explicitly through --enable-win32-cypto or automatically on
- _WIN32 based platforms, subsequent builds broke with the following
- error message:
-
- "Can't compile NTLM support without a crypto library."
+ * use SSL/TLS where available
+ * follow permanent redirects
-- RELEASE-NOTES: Synced with 526603ff05
+- LICENSE-MIXING: refreshed
-- [Bill Nagel brought this change]
+- curl_easy_duphandle: see also *reset
- smb: Build with SSPI enabled
+- rtsp_do: fix DEAD CODE
- Build SMB/CIFS protocol support when SSPI is enabled.
-
-- [Bill Nagel brought this change]
-
- ntlm: Use Windows Crypt API
+ "At condition p_request, the value of p_request cannot be NULL."
- Allow the use of the Windows Crypt API for NTLMv1 functions.
+ Coverity CID 1306668.
-Dan Fandrich (7 Dec 2014)
-- cookie.c: Refactored cleanup code to simplify
+- security:choose_mech fix DEAD CODE warning
- Also, fixed the outdated comments on the cookie API.
-
-- get_url_file_name: Fixed crash on OOM on debug build
+ ... by removing the "do {} while (0)" block.
- This caused a null-pointer dereference which caused a few dozen
- torture tests to fail.
+ Coverity CID 1306669
-Steve Holme (6 Dec 2014)
-- sws.c: Fixed compilation warning
-
- sws.c:2191 warning: 'rc' may be used uninitialized in this function
+- curl.1: netrc is in man section 5
-- ftp.c: Fixed compilation warnings when proxy support disabled
+- curl.1: small format fix
- ftp.c:1827 warning: unused parameter 'newhost'
- ftp.c:1827 warning: unused parameter 'newport'
+ use \fI-style instead of .BR for references
-- smb: Fixed a problem with large file transfers
+- urldata: store POST size in state.infilesize too
- Fixed an issue with the message size calculation where the raw bytes
- from the buffer were interpreted as signed values rather than unsigned
- values.
+ ... to simplify checking when PUT _or_ POST have completed.
- Reported-by: Gisle Vanem
- Assisted-by: Bill Nagel
+ Reported-by: Frank Meier
+ Bug: http://curl.haxx.se/mail/lib-2015-06/0019.html
-- smb: Moved the URL decoding into a separate function
+Dan Fandrich (14 Jun 2015)
+- test1530: added http to required features
-- smb: Fixed URL encoded URLs not working
+Jay Satiro (14 Jun 2015)
+- [Drake Arconis brought this change]
-- Makefile.inc: Added our standard header and updated file formatting
-
-- Makefile.inc: Updated file formatting
-
- Aligned continuation character and used space as the separator
- character as per other makefile files.
-
-- curl_md4.h: Updated copyright year following recent edit
-
- ...and minor layout adjustment.
+ build: Fix typo from OpenSSL 1.0.2 version detection fix
-Patrick Monnerat (5 Dec 2014)
-- SMB: Fix big endian problems. Make it OS/400 aware.
+- [Drake Arconis brought this change]
-- OS400: enable NTLM authentication
+ build: Properly detect OpenSSL 1.0.2 when using configure
-Steve Holme (5 Dec 2014)
-- multi.c: Fixed compilation warning
-
- multi.c:2695: warning: declaration of `exp' shadows a global declaration
+- curl_multi_info_read.3: fix example formatting
-Guenter Knauf (5 Dec 2014)
-- build: updated dependencies in makefiles.
+Daniel Stenberg (13 Jun 2015)
+- BINDINGS: there's a new R binding in town!
-Steve Holme (5 Dec 2014)
-- sasl: Corrected formatting of function descriptions
+- BINDINGS: added the Xojo binding
-- sasl_gssapi: Added missing function description
+Jay Satiro (11 Jun 2015)
+- [Joel Depooter brought this change]
-- RELEASE-NOTES: Provided better descriptions
+ schannel: Add support for optional client certificates
- As it is often difficult to choose the best description for a single
- feature when it spans many commits, updated the descriptions for the
- recent SMB/CIFS protocol and GSS-API additions.
-
-- sasl_sspi: Corrected some typos
+ Some servers will request a client certificate, but not require one.
+ This change allows libcurl to connect to such servers when using
+ schannel as its ssl/tls backend. When a server requests a client
+ certificate, libcurl will now continue the handshake without one,
+ rather than terminating the handshake. The server can then decide
+ if that is acceptable or not. Prior to this change, libcurl would
+ terminate the handshake, reporting a SEC_I_INCOMPLETE_CREDENTIALS
+ error.
-- sasl_sspi: Don't use hard coded sizes in Kerberos V5 security data
-
- Don't use a hard coded size of 4 for the security layer and buffer size
- in Curl_sasl_create_gssapi_security_message(), instead, use sizeof() as
- we have done in the sasl_gssapi module.
+Daniel Stenberg (11 Jun 2015)
+- curl_easy_cleanup.3: provide more SEE ALSO
-- sasl_sspi: Free the Kerberos V5 challenge as soon as we're done with it
-
- Reduced the amount of free's required for the decoded challenge message
- in Curl_sasl_create_gssapi_security_message() as a result of coding it
- differently in the sasl_gssapi module.
+- debug: remove http2 debug leftovers
-- gssapi: Corrected typo in comments
+- VERSIONS: now using markdown
-- sasl_gssapi: Added body to Curl_sasl_create_gssapi_security_message()
+- RELEASE-PROCEDURE: remove ascii logo at the top of file
-Daniel Stenberg (4 Dec 2014)
-- [Stefan Bühler brought this change]
+- INTERNALS: absorbed docs/LIBCURL-STRUCTS
- http_perhapsrewind: don't abort CONNECT requests
+- INTERNALS: cat lib/README* >> INTERNALS
- ...they never have a body
-
-- [Stefan Bühler brought this change]
+ and a conversion to markdown. Removed the lib/README.* files. The idea
+ being to move toward having INTERNALS as the one and only "book" of
+ internals documentation.
+
+ Added a TOC to top of the document.
- HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request
+Jay Satiro (8 Jun 2015)
+- openssl: LibreSSL and BoringSSL do not use TLS_client_method
+
+ Although OpenSSL 1.1.0+ deprecated SSLv23_client_method in favor of
+ TLS_client_method LibreSSL and BoringSSL didn't and still use
+ SSLv23_client_method.
- Sending NTLM/Negotiate header again after successful authentication
- breaks the connection with certain Proxies and request types (POST to MS
- Forefront).
+ Bug: https://github.com/bagder/curl/commit/49a6642#commitcomment-11578009
+ Reported-by: asavah@users.noreply.github.com
-- [Stefan Bühler brought this change]
+Daniel Stenberg (9 Jun 2015)
+- RELEASE-NOTES: synced with 20ac3458068
- HTTP: don't abort connections with pending Negotiate authentication
+- CURLOPT_OPENSOCKETFUNCTION: return error at once
+
+ When CURL_SOCKET_BAD is returned in the callback, it should be treated
+ as an error (CURLE_COULDNT_CONNECT) if no other socket is subsequently
+ created when trying to connect to a server.
- ... similarly to how NTLM works as Negotiate is in fact often NTLM with
- another name.
+ Bug: http://curl.haxx.se/mail/lib-2015-06/0047.html
-- [Stefan Bühler brought this change]
+- fopen.c: fix a few compiler warnings
- fix gdb libtool invocation path
+- [Ville Skyttä brought this change]
-Steve Holme (4 Dec 2014)
-- sasl_gssapi: Fixed missing include from commit d3cca934ee
+ docs: Spelling fixes
-Daniel Stenberg (4 Dec 2014)
-- [Jay Satiro brought this change]
+- [Ville Skyttä brought this change]
- examples: remove sony.com from 10-at-a-time
-
- Prior to this change the 10-at-a-time example showed CURLE_RECV_ERROR
- for the sony website because it ends the connection when the request is
- missing a user agent.
+ docs: man page indentation and syntax fixes
-Steve Holme (4 Dec 2014)
-- sasl_gssapi: Fixed missing decoding debug failure message
+Linus Nielsen (8 Jun 2015)
+- help: Add --proxy-service-name and --service-name to the --help output
-- sasl_gssapi: Fixed honouring of no mutual authentication
+Jay Satiro (7 Jun 2015)
+- openssl: Fix verification of server-sent legacy intermediates
+
+ - Try building a chain using issuers in the trusted store first to avoid
+ problems with server-sent legacy intermediates.
+
+ Prior to this change server-sent legacy intermediates with missing
+ legacy issuers would cause verification to fail even if the client's CA
+ bundle contained a valid replacement for the intermediate and an
+ alternate chain could be constructed that would verify successfully.
+
+ https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
-- sasl_sspi: Added more Kerberos V5 decoding debug failure messages
+Daniel Stenberg (5 Jun 2015)
+- BINDINGS: update several URLs
+
+ Stop linking to the curl.haxx.se anchor pages, they are usually only
+ themselves pointers to the real page so better point there directly
+ instead.
-Daniel Stenberg (4 Dec 2014)
-- [Anthon Pang brought this change]
+- BINDINGS: the curl-rust binding
- docs: Fix FAILONERROR typos
+- curl.h: add CURL_HTTP_VERSION_2
- It returns error for >= 400 HTTP responses.
+ The protocol is named "HTTP/2" after all. It is an alias for the
+ existing CURL_HTTP_VERSION_2_0 enum.
+
+- openssl: removed error string #ifdef
- Bug: https://github.com/bagder/curl/pull/129
+ ERR_error_string_n() was introduced in 0.9.6, no need to #ifdef anymore
-- [Peter Wu brought this change]
+- openssl: removed USERDATA_IN_PWD_CALLBACK kludge
+
+ Code for OpenSSL 0.9.4 serves no purpose anymore!
- tool: fix CURLOPT_UNIX_SOCKET_PATH in --libcurl output
+- openssl: remove SSL_get_session()-using code
- Mark CURLOPT_UNIX_SOCKET_PATH as string to ensure that it ends up as
- option in the file generated by --libcurl.
+ It was present for OpenSSL 0.9.5 code but we only support 0.9.7 or
+ later.
+
+- openssl: remove dummy callback use from SSL_CTX_set_verify()
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ The existing callback served no purpose.
-- [Peter Wu brought this change]
+- LIBCURL-STRUCTS: clarify for multiplexing
- opts: fix CURLOPT_UNIX_SOCKET_PATH formatting
+Jay Satiro (3 Jun 2015)
+- cookie: Stop exporting any-domain cookies
- Add .nf and .fi such that the code gets wrapped in a pre on the web.
- Fixed grammar, fixed formatting of the "See also" items.
+ Prior to this change any-domain cookies (cookies without a domain that
+ are sent to any domain) were exported with domain name "unknown".
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-Patrick Monnerat (4 Dec 2014)
-- OS400: enable Unix sockets.
-
-Daniel Stenberg (3 Dec 2014)
-- RELEASE-NOTES: synced with b216427e73b5e9
+ Bug: https://github.com/bagder/curl/issues/292
-- opts: added CURLOPT_UNIX_SOCKET_PATH to Makefile.am
+Daniel Stenberg (3 Jun 2015)
+- RELEASE-PROCEDURE: refreshed 'coming dates'
-- updateconninfo: clear destination struct before getsockname()
+Jay Satiro (2 Jun 2015)
+- curl_setup: Change fopen text macros to use 't' for MSDOS
- Otherwise we may read uninitialized bytes later in the unix-domain
- sockets case.
-
-- curl.1: added --unix-socket
+ Bug: https://github.com/bagder/curl/pull/258#issuecomment-107915198
+ Reported-by: Gisle Vanem
-- [Peter Wu brought this change]
+Daniel Stenberg (2 Jun 2015)
+- curl_multi_timeout.3: added example
- tool: add --unix-socket option
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+- curl_multi_perform.3: added example
-- [Peter Wu brought this change]
+- curl_multi_info_read.3: added example
- libcurl: add UNIX domain sockets support
-
- The ability to do HTTP requests over a UNIX domain socket has been
- requested before, in Apr 2008 [0][1] and Sep 2010 [2]. While a
- discussion happened, no patch seems to get through. I decided to give it
- a go since I need to test a nginx HTTP server which listens on a UNIX
- domain socket.
-
- One patch [3] seems to make it possible to use the
- CURLOPT_OPENSOCKETFUNCTION function to gain a UNIX domain socket.
- Another person wrote a Go program which can do HTTP over a UNIX socket
- for Docker[4] which uses a special URL scheme (though the name contains
- cURL, it has no relation to the cURL library).
+- checksrc: detect fopen() for text without the FOPEN_* macros
- This patch considers support for UNIX domain sockets at the same level
- as HTTP proxies / IPv6, it acts as an intermediate socket provider and
- not as a separate protocol. Since this feature affects network
- operations, a new feature flag was added ("unix-sockets") with a
- corresponding CURL_VERSION_UNIX_SOCKETS macro.
+ Follow-up to e8423f9ce150 with discussionis in
+ https://github.com/bagder/curl/pull/258
- A new CURLOPT_UNIX_SOCKET_PATH option is added and documented. This
- option enables UNIX domain sockets support for all requests on the
- handle (replacing IP sockets and skipping proxies).
-
- A new configure option (--enable-unix-sockets) and CMake option
- (ENABLE_UNIX_SOCKETS) can disable this optional feature. Note that I
- deliberately did not mark this feature as advanced, this is a
- feature/component that should easily be available.
-
- [0]: http://curl.haxx.se/mail/lib-2008-04/0279.html
- [1]: http://daniel.haxx.se/blog/2008/04/14/http-over-unix-domain-sockets/
- [2]: http://sourceforge.net/p/curl/feature-requests/53/
- [3]: http://curl.haxx.se/mail/lib-2008-04/0361.html
- [4]: https://github.com/Soulou/curl-unix-socket
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ This check scans for fopen() with a mode string without 'b' present, as
+ it may indicate that an FOPEN_* define should rather be used.
-- [Peter Wu brought this change]
+- curl_getdate.3: update RFC reference
- tests: add two HTTP over UNIX socket tests
-
- test1435: a simple test that checks whether a HTTP request can be
- performed over the UNIX socket. The hostname/port are interpreted
- by sws and should be ignored by cURL.
+Jay Satiro (1 Jun 2015)
+- curl_setup: Add macros for FOPEN_READTEXT, FOPEN_WRITETEXT
- test1436: test for the ability to do two requests to the same host,
- interleaved with one to a different hostname.
+ - Change fopen calls to use FOPEN_READTEXT instead of "r" or "rt"
+ - Change fopen calls to use FOPEN_WRITETEXT instead of "w" or "wt"
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
-
- tests: add HTTP UNIX socket server testing support
+ This change is to explicitly specify when we need to read/write text.
+ Unfortunately 't' is not part of POSIX fopen so we can't specify it
+ directly. Instead we now have FOPEN_READTEXT, FOPEN_WRITETEXT.
- The variable `$ipvnum` can now contain "unix" besides the integers 4
- and 6 since the variable. Functions which receive this parameter
- have their `$port` parameter renamed to `$port_or_path` to support a
- path to the UNIX domain socket (as a "port" is only meaningful for TCP).
+ Prior to this change we had an issue on Windows if an application that
+ uses libcurl overrides the default file mode to binary. The default file
+ mode in Windows is normally text mode (translation mode) and that's what
+ libcurl expects.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: https://github.com/bagder/curl/pull/258#issuecomment-107093055
+ Reported-by: Orgad Shaneh
-- [Peter Wu brought this change]
+Daniel Stenberg (1 Jun 2015)
+- http2-upload.c: use PIPEWAIT for playing HTTP/2 better
- sws: try to remove socket and retry bind
-
- If sws is killed it might leave a stale socket file on the filesystem
- which would cause an EADDRINUSE error. After this patch, it is checked
- whether the socket is really stale and if so, the socket file gets
- removed and another bind is executed.
+- http2-download: check for CURLPIPE_MULTIPLEX properly
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: http://curl.haxx.se/mail/lib-2015-06/0001.html
+ Reported-by: Rafayel Mkrtchyan
-- [Peter Wu brought this change]
+- [Isaac Boukris brought this change]
- sws: add UNIX domain socket support
-
- This extends sws with a --unix-socket option which causes the port to
- be ignored (as the server now listens on the path specified by
- --unix-socket). This feature will be available in the following patch
- that enables checking for UNIX domain socket support.
-
- Proxy support (CONNECT) is not considered nor tested. It does not make
- sense anyway, first connecting through a TCP proxy, then let that TCP
- proxy connect to a UNIX socket.
+ HTTP-NTLM: fail auth on connection close instead of looping
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: https://github.com/bagder/curl/issues/256
-- [Peter Wu brought this change]
+- 5.6 Refuse "downgrade" redirects
- sws: restrict TCP_NODELAY to IP sockets
-
- TCP_NODELAY does not make sense for Unix sockets, so enable it only if
- the socket is using IP.
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+- README.pingpong: removed
-Dan Fandrich (3 Dec 2014)
-- [Dave Reisner brought this change]
+- ROADMAP: remove HTTP/2 multiplexing - its here now
- curl.1: fix trivial typo
+- HTTP2.md: formatted properly
-Steve Holme (3 Dec 2014)
-- sasl_gssapi: Added body to Curl_sasl_create_gssapi_user_message()
+- HTTP2: moved docs into docs/ and make it markdown
-- sasl_gssapi: Added body to Curl_sasl_gssapi_cleanup()
+- README.http2: refreshed and added multiplexing info
-- sasl_gssapi: Added Curl_sasl_build_gssapi_spn() function
-
- Added helper function for returning a GSS-API compatible SPN.
+- dist: add the http2 examples
-Daniel Stenberg (3 Dec 2014)
-- NSS: enable the CAPATH option
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1457
- Patch-by: Tomasz Kojm
+- http2 examples: clean up some comments
-Steve Holme (3 Dec 2014)
-- sasl_gssapi: Enable USE_KERBEROS5 for GSS-API based builds
+- examples: added two programs doing multiplexed HTTP/2
-- sasl_gssapi: Added GSS-API based Kerberos V5 variables
+- scripts: moved contributors.sh and contrithanks.sh into subdir
-- sws.c: Fixed compilation warning when IPv6 is disabled
-
- sws.c:69: warning: comma at end of enumerator list
+- RELEASE-NOTES: synced with c005790ff1c0a
-- sasl_gssapi: Made log_gss_error() a common GSS-API function
-
- Made log_gss_error() a common function so that it can be used in both
- the http_negotiate code as well as the curl_sasl_gssapi code.
+- [Daniel Melani brought this change]
-- sasl_gssapi: Introduced GSS-API based SASL module
-
- Added the initial version of curl_sasl_gssapi.c and updated the project
- files in preparation for adding GSS-API based Kerberos V5 support.
+ openssl: typo in comment
-- smb: Don't try to connect with empty credentials
+Jay Satiro (27 May 2015)
+- openssl: Use TLS_client_method for OpenSSL 1.1.0+
- On some platforms curl would crash if no credentials were used. As such
- added detection of such a use case to prevent this from happening.
+ SSLv23_client_method is deprecated starting in OpenSSL 1.1.0. The
+ equivalent is TLS_client_method.
- Reported-by: Gisle Vanem
-
-- smb.c: Coding policing of pointer usage
+ https://github.com/openssl/openssl/commit/13c9bb3#diff-708d3ae0f2c2973b272b811315381557
-- configure: Fixed inclusion of SMB when no crypto engines available
+Daniel Stenberg (26 May 2015)
+- FAQ: How do I port libcurl to my OS?
-Guenter Knauf (1 Dec 2014)
-- build: in Makefile.m32 simplified autodetection.
-
-Daniel Stenberg (30 Nov 2014)
-- [Peter Wu brought this change]
-
- sws: move away from IPv4/IPv4-only assumption
+Jay Satiro (25 May 2015)
+- CURLOPT_COOKIELIST.3: Explain Set-Cookie without a domain
- Instead of depending the socket domain type on use_ipv6, specify the
- domain type (AF_INET / AF_INET6) as variable. An enum is used here with
- switch to avoid compiler warnings in connect_to, complaining that rc
- is possibly undefined (which is not possible as socket_domain is
- always set).
+ Document that if Set-Cookie is used without a domain then the cookie is
+ sent for any domain and will not be modified.
- Besides abstracting the socket type, make the debugging messages be
- independent on IP (introduce location_str which points to "port XXXXX").
- Rename "ipv_inuse" to "socket_type" and tighten the scope (main).
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: http://curl.haxx.se/mail/lib-2015-05/0137.html
+ Reported-by: Alexander Dyagilev
-- [Peter Wu brought this change]
+Daniel Stenberg (25 May 2015)
+- [Tatsuhiro Tsujikawa brought this change]
- lib/connect: restrict IP/TCP options to said sockets
+ http2: Copy data passed in Curl_http2_switched into HTTP/2 connection buffer
- This patch prepares for adding UNIX domain sockets support.
+ Previously, after seeing upgrade to HTTP/2, we feed data followed by
+ upgrade response headers directly to nghttp2_session_mem_recv() in
+ Curl_http2_switched(). But it turns out that passed buffer, mem, is
+ part of stream->mem, and callbacks called by
+ nghttp2_session_mem_recv() will write stream specific data into
+ stream->mem, overwriting input data. This will corrupt input, and
+ most likely frame length error is detected by nghttp2 library. The
+ fix is first copy the passed data to HTTP/2 connection buffer,
+ httpc->inbuf, and call nghttp2_session_mem_recv().
+
+Jay Satiro (24 May 2015)
+- CURLOPT_COOKIE.3: Explain that the cookies won't be modified
- TCP_NODELAY and TCP_KEEPALIVE are specific to TCP/IP sockets, so do not
- apply these to other socket types. bindlocal only works for IP sockets
- (independent of TCP/UDP), so filter that out too for other types.
+ The CURLOPT_COOKIE doc says it "sets the cookie header explicitly in the
+ outgoing request(s)." However there seems to be some user confusion
+ about cookie modification. Document that the cookies set by this option
+ are not modified by the cookie engine.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: http://curl.haxx.se/mail/lib-2015-05/0115.html
+ Reported-by: Alexander Dyagilev
+
+- CURLOPT_COOKIELIST.3: Add example
-- smb.c: use size_t as input argument types for msg sizes
+Dan Fandrich (24 May 2015)
+- testcurl.pl: use rel2abs to make the source directory absolute
- This fixes warnings about conversions to int
+ This function makes a platform-specific absolute path which uses
+ backslashes on Windows. This form works when passing it on the
+ command-line, as well as if the source is on another drive.
-Steve Holme (30 Nov 2014)
-- version: The next release will become 7.40.0
+- conncache: fixed memory leak on OOM (torture tests)
-- [Bill Nagel brought this change]
+Daniel Stenberg (24 May 2015)
+- perl: remove subdir, not touched in 9 years
- docs: Updated for the SMB protocol
-
- This patch updates the documentation for the SMB/CIFS protocol.
+- log2changes.pl: moved to scripts/
-- curl tool: Exclude SMB from the protocol redirect
-
- As local files could be accessed through \\localhost\c$.
+- [Alessandro Ghedini brought this change]
-- [Bill Nagel brought this change]
+ scripts: add zsh.pl for generating zsh completion
- curl tool: Enable support for the SMB protocol
-
- This patch enables SMB/CIFS support in the curl command-line tool.
+Dan Fandrich (23 May 2015)
+- test1510: another flaky test
-- smb.c: Fixed compilation warnings
+Daniel Stenberg (22 May 2015)
+- security: fix "Unchecked return value" from sscanf()
- smb.c:398: warning: comparison of integers of different signs:
- 'ssize_t' (aka 'long') and 'unsigned long'
- smb.c:443: warning: comparison of integers of different signs:
- 'ssize_t' (aka 'long') and 'unsigned long'
-
-- libcurl: Exclude SMB from the protocol redirect
+ By (void) prefixing it and adding a comment. Did some minor related
+ cleanups.
- As local files could be accessed through \\localhost\c$.
+ Coverity CID 1299423.
-- [Bill Nagel brought this change]
-
- libcurl: Enable support for the SMB protocol
+- security: simplify choose_mech
- This patch enables SMB/CIFS support in libcurl.
-
-- smb.c: Fixed compilation warnings
+ Coverity CID 1299424 identified dead code because of checks that could
+ never equal true (if the mechanism's name was NULL).
- smb.c:322: warning: conversion to 'short unsigned int' from 'unsigned
- int' may alter its value
- smb.c:323: warning: conversion to 'short unsigned int' from 'unsigned
- int' may alter its value
- smb.c:482: warning: conversion to 'short unsigned int' from 'int' may
- alter its value
- smb.c:521: warning: conversion to 'unsigned int' from 'curl_off_t' may
- alter its value
- smb.c:549: warning: conversion to 'unsigned int' from 'curl_off_t' may
- alter its value
- smb.c:550: warning: conversion to 'short unsigned int' from 'int' may
- alter its value
+ Simplified the function by removing a level of pointers and removing the
+ loop and array that weren't used.
-- smb.c: Renamed SMB command message variables to avoid compiler warnings
+- RTSP: catch attempted unsupported requests better
- smb.c:489: warning: declaration of 'close' shadows a global declaration
- smb.c:511: warning: declaration of 'read' shadows a global declaration
- smb.c:528: warning: declaration of 'write' shadows a global declaration
-
-- smb.c: Fixed compilation warnings
+ Replace use of assert with code that properly catches bad input at
+ run-time even in non-debug builds.
- smb.c:212: warning: unused parameter 'done'
- smb.c:380: warning: ISO C does not allow extra ';' outside of a function
- smb.c:812: warning: unused parameter 'premature'
- smb.c:822: warning: unused parameter 'dead'
+ This flaw was sort of detected by Coverity CID 1299425 which claimed the
+ "case RTSPREQ_NONE" was dead code.
-- smb.c: Fixed compilation warnings
+- share_init: fix OOM crash
- smb.c:311: warning: conversion from 'unsigned __int64' to 'u_short',
- possible loss of data
- smb.c:425: warning: conversion from '__int64' to 'unsigned short',
- possible loss of data
- smb.c:452: warning: conversion from '__int64' to 'unsigned short',
- possible loss of data
-
-- smb.c: Fixed compilation warnings
+ A failed calloc() would lead to NULL pointer use.
- smb.c:162: error: comma at end of enumerator list
- smb.c:469: warning: conversion from 'size_t' to 'unsigned short',
- possible loss of data
- smb.c:517: warning: conversion from 'curl_off_t' to 'unsigned int',
- possible loss of data
- smb.c:545: warning: conversion from 'curl_off_t' to 'unsigned int',
- possible loss of data
-
-- [Bill Nagel brought this change]
+ Coverity CID 1299427.
- smb: Added initial SMB functionality
+- parse_proxy: switch off tunneling if non-HTTP proxy
- Initial implementation of the SMB/CIFS protocol.
+ non-HTTP proxy implies not using CURLOPT_HTTPPROXYTUNNEL
+
+ Bug: http://curl.haxx.se/mail/lib-2015-05/0056.html
+ Reported-by: Sean Boudreau
-- [Bill Nagel brought this change]
+- curl: fix potential NULL dereference
+
+ Coverity CID 1299428: Dereference after null check (FORWARD_NULL)
- smb: Added SMB handler interfaces
+- http2: on_frame_recv: return early on stream 0
- Added the SMB and SMBS handler interface structures and associated
- functions required for SMB/CIFS operation.
+ Coverity CID 1299426 warned about possible NULL dereference otherwise,
+ but that would only ever happen if we get invalid HTTP/2 data with
+ frames for stream 0. Avoid this risk by returning early when stream 0 is
+ used.
-- transfer: Code style policing
+- http: removed self assignment
- Prefer ! rather than NULL in if statements, added comments and updated
- function spacing, argument spacing and line spacing to be more readble.
+ Follow-up fix from b0143a2a33f0
+
+ Detected by coverity. CID 1299429
-- transfer: Fixed existing scratch buffer being checked for NULL twice
+- [Tatsuhiro Tsujikawa brought this change]
+
+ http2: Make HTTP Upgrade work
- If the scratch buffer already existed when the CRLF conversion was
- performed then the buffer pointer would be checked twice for NULL. This
- second check is only necessary if the call to malloc() was performed by
- the first check.
+ This commit just add implicitly opened stream 1 to streams hash.
-- smtp: Fixed dot stuffing being performed when no new data read
+Jay Satiro (22 May 2015)
+- strerror: Change SEC_E_ILLEGAL_MESSAGE description
- Whilst I had moved the dot stuffing code from being performed before
- CRLF conversion takes place to after it, in commit 4bd860a001, I had
- moved it outside the 'when something read' block of code when meant
- it could perform the dot stuffing twice on partial send if nread
- happened to contain the right values. It also meant the function could
- potentially read past the end of buffer. This was highlighted by the
- following warning:
+ Prior to this change the description for SEC_E_ILLEGAL_MESSAGE was OS
+ and language specific, and invariably translated to something not very
+ helpful like: "The message received was unexpected or badly formatted."
- warning: `nread' might be used uninitialized in this function
+ Bug: https://github.com/bagder/curl/issues/267
+ Reported-by: Michael Osipov
-Daniel Stenberg (29 Nov 2014)
-- smb.h: fixed picky compiler warning
+- telnet: Fix read-callback change for Windows builds
- smb.h:30:16: error: comma at end of enumerator list [-Werror=pedantic]
+ Refer to b0143a2 for more information on the read-callback change.
-Steve Holme (29 Nov 2014)
-- tests: Disable test 1013 until SMB is fully added
-
-- [Bill Nagel brought this change]
+Daniel Stenberg (21 May 2015)
+- CURLOPT_HTTPPROXYTUNNEL.3: only works with a HTTP proxy!
- smb: Added SMB protocol and port definitions
+Dan Fandrich (21 May 2015)
+- testcurl.pl: allow source to be in an arbitrary directory
- Added the necessary protocol and port definitions in order to support
- SMB/CIFS.
+ This way, the build directory can be located on an entirely different
+ filesystem from the source code (e.g. a tmpfs).
-- [Bill Nagel brought this change]
+Daniel Stenberg (20 May 2015)
+- read_callback: move to SessionHandle from connectdata
+
+ With many easy handles using the same connection for multiplexing, it is
+ important we store and keep the transfer-oriented stuff in the
+ SessionHandle so that callbacks and callback data work fine even when
+ many easy handles share the same physical connection.
- smb: Added internal SMB definitions and structures
+- http2: show stream IDs in decimal
- Added the internal definitions and structures necessary for SMB/CIFS
- support.
+ It makes them easier to match output from the nghttpd test server.
-- [Bill Nagel brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
- smb: Added SMB connection structure
+ http2: Faster http2 upload
- Added the connection structure that will be required in urldata.h for
- SMB/CIFS based connections.
+ Previously, when we send all given buffer in data_source_callback, we
+ return NGHTTP2_ERR_DEFERRED, and nghttp2 library removes this stream
+ temporarily for writing. This itself is good. If this is the sole
+ stream in the session, nghttp2_session_want_write() returns zero,
+ which means that libcurl does not check writeability of the underlying
+ socket. This leads to very slow upload, because it seems curl only
+ upload 16k something per 1 second. To fix this, if we still have data
+ to send, call nghttp2_session_resume_data after nghttp2_session_send.
+ This makes nghttp2_session_want_write() returns nonzero (if connection
+ window still opens), and as a result, socket writeability is checked,
+ and upload speed becomes normal.
-- [Bill Nagel brought this change]
+- [Dmitry Eremin-Solenikov brought this change]
- smb: Added initial source files for SMB
+ gtls: don't fail on non-fatal alerts during handshake
- Added the initial source files and updated the relevant project files in
- order to support SMB/CIFS.
+ Stop curl from failing when non-fatal alert is received during
+ handshake. This e.g. fixes lots of problems when working with https
+ sites through proxies.
-- [Bill Nagel brought this change]
+- curl_easy_unescape.3: update RFC reference
+
+ Reported-by: bsammon
+ Bug: https://github.com/bagder/curl/issues/282
- smb: Added configuration options for SMB
+Jay Satiro (20 May 2015)
+- CURLOPT_POSTFIELDS.3: Mention curl_easy_escape
+
+ .. also correct some variable naming in curl_easy_escape.3
- Added --enable-smb and --disable-smb configuration options for the
- upcoming SMB/CIFS protocol support.
+ Bug: https://github.com/bagder/curl/issues/281
+ Reported-by: bsammon@users.noreply.github.com
-Daniel Stenberg (28 Nov 2014)
-- [Peter Wu brought this change]
+Daniel Stenberg (19 May 2015)
+- [Brian Prodoehl brought this change]
- runtests.pl: fix startup of IPv6 servers
+ openssl: Use SSL_CTX_set_msg_callback and SSL_CTX_set_msg_callback_arg
- Commit curl-7_23_1-143-g8218064 changed the parameter of
- responsive_http_server to accept types other than IPv6 (converting
- from a boolean to a string), but only considered the lower-case "ipv6"
- and not the "IPv6" variant. This caused all servers to start in IPv4
- mode instead.
+ BoringSSL removed support for direct callers of SSL_CTX_callback_ctrl
+ and SSL_CTX_ctrl, so move to a way that should work on BoringSSL and
+ OpenSSL.
- This patch converts the remaining cases to "ipv6". While not strictly
- necessary for the run*server variants, these got also converted for
- consistency and to prevent future errors.
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ re #275
+
+Jay Satiro (19 May 2015)
+- curl.1: fix missing space in section --data
-- [Peter Wu brought this change]
+Daniel Stenberg (19 May 2015)
+- transfer: remove erroneous and misleading comment
- runtests.pl: fix warning message, remove duplicate value
+Kamil Dudka (19 May 2015)
+- http: silence compile-time warnings without USE_NGHTTP2
+
+ Error: CLANG_WARNING:
+ lib/http.c:173:16: warning: Value stored to 'http' during its initialization is never read
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Error: COMPILER_WARNING:
+ lib/http.c: scope_hint: In function ‘http_disconnect’
+ lib/http.c:173:16: warning: unused variable ‘http’ [-Wunused-variable]
-Steve Holme (27 Nov 2014)
-- http.c: Fixed compilation warnings from features being disabled
+Jay Satiro (19 May 2015)
+- transfer: Replace __func__ instances with function name
- warning: unused variable 'data'
- warning: variable 'addcookies' set but not used
+ .. also make __func__ replacement in multi.
- ...and some very minor coding style policing.
+ Prior to this change debug builds would fail to build if the compiler
+ was building pre-c99 and didn't support __func__.
-- RELEASE-NOTES: Synced with c5399c827d
+Daniel Stenberg (19 May 2015)
+- [Viktor Szakats brought this change]
-- tests: Added SMTP with --crlf test case
+ build: bump version in default nghttp2 paths
-- docs: Updated for commit 4bd860a001 and SMTP Unix line ending conversion
+- INTERNALS: we require nghttp2 1.0.0+ now
-- smtp: Fixed const'ness of nread parameter in Curl_smtp_escape_eob()
-
- ...and some comment typos!
+Jay Satiro (18 May 2015)
+- http: Add some include guards for the new HTTP/2 stuff
-- smtp: Added support for the conversion of Unix newlines during mail send
-
- Added support for the automatic conversion of Unix newlines to CRLF
- during mail uploads.
+Daniel Stenberg (18 May 2015)
+- http2: store upload state per stream
- Feature: http://curl.haxx.se/bug/view.cgi?id=1456
+ Use a curl_off_t for upload left
-- CURLOPT_CRLF.3: Fixed inclusion of SMTP in listed protocols
+- http2: fix build when NOT h2-enabled
-Daniel Stenberg (25 Nov 2014)
-- curl*3: added small examples
+- http2: switch to use Curl_hash_destroy()
- and some minor edits
+ as after 4883f7019d3, the *_clean() function only flushes the hash.
-- libcurl.3: fix formatting
+- curlver: restore LIBCURL_VERSION_NUM defined as a full number
- refer to functions with the man page section properly
+ As it breaks configure, curl-config and test 1023 if not.
-- man pages: SEE ALSO curl_multi_wait
+- [Anthony Avina brought this change]
-- curl_multi_wait.3: clarify numfds being used if not NULL
-
-- multi-single.c: switch to use curl_multi_wait
+ hostip: fix unintended destruction of hash table
- Makes the example much easier and straight-forward!
+ .. and added unit1602 for hash.c
-- testcurl: bump the version of this script!
+- curlver: introducing new version number (checking) macros
-- testcurl: skip reading the setup file if given enough cmdline info
-
- This makes it much easier to run multiple tests in the same directory,
- just altering the command lines used.
+- runtests.pl: use 'h2c' now, no -14 anymore
-- select.c: fix compilation for VxWorks
-
- Reported-by: Brian
- Bug: http://curl.haxx.se/bug/view.cgi?id=1455
+- [Tatsuhiro Tsujikawa brought this change]
-Patrick Monnerat (24 Nov 2014)
-- [moparisthebest brought this change]
+ http2: Ignore if we have stream ID not in hash in on_stream_close
+
+ We could get stream ID not in the hash in on_stream_close. For
+ example, if we decided to reject stream (e.g., PUSH_PROMISE), then we
+ don't create stream and store it in hash with its stream ID.
- SSL: Add PEM format support for public key pinning
+- [Tatsuhiro Tsujikawa brought this change]
-Kamil Dudka (24 Nov 2014)
-- Revert "repository: ignore patch files generated by git"
+ Require nghttp2 v1.0.0
- This reverts commit 217024a687ce86eb6d2317822ed81c7e5abc4b61.
+ This commit requires nghttp2 v1.0.0 to compile, and migrate to v1.0.0,
+ and utilize recent version of nghttp2 to simplify the code,
- Bug: https://github.com/bagder/curl/commit/217024a6#commitcomment-8693738
-
-Steve Holme (23 Nov 2014)
-- multi.c: Fixed compilation warnings when no verbose string support
+ First we use nghttp2_option_set_no_recv_client_magic function to
+ detect nghttp2 v1.0.0. That function only exists since v1.0.0.
- warning: variable 'connection_id' set but not used
- warning: unused parameter 'lineno'
-
-- RELEASE-NOTES: Synced with 1450712e76
+ Since nghttp2 v0.7.5, nghttp2 ensures header field ordering, and
+ validates received header field. If it found error, RST_STREAM with
+ PROTOCOL_ERROR is issued. Since we require v1.0.0, we can utilize
+ this feature to simplify libcurl code. This commit does this.
+
+ Migration from 0.7 series are done based on nghttp2 migration
+ document. For libcurl, we removed the code sending first 24 bytes
+ client magic. It is now done by nghttp2 library.
+ on_invalid_frame_recv callback signature changed, and is updated
+ accordingly.
-- sasl: Tidied up some parameter comments
+- http2: infof length in on_frame_send()
-- sasl: Reduced the need for two sets of NTLM functions
+- pipeline: switch some code over to functions
+
+ ... to "compartmentalize" a bit and make it easier to change behavior
+ when multiplexing is used instead of good old pipelining.
-- ntlm: Moved NSS initialisation to base decode function
+- symbols-in-versions: add CURLOPT_PIPEWAIT
-- http_ntlm: Fixed additional NSS initialisation call when decoding type-2
+- CURLOPT_PIPEWAIT: added
- After commit 48d19acb7c the HTTP code would call Curl_nss_force_init()
- twice when decoding a NTLM type-2 message, once directly and the other
- through the call to Curl_sasl_decode_ntlm_type2_message().
+ By setting this option to 1 libcurl will wait for a connection to reveal
+ if it is possible to pipeline/multiplex on before it continues.
-- ntlm: Fixed static'ness of local decode function
+- Curl_http_readwrite_headers: minor code simplification
-- ntlm: Corrected some parameter names and comments
+- IsPipeliningPossible: fixed for http2
-- runtests.pl: Re-aligned feature support comments
+- http2: bump the h2 buffer size to 32K for speed
-- runtests.pl: Use Kerberos and SPNEGO as proxies for the crypto feature
-
- In addition to NTLM, use Kerberos and SPNEGO as proxies to the crypto
- feature.
+- http2: remove the stream from the hash in stream_close callback
- ...and converted tab characters, from commit 4b4e8a5853, to spaces.
+ ... and suddenly things work much better!
-- runtests.pl: Added support for SPNEGO
+- http2: if there is paused data, do not clear the drain field
-- runtests.pl: Added Kerberos detection
+- http2: rename s/data/pausedata
-- runtests.pl: Added GSS-API detection
+- http2: "stream %x" in all outputs to make it easier to search for
-- FILEFORMAT: Added SSPI, GSS-API and Kerberos to the features list
-
-- FILEFORMAT: Added test requires feature not present information
+- http2: Curl_expire() all handles with incoming traffic
- Such as !SSPI as we do for the NTLM and Digest tests.
-
-Daniel Stenberg (20 Nov 2014)
-- http.c: log if it notices HTTP 1.1 after a upgrade to http2
+ ... so that they'll get handled next in the multi loop.
-- test1801: first real http2 test case
+- http2: don't signal settings change for same values
-- sws: initial tiny steps toward http2 support
+- http2: set default concurrency, fix ConnectionExists for multiplex
-- FILEFORMAT: mention the new upgrade support
+- bundles: store no/default/pipeline/multiplex
+
+ to allow code to act differently on the situation.
+
+ Also added some more info message for the connection re-use function to
+ make it clearer when connections are not re-used.
-- test1800: first plain-text http2 test case
+- http2: lazy init header_recvbuf
- Verifies the upgrade request, but gets a plain 1.1 response
+ It makes us use less memory when not doing HTTP/2 and subsequently also
+ makes us not have to cleanup HTTP/2 related data when not using HTTP/2!
-- [Tatsuhiro Tsujikawa brought this change]
+- http2: separate multiplex/pipelining + cleanup memory leaks
- http: Disable pipelining for HTTP/2 and upgraded connections
-
- This commit disables pipelining for HTTP/2 or upgraded connections. For
- HTTP/2, we do not support multiplexing. In general, requests cannot be
- pipelined in an upgraded connection, since it is now different protocol.
+- CURLMOPT_PIPELINE: bit 1 is for multiplexing
-- [Brad Harder brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
- CURLOPT_POSTFIELDS.3: mention the COPYPOSTFIELDS option
+ http2: Fix bug that data to be drained are overwritten by pending "paused" data
-Steve Holme (19 Nov 2014)
-- multi-uv.c: Updated for curl coding standards
+- [Tatsuhiro Tsujikawa brought this change]
-- conncache: Fixed specifiers in infof() for long and size_t variables
+ http2: Don't call nghttp2_session_mem_recv while it is paused by a stream
-- [Peter Wu brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
- cmake: add Kerberos to the supported features
+ http2: Read data left in connection buffer after pause
- Updated following commit eda919f and a4b7f71.
-
- Acked-by: Brad King <brad.king@kitware.com>
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Previously when we do pause because of out of buffer, we just throw
+ away unread data in connection buffer. This just broke protocol
+ framing, and I saw occasional FRAME_SIZE_ERROR. This commit fix this
+ issue by remembering how much data read, and in the next iteration, we
+ process remaining data.
-- [Peter Wu brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
- cmake: fix NTLM detection when CURL_DISABLE_HTTP defined
+ http2: Fix streams get stuck
- Updated following changes in commit f0d860d.
+ This commit fixes the bug that streams get stuck if stream gets some
+ DATA, and stream->closed becomes true at the same time. Previously,
+ in this condition, after we processed DATA, we are going to try to
+ read data from underlying transport, but there is no data, and gets
+ EAGAIN. There was no code path to evaludate stream->closed.
+
+- http2: store incoming h2 SETTINGS
+
+- pipeline: move function to pipeline.c and make static
- Acked-by: Brad King <brad.king@kitware.com>
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ ... as it was only used from there.
-Daniel Stenberg (19 Nov 2014)
-- RELEASE-NOTES: synced with cb13fad733e
+- IsPipeliningPossible: http2 can always "pipeline" (multiplex)
-- [Jay Satiro brought this change]
+- http2: remove debug logging from on_frame_recv
- examples: Wait recommended 100ms when no file descriptors are ready
-
- Prior to this change when no file descriptors were ready on platforms
- other than Windows the multi examples would sleep whatever was in
- timeout, which may or may not have been less than the minimum
- recommended value [1] of 100ms.
+- http2: remove the closed check in http2_recv
- [1]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+ With the "drained" functionality we can get here slightly asynchronously
+ so the stream have have been closed but there is pending data left to
+ read.
-- [Waldek Kozba brought this change]
+- http2: bump the h2 buffer to 8K
- multi-uv.c: close the file handle after download
+- http2: Curl_read should not use the single buffer
+
+ ... as it does for pipelining when we're multiplexing, as we need the
+ different buffers to store incoming data correctly for all streams.
-- [Jon Spencer brought this change]
+- http2: more debug outputs
- multi: inform about closed sockets before they are closed
+- http2: leave WAITPERFORM when conn is multiplexed
- When the connection code decides to close a socket it informs the multi
- system via the Curl_multi_closed function. The multi system may, in
- turn, invoke the CURLMOPT_SOCKETFUNCTION function with
- CURL_POLL_REMOVE. This happens after the socket has already been
- closed. Reorder the code so that CURL_POLL_REMOVE is called before the
- socket is closed.
+ No need to wait for our "spot" like for pipelining
-Guenter Knauf (19 Nov 2014)
-- build: in Makefile.m32 moved target autodetection.
+- http2: force "drainage" of streams
- Moved target autodetection block after defining CC macro.
-
-- build: in Makefile.m32 simplify platform flags.
+ ... which is necessary since the socket won't be readable but there is
+ data waiting in the buffer.
-- build: in Makefile.m32 try to detect 64bit target.
+- http2: move the mem+len pair to the stream struct
-Daniel Stenberg (19 Nov 2014)
-- [Brad King brought this change]
+- http2: more stream-oriented data, stream ID 0 is for connections
- CMake: Simplify if() conditions on check result variables
+- http2: move lots of state data to the 'stream' struct
- Remove use of an old hack that takes advantage of the auto-dereference
- behavior of the if() command to detect if a variable is defined. The
- hack has the form:
+ ... from the connection struct. The stream one being the 'struct HTTP'
+ which is kept in the SessionHandle struct (easy handle).
- if("${VAR} MATCHES "^${VAR}$")
-
- where "${VAR}" is a macro argument reference. Use if(DEFINED) instead.
- This also avoids warnings for CMake Policy CMP0054 in CMake 3.1.
+ lookup streams for incoming frames in the stream hash, hashing is based
+ on the stream id and we get the SessionHandle for the incoming stream
+ that way.
-- TODO-RELEASE: removed
+- HTTP: partial start at fixing up hash-lookups on http2 frame receival
-- [Carlo Wood brought this change]
+- http: a stream hash for h2 multiplexing
- debug: added new connection cache output, plus fixups
-
- Debug output 'typo' fix.
+- http: a stream hash for h2 multiplexing
+
+- http2: debug log when receiving unexpected stream_id
+
+- http2: move stream_id to the HTTP struct (per-stream)
+
+- Curl_http2_setup: only do it once and enable multiplex on the server
- Don't print an extra "0x" in
- * Pipe broke: handle 0x0x2546d88, url = /
+ Once we know we are HTTP/2 enabled we know the server can multiplex.
+
+- http: switch on "pipelining" (multiplexing) for HTTP/2 servers
- Add debug output.
- Print the number of connections in the connection cache when
- adding one, and not only when one is removed.
+ ... and do not blacklist any.
+
+- README.pipelining: removed
- Fix typos in comments.
+ All the details mentioned here are better documented in man pages
-- multi: move the ending condition into the loop as well
+Dan Fandrich (14 May 2015)
+- build: removed bundles.c from make files
- ... as it was before I changed the loop in commit e04ccbd50. It caused
- test 2030 and 2032 to fail.
+ This file was removed in commit fd137786
-Steve Holme (18 Nov 2014)
-- multi: Prefer we don't use CURLE_OK and NULL in comparisons
+Daniel Stenberg (14 May 2015)
+- Curl_conncache_add_conn: fix memory leak on OOM
-Daniel Stenberg (18 Nov 2014)
-- multi_runsingle: use 'result' for local CURLcode storage
+- CURLMOPT_MAX_HOST_CONNECTIONS: host = host name + port number
+
+- conncache: keep bundles on host+port bases, not only host names
- ... and assign data->result only at the end. Makes the code more compact
- (easier to read) and more similar to other code.
+ Previously we counted all connections to a specific host name and that
+ would be used for the CURLMOPT_MAX_HOST_CONNECTIONS check for example,
+ while servers on different port numbers are normally considered
+ different "origins" on the web and should thus be considered different
+ hosts.
-- multi_runsingle: rename result to rc
+- bundles: merged into conncache.c
- save 'result' for CURLcode types
+ All the existing Curl_bundle* functions were only ever used from within
+ the conncache.c file, so I moved them over and made them static (and
+ removed the Curl_ prefix).
-- multi: make multi_runsingle loop internally
+- hostcache: made all host caches use structs, not pointers
- simplifies the use of this function at little cost.
+ This avoids unnecessary dynamic allocs and as this also removed the last
+ users of *hash_alloc() and *hash_destroy(), those two functions are now
+ removed.
-- [Carlo Wood brought this change]
+- multi: converted socket hash into non-allocated struct
+
+ avoids extra dynamic allocation
- multi: when leaving for timeout, close accordingly
+- connection cache: avoid Curl_hash_alloc()
- Fixes the problem when a transfer in a pipeline times out.
+ ... by using plain structs instead of pointers for the connection cache,
+ we can avoid several dynamic allocations that weren't necessary.
-Guenter Knauf (18 Nov 2014)
-- build: in Makefile.m32 add -m32 flag for 32bit.
+- proxy: add newline to info message
-- mk-ca-bundle.vbs: update copyright year.
+Patrick Monnerat (8 May 2015)
+- FTP: fix dangling conn->ip_addr dereference on verbose EPSV.
-- build: in Makefile.m32 pass -F flag to windres.
+- FTP: Make EPSV use the control IP address rather than the original host.
+ This ensures an alternate address is not used.
+ Does not apply to proxy tunnel.
-Steve Holme (17 Nov 2014)
-- config-win32: Fixed build targets for the VS2012+ Windows XP toolset
-
- Even though commit 23e70e1cc6 mentioned the v110_xp toolset, I had
- forgotten to include the relevant pre-processor definitions.
+Daniel Stenberg (8 May 2015)
+- [Alessandro Ghedini brought this change]
-- sasl_sspi: Removed note about the NTLM functions being a wrapper
+ tool_help: fix formatting for --next option
-- connect.c: Fixed compilation warning when no verbose string support
-
- warning: unused parameter 'reason'
+- [Egon Eckert brought this change]
-- easy.c: Fixed compilation warning when no verbose string support
-
- warning: unused parameter 'easy'
+ opts: improved the TCP keepalive examples
-- win32: Updated some legacy APIs to use the newer extended versions
+Jay Satiro (8 May 2015)
+- winbuild: Document the option used to statically link the CRT
- Updated the usage of some legacy APIs, that are preventing curl from
- compiling for Windows Store and Windows Phone build targets.
+ - Document option RTLIBCFG (runtime library configuration).
- Suggested-by: Stefan Neis
- Feature: http://sourceforge.net/p/curl/feature-requests/82/
+ Bug: https://github.com/bagder/curl/issues/254
+ Reported-by: Bert Huijben
-- config-win32: Introduce build targets for VS2012+
-
- Visual Studio 2012 introduced support for Windows Store apps as well as
- supporting Windows Phone 8. Introduced build targets that allow more
- modern APIs to be used as certain legacy ones are not available on these
- new platforms.
-
-- sasl_sspi: Fixed compilation warnings when no verbose string support
+- [Orgad Shaneh brought this change]
-- sasl_sspi: Added base64 decoding debug failure messages
+ netrc: Read in text mode when cygwin
- Just like in the NTLM code, added infof() failure messages for
- DIGEST-MD5 and GSSAPI authentication when base64 decoding fails.
+ Use text mode when cygwin to eliminate trailing carriage returns.
+
+ Bug: https://github.com/bagder/curl/pull/258
-- ntlm: Moved the SSPI based Type-3 message generation into the SASL module
+Patrick Monnerat (5 May 2015)
+- OS400: Add SPNEGO service name options to ILE/RPG binding.
-- ntlm: Moved the SSPI based Type-2 message decoding into the SASL module
+Daniel Stenberg (4 May 2015)
+- curl_multi_info_read.3: fix typo
+
+ Reported-by: Liviu Chircu
-- ntlm: Moved the SSPI based Type-1 message generation into the SASL module
+- MANUAL: language fix
+
+ Reported-by: Fred Stluka
+ Bug: https://github.com/bagder/curl/issues/255
-- [Michael Osipov brought this change]
+- [Alessandro Ghedini brought this change]
- kerberos: Use symbol qualified with _KERBEROS5
+ gtls: properly retrieve certificate status
- For consistency renamed USE_KRB5 to USE_KERBEROS5.
+ Also print the revocation reason if appropriate.
-Daniel Stenberg (15 Nov 2014)
-- [Jay Satiro brought this change]
+- OpenSSL: conditional check for SSL3_RT_HEADER
+
+ The symbol is fairly new.
+
+ Reported-by: Kamil Dudka
- examples: Don't call select() to sleep on windows
+- openssl: skip trace outputs for ssl_ver == 0
- Windows does not support using select() for sleeping without a dummy
- socket. Instead use Windows' Sleep() and sleep for 100ms which is the
- minimum suggested value in the curl_multi_fdset() doc.
+ The OpenSSL trace callback is wonderfully undocumented but given a
+ journey in the source code, it seems the cases were ssl_ver is zero
+ doesn't follow the same pattern and thus turned out confusing and
+ misleading. For now, we skip doing any CURLINFO_TEXT logging on those
+ but keep sending them as CURLINFO_SSL_DATA_OUT/IN.
- Prior to this change the multi examples would exit prematurely since
- select() would error instead of sleeping when called without an fd.
+ Also, I added direction to the text info and I edited some functions
+ slightly.
- Reported-by: Johan Lantz
- Bug: http://curl.haxx.se/mail/lib-2014-11/0221.html
+ Bug: https://github.com/bagder/curl/issues/219
+ Reported-by: Jay Satiro, Ashish Shukla
-- [Tatsuhiro Tsujikawa brought this change]
+Marc Hoersken (2 May 2015)
+- schannel.c: Small changes
+
+- schannel.c: Improve code path and readability
+
+- schannel.c: Improve error and return code handling upon aa99a63f03
- http2: Don't send Upgrade headers when we already do HTTP/2
+- [Chris Araman brought this change]
-Steve Holme (15 Nov 2014)
-- sasl: Corrected Curl_sasl_build_spn() function description
+ schannel: fix regression in schannel_recv
- There was a mismatch in function parameter names.
+ https://github.com/bagder/curl/issues/244
+
+ Commit 145c263 changed the behavior when Curl_read_plain returns
+ CURLE_AGAIN. We now handle CURLE_AGAIN and SEC_I_CONTEXT_EXPIRED
+ correctly.
-- tool: Removed krb4 from the supported features
+- Bug born in changes made several days ago 9a91e80.
- Although libcurl would never return CURL_VERSION_KERBEROS4 after 7.33,
- so would not be output with --version, removed krb4 from the supported
- features output.
+ Commit: https://github.com/bagder/curl/commit/926cb9f
+ Reported-by: Ray Satiro
+Daniel Stenberg (30 Apr 2015)
- [Michael Osipov brought this change]
- tool: Use Kerberos for supported features
-
-- urldata: Don't define sec_complete when no GSS-API support present
+ configure: remove missing and make it autogenerate
- This variable is only used with HAVE_GSSAPI is defined by the FTP code
- so let's place the definition with the other GSS-API based variables.
+ The missing file has not been autogenerated because a temporary fix was
+ employed in acinclude.m4 which blocked update. Removed that fix and a recent
+ version of missing is copied to build root.
- [Michael Osipov brought this change]
- docs: Use consistent naming for Kerberos
+ acinclude.m4: fix test for default CA cert bundle/path
+
+ test(1) on HP-UX requires a single equals sign and fails with two.
+ Let's use one and make every OS happy.
+
+- CONTRIBUTING.md: remove the sourceforge mention
+
+ Reported-By: Michael Osipov
-- TODO: Lets support QOP options in GSSAPI authentication
+Dan Fandrich (30 Apr 2015)
+- http_negotiate_sspi: added missing data variable
-- sasl_sspi: Corrected a couple of comment typos
+Daniel Stenberg (30 Apr 2015)
+- [Michael Osipov brought this change]
-- sasl: Moved Curl_sasl_gssapi_cleanup() definition into header file
+ configure: remove --automake from libtoolize call
- Rather than define the function as extern in the source files that use
- it, moved the function declaration into the SASL header file just like
- the Digest and NTLM clean-up functions.
+ That option is not mentioned in the man page of libtoolize 2.4.4.19-fda4.
+ Moveover, a comment in line 2623 says "--automake is for 1.5 compatibility".
- Additionally, added a function description comment block.
+ This option is redundant now.
-- sasl_sspi: Added missing RFC reference for HTTP Digest authentication
+- [Viktor Szakats brought this change]
-- ntlm: Clean-up and standardisation of base64 decoding
+ build: update depedency versions, urls, example makefiles
+
+ - update default versions of dependencies (except for rare/old platforms)
+ - update urls
+ - sync examples makefiles with main ones
+ - remove line ending space
-- ntlm: We prefer 'CURLcode result'
+- [Michael Osipov brought this change]
-Daniel Stenberg (13 Nov 2014)
-- [Brad King brought this change]
+ configure: remove autogenerated files by autoconf
+
+ * install-sh is always regenerated
+ * mkinstalldirs was already redudant years ago. Automake uses install for
+ that. See: http://lists.gnu.org/archive/html/automake/2007-03/msg00015.html
+
+- [Anders Bakken brought this change]
+
+ curl_multi_add_handle: next is already NULL
- CMake: Restore order-dependent library checks
+Jay Satiro (30 Apr 2015)
+- schannel: Fix out of bounds array
- Revert commit 2257deb502 (Cmake: Avoid cycle directory dependencies,
- 2014-08-22) and add a comment explaining the purpose of the original
- code.
+ Bug born in changes made several days ago 9a91e80.
- The check_library_exists_concat macro is intended to be called multiple
- times on a sequence of possibly dependent libraries. Later libraries
- may depend on earlier libraries when they are static. They cannot be
- safely linked in reverse order on some platforms.
+ Bug: http://curl.haxx.se/mail/lib-2015-04/0199.html
+ Reported-by: Brian Chrisman
+
+- docs/libcurl: gitignore libcurl-symbols.3
- Signed-off-by: Brad King <brad.king@kitware.com>
+ Bug: http://curl.haxx.se/mail/lib-2015-04/0191.html
+ Reported-by: Michael Osipov
-- [Brad King brought this change]
+- [Viktor Szakats brought this change]
- CMake: Restore order-dependent header checks
+ lib/makefile.m32: add arch -m32/-m64 to LDFLAGS
- Revert commit 1269df2e3b (Cmake: Don't check for all headers each
- time, 2014-08-15) and add a comment explaining the purpose of the
- original code.
-
- The check_include_file_concat macro is intended to be called multiple
- times on a sequence of possibly dependent headers. Later headers
- may depend on earlier headers to provide declarations. They cannot
- be safely included independently on some platforms.
-
- For example, many POSIX APIs document including sys/types.h before some
- other headers. Also on some OS X versions sys/socket.h must be included
- before net/if.h or the check for the latter will fail.
+ This fixes using a multi-target mingw distro to build curl .dll for the
+ non-default target.
+ (mirroring the same patch present in src/makefile.m32)
+
+Daniel Stenberg (29 Apr 2015)
+- RELEASE-NOTES: synced with cd39b944afc
- Signed-off-by: Brad King <brad.king@kitware.com>
+ I've not mentioned the bug fixes that were shipped in 7.42.1 from the
+ 7_42 branch.
-- [Peter Wu brought this change]
+- THANKS: merged from the 7.42.1 release
- test22: expand a backtick command
+- CURLOPT_HEADEROPT: default to separate
- This is the only user of the backtick operator in the command. As the
- commands will soon not be executed by a shell anymore (but by perl),
- replace the command with its output.
+ Make the HTTP headers separated by default for improved security and
+ reduced risk for information leakage.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: http://curl.haxx.se/docs/adv_20150429.html
+ Reported-by: Yehezkel Horowitz, Oren Souroujon
-- RELEASE-NOTES: synced with 2ee3c63b13
+Linus Nielsen (28 Apr 2015)
+- docs/libcurl: Corrected a typo in the CURLOPT_PROXY_SERVICE_NAME documentation
-- http2: fix switched macro when http2 is not enabled
+Daniel Stenberg (28 Apr 2015)
+- hash: simplify Curl_str_key_compare()
-- [Tatsuhiro Tsujikawa brought this change]
+- dist: ship CURLOPT_PROXY_SERVICE_NAME and CURLOPT_SERVICE_NAME
- http2: Deal with HTTP/2 data inside response header buffer
-
- Previously if HTTP/2 traffic is appended to HTTP Upgrade response header
- (thus they are in the same buffer), the trailing HTTP/2 traffic is not
- processed and lost. The appended data is most likely SETTINGS frame.
- If it is lost, nghttp2 library complains server does not obey the HTTP/2
- protocol and issues GOAWAY frame and curl eventually drops connection.
- This commit fixes this problem and now trailing data is processed.
+- [Linus Nielsen brought this change]
-Steve Holme (11 Nov 2014)
-- configure: Fixed inclusion of krb5 when CURL_DISABLE_CRYPTO_AUTH is defined
+ Negotiate: custom service names for SPNEGO.
- Commit fe0f8967bf fixed a problem with krb5 not being defined as a
- supported feature when HAVE_GSSAPI is defined, however, it should
- only be included if CURL_DISABLE_CRYPTO_AUTH is not set, like when
- SPNEGO is listed as a feature.
+ * Add new options, CURLOPT_PROXY_SERVICE_NAME and CURLOPT_SERVICE_NAME.
+ * Add new curl options, --proxy-service-name and --service-name.
-Daniel Stenberg (10 Nov 2014)
-- multi: removed Curl_multi_set_easy_connection
-
- It isn't used anywhere!
+- http2: unify http_conn variable names to 'c'
+
+- ConnectionExists: call it multi-use instead of pipelining
- Reported-by: Carlo Wood
+ So that it fits HTTP/2 as well
+
+Kamil Dudka (27 Apr 2015)
+- [Paul Howarth brought this change]
-- [Peter Wu brought this change]
+ nss: fix compilation failure with old versions of NSS
+
+ Bug: http://curl.haxx.se/mail/lib-2015-04/0095.html
- symbol-scan.pl: do not require autotools
+Daniel Stenberg (27 Apr 2015)
+- sws: init http2 state properly
- Makes test1119 pass when building with cmake.
+ It would otherwise cause problems when running tests after 1801 etc.
+
+- curl_easy_getinfo.3: document 'internals' in CURLINFO_TLS_SESSION
- configurehelp.pm is generated by configure (autotools). As cmake does
- not provide a separate variable for the C preprocessor, default to cpp.
- Before commit ef24ecde68a5f577a7f0f423a767620f09a0ab16 ("symbol-scan:
- use configure script knowledge about how to run the C preprocessor"),
- this tool would also use 'cpp'.
+ ... as it was previouly undocumented what the pointer was.
+
+- runtests: use a DISABLED.local file too
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ ... and have git ignore that. Allows for a dev to add tests to ignore in
+ local tests and yet don't obstruct a normal git work flow.
-- [Peter Wu brought this change]
+Marc Hoersken (26 Apr 2015)
+- schannel.c: Fix typo introduced with 3447c973d0
- cmake: add ENABLE_THREADED_RESOLVER, rename ARES
+- schannel.c: Fix possible SEC_E_BUFFER_TOO_SMALL error
- Fix detection of the AsynchDNS feature which not just depends on
- pthreads support, but also on whether USE_POSIX_THREADS is set or not.
- Caught by test 1014.
+ Reported-by: Brian Chrisman
+
+Daniel Stenberg (26 Apr 2015)
+- schannel: re-indented file to follow curl style better
- This patch adds a new ENABLE_THREADED_RESOLVER option (corresponding to
- --enable-threaded-resolver of autotools) which also needs a check for
- HAVE_PTHREAD_H.
+ white space changes only
+
+- Curl_ossl_init: load builtin modules
- For symmetry with autotools, CURL_USE_ARES is renamed to ENABLE_ARES
- (--enable-ares). Checks that test for the availability actually use
- USE_ARES instead as that is the result of whether a-res is available or
- not (in practice this does not matter as CARES is marked as required
- package, but nevertheless it is better to write the intent).
+ To have engine modules work, we must tell openssl to load builtin
+ modules first.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
+ Bug: https://github.com/bagder/curl/pull/206
- cmake: build libhostname for test suite
+- configure: follow-up fix for krb5-config
- Used by some test cases via LD_PRELOAD in order to fake the host name.
+ commit 5b66860652 was incomplete so here's a follow-up fix
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Reported-by: Dagobert Michelsen
+ Bug: https://github.com/bagder/curl/commit/5b668606527613179d0349f21b4ab0df2971e3d2#commitcomment-10473445
-- [Peter Wu brought this change]
-
- cmake: fix HAVE_GETHOSTNAME definition
+- openssl: fix serial number output
- Otherwise Curl_gethostname always fails. Windows has gethostname
- since Vista according to
- http://msdn.microsoft.com/en-us/library/ms738527%28VS.85%29.aspx, but
- accordings to byte_bucket's VC 2005 documentation, it is available even
- in Windows 95. (possibly after installing a Platform SDK, the
- Windows Server 2003 SP1 Platform SDK should be sufficient).
+ The code extracting the cert serial number was broken and didn't display
+ it properly.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: https://github.com/bagder/curl/issues/235
+ Reported-by: dkjjr89
-- [Peter Wu brought this change]
+- [Grant Pannell brought this change]
- tests: fix libhostname visibility
-
- I noticed that a patched cmake build would pass tests with a fake local
- hostname, but the autotools build skips them:
+ sasl_sspi: Populate domain from the realm in the challenge
- got unexpected host name back, LD_PRELOAD failed
+ Without this, SSPI based digest auth was broken.
- It turns out that -fvisibility=hidden hides the symbol, and since the
- tests are not part of libcurl, it fails too. Just remove the LIBCURL
- guard.
-
- Broken since cURL 7.30 (commit 83a42ee20ea7fc25abb61c0b7ef56ebe712d7093,
- "curl.h: stricter CURL_EXTERN linkage decorations logic").
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: https://github.com/bagder/curl/pull/141.patch
-- [Peter Wu brought this change]
+Jay Satiro (25 Apr 2015)
+- [Anthony Avina brought this change]
- tests: fix memleak in server/resolve.c
+ tool: New option --data-raw to HTTP POST data, '@' allowed.
- This makes LeakSanitizer happy.
+ Add new option --data-raw which is almost the same as --data but does
+ not have a special interpretation of the @ character.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- configure: assume krb5 when gss-api works
+ Prior to this change there was no (easy) way to pass the @ character as
+ the first character in POST data without it being interpreted as a
+ special character.
- To please test 1014 while we work out if this is truly the a correct
- assumption.
+ Bug: https://github.com/bagder/curl/issues/198
+ Reported-by: Jens Rantil
-Steve Holme (9 Nov 2014)
-- vtls.h: Fixed compiler warning when compiled without SSL
-
- vtls.c:185:46: warning: unused parameter 'data'
+Dan Fandrich (25 Apr 2015)
+- test2039: fixed line endings that caused a test failure
-- RELEASE-NOTES: Synced with 2fbf23875f
+Daniel Stenberg (24 Apr 2015)
+- [Viktor Szakats brought this change]
-- ntlm: Added separate SSPI based functions
-
- In preparation for moving the NTLM message code into the SASL module,
- and separating the native code from the SSPI code, added functions that
- simply call the functions in curl_ntlm_msg.c.
+ netrc: add unit tests for 'default' support
-- http_ntlm: Use the SASL functions instead
-
- In preparation for moving the NTLM message code into the SASL module
- use the SASL functions in the HTTP code instead.
+- [Viktor Szakats brought this change]
-Daniel Stenberg (9 Nov 2014)
-- libssh2: detect features based on version, not configure checks
+ netrc: support 'default' token
- ... so that non-configure builds get the correct functions too based on
- the libssh2 version used.
+ The 'default' token has no argument and means to match _any_ domain.
+ It must be placed last if there are 'machine <name>' tokens in the same file.
+
+ See full description here:
+ https://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-File.html
-- [Nobuhiro Ban brought this change]
+- ROADMAP.md: extended the HTTP/2 section, reformatted
+
+ Elaborated on several of the remaining HTTP/2 parts and made document
+ use a format that ends up nicer on the web page:
+ http://curl.haxx.se/dev/roadmap.html
- SSH: use the port number as well for known_known checks
+Kamil Dudka (23 Apr 2015)
+- curl -z: do not write empty file on unmet condition
- ... if the libssh2 version is new enough.
+ This commit fixes a regression introduced in curl-7_41_0-186-g261a0fe.
+ It also introduces a regression test 1424 based on tests 78 and 1423.
- Bug: http://curl.haxx.se/bug/view.cgi?id=1448
+ Reported-by: Viktor Szakats
+ Bug: https://github.com/bagder/curl/issues/237
-Steve Holme (9 Nov 2014)
-- INSTALL: Updated pre-processor references to the old VC6 project files
+Dan Fandrich (23 Apr 2015)
+- tool: fixed a comment typo
+
+- README: convert to UTF-8
+
+Jay Satiro (22 Apr 2015)
+- cyassl: Implement public key pinning
- Reworked the two sections that discuss modifying the Visual Studio pre-
- processor settings, and vc6libcurl.dsw/vc6libcurl.dsp, to remove the
- project files references as they have been superseded by a more thorough
- set of project files for VC6 through VC12, but to also give the correct
- reference to this setting in later versions of Visual Studio.
+ Also add public key extraction example to CURLOPT_PINNEDPUBLICKEY doc.
+
+Dan Fandrich (22 Apr 2015)
+- [Alessandro Ghedini brought this change]
-- INSTALL: Added email protocols to the "Disabling in Win32 builds" section
+ curl.1: fix typo
-- configure: Fixed NTLM missing from features when CURL_DISABLE_HTTP defined
+Kamil Dudka (22 Apr 2015)
+- docs: distribute the CURLOPT_PINNEDPUBLICKEY(3) man page, too
-- build: Fixed no NTLM support for email when CURL_DISABLE_HTTP is defined
+- tests/unit/.gitignore: hide unit1601 and above, too
+
+Daniel Stenberg (22 Apr 2015)
+- connectionexists: follow-up to fd9d3a1ef1f
- USE_NTLM would only be defined if: HTTP support was enabled, NTLM and
- cryptography weren't disabled, and either a supporting cryptography
- library or Windows SSPI was being compiled against.
+ PROTOPT_CREDSPERREQUEST still needs to be checked even when NTLM is not
+ enabled.
- This means it was not possible to build libcurl without HTTP support
- and use NTLM for other protocols such as IMAP, POP3 and SMTP. Rather
- than introduce a new SASL pre-processor definition, removed the HTTP
- prerequisite just like USE_SPNEGO and USE_KRB5.
+ Mistake-caught-by: Kamil Dudka
+
+- connectionexists: fix build without NTLM
- Note: Winbind support still needs to be dependent on CURL_DISABLE_HTTP
- as it is only available to HTTP at present.
+ Do not access NTLM-specific struct fields when built without NTLM
+ enabled!
- This bug dates back to August 2011 when I started to add support for
- NTLM to SMTP.
+ bug: http://curl.haxx.se/?i=231
+ Reported-by: Patrick Rapin
-- ntlm: Removed an unnecessary free of native Target Info
-
- Due to commit 40ee1ba0dc the free in Curl_ntlm_decode_type2_target() is
- longer required.
+- bump: start working toward 7.43.0
-- ntlm: Moved the native Target Info clean-up from HTTP specific function
+Kamil Dudka (22 Apr 2015)
+- nss: implement public key pinning for NSS backend
+
+ Bug: https://bugzilla.redhat.com/1195771
-- ntlm: Moved SSPI clean-up code into SASL module
+Daniel Stenberg (22 Apr 2015)
+- dist: include {src,lib}/checksrc.whitelist
-- Makefile.dist: Added support for WinIDN
+Version 7.42.0 (22 Apr 2015)
-- Makefile.vc6: Added support for WinIDN
+Daniel Stenberg (22 Apr 2015)
+- RELEASE-NOTES: updated for 7.42.0
-- Makefile.dist: Added some missing SSPI configurations
+- THANKS: added contributors from 7.42.0 release notes
-- Makefile.dist: Separated the groups of SSL configurations from each other
+- THANKS-filter: a few more alterations to squash
-- Makefile.dist: Grouped the x64 configurations next to their x86 counterparts
+- contrithanks.sh: helper script for maintaining THANKS
-- curl.h: Tidy up of CURL_VERSION_* flags
+- http_done: close Negotiate connections when done
- As the list has gotten a little messy and hard to read, especially with
- the introduction of deprecated items, aligned the values and comments
- into clean columns and reworked some of the comments in the process.
+ When doing HTTP requests Negotiate authenticated, the entire connnection
+ may become authenticated and not just the specific HTTP request which is
+ otherwise how HTTP works, as Negotiate can basically use NTLM under the
+ hood. curl was not adhering to this fact but would assume that such
+ requests would also be authenticated per request.
+
+ CVE-2015-3148
+
+ Bug: http://curl.haxx.se/docs/adv_20150422B.html
+ Reported-by: Isaac Boukris
-- curl_tool: Added krb5 to the supported features
+- fix_hostname: zero length host name caused -1 index offset
+
+ If a URL is given with a zero-length host name, like in "http://:80" or
+ just ":80", `fix_hostname()` will index the host name pointer with a -1
+ offset (as it blindly assumes a non-zero length) and both read and
+ assign that address.
+
+ CVE-2015-3144
+
+ Bug: http://curl.haxx.se/docs/adv_20150422D.html
+ Reported-by: Hanno Böck
-- configure: Added krb5 to the supported features
+- cookie: cookie parser out of boundary memory access
+
+ The internal libcurl function called sanitize_cookie_path() that cleans
+ up the path element as given to it from a remote site or when read from
+ a file, did not properly validate the input. If given a path that
+ consisted of a single double-quote, libcurl would index a newly
+ allocated memory area with index -1 and assign a zero to it, thus
+ destroying heap memory it wasn't supposed to.
+
+ CVE-2015-3145
+
+ Bug: http://curl.haxx.se/docs/adv_20150422C.html
+ Reported-by: Hanno Böck
-- version info: Added Kerberos V5 to the supported features
+- ConnectionExists: for NTLM re-use, require credentials to match
+
+ CVE-2015-3143
+
+ Bug: http://curl.haxx.se/docs/adv_20150422A.html
+ Reported-by: Paras Sethia
-Guenter Knauf (7 Nov 2014)
-- mk-ca-bundle.vbs: switch to new certdata.txt url.
+Jay Satiro (21 Apr 2015)
+- [byronhe brought this change]
-Steve Holme (7 Nov 2014)
-- RELEASE-NOTES: Synced with dcad09e125
+ openssl: add OPENSSL_NO_SSL3_METHOD check
-- http_digest: Fixed some memory leaks introduced in commit 6f8d8131b1
+Daniel Stenberg (20 Apr 2015)
+- CURLOPT_HEADERFUNCTION.3: match parameter name in synopsis and desc
- Fixed a couple of memory leaks as a result of moving code that used to
- populate allocuserpwd and relied on it's clean up.
+ Bug: https://github.com/bagder/curl/issues/229
+ Reported-by: bsammon
-- docs: Updated following the addition of SSPI based HTTP digest auth
+Kamil Dudka (20 Apr 2015)
+- [Mostyn Bramley-Moore brought this change]
-- sasl_sspi: Tidy up of the existing digest code
-
- Following the addition of SSPI support for HTTP digest, synchronised
- elements of the email digest code with that of the new HTTP code.
+ configure --with-nss: remove unneeded libs from the fallback
-- http_digest: Post SSPI support tidy up
-
- Post tidy up to ensure commonality of code style and variable names.
+Daniel Stenberg (20 Apr 2015)
+- contributors.sh: fix help output, filter out (-prefix from names
-Dan Fandrich (6 Nov 2014)
-- test552: Don't run HTTP digest tests for SSPI based builds
-
- Technical difficulties prevented this from going into the
- previous commit.
+- RELEASE-NOTES: synced with cc0e7ebc3be0
-Steve Holme (6 Nov 2014)
-- tests: Don't run HTTP digest tests for SSPI based builds
-
- Added !SSPI to the features list of the HTTP digest tests, as SSPI
- based builds now use the Windows SSPI messaging API rather than the
- internal functions, and we can't control the random numbers that get
- used as part of the digest.
+- [Michael Stapelberg brought this change]
-Daniel Stenberg (6 Nov 2014)
-- curl.1: show zone index use in a URL
+ CURLMOPT_TIMERFUNCTION.3: Clarify, add an example
-Steve Holme (6 Nov 2014)
-- http_digest: Fixed auth retry loop when SSPI based authentication fails
+- [Viktor Szakáts brought this change]
-- http_digest: Reworked the SSPI based input token storage
-
- Reworked the input token (challenge message) storage as what is passed
- to the buf and desc in the response generation are typically blobs of
- data rather than strings, so this is more in keeping with other areas
- of the SSPI code, such as the NTLM message functions.
+ vtls/openssl: use https in URLs and a comment typo fixed
-- sasl_sspi: Fixed compilation warning from commit 2d2a62e3d9
+- curl_version_info.3: fixed the 'protocols' variable type
- Added void reference to unused 'data' parameter back to fix compilation
- warning.
+ Reported-by: John Marshall
+ Bug: https://github.com/bagder/curl/issues/225
-- sspi: Align definition values to even columns as we use 2 char spacing
+Dan Fandrich (18 Apr 2015)
+- test1423: added missing "file" to server section
-- sspi: Fixed missing definition of ISC_REQ_USE_HTTP_STYLE
+Daniel Stenberg (17 Apr 2015)
+- TheArtOfHttpScripting: Multiple URLs + Multiple HTTP methods
- Some versions of Microsoft's sspi.h don't define this.
+ ... and some minor edits
-- sasl: Removed non-SSPI Digest functions and defines from SSPI based builds
+- Revert "HTTP: don't abort connections with pending Negotiate authentication"
+
+ This reverts commit 5dc68dd6092a789bb5e0a67a1c1356ba87fdcbc6.
- Introduced in commit 7e6d51a73c these functions and definitions are only
- required by the internal challenge-response functions now.
+ Bug: https://github.com/bagder/curl/issues/223
+ Reported-by: Michael Osipov
-- sasl_sspi: Added HTTP digest response generation code
+Jay Satiro (17 Apr 2015)
+- cyassl: Fix include order
+
+ Prior to this change CyaSSL's build options could redefine some generic
+ build symbols.
+
+ http://curl.haxx.se/mail/lib-2015-04/0069.html
-- http_digest: Added SSPI based challenge decoding code
+Kamil Dudka (17 Apr 2015)
+- configure --with-nss: drop redundant if statement
-- http_digest: Added SSPI based clean-up code
+- configure --with-nss=PATH: query pkg-config if available
+
+ Bug: https://github.com/bagder/curl/pull/171
-- http_digest: Added SSPI based authentication functions
+Daniel Stenberg (17 Apr 2015)
+- parsecfg: do not continue past a zero termination
- This temporarily breaks HTTP digest authentication in SSPI based builds,
- causing CURLE_NOT_BUILT_IN to be returned. A follow up commit will
- resume normal operation.
+ When a config file line ends without newline, the parsing function could
+ continue reading beyond that point in memory.
+
+ Reported-by: Hanno Böck
-- http_digest: Added required SSPI based variables to digest structure
+Jay Satiro (16 Apr 2015)
+- gitignore: Ignore Windows build output directories
-Daniel Stenberg (6 Nov 2014)
-- [Frank Gevaerts brought this change]
+Daniel Stenberg (15 Apr 2015)
+- RELEASE-NOTES: synced with 1ba6e4c88e0
- contributors.sh: --releasenotes reads in names from RELEASE-NOTES
-
- This is very handy when updating the RELEASE-NOTES as then we sometimes
- have names added manually in the existing list and we use this script to
- update the set.
+- TODO: 17.9 Choose the name of file in braces for complex URLs
-- RELEASE-NOTES: synced with 68542e72a9
+- TODO: a little caution that maybe not all ideas are still good
-- curl_easy_setopt.3: add CURLOPT_PINNEDPUBLICKEY
-
- Reported-by: Christian Hägele
- Bug: http://curl.haxx.se/mail/lib-2014-11/0078.html
+- TODO: 17.8 offer color-coded HTTP header output
-Steve Holme (5 Nov 2014)
-- build: Fixed Visual Studio project file generation of strdup.[c|h]
-
- As the curl command-line tool now includes it's own version of strdup(),
- for platforms that don't have it, fixed up the git respository Visual
- Studio project file generator to not include the version from lib in the
- tool project files, rather than having both lib\strdup.[c|h] and
- src\tool_strdup.[c|h] present.
+- TODO: 17.7 warning when sending binary output to terminal
-Daniel Stenberg (5 Nov 2014)
-- tool_strdup.c: include the tool strdup.h
-
- ... not the lib/ one that the tool no longer uses!
+- KNOWN_BUGS: #90 IMAP "SEARCH ALL" truncates output on large boxes
-- THANKS-filter: added another Michał Górny version we've used
+Jay Satiro (14 Apr 2015)
+- cyassl: Add support for TLS extension SNI
-- contributors.sh: split lists using " and "
-
- ... and require the space after the filtering to make the filter able to
- remove names.
+Daniel Stenberg (13 Apr 2015)
+- [Matthew Hall brought this change]
-Steve Holme (5 Nov 2014)
-- http_digest: Fixed memory leaks from commit 6f8d8131b1
+ gitignore: ignore test-driver file
-- sasl: Fixed compilation warning from commit 25264131e2
-
- Added forward declaration of digestdata to overcome the following
- compilation warning:
-
- warning: 'struct digestdata' declared inside parameter list
-
- Additionally made the ntlmdata forward declaration dependent on
- USE_NTLM similar to how digestdata and kerberosdata are.
+- [Matthew Hall brought this change]
-- sasl: Fixed HTTP digest challenges with spaces between auth parameters
-
- Broken as part of the rework, in commit 7e6d51a73c, to assist with the
- addition of HTTP digest via Windows SSPI.
+ vtls_openssl: improve PKCS#12 load failure error message
-- http_digest: Fixed compilation errors from commit 6f8d8131b1
-
- error: invalid operands to binary
- warning: pointer targets in assignment differ in signedness
+- [Matthew Hall brought this change]
-- http_digest: Moved response generation into SASL module
+ vtls_openssl: fix minor typo in PKCS#12 load routine
-- http_digest: Moved challenge decoding into SASL module
+- [Matthew Hall brought this change]
-- http_digest: Moved clean-up function into SASL module
+ vtls_openssl: improve client certificate load failure error messages
-- http_digest: Moved algorithm definitions to SASL module
+- [Matthew Hall brought this change]
-- [Gisle Vanem brought this change]
+ vtls_openssl: remove ambiguous SSL_CLIENT_CERT_ERR constant
- ssh: Fixed build on platforms where R_OK is not defined
-
- Bug: http://curl.haxx.se/mail/lib-2014-11/0035.html
- Reported-by: Jan Ehrhardt
+- BUGS: refer to the github issue tracker now as primary
-- strdup: Removed irrelevant comment
+- firefox-db2pem: fix wildcard to find Firefox default profile
- ...as Curl_memdup() duplicates an area of fix size memory, that may be
- binary, and not a null terminated string.
-
-- url.c: Fixed compilation warning
+ At some point, Firefox has changed and generates different directory
+ names for the default profile that made this script fail to find them.
- conversion from 'curl_off_t' to 'size_t', possible loss of data
+ Bug: https://github.com/bagder/curl/issues/207
+ Reported-by: sneakyimp
-- http_digest: Use CURLcode instead of CURLdigest
+Jay Satiro (11 Apr 2015)
+- cyassl: Include the CyaSSL build config
- To provide consistent behaviour between the various HTTP authentication
- functions use CURLcode based error codes for Curl_input_digest()
- especially as the calling code doesn't use the specific error code just
- that it failed.
+ CyaSSL >= 2.6.0 may have an options.h that was generated during
+ its build by configure.
-Daniel Stenberg (5 Nov 2014)
-- contributors.sh: filter common alternative name spellings
+- build: Generate source prerequisites for Visual Studio in generate.bat
- docs/THANKS-filter is a new filter file for converting contributor names
- we get or have recorded in alternative formats to the one we already use
- in THANKS. To help us show individual contributors using a single
- presentation of their names.
-
-- THANKS: added missing contributor from 2012
+ Prior to this change Visual Studio builds could fail due to missing
+ prerequisites src/tool_hugehelp.c and include/curl/curlbuild.h.
+
+ http://curl.haxx.se/mail/lib-2015-04/0034.html
-- [Frank Gevaerts brought this change]
+Daniel Stenberg (9 Apr 2015)
+- [Viktor Szakats brought this change]
- Remove duplicate names.
+ lib/makefile.m32: add missing libs to build libcurl.dll
- The removed names also appear as:
- Andrés García, François Charlier, Gökhan Şengün, Michał Górny, Sébastien
- Willemijns, Christopher Conroy, John E. Malmberg, Luca Altea, Peter Su,
- S. Moonesamy, Samuel Listopad, Yasuharu Yamada, Karl Moerder
+ Add 'gdi32' and 'crypt32' Windows implibs to avoid failure
+ while building libcurl.dll using the mingw compiler.
+ The same logic is used in 'src/makefile.m32' when
+ building curl.exe.
+
+Kamil Dudka (8 Apr 2015)
+- test142[23]: verify that an empty file is stored on success
-Steve Holme (5 Nov 2014)
-- sspi: Define authentication package name constants
+- src/tool_operate: create output file on successful download
- These were previously hard coded, and whilst defined in security.h,
- they may or may not be present in old header files given that these
- defines were never used in the original code.
+ ... of an empty file
- Not only that, but there appears to be some ambiguity between the ANSI
- and UNICODE NTLM definition name in security.h.
+ Bug: https://github.com/bagder/curl/issues/183
-Patrick Monnerat (5 Nov 2014)
-- Adjust OS400-specific support to last release
+- src/tool_cb_wrt: separate fnc for output file creation
-Daniel Stenberg (5 Nov 2014)
-- THANKS: added two missing names and removed a duplicate
+Daniel Stenberg (7 Apr 2015)
+- [Da-Yoon Chung brought this change]
+
+ lib/transfer.c: Remove factor of 8 from sleep time calculation
- ./contributors.sh found these extra ones that somehow had fallen
- through the cracks and never gotten added here.
+ The factor of 8 is a bytes-to-bits conversion factor, but pkt_size and
+ rate_bps are both in bytes. When using the rate limiting option, curl
+ waits 8 times too long, and then transfers very quickly until the
+ average rate reaches the limit. The average rate follows the limit over
+ time, but the actual traffic is bursty.
- Reported-by: Frank Gevaerts
+ Thanks-to: Benjamin Gilbert
-- bump: towards next release
-
-- THANKS: added names from 7.39.0 release notes
+- [Jay Satiro brought this change]
-Version 7.39.0 (5 Nov 2014)
+ x509asn1: Silence x64 loss-of-data warning on RSA key length assignment
+
+ The key length in bits will always fit in an unsigned long so the
+ loss-of-data warning assigning the result of x64 pointer arithmetic to
+ an unsigned long is unnecessary.
-Daniel Stenberg (5 Nov 2014)
-- RELEASE-NOTES: 7.39.0 release (commit b3875606925)
+- [Jay Satiro brought this change]
-- curl_easy_duphandle: CURLOPT_COPYPOSTFIELDS read out of bounds
+ cyassl: Use CYASSL_MAX_ERROR_SZ for error buffer size
- When duplicating a handle, the data to post was duplicated using
- strdup() when it could be binary and contain zeroes and it was not even
- zero terminated! This caused read out of bounds crashes/segfaults.
+ Also fix it so that all ERR_error_string calls use an error buffer.
+ CyaSSL's implementation of ERR_error_string only writes the error when
+ an error buffer is passed.
- Since the lib/strdup.c file no longer is easily shared with the curl
- tool with this change, it now uses its own version instead.
-
- Bug: http://curl.haxx.se/docs/adv_20141105.html
- CVE: CVE-2014-3707
- Reported-By: Symeon Paraschoudis
+ http://www.yassl.com/forums/topic599-openssl-compatibility-and-errerrorstring.html
-- lib544.c: use duphandle for test 545
-
- To verify that curl_easy_duphandle() works fine on a handle that has
- gotten data stored with *_COPYPOSTFIELDS.
+- [Jay Satiro brought this change]
-- tests: add new feature 'SSLpinning'
+ cyassl: Remove 'Connecting to' message from cyassl_connect_step2
- ... and make test 2034 and 2035 require it, and have it set when built
- with OpenSSL or GnuTLS.
+ Prior to this change libcurl could show multiple 'CyaSSL: Connecting to'
+ messages since cyassl_connect_step2 is called multiple times, typically.
+ The message is superfluous even once since libcurl already informs the
+ user elsewhere in code that it is connecting.
-- buildconf: update copyright year
+- [Viktor Szakats brought this change]
-Steve Holme (4 Nov 2014)
-- INSTALL: Consistent spacing in section headings, paragraphs and examples
+ checksrc.bat: quotes to support an SRC_DIR with spaces
-Daniel Stenberg (4 Nov 2014)
-- buildconf: stop checking for libtool
+- hostip: fix compiler warnings
- As we only use libtoolize, only check for that!
-
-Steve Holme (4 Nov 2014)
-- INSTALL: Corrected MIT Kerberos and Heimdal package names
+ introduced in the previous mini-series of 3 commits
-- README: Corrected inconsistent use of --help
+- [Stefan Bühler brought this change]
-- INSTALL: Use GSS-API rather than GSSAPI
+ actually implement CURLOPT_RESOLVE removals
- As implementations are refereed to GSS-API libraries as per the RFC and
- GSSAPI typically refers to the SASL authentication mechanism.
-
- ...and minor rewording on the same paragraph.
+ - also log when a CURLOPT_RESOLVE entry couldn't get parsed
-- README: Added note about using Visual Studio projects out of git repository
+- [Stefan Bühler brought this change]
-Daniel Stenberg (4 Nov 2014)
-- [K. R. Walker brought this change]
+ move Curl_share_lock and ref counting into Curl_fetch_addr
- cmake: fix ZLIB_INCLUDE_DIRS use
-
- CMake 2.8's FindZLIB.cmake documents ZLIB_INCLUDE_DIRS, see
- http://www.cmake.org/cmake/help/v2.8.0/cmake.html#module:FindZLIB
+- [Stefan Bühler brought this change]
+
+ fix refreshing of obsolete dns cache entries
- Bug: https://github.com/bagder/curl/pull/123
+ - cache entries must be also refreshed when they are in use
+ - have the cache count as inuse reference too, freeing timestamp == 0 special
+ value
+ - use timestamp == 0 for CURLOPT_RESOLVE entries which don't get refreshed
+ - remove CURLOPT_RESOLVE special inuse reference (timestamp == 0 will prevent refresh)
+ - fix Curl_hostcache_clean - CURLOPT_RESOLVE entries don't have a special
+ reference anymore, and it would also release non CURLOPT_RESOLVE references
+ - fix locking in Curl_hostcache_clean
+ - fix unit1305.c: hash now keeps a reference, need to set inuse = 1
+
+- RELEASE-NOTES: synced with abf6bddc14a
- [Jay Satiro brought this change]
- SSL: PolarSSL default min SSL version TLS 1.0
-
- - Prior to this change no SSL minimum version was set by default at
- runtime for PolarSSL. Therefore in most cases PolarSSL would probably
- have defaulted to a minimum version of SSLv3 which is no longer secure.
+ checksrc.bat: Check lib\vtls source
-- opts-Makefile: put more man pages into dist and make hmtl+pdf
+- [Jay Satiro brought this change]
-- curl_multi_setopt.3: refer to stand-alone pages
+ cyassl: Set minimum protocol version before CTX callback
- ... instead of duplicating info.
+ This change is to allow the user's CTX callback to change the minimum
+ protocol version in the CTX without us later overriding it, as we did
+ prior to this change.
-- opts: more multi options as stand-alone man pages
+- [Jay Satiro brought this change]
-- Makefile.am: two cmake files are gone
+ build-openssl.bat: Fix mixed line endings
- 8cb010144 removed the CurlCheckCSourceCompiles.cmake and
- CurlCheckCSourceRuns.cmake files
-
-- opts: made stand-alone man-pages for several multi options
+ Use LF not CRLF, throughout. msysgit will only convert a file to CRLF
+ on checkout if it's not mixed.
-- [Carlo Wood brought this change]
+- [Jay Satiro brought this change]
- Curl_single_getsock: fix hold/pause sock handling
+ cyassl: Fix certificate load check
- The previous condition that checked if the socket was marked as readable
- when also adding a writable one, was incorrect and didn't take the pause
- bits properly into account.
+ SSL_CTX_load_verify_locations can return negative values on fail,
+ therefore to check for failure we check if load is != 1 (success)
+ instead of if load is == 0 (failure), the latter being incorrect given
+ that behavior.
-- [Peter Wu brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
- cmake: fix struct sockaddr_storage check
-
- CHECK_TYPE_SIZE_PREINCLUDE is an internal, undocumented variable which
- was removed in cmake 2.8.1. According to the MSDN docs[1], inclusion
- of winsock2.h is sufficient. WIN32_LEAN_AND_MEAN does not really seem
- to affect the tests, so remove it too[2].
-
- For the non-windows case, remove inet headers as POSIX only requires
- sys/socket.h.
+ http2: Fix missing nghttp2_session_send call in Curl_http2_switched
- [1]: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740504%28v=vs.85%29.aspx
- [2]: http://stackoverflow.com/questions/11040133/what-does-defining-win32-lean-and-mean-exclude-exactly
+ Previously in Curl_http2_switched, we called nghttp2_session_mem_recv to
+ parse incoming data which were already received while curl was handling
+ upgrade. But we didn't call nghttp2_session_send, and it led to make
+ curl not send any response to the received frames. Most likely, we
+ received SETTINGS from server at this point, so we missed opportunity to
+ send SETTINGS + ACK. This commit adds missing nghttp2_session_send call
+ in Curl_http2_switched to fix this issue.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: https://github.com/bagder/curl/issues/192
+ Reported-by: Stefan Eissing
-- [Peter Wu brought this change]
-
- cmake: clean OtherTests, fixing -Werror
+- cookie: handle spaces after the name in Set-Cookie
- There were several -Wunused warnings and one duplicate macro definition.
- The EXTRA_DEFINES variable of the CurlCheckCSources macro was being
- abused ("__unused1\n#undef inline\n#define __unused2", seriously?) to
- insert extra C code. Avoid this broken abstraction and use cmake's
- check_c_source_compiles directly (works fine with CMake 2.8, maybe
- even cmake 2.6).
+ "name =value" is fine and the space should just be skipped.
- After cleaning up all related variables (EXTRA_DEFINES,
- HEADER_INCLUDES, auxiliary headers_hack), also remove a duplicate
- add_headers_include macro and remove duplicate header additions before
- the struct timeval check.
+ Updated test 31 to also test for this.
- Oh, and now the code is converted to use CheckCSourceRuns and
- CheckCSourceCompiles, the two curl-specific helpers can be removed.
- Unfortunately, the cmake output is now slightly more verbose. Before:
+ Bug: https://github.com/bagder/curl/issues/195
+ Reported-by: cromestant
+ Help-by: Frank Gevaerts
+
+- [Jay Satiro brought this change]
+
+ cyassl: Fix library initialization return value
- Performing Test int send(int, const void *, size_t, int) (curl_cv_func_send_test)
- Performing Test int send(int, const void *, size_t, int) (curl_cv_func_send_test) - Failed
+ (Curl_cyassl_init)
+ - Return 1 on success, 0 in failure.
- Since check_c_source_compiles prints the varname, now you see:
+ Prior to this change the fail path returned an incorrect value and the
+ evaluation to determine whether CyaSSL_Init had succeeded was incorrect.
+ Ironically that combined with the way curl_global_init tests SSL library
+ initialization (!Curl_ssl_init()) meant that CyaSSL having been
+ successfully initialized would be seen as that even though the code path
+ and return value in Curl_cyassl_init were wrong.
+
+- [Thomas Ruecker brought this change]
+
+ CURLOPT_HTTP200ALIASES.3: Mainly SHOUTcast servers use "ICY 200"
- Performing Test curl_cv_func_send_test
- Performing Test curl_cv_func_send_test - Failed
- Tested: int send(int, const void *, size_t, int)
+ Icecast versions 1.3.0 through 1.3.12 would reply with "ICY 200"
+ under certain conditions:
- Compared cmake output with each other using vimdiff, no functional
- differences were found. Tested with GCC 4.9.1 and Clang 3.5.0.
+ client_wants_icy_headers (connection_t *con)
+ {
+ const char *val;
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
-
- cmake: fix gethostby{addr,name}_r in CurlTests
+ if (!con)
+ return 1;
- This patch cleans up the automatically-generated (?) code and fixes one
- case that will always fail due to syntax error.
+ val = get_user_agent (con);
+ if (!val || !val[0] || strcmp (val, "(null)") == 0)
+ return 1;
- HAVE_GETHOSTBYADDR_R_5_REENTRANT always failed because of a trailing
- character ("int length;q"). Several parameter type and unused variable
- warnings popped up. This causes a detection failure with -Werror.
+ if (con->food.client->use_icy)
+ return 1;
+ if (strncasecmp (val, "winamp", 6) == 0)
+ return 1;
+ if (strncasecmp (val, "Shoutcast", 9) == 0)
+ return 1;
- Observe that the REENTRANT cases are exactly the same as their
- non-REENTRANT cases except for a `_REENTRANT` macro definition.
- Merge all these pieces and build one big main function with different
- cases, but reusing variables where logical.
+ return 0;
+ }
- For the cases where the parameters where NULL, I looked at
- lib/hostip4.c to get an idea of the parameters types.
+ So mainly if there is no 'user agent' or it is '(null)' or contains
+ 'winamp' or 'Shoutcast'.
- void-cast variables such as 'rc' to avoid -Wuninitialized errors.
+ No mainstream distribution carries Icecast 1.3.x anymore, after all
+ it was released in 2002 and superseded by Icecast 2.x.
+
+Dan Fandrich (31 Mar 2015)
+- axtls: add timeout within Curl_axtls_connect
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ This allows test 405 to pass on axTLS.
-- [Peter Wu brought this change]
+Daniel Stenberg (30 Mar 2015)
+- [Jay Satiro brought this change]
- cmake: drop _BSD_SOURCE macro usage
+ checksrc: Windows-specific input fixes
- autotools does not use features.h nor _BSD_SOURCE. As this macro
- triggers warnings since glibc 2.20, remove it. It should not have
- functional differences.
+ lib/config-win32ce.h
+ - Fix whitespace for checksrc compliance.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-Steve Holme (2 Nov 2014)
-- RELEASE-NOTES: Synced with d71ea7c01e
+ lib/checksrc.pl
+ - Remove trailing carriage returns from input.
- Additionally, updated "GSSAPI" to "GSS-API" for a Cmake related change
- as GSSAPI can be confused with the authentication mechanism rather than
- a GSS-API implementation library such as MIT or Heimdal.
+ projects/checksrc.bat
+ - Ignore tool_hugehelp.c.
-- build: Added WinIDN build configuration options
-
- Added support for WinIDN build configurations to the VC6 project files.
+- [Dagobert Michelsen brought this change]
-- build: Added WinIDN build configuration options
+ configure: Use KRB5CONFIG for krb5-config
- Added support for WinIDN build configurations to the VC7 and VC7.1
- project files.
-
-- build: Fixed the pre-processor separator in Visual Studio project files
+ Allows the user to easier override its path.
- A left over from the VC6 project files, so mainly cosmetic in Visual
- Studio .NET as it can handle both comma and semi-colon characters for
- separating multiple pre-processor definitions.
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1486
+
+- multi: remove_handle: move pending connections
- However, the IDE uses semi-colons if the value is edited, and as such,
- this may cause problems in future for anyone updating the files or
- merging patches.
+ If the handle removed from the multi handle happens to be the one
+ "owning" the pipeline other transfers will be waiting indefinitely. Now
+ we move such handles back to connect to have them race (again) for
+ getting the connection and thus avoid hanging.
- Used the Visual Studio IDE to correct the separator character.
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1465
+ Reported-by: Jiri Dvorak
-- build: Added optional specific version generation of VC project files
+- KNOWN_BUGS: 89 is bug #1411
- ..when working from the git repository. This is particularly useful
- for single development environments where the project files for all
- supported versions of Visual Studio may not be required.
+ Disabling pipelining on multi handle with in-progress pipelined requests
+ leads to heap corruption and crash
- [Jay Satiro brought this change]
- build-openssl.bat: Fix x64 release build
+ cyassl: CTX callback cosmetic changes and doc fix
- Prior to this change if x64 release was specified a failed attempt was
- made to build x86 release instead.
+ - More descriptive fail message for NO_FILESYSTEM builds.
+ - Cosmetic changes.
+ - Change more of CURLOPT_SSL_CTX_* doc to not be OpenSSL specific.
+
+- RELEASE-NOTES: synced with d2feb71752f
+
+Dan Fandrich (28 Mar 2015)
+- tool_operate: only set SSL options if SSL is enabled
+
+- runtests.pl: detect WolfSSL as yassl
-- CURLOPT_XOAUTH2_BEARER.3: Corrected the OAuth version number
+Daniel Stenberg (27 Mar 2015)
+- [Kyle L. Huff brought this change]
-- CURLOPT_SASL_IR.3: Added supported mechanism information
+ cyassl: add SSL context callback support for CyaSSL
- ...and removed duplication of what protocols are supported from the
- description text.
+ Adds support for CURLOPT_SSL_CTX_FUNCTION when using CyaSSL, and better
+ handles CyaSSL instances using NO_FILESYSTEM.
-- opts: Use common wording for MAIL related names
+- [Kyle L. Huff brought this change]
-- opts: Use common wording for TLS user/password option names
+ cyassl: remove undefined reference to CyaSSL_no_filesystem_verify
- ...and revised the proxy wording a little as well.
+ CyaSSL_no_filesystem_verify is not (or no longer) defined by cURL or
+ CyaSSL. This reference causes build errors when compiling with
+ NO_FILESYSTEM.
-- CURLOPT_MAXCONNECTS.3: Reworked the description to be less confusing
+- [Jay Satiro brought this change]
+
+ build: Fix libcurl.sln erroneous mixed configurations
- ...and corrected a related typo in curl_easy_setopt.3.
+ Prior to this change some Release configurations had an active
+ configuration assignment to their Debug counterpart.
-Guenter Knauf (2 Nov 2014)
-- RELEASE-NOTES: removed obsolete entry; fixed entry.
+- [Jay Satiro brought this change]
-Steve Holme (2 Nov 2014)
-- RELEASE-NOTES: Synced with e7da67f5d3
+ vtls: Don't accept unknown CURLOPT_SSLVERSION values
-- docs: Added mention of Kerberos for CURL_VERSION_SSPI
-
- As this has been present for SOCKSv5 proxy since v7.19.4 and for IMAP,
- POP3 and SMTP authentication since v7.38.0.
+- [Jay Satiro brought this change]
-- CURL_VERSION_KERBEROS4: Mark as deprecated
-
- Support for Kerberos V4 was removed in v7.33.0.
+ url: Don't accept CURLOPT_SSLVERSION unless USE_SSL is defined
-- sasl: Fixed Kerberos V5 inclusion when CURL_DISABLE_CRYPTO_AUTH is used
-
- Typically the USE_WINDOWS_SSPI definition would not be used when the
- CURL_DISABLE_CRYPTO_AUTH define is, however, it is still a valid build
- configuration and, as such, the SASL Kerberos V5 (GSSAPI) authentication
- data structures and functions would incorrectly be used when they
- shouldn't be.
-
- Introduced a new USE_KRB5 definition that takes into account the use of
- CURL_DISABLE_CRYPTO_AUTH like USE_SPNEGO and USE_NTLM do.
+- [Paul Howarth brought this change]
-- openssl: Use 'CURLcode result'
+ build: link curl to openssl libraries when openssl support is enabled
- More CURLcode fixes.
-
-Daniel Stenberg (1 Nov 2014)
-- resume: consider a resume from [content-length] to be OK
+ This fixes a build failure where openssl and libmetalink are used
+ together and the system linker does not do implicit linking (e.g.
+ Fedora 13 and later releases). The MD5 functions required for
+ metalink support must be pulled in from the openssl crypto library.
- Basically since servers often then don't respond well to this and
- instead send the full contents and then libcurl would instead error out
- with the assumption that the server doesn't support resume. As the data
- is then already transfered, this is now considered fine.
+ This is similar to commit c6e7cbb94e669b85d3eb8e015ec51d0072112133,
+ which fixes the same sort of problem for NSS builds.
+
+- multi: on a request completion, check all CONNECT_PEND transfers
- Test case 1434 added to verify this. Test case 1042 slightly modified.
+ ... even if they don't have an associated connection anymore. It could
+ leave the waiting transfers pending with no active one on the
+ connection.
- Reported-by: hugo
- Bug: http://curl.haxx.se/bug/view.cgi?id=1443
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1465
+ Reported-by: Jiri Dvorak
-Steve Holme (1 Nov 2014)
-- openssl: Use 'CURLcode result'
-
- More standardisation of CURLcode usage and coding style.
+- [Emil Lerner brought this change]
-- openssl: Use 'CURLcode result'
+ globbing: fix url number calculation when using range with step
- ...and some minor code style changes.
+ In function glob_range, the number of urls was multiplied by (max - min
+ + 1), regardless of step. The correct formula is (max - min) / step + 1
-- ftplistparser: We prefer 'CURLcode result'
+- README.http2: refreshed and added TODO items
-- opts: Use common wording for user/password option names
+- [Emil Lerner brought this change]
-- CURLOPT_CONNECT_ONLY.3: Removed "This option is implemented for..." text
+ globbing: fix step parsing for character globbing ranges
- As this is covered by the PROTOCOLS section and saves having to update
- two parts of the document with the same information in future.
+ The glob_range function used wrong offset (3 instead of 4) for parsing
+ integer step inside character range specification, which led to 'bad
+ range' error when using character ranges with explicitly specified step
+ (such as '[a-z:2]')
-- CURLOPT_GSSAPI_DELEGATION.3: Use GSS-API rather than GSSAPI
-
- As implementations are refereed to GSS-API libraries as per the RFC and
- GSSAPI typically refers to an authentication mechanism.
+- polarssl: called mbedTLS in 1.3.10 and later
-- CURLOPT_CONNECT_ONLY.3: Fixed incomplete protocol list
+- polarssl: remove dead code
- Added missing IMAP to the protocol list.
-
-- code cleanup: Use 'CURLcode result'
-
-- curl_easy_setopt.3: Fixed lots of typos
-
-- curl_easy_setopt.3: Moved CURLOPT_DIRLISTONLY into PROTOCOL OPTIONS
+ and simplify code by changing if-elses to a switch()
- ...as this option affects more that just FTP.
-
-Guenter Knauf (30 Oct 2014)
-- build: added Watcom support to build with WinSSL.
+ CID 1291706: Logically dead code. Execution cannot reach this statement
-Daniel Stenberg (30 Oct 2014)
-- CURLOPT_PINNEDPUBLICKEY.3: added details
+- polarssl: remove superfluous for(;;) loop
+
+ "unreachable: Since the loop increment is unreachable, the loop body
+ will never execute more than once."
+
+ Coverity CID 1291707
-Steve Holme (30 Oct 2014)
-- CURLOPT_CUSTOMREQUEST.3: Fixed incomplete protocol list
+- Curl_ssl_md5sum: return CURLcode
+
+ ... since the funciton can fail on OOM. Check this return code.
- Whilst the description included information about SMTP, the protocol
- list only showed "TTP, FTP, IMAP, POP3".
+ Coverity CID 1291705.
-- CURLOPT_DIRLISTONLY.3: Added information about the usage in POP3
+- [Jay Satiro brought this change]
-Daniel Stenberg (29 Oct 2014)
-- openssl: enable NPN separately from ALPN
+ cyassl: default to highest possible TLS version
- ... and allow building with nghttp2 but completely without NPN and ALPN,
- as nghttp2 can still be used for plain-text HTTP.
+ (cyassl_connect_step1)
+ - Use TLS 1.0-1.2 by default when available.
- Reported-by: Lucas Pardue
-
-- configure.ac: remove checks for OpenSSL NPN/ALPN funcs again
+ CyaSSL/wolfSSL >= v3.3.0 supports setting a minimum protocol downgrade
+ version.
- ... since the conditional in the code are now based on OpenSSL versions
- instead to better support non-configure builds.
+ cyassl/cyassl@322f79f
-- opts: added some "SEE ALSO" references
+- [Jay Satiro brought this change]
-Steve Holme (29 Oct 2014)
-- RELEASE-NOTES: Synced with 32913182dc
+ cyassl: Check for invalid length parameter in Curl_cyassl_random
-- vtls.c: Fixed compilation warning
-
- conversion from 'size_t' to 'unsigned int', possible loss of data
+- [Jay Satiro brought this change]
-- sspi: Return CURLE_LOGIN_DENIED on AcquireCredentialsHandle() failure
-
- Return a more appropriate error, rather than CURLE_OUT_OF_MEMORY when
- acquiring the credentials handle fails. This is then consistent with
- the code prior to commit f7e24683c4 when log-in credentials were empty.
+ cyassl: If wolfSSL then identify as such in version string
-- sasl_sspi: Allow DIGEST-MD5 to use current windows credentials
+Dan Fandrich (24 Mar 2015)
+- symbols-in-versions: added CURLOPT_PATH_AS_IS
+
+- testcurl.pl: add the --notes option to supply more info about a build
- Fixed the ability to use the current log-in credentials with DIGEST-MD5.
- I had previously disabled this functionality in commit 607883f13c as I
- couldn't get this to work under Windows 8, however, from testing HTTP
- Digest authentication through Windows SSPI and then further testing of
- this code I have found it works in Windows 7.
+ Support for notes has been in place for a while, but it required
+ being added to the setup file manually.
+
+- curl_memory: make curl_memory.h the second-last header file loaded
- Some further investigation is required to see what the differences are
- between Windows 7 and 8, but for now enable this functionality as the
- code will return an error when AcquireCredentialsHandle() fails.
+ This header file must be included after all header files except
+ memdebug.h, as it does similar memory function redefinitions and can be
+ similarly affected by conflicting definitions in system or dependent
+ library headers.
-Kamil Dudka (29 Oct 2014)
-- transfer: drop the code handling the ssl_connect_retry flag
+Daniel Stenberg (24 Mar 2015)
+- openssl: do the OCSP work-around for libressl too
- Its last use has been removed by the previous commit.
+ I tested with libressl git master now (v2.1.4-27-g34bf96c) and it seems to
+ still require the work-around for stapling to work.
-- nss: drop the code for libcurl-level downgrade to SSLv3
+- openssl: verifystatus: only use the OCSP work-around <= 1.0.2a
- This code was already deactivated by commit
- ec783dc142129d3860e542b443caaa78a6172d56.
+ URL: http://curl.haxx.se/mail/lib-2015-03/0205.html
+ Reported-by: Alessandro Ghedini
-- openssl: fix a line length warning
+- openssl: adapt to ASN1/X509 things gone opaque in 1.1
-Guenter Knauf (29 Oct 2014)
-- Added NetWare support to build with nghttp2.
+Dan Fandrich (24 Mar 2015)
+- [Jay Satiro brought this change]
-- Fixed error message since we require ALPN support.
+ curl_easy_setopt.3: Fix misspelling in CURLOPT_PATH_AS_IS description
-- Check for ALPN via OpenSSL version number.
-
- This check works also with to non-configure platforms.
+- [Viktor Szakáts brought this change]
-Steve Holme (28 Oct 2014)
-- sasl_sspi: Fixed typo in comment
+ CURLOPT_HTTPHEADER.3: fix typo in recent commit
-- code cleanup: We prefer 'CURLcode result'
+- [Viktor Szakáts brought this change]
+
+ CURLOPT_PATH_AS_IS.3: add type 'long' to prototype
+
+- vtls: fix compile with --disable-crypto-auth but with SSL
+
+ This is a strange combination of options, but is allowed.
-Daniel Stenberg (28 Oct 2014)
-- TODO: consider supporting STAT
+Patrick Monnerat (24 Mar 2015)
+- os400: define new options in ILE/RPG binding.
-- mk-ca-bundle: spell fix "version"
+Daniel Stenberg (24 Mar 2015)
+- RELEASE-NOTES: synced with f6878609361
-- HTTP: return larger than 3 digit response codes too
+- curl_easy_setopt.3: Add CURLOPT_PATH_AS_IS
+
+- CURLOPT_PATH_AS_IS: added
- HTTP 1.1 is clearly specified to only allow three digit response codes,
- and libcurl used sscanf("%3d") for that purpose. This made libcurl
- support smaller numbers but not larger. It does now, but we will not
- make any specific promises nor document this further since it is going
- outside of what HTTP is.
+ --path-as-is is the command line option
- Bug: http://curl.haxx.se/bug/view.cgi?id=1441
- Reported-by: Balaji
-
-- src/: remove version.h.dist from gitignore
+ Added docs in curl.1 and CURLOPT_PATH_AS_IS.3
- It has not been used since commit f7bfdbab in 2011
+ Added test in test 1241
-Steve Holme (26 Oct 2014)
-- ntlm: We prefer 'CURLcode result'
-
- Continuing commit 0eb3d15ccb more return code variable name changes.
+- [Yamada Yasuharu brought this change]
-Guenter Knauf (26 Oct 2014)
-- Cosmetics: lowercase non-special subroutine names.
+ curl_easy_recv/send: make them work with the multi interface
+
+ By making sure Curl_getconnectinfo() uses the correct connection cache
+ to find the last connection.
-Steve Holme (26 Oct 2014)
-- RELEASE-NOTES: Synced with 07ac29a058
+- http2: move the init too for when its actually needed
+
+ ... it would otherwise lead to memory leakage if we never actually do
+ the switch.
-- http_negotiate: We prefer 'CURLcode result'
+Dan Fandrich (23 Mar 2015)
+- dict: rename byte to avoid compiler shadowed declaration warning
- Continuing commit 0eb3d15ccb more return code variable name changes.
+ This conflicted with a WolfSSL typedef.
-- http_negotiate: Fixed missing check for USE_SPNEGO
+- cyassl: include version.h to ensure the version macros are defined
-- sspi: Synchronization of cleanup code between auth mechanisms
+- test1513: eliminated race condition in test run
+
+ It seems that some systems (e.g. fairly consistently in some recent
+ Solaris autobuilds) would manage to get to the connect phase before the
+ progress callback was called, resulting in a CURLE_COULDNT_CONNECT
+ error. Reworked the test to point at a test server that never returns a
+ full result so the progress callback always gets a chance to be called
+ before the transfer can complete in some other way.
-- sspi: Renamed max token length variables
+Nick Zitzmann (21 Mar 2015)
+- darwinsssl: add support for TLS False Start
- Code cleanup to try and synchronise code between the different SSPI
- based authentication mechanisms.
+ TLS False Start support requires iOS 7.0 or later, or OS X 10.9 or later.
-- sspi: Renamed expiry time stamp variables
+Daniel Stenberg (21 Mar 2015)
+- gtls: add check of return code
- Code cleanup to try and synchronise code between the different SSPI
- based authentication mechanisms.
+ Coverity CID 1291167 pointed out that 'rc' was received but never used when
+ gnutls_credentials_set() was used. Added return code check now.
-- sspi: Only call CompleteAuthToken() when complete is needed
+- gtls: dereferencing NULL pointer
- Don't call CompleteAuthToken() after InitializeSecurityContext() has
- returned SEC_I_CONTINUE_NEEDED as this return code only indicates the
- function should be called again after receiving a response back from
- the server.
+ Coverity CID 1291165 pointed out 'chainp' could be dereferenced when
+ NULL if gnutls_certificate_get_peers() had previously failed.
+
+- gtls: avoid uninitialized variable.
- This only affected the Digest and NTLM authentication code.
+ Coverity CID 1291166 pointed out that we could read this variable
+ uninitialized.
-Dan Fandrich (26 Oct 2014)
-- Added the "flaky" keyword to a number of tests
+Dan Fandrich (21 Mar 2015)
+- tests/certs: rebuild certificates with modified key usage bits
- Each shows evidence of flakiness on at least one platform on
- the autobuilds. Users can use this keyword to skip these tests
- if desired.
+ The certificates were missing the digitalSignature and keyAgreement
+ usage types, of which at least digitalSignature was checked by CyaSSL.
+ This caused the test server in test 310 (among others) to fail the
+ startup verification and therefore run (see
+ http://curl.haxx.se/mail/lib-2014-07/0303.html).
-Steve Holme (26 Oct 2014)
-- ntlm: Return all errors from Curl_ntlm_core_mk_nt_hash()
+- tests/certs: added make target to rebuild certificates
- For consistency with other areas of the NTLM code propagate all errors
- from Curl_ntlm_core_mk_nt_hash() up the call stack rather than just
- CURLE_OUT_OF_MEMORY.
+ The certificate generation scripts were also updated to better match the
+ format of the certificates currently checked in.
-- ntlm: Return CURLcode from Curl_ntlm_core_mk_lm_hash()
+Daniel Stenberg (21 Mar 2015)
+- x509asn1: add /* fallthrough */ in switch() case
-- ntlm: Use 'CURLcode result'
+- x509asn1: minor edit to unconfuse Coverity
- Continuing commit 0eb3d15ccb more return code variable name changes.
+ CID 1202732 warns on the previous use, although I cannot fine any
+ problems with it. I'm doing this change only to make the code use a more
+ familiar approach to accomplish the same thing.
-- ntlm: Only define ntlm data structure when USE_NTLM is defined
+- [Dagobert Michelsen brought this change]
-- ntlm: Changed handles to be dynamic like other SSPI handles
-
- Code cleanup to try and synchronise code between the different SSPI
- based authentication mechanisms.
+ testcurl: Allow '=' in values given on command line
-- ntlm: Renamed handle variables to match other SSPI structures
-
- Code cleanup to try and synchronise code between the different SSPI
- based authentication mechanisms.
+- nss: error: unused variable 'connssl'
-- ntlm: Renamed SSPI based input token variables
-
- Code cleanup to try and synchronise code between the different SSPI
- based authentication mechanisms.
+Dan Fandrich (21 Mar 2015)
+- test938: added missing closing tags
-- ntlm: We prefer 'CURLcode result'
-
- Continuing commit 0eb3d15ccb more return code variable name changes.
+- cyassl: use new library version macro when available
-- build: Added WinIDN build configuration options
-
- Added support for WinIDN build configurations to the VC8 and VC9
- project files.
+Kamil Dudka (20 Mar 2015)
+- [Alessandro Ghedini brought this change]
-Nick Zitzmann (24 Oct 2014)
-- darwinssl: detect possible future removal of SSLv3 from the framework
-
- If Apple ever drops SSLv3 support from the Security framework, we'll fail with an error if the user insists on using SSLv3.
+ curl: add --false-start option
-Patrick Monnerat (24 Oct 2014)
-- gskit.c: remove SSLv3 from SSL default.
+- [Alessandro Ghedini brought this change]
-- gskit.c: use 'CURLcode result'
+ nss: add support for TLS False Start
-Daniel Stenberg (24 Oct 2014)
-- [Jay Satiro brought this change]
+- [Alessandro Ghedini brought this change]
- SSL: Remove SSLv3 from SSL default due to POODLE attack
+ url: add CURLOPT_SSL_FALSESTART option
- - Remove SSLv3 from SSL default in darwinssl, schannel, cyassl, nss,
- openssl effectively making the default TLS 1.x. axTLS is not affected
- since it supports only TLS, and gnutls is not affected since it already
- defaults to TLS 1.x.
-
- - Update CURLOPT_SSLVERSION doc
+ This option can be used to enable/disable TLS False Start defined in the RFC
+ draft-bmoeller-tls-falsestart.
-- pipelining: only output "is not blacklisted" in debug builds
+Patrick Monnerat (20 Mar 2015)
+- [Alessandro Ghedini brought this change]
-- *.3: add/extend "SEE ALSO" sections
+ gtls: implement CURLOPT_CERTINFO
-- curl_easy_pause.3: minor wording edit
+Daniel Stenberg (20 Mar 2015)
+- [Alessandro Ghedini brought this change]
-- curl_getdate.3: provide a "SEE ALSO" section
+ openssl: try to avoid accessing OCSP structs when possible
-- curl_global_init.3: minor formatting fix, add version info
+- CURLOPT_URL.3: spelling!
+
+ Reported-by: Frank Gevaerts
-- url.c: use 'CURLcode result'
+- CURLOPT_URL.3: Added "SECURITY CONCERNS"
-- code cleanup: we prefer 'CURLcode result'
-
- ... for the local variable name in functions holding the return
- code. Using the same name universally makes code easier to read and
- follow.
-
- Also, unify code for checking for CURLcode errors with:
+- CURLOPT_HTTPHEADER.3: add a "SECURITY CONCERNS" section
+
+Dan Fandrich (19 Mar 2015)
+- cyassl: detect the library as renamed wolfssl
- if(result) or if(!result)
+ This change was made in CyaSSL/WolfSSL ver. 3.4.0
+
+Daniel Stenberg (19 Mar 2015)
+- HTTP: don't switch to HTTP/2 from 1.1 until we get the 101
- instead of
+ We prematurely changed protocol handler to HTTP/2 which made things very
+ slow (and wrong).
- if(result == CURLE_OK), if(CURLE_OK == result) or if(result != CURLE_OK)
+ Reported-by: Stefan Eissing
+ Bug: https://github.com/bagder/curl/issues/169
-- Curl_add_timecondition: skip superfluous varible assignment
-
- Detected by cppcheck.
+Dan Fandrich (19 Mar 2015)
+- axtls: version 1.5.2 now requires that config.h be manually included
-- Curl_pp_flushsend: skip superfluous assignment
+Daniel Stenberg (19 Mar 2015)
+- metalink: fix resource leak in OOM
- Detected by cppcheck.
+ Coverity CID 1288826
+
+Dan Fandrich (18 Mar 2015)
+- docs/libcurl: clean up libcurl-symbols.3
-- Curl_pp_readresp: remove superfluous assignment
+- docs/libcurl: check that all options with man pages are referenced
- Variable already assigned a few lines up.
+ If a man page exists in the opts/ directory, it must also be referenced
+ either in curl_easy_setopt.3 or curl_multi_setopt.3
+
+- curl_easy_setopt.3: added a few missing options
+
+Kamil Dudka (18 Mar 2015)
+- nss: explicitly tell NSS to disable NPN/ALPN
- Detected by cppcheck.
+ ... if disabled at libcurl level. Otherwise, we would allow to
+ negotiate NPN despite curl was invoked with the --no-npn option.
-- Curl_proxyCONNECT: remove superfluous statement
+Daniel Stenberg (18 Mar 2015)
+- [Jay Satiro brought this change]
+
+ mkhelp: Remove trailing carriage return from every line of input
- The variable is already assigned, skip the duplicate assignment.
+ - Get rid of this flood of warnings in Windows mingw build:
+ warning: missing terminating " character
- Pointed out by cppcheck.
+ The warning is due to the carriage return. When msysgit checks out files
+ from the repo by default it converts the line endings to CRLF. Prior to
+ this change when mkhelp.pl processed the MANUAL and curl.1 in CRLF
+ format the trailing carriage returns caused unnecessary CR in the
+ output.
-Guenter Knauf (24 Oct 2014)
-- Added MinGW support to build with nghttp2.
+- RELEASE-NOTES: synced with e539f01567
-- Added VC ssh2 target to main Makefile.
+- [Christian Weisgerber brought this change]
-- Some cosmetics and simplifies.
-
-- Remove dependency on openssl and cut.
+ docs/libcurl: make portability fix
- Prefer usage of Perl modules for sha1 calculation since there
- might be systems where openssl is not installed or not in path.
- If openssl is used for sha1 calculation then dont rely on cut
- since it is usually not available on other systems than Linux.
+ Using $< in a non-suffix rule context is a GNU make idiom. This bug was
+ introduced in 7.41.0.
+
+Dan Fandrich (17 Mar 2015)
+- checksrc: Fix whitelist on out-of-tree builds
-Daniel Stenberg (23 Oct 2014)
-- RELEASE-NOTES: synced with e116d0a62
+Daniel Stenberg (17 Mar 2015)
+- [Stefan Bühler brought this change]
-- CURLOPT_RESOLVE.3: add an example
+ Curl_sh_entry: remove unused 'timestamp'
-- gnutls: removed dead code
+- HTTP: don't use Expect: headers when on HTTP/2
- Bug: http://curl.haxx.se/bug/view.cgi?id=1437
- Reported-by: Julien
+ Reported-by: Stefan Eissing
+ Bug: https://github.com/bagder/curl/issues/169
-- Curl_rand: Uninitialized variable: r
-
- This is not actually used uninitialized but we silence warnings.
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1437
- Reported-by: Julien
+- checksrc: detect and remove space before trailing semicolons
-- opts: provide more and updated examples
+- checksrc: introduce a whitelisting concept
-- CURLOPT_RANGE.3: works for SFTP as well
-
- ... and added a small example
+- checksrc: use space after comma
-- curl.1: edited for clarity
+- checksrc: use space before paren in "return (expr);"
-- CURLOPT_SSLVERSION.3: provide an example
+- CONTRIBUTE: refer to git log instead of deprecated CHANGES file
-- docs/libcurl/ABI: more markdown friendly
+- CURLOPT_*.3: more examples and edits
-- docs: edited lots of libcurl docs for clarity
+- CURLOPT_*.3: added lots of small example sections
-- opts: added examples
+- CURLOPT_PRIVATE.3: provide an example
-- HISTORY: two glimpses in 2014
+- CURLOPT_*TIMEOUT.3: provide examples
-Kamil Dudka (20 Oct 2014)
-- nss: reset SSL handshake state machine
-
- ... when the handshake succeeds
-
- This fixes a connection failure when FTPS handle is reused.
+- CURLOPT_USERAGENT.3: added an example
-Daniel Stenberg (20 Oct 2014)
-- [Peter Wu brought this change]
+- CURLOPT_STDERR.3: added an example
- cmake: generate pkg-config and curl-config
-
- Initial work to generate a pkg-config and curl-config script. Static
- linking (`curl-config --static-libs` and `pkg-config --shared --libs
- libcurl`) is broken and therefore disabled.
+- curl_easy_perform.3: remove superfluous close brace from example
+
+- free: instead of Curl_safefree()
- CONFIGURE_OPTIONS does not make sense for CMake, use an empty string
- for now.
+ Since we just started make use of free(NULL) in order to simplify code,
+ this change takes it a step further and:
- At least `curl-config --features` and `curl-config --protocols` work
- which is needed by runtests.pl.
+ - converts lots of Curl_safefree() calls to good old free()
+ - makes Curl_safefree() not check the pointer before free()
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ The (new) rule of thumb is: if you really want a function call that
+ frees a pointer and then assigns it to NULL, then use Curl_safefree().
+ But we will prefer just using free() from now on.
-- [Peter Wu brought this change]
+- [Markus Elfring brought this change]
- cmake: use LIBCURL_VERSION from curlver.h
+ Bug #149: Deletion of unnecessary checks before a few calls of cURL functions
- This matches the behavior from autotools. The auxiliary major, minor
- and patch components are not needed anymore and therefore removed.
+ The following functions return immediately if a null pointer was passed.
+ * Curl_cookie_cleanup
+ * curl_formfree
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
-
- cmake: add SUPPORT_FEATURES and SUPPORT_PROTOCOLS
-
- For compatibility with autoconf, it will be used later for curl-config
- and pkg-config. Not all features and or protocols can be enabled as
- these are missing additional checks (see new TODOs).
+ It is therefore not needed that a function caller repeats a corresponding check.
- SUPPORT_PROTOCOLS is partially scripted (grep for SUPPORT_PROTOCOLS=)
- and manually verified/modified. SUPPORT_FEATURES is manually added.
+ This issue was fixed by using the software Coccinelle 1.0.0-rc24.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
-- cmake: add CMake/Macros.cmake to the release tarball
+- [Markus Elfring brought this change]
-- test545: make it not use a trailing zero
+ Bug #149: Deletion of unnecessary checks before calls of the function "free"
- CURLOPT_COPYPOSTFIELDS with a given CURLOPT_POSTFIELDSIZE does not
- require a trailing zero of the data and by making sure this test doesn't
- use one we know it works (combined with valgrind).
-
-Steve Holme (16 Oct 2014)
-- ntlm: Fixed empty type-2 decoded message info text
+ The function "free" is documented in the way that no action shall occur for
+ a passed null pointer. It is therefore not needed that a function caller
+ repeats a corresponding check.
+ http://stackoverflow.com/questions/18775608/free-a-null-pointer-anyway-or-check-first
- Updated the info text when the base-64 decode of the type-2 message
- returns a null buffer to be more specific.
-
-- ntlm: Fixed empty/bad base-64 decoded buffer return codes
-
-- ntlm: Avoid unnecessary buffer allocation for SSPI based type-2 token
-
-Daniel Stenberg (16 Oct 2014)
-- httpcustomheader.c: make use of more CURLOPT_HTTPHEADER features
+ This issue was fixed by using the software Coccinelle 1.0.0-rc24.
- ... and only do a single request for clarity.
+ Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
-Steve Holme (15 Oct 2014)
-- sasl_sspi: Fixed some typos
+- [Jay Satiro brought this change]
-- sasl_sspi: Fixed Kerberos response buffer not being allocated when using SSO
+ connect: Fix happy eyeballs logic for IPv4-only builds
+
+ Bug: https://github.com/bagder/curl/pull/168
+
+ (trynextip)
+ - Don't try the "other" protocol family unless IPv6 is available. In an
+ IPv4-only build the other family can only be IPv6 which is unavailable.
+
+ This change essentially stops IPv4-only builds from attempting the
+ "happy eyeballs" secondary parallel connection that is supposed to be
+ used by the "other" address family.
+
+ Prior to this change in IPv4-only builds that secondary parallel
+ connection attempt could be erroneously used by the same family (IPv4)
+ which caused a bug where every address after the first for a host could
+ be tried twice, often in parallel. This change fixes that bug. An
+ example of the bug is shown below.
+
+ Assume MTEST resolves to 3 addresses 127.0.0.2, 127.0.0.3 and 127.0.0.4:
+
+ * STATE: INIT => CONNECT handle 0x64f4b0; line 1046 (connection #-5000)
+ * Rebuilt URL to: http://MTEST/
+ * Added connection 0. The cache now contains 1 members
+ * STATE: CONNECT => WAITRESOLVE handle 0x64f4b0; line 1083
+ (connection #0)
+ * Trying 127.0.0.2...
+ * STATE: WAITRESOLVE => WAITCONNECT handle 0x64f4b0; line 1163
+ (connection #0)
+ * Trying 127.0.0.3...
+ * connect to 127.0.0.2 port 80 failed: Connection refused
+ * Trying 127.0.0.3...
+ * connect to 127.0.0.3 port 80 failed: Connection refused
+ * Trying 127.0.0.4...
+ * connect to 127.0.0.3 port 80 failed: Connection refused
+ * Trying 127.0.0.4...
+ * connect to 127.0.0.4 port 80 failed: Connection refused
+ * connect to 127.0.0.4 port 80 failed: Connection refused
+ * Failed to connect to MTEST port 80: Connection refused
+ * Closing connection 0
+ * The cache now contains 0 members
+ * Expire cleared
+ curl: (7) Failed to connect to MTEST port 80: Connection refused
+
+ The bug was born in commit bagder/curl@2d435c7.
+
+- mksymbolsmanpage.pl: use std header and generate better nroff header
-Daniel Stenberg (15 Oct 2014)
-- [Bruno Thomsen brought this change]
+- [Frank Meier brought this change]
- mk-ca-bundle: added SHA-384 signature algorithm
+ closesocket: call multi socket cb on close even with custom close
- Certificates based on SHA-1 are being phased out[1].
- So we should expect a rise in certificates based on SHA-2.
- Adding SHA-384 as a valid signature algorithm.
+ In function Curl_closesocket() in connect.c the call to
+ Curl_multi_closed() was wrongly omitted if a socket close function
+ (CURLOPT_CLOSESOCKETFUNCTION) is registered.
- [1] https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/
+ That would lead to not removing the socket from the internal hash table
+ and not calling the multi socket callback appropriately.
- Signed-off-by: Bruno Thomsen <bth@kamstrup.dk>
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1493
-Patrick Monnerat (14 Oct 2014)
-- OS400: fix bugs in curl_*escape_ccsid() and reduce variables scope
+- [Tobias Stoeckmann brought this change]
-- Implement pinned public key in GSKit backend
-
-Daniel Stenberg (14 Oct 2014)
-- CURLOPT_TLSAUTH_*.3: fix reference typos
+ hostip: Fix signal race in Curl_resolv_timeout.
+
+ A signal handler for SIGALRM is installed in Curl_resolv_timeout. It is
+ configured to interrupt system calls and uses siglongjmp to return into
+ the function if alarm() goes off.
+
+ The signal handler is installed before curl_jmpenv is initialized.
+ This means that an already installed alarm timer could trigger the
+ newly installed signal handler, leading to undefined behavior when it
+ accesses the uninitialized curl_jmpenv.
+
+ Even if there is no previously installed alarm available, the code in
+ Curl_resolv_timeout itself installs an alarm before the environment is
+ fully set up. If the process is sent into suspend right after that, the
+ signal handler could be called too early as in previous scenario.
+
+ To fix this, the signal handler should only be installed and the alarm
+ timer only be set after sigsetjmp has been called.
-- cleanups: reduce variable scope
+- http2: detect prematures close without data transfered
- cppcheck pointed these out.
+ ... by using the regular Curl_http_done() method which checks for
+ that. This makes test 1801 fail consistently with error 56 (which seems
+ fine) to that test is also updated here.
+
+ Reported-by: Ben Darnell
+ Bug: https://github.com/bagder/curl/issues/166
-- singleipconnect: remove dead assignment never used
+Dan Fandrich (13 Mar 2015)
+- test320: Expect the Host header to be the first header
- cppcheck pointed this out.
+ Required for the test to work after a5d994941c2b.
-- pinning: minor code style policing
+Daniel Stenberg (12 Mar 2015)
+- RELEASE-NOTES: synced with 186e46d88dd
-Patrick Monnerat (13 Oct 2014)
-- Factorize pinned public key code into generic file handling and backend specific
+- openssl: use colons properly in the ciphers list
+
+ While the previous string worked, this is the documented format.
+
+ Reported-by: Richard Moore
-- vtls: remove QsoSSL
+- openssl: sort the ciphers on strength
+
+ This makes curl pick better (stronger) ciphers by default. The strongest
+ available ciphers are fine according to the HTTP/2 spec so an OpenSSL
+ built curl is no longer rejected by string HTTP/2 servers.
+
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1487
-- gskit: supply dummy randomization function
+- [Fabian Keil brought this change]
-- vtls/*: deprecate have_curlssl_md5sum and set-up default md5sum implementation
+ test203[0-3]: Expect the Host header to be the first header
+
+ Required for the tests to work after a5d994941c2b.
-Daniel Stenberg (13 Oct 2014)
-- [Peter Wu brought this change]
+- openssl: show the cipher selection to use
- tests: move TESTCASES to Makefile.inc, add show for cmake
+- http: always send Host: header as first header
- This change allows runtests.pl to be run from the CMake builddir:
+ ...after the method line:
- export srcdir=/tmp/curl/tests;
- perl -I$srcdir $srcdir/runtests.pl -l
+ "Since the Host field-value is critical information for handling a
+ request, a user agent SHOULD generate Host as the first header field
+ following the request-line." / RFC 7230 section 5.4
- In order to make this possible, all test cases have been moved from
- Makefile.am to Makefile.inc.
+ Additionally, this will also make libcurl ignore multiple specified
+ custom Host: headers and only use the first one. Test 1121 has been
+ updated accordingly
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1491
+ Reported-by: Rainer Canavan
-- [Peter Wu brought this change]
+- [Alexander Pepper brought this change]
- cmake: enable IPv6 by default if available
+ mk-ca-bundle bugfix: Don't report SHA1 numbers with "-q".
- ENABLE_IPV6 depends on HAVE_GETADDRINFO or you will get a
- Curl_getaddrinfo_ex error. Enable IPv6 by default, disabling it if
- struct sockaddr_in6 is not found in netinet/in.h.
+ Also unified printing to STDERR by creating the helper method "report".
+
+- proxy: re-use proxy connections (regression)
- Note that HAVE_GETADDRINFO_THREADSAFE is still not set as it needs more
- platform checks even though POSIX requires a thread-safe getaddrinfo.
+ When checking for a connection to re-use, a proxy-using request must
+ check for and use a proxy connection and not one based on the host
+ name!
- Verified on Arch Linux x86_64 with glibc 2.20-2 and Linux 3.16-rc7.
+ Added test 1421 to verify
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1492
-- [Peter Wu brought this change]
+- [Jay Satiro brought this change]
- cmake: build tool_hugehelp (ENABLE_MANUAL)
-
- Rather than always outputting an empty manual page for the '-M' option,
- generate a full manual page as done by autotools. For simplicity in
- CMake, always generate the gzipped page as it will not be used anyway
- when zlib is not available.
-
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ memanalyze.pl: handle free(NULL)
-- [Peter Wu brought this change]
+- [Jay Satiro brought this change]
- tests/http_pipe.py: Python 3 support
+ .travis.yml: Change CI make test to make test-full
- The 2to3 tool converted socketserver (which I manually fixed up with an
- import fallback) and the print(e) line. The xrange option was converted
- to range, but it seems better to use the '*' operator here for
- simplicity.
+ - Change the continuous integration script to use 'make test-full'
+ instead of just 'make test' so that the diagnostic log output is
+ printed to stdout when a test fails.
- Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+ - Change the continuous integration script to use
+ './configure --enable-debug' instead of just './configure' so that the
+ memory analyzer will work during testing.
+
+ Prior to this change Travis used its default C test script:
+ ./configure && make && make test
-- SECURITY: slightly nicer markdown format
+- [Alessandro Ghedini brought this change]
-- RELEASE-PROCEDURE: better markdown, more content
+ gtls: correctly align certificate status verification messages
-- RELEASE-NOTES: synced with 6637b237e6eb
-
- ... and bumped the planned release version.
+- [Alessandro Ghedini brought this change]
-- vtls: have vtls.h include the backend header files
-
- It turned out some features were not enabled in the build since for
- example url.c #ifdefs on features that are defined on a per-backend
- basis but vtls.h didn't include the backend headers.
-
- CURLOPT_CERTINFO was one such feature that was accidentally disabled.
+ gtls: don't print double newline after certificate dates
+
+- [Alessandro Ghedini brought this change]
-- test2036: verify -O with no slash at all in the URL
+ gtls: print negotiated TLS version and full cipher suite name
- Similar to test 76 but that test's URL has a slash just no file name
- part.
+ Instead of priting cipher and MAC algorithms names separately, print the
+ whole cipher suite string which also includes the key exchange algorithm,
+ along with the negotiated TLS version.
-- get_url_file_name: make no slash equal empty string
+- gtls: fix compiler warnings
-- get_url_file_name: never return a NULL string *and* OK
-
- Change 987a4a73 assumes that as it simplifies life in the calling
- function.
+- [Alessandro Ghedini brought this change]
+
+ gtls: add support for CURLOPT_CAPATH
+
+- [stopiccot brought this change]
+
+ MacOSX-Framework: use @rpath instead of @executable_path
- Reported-by: Fabian Keil
+ Bug: https://github.com/bagder/curl/pull/157
-- [Jakub Zakrzewski brought this change]
+- RELEASE-NOTES: synced with c19349951
- Cmake: Build with GSSAPI (MIT or Heimdal)
+- multi: fix *getsock() with CONNECT
+
+ The code used some happy eyeballs logic even _after_ CONNECT has been
+ sent to a proxy, while the happy eyeball phase is already (should be)
+ over by then.
- It tries hard to recognise SDK's on different platforms. On windows MIT
- Kerberos installs SDK with other things and puts path into registry.
- Heimdal have separate zip archive. On linux pkg-config is tried, then
- krb5-config script and finally old-style libs and headers detection.
+ This is solved by splitting the multi state into two separate states
+ introducing the new SENDPROTOCONNECT state.
- Command line args:
- * CMAKE_USE_GSSAPI - enables GSSAPI detection
- * GSS_ROOT_DIR - if set, should point to the root of GSSAPI installation
- (the one with include and lib directories)
+ Bug: http://curl.haxx.se/mail/lib-2015-01/0170.html
+ Reported-by: Peter Laser
-- [Jakub Zakrzewski brought this change]
+- conncontrol: only log changes to the connection bit
- Cmake: Got rid of setup_curl_dependencies
+- http2: use CURL_HTTP_VERSION_* symbols instead of NPN_*
- There is no need for such function. Include_directories propagate by
- themselves and having a function with one simple link statement makes
- little sense.
+ Since they already exist and will make comparing easier
-- [Jakub Zakrzewski brought this change]
+- http2: make the info-message about receiving HTTP2 headers debug-only
- Cmake: Avoid cycle directory dependencies.
-
- Because we prepended libraries to list, CMake had troubles resolving
- link directory order as it detected some cycles. Appending to list ensures
- that dependencies will preceed dependees.
+- [Alessandro Ghedini brought this change]
-- [Jakub Zakrzewski brought this change]
+ urldata: remove unused asked_for_h2 field
- Cmake: Fix library list provided to cURL tests.
-
- The list must be set after those nice CMake tests as we mess with
- CMAKE_REQUIRED_LIBRARIES there.
+- [Alessandro Ghedini brought this change]
-- [Jakub Zakrzewski brought this change]
+ polarssl: make it possible to enable ALPN/NPN without HTTP2
- Cmake: Check for OpenSSL before OpenLDAP.
-
- OpenLDAP might have been build with OpenSSL. Checking for OpenLDAP first
- may result in undefined symbols. Of course, the found OpenSSL libraries
- must also be linked whenever OpenLDAP is.
+- [Alessandro Ghedini brought this change]
-- curl_multi_fdset.3: improved the formatting slightly
+ nss: make it possible to enable ALPN/NPN without HTTP2
-- curl_multi_fdset: explain the fd_set arguments
+- [Alessandro Ghedini brought this change]
-Kamil Dudka (8 Oct 2014)
-- nss: do not fail if a CRL is already cached
-
- This fixes a copy-paste mistake from commit 2968f957.
+ gtls: make it possible to enable ALPN/NPN without HTTP2
+
+- [Alessandro Ghedini brought this change]
-Patrick Monnerat (8 Oct 2014)
-- OS400: upgrade interface for pinned public key (no implementation yet)
+ openssl: make it possible to enable ALPN/NPN without HTTP2
-Daniel Stenberg (8 Oct 2014)
-- FormAdd: precaution against memdup() of NULL pointer
+- metalink: add some error checks
+
+ malloc() and strdup() calls without checking return codes.
- Coverity CID 252518. This function is in general far too complicated for
- its own good and really should be broken down into several smaller
- funcitons instead - but I'm adding this protection here now since it
- seems there's a risk the code flow can end up here and dereference a
- NULL pointer.
+ Reported-by: Markus Elfring
+ Bug: https://github.com/bagder/curl/issues/150
-- operate: avoid NULL dereference
+- curl_easy_setopt.3: added CURLOPT_SSL_VERIFYSTATUS
- Coverity CID 1241948. dumpeasysrc() would get called with
- config->current set to NULL which could be dereferenced by a warnf()
- call.
+ Reported-by: Jonathan Cardoso
-- do_sec_send: remove dead code
+- urldata: fix gnutls build
+
+Steve Holme (5 Mar 2015)
+- openssl: Removed use of USE_SSLEAY from the Visual Studio project files
- Coverity CID 1241951. The condition 'len >= 0' would always be true at
- that point and thus not necessary to check for.
+ In addition to commit 709cf76f6b, removed the USE_SSLEAY preprocessor
+ variable from the Visual Studio project files as it isn't required
+ anymore.
-- krb5_encode: remove unused argument
+Daniel Stenberg (5 Mar 2015)
+- multi: fix memory-leak on timeout (regression)
+
+ Since 1342a96ecfe0d44, a timeout detected in the multi state machine didn't
+ necesarily clear everything up, like formpost data.
- Coverity CID 1241957. Removed the unused argument. As this struct and
- pointer now are used only for krb5, there's no need to keep unused
- function arguments around.
+ Bug: https://github.com/bagder/curl/issues/147
+ Reported-by: Michel Promonet
+ Patched-by: Michel Promonet
-- operate_do: skip superfluous check for NULL pointer
+- configure: follow-up fix from 709cf76f6
- Coverity CID 1243583. get_url_file_name() cannot fail and return a NULL
- file name pointer so skip the check for that - it tricks coverity into
- believing it can happen and it then warns later on when we use 'outfile'
- without checking for NULL.
+ OpenSSL handling was a little broken.
-- curl_easy_getinfo.3: spell-fix
+- openssl: remove all uses of USE_SSLEAY
- Reported-By: Luan Cestari
+ SSLeay was the name of the library that was subsequently turned into
+ OpenSSL many moons ago (1999). curl does not work with the old SSLeay
+ library since years. This is now reflected by only using USE_OPENSSL in
+ code that depends on OpenSSL.
-- [moparisthebest brought this change]
+- [Sergei Nikulov brought this change]
- GnuTLS: Implement public key pinning
+ cmake: handle build definitions CURLDEBUG/DEBUGBUILD
+
+ Acked-by: Brad King
-- [moparisthebest brought this change]
+- FAQ: 4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
- SSL: implement public key pinning
-
- Option --pinnedpubkey takes a path to a public key in DER format and
- only connect if it matches (currently only implemented with OpenSSL).
+- symbols.pl: handle '-' in the deprecated field
- Provides CURLOPT_PINNEDPUBLICKEY for curl_easy_setopt().
+ ... which otherwise made the script skip the _LAST define for some
+ symbols.
- Extract a public RSA key from a website like so:
- openssl s_client -connect google.com:443 2>&1 < /dev/null | \
- sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -noout -pubkey \
- | openssl rsa -pubin -outform DER > google.com.der
+ Reported-by: Jeroen Ooms
+ Bug: http://curl.haxx.se/mail/lib-2015-03/0052.html
-- multi_runsingle: fix possible memory leak
+- curl.1: fix "The the" typo
- Coverity CID 1202837. 'newurl' can in fact be allocated even when
- Curl_retry_request() returns failure so free it if need be.
+ Reported-by: Jon Seymour
-- ares::Curl_resolver_cancel: skip checking for NULL conn
+- vtls: use curl_printf.h all over
- Coverity CID 1243581. 'conn' will never be NULL here, and if it would be
- the subsequent statement would dereference it!
+ No need to use _MPRINTF_REPLACE internally.
-- parseconfig: skip a NULL check
-
- Coverity CID 1154198. This NULL check implies that the pointer _can_ be
- NULL at this point, which it can't. Thus it is dead code. It tricks
- static analyzers to warn about dereferencing the pointer since the code
- seems to imply it can be NULL.
+- tool: use ENABLE_CURLX_PRINTF instead of _MPRINTF_REPLACE
-- [Waldek Kozba brought this change]
+- tool_writeenv: remove _MPRINTF_REPLACE define, it wasn't used
- multi-uv.c: call curl_multi_info_read() better
-
- Improves it for low-latency cases (like the communication with
- localhost)
+- [Sergei Nikulov brought this change]
-- tool_go_sleep: use (void) to spell out we ignore the return value
+ libtest: fixed linker errors on msvc
- Coverity CID 1222080.
+ Bug: https://github.com/bagder/curl/pull/144
-- ssh_statemach_act: split out assignment from check
+- mprintf.h: remove #ifdef CURLDEBUG
- just a minor code style thing to make the code clearer
+ ... and as a consequence, introduce curl_printf.h with that re-define
+ magic instead and make all libcurl code use that instead.
-Marc Hoersken (4 Oct 2014)
-- curl_schannel.c: Fixed possible memory or handle leak
-
- First try to fix possible memory leaks, in this case:
- Only connssl->ctxt xor onnssl->cred being initialized.
+- tool_getpass: remove unused curl/mprintf.h include
-Daniel Stenberg (4 Oct 2014)
-- getparameter: remove dead code
-
- Coverity CID 1061126. 'parse' will always be non-NULL here.
+- CONTRIBUTING.md: file for advice on github
-- getparameter: comment a switch FALLTHROUGH
-
- Coverity CID 1061118. Point out that it is on purpose.
+- [Viktor Szakáts brought this change]
-- choose_mech: fix return code
+ BINDINGS: add link to Harbour bindings
- Coverity CID 1241950. The pointer is never NULL but it might point to
- NULL.
+ And UTF8-fix a few names
-- Curl_sec_read_msg: spell out that we ignore return code
+- CURLOPT_HEADERFUNCTION.3: typo in error code name
- Coverity CID 1241947. Since if sscanf() fails, the previously set value
- remains set.
+ Reported-by: Jonathan Cardoso
-- nonblock: call with (void) to show we ignore the return code
+- BINDINGS: tclcurl moved
- Coverity pointed out several of these.
+ Reporte-by: Steve Havelka
-- parse_proxy: remove dead code.
-
- Coverity CID 982331.
+- [Jay Satiro brought this change]
-- Curl_debug: document switch fallthroughs
+ opts: Fix pipelining examples
-- curl_multi_remove_handle: remove dead code
-
- Coverify CID 1157776. Removed a superfluous if() that always evaluated
- true (and an else clause that never ran), and then re-indented the
- function accordingly.
+- [Jay Satiro brought this change]
-- Curl_pipeline_server_blacklisted: handle a NULL server name
-
- Coverity CID 1215284. The server name is extracted with
- Curl_copy_header_value() and passed in to this function, and
- copy_header_value can actually can fail and return NULL.
+ curl_multi_setopt.3: Link to CURLMOPT_MAXCONNECTS
-- ssh: comment "fallthrough" in switch statement
+- CONTRIBUTE: the new more github-friendly attitude!
-- [Jeremy Lin brought this change]
+Steve Holme (28 Feb 2015)
+- RELEASE-NOTES: Synced with 921d195187
- ssh: improve key file search
+Kamil Dudka (28 Feb 2015)
+- tool: wrap lines longer than 79 columns
- For private keys, use the first match from: user-specified key file
- (if provided), ~/.ssh/id_rsa, ~/.ssh/id_dsa, ./id_rsa, ./id_dsa
-
- Note that the previous code only looked for id_dsa files. id_rsa is
- now generally preferred, as it supports larger key sizes.
-
- For public keys, use the user-specified key file, if provided.
- Otherwise, try to extract the public key from the private key file.
- This means that passing --pubkey is typically no longer required,
- and makes the key-handling behavior more like OpenSSH.
+ ... to avoid a build failure when configured with --enable-debug
-- CURLOPT_HTTPHEADER.3: libcurl doesn't copy the whole list
+Steve Holme (27 Feb 2015)
+- [Tatsuhiro Tsujikawa brought this change]
-- detect_proxy: fix possible single-byte memory leak
+ http2: Return error if stream was closed with other than NO_ERROR
- Coverity CID 1202836. If the proxy environment variable returned an empty
- string, it would be leaked. While an empty string is not really a proxy, other
- logic in this function already allows a blank string to be returned so allow
- that here to avoid the leak.
+ Previously, we just ignored error code passed to
+ on_stream_close_callback and just return 0 (success) after stream
+ closure even if stream was reset with error. This patch records error
+ code in on_stream_close_callback, and return -1 and use CURLE_HTTP2
+ error code on abnormal stream closure.
-- multi_runsingle: fix memory leak
+- tool: Updated the warnf() function to use the GlobalConfig structure
- Coverity CID 1202837. There's a potential risk that 'newurl' gets
- overwritten when it was already pointing to allocated memory.
+ As the 'error' and 'mute' options are now part of the GlobalConfig,
+ rather than per Operation, updated the warnf() function to use this
+ structure rather than the OperationConfig.
-- pop3_perform_authentication: fix memory leak
+- build: Removed DataExecutionPrevention directive from VC9+ project files
- Coverity CID 1215287. There's a potential risk for a memory leak in
- here, and moving the free call to be unconditional seems like a cheap
- price to remove the risk.
+ Removed the DataExecutionPrevention directive from the project files for
+ Visual Studio 2008 and above. The XML value in the VC9 project files was
+ set to "0" (Default) whilst the VC10+ project files contained an empty
+ XML element.
-- imap_perform_authentication: fix memory leak
+- build: Use default RandomizedBaseAddress directive in VC9+ project files
+
+ Visual Studio 2008 introduced support for the address space layout
+ randomization (ASLR) feature of Windows Vista. However, upgrading the
+ VC8 project files to VC9 and above disabled this feature.
- Coverity CID 1215296. There's a potential risk for a memory leak in
- here, and moving the free call to be unconditional seems like a cheap
- price to remove the risk.
+ Removed the RandomizedBaseAddress directive to enabled the default
+ setting (/DYNAMICBASE). Note: This doesn't appear to have any negative
+ impact when compiled and ran on Windows XP.
-- wait_or_timeout: return failure when Curl_poll() fails
+- build: Added support to Generate.bat for files in the upcoming vauth folder
+
+Daniel Stenberg (25 Feb 2015)
+- http2: return recv error on unexpected EOF
- Coverity detected this. CID 1241954. When Curl_poll() returns a negative value
- 'mcode' was uninitialized. Pretty harmless since this is debug code only and
- would at worst cause an error to _not_ be returned...
+ Pointed-out-by: Tatsuhiro Tsujikawa
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1487
-- curl.1: mention quoting in the URL section
+Kamil Dudka (25 Feb 2015)
+- dist: add symbol-scan.pl to the tarball
- and separate the example URLs with newlines
+ ... in order to make test1135 succeed
-Steve Holme (30 Sep 2014)
-- [Bill Nagel brought this change]
+Daniel Stenberg (25 Feb 2015)
+- http2: move lots of verbose output to be debug-only
- smtp: Fixed intermittent "SSL3_WRITE_PENDING: bad write retry" error
+Kamil Dudka (25 Feb 2015)
+- curl-config.in: eliminate double quotes around CURL_CA_BUNDLE
+
+ Otherwise it expands to:
- This patch fixes the "SSL3_WRITE_PENDING: bad write retry" error that
- sometimes occurs when sending an email over SMTPS with OpenSSL. OpenSSL
- appears to require the same pointer on a write that follows a retry
- (CURLE_AGAIN) as discussed here:
+ echo ""/etc/pki/tls/certs/ca-bundle.crt""
- http://stackoverflow.com/questions/2997218/why-am-i-getting-error1409f07fssl-routinesssl3-write-pending-bad-write-retr
+ Detected by ShellCheck:
+
+ curl-config:74:16: warning: The double quotes around this do
+ nothing. Remove or escape them. [SC2140]
-Daniel Stenberg (30 Sep 2014)
-- RELEASE-NOTES: synced with 53cbea22310f15
+- nss: do not skip Curl_nss_seed() if data is NULL
+
+ In that case, we only skip writing the error message for failed NSS
+ initialization (while still returning the correct error code).
-- file: reject paths using embedded %00
+- nss: improve error handling in Curl_nss_random()
- Mostly because we use C strings and they end at a binary zero so we know
- we can't open a file name using an embedded binary zero.
+ The vtls layer now checks the return value, so it is no longer necessary
+ to abort if a random number cannot be provided by NSS. This also fixes
+ the following Coverity report:
- Reported-by: research@g0blin.co.uk
+ Error: FORWARD_NULL (CWE-476):
+ lib/vtls/nss.c:1918: var_compare_op: Comparing "data" to null implies that "data" might be null.
+ lib/vtls/nss.c:1923: var_deref_model: Passing null pointer "data" to "Curl_failf", which dereferences it.
+ lib/sendf.c:154:3: deref_parm: Directly dereferencing parameter "data".
-Dan Fandrich (26 Sep 2014)
-- test506: Fixed a couple of memory leaks in test
-
-Daniel Stenberg (25 Sep 2014)
-- [Yousuke Kimoto brought this change]
+Daniel Stenberg (25 Feb 2015)
+- RELEASE-PROCEDURE: add some more future release dates
+
+ ... and remove some old ones
- CURLOPT_COOKIELIST: Added "RELOAD" command
+- sws: timeout idle CONNECT connections
-- [Michael Wallner brought this change]
+- bump: start working toward 7.42.0
- CURLOPT_POSTREDIR.3: Added availability for CURL_REDIR_POST_303
+Version 7.41.0 (25 Feb 2015)
-- threaded-resolver: revert Curl_expire_latest() switch
-
- The switch to using Curl_expire_latest() in commit cacdc27f52b was a
- mistake and was against the advice even mentioned in that commit. The
- comparison in asyn-thread.c:Curl_resolver_is_resolved() makes
- Curl_expire() the suitable function to use.
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1426
- Reported-By: graysky
+Daniel Stenberg (25 Feb 2015)
+- THANKS: added contributors from the 7.41.0 RELEASE-NOTES
-- libcurl docs: improvements all over
+- RELEASE-NOTES: sync with ffc2aeec6e (7.41.0 release time!)
-Steve Holme (19 Sep 2014)
-- build: Added WinIDN build configuration options
+Marc Hoersken (25 Feb 2015)
+- Revert "telnet.c: fix handling of 0 being returned from custom read function"
- Added initial support for WinIDN build configurations to the VC10+
- project files.
+ This reverts commit 03fa576833643c67579ae216c4e7350fa9b5f2fe.
-Daniel Stenberg (19 Sep 2014)
-- tutorial: signals aren't used for the threaded resolver
+- telnet.c: fix invalid use of custom read function if not being set
+
+ obj_count can be 1 if the custom read function is set or the stdin
+ handle is a reference to a pipe. Since the pipe should be handled
+ using the PeekNamedPipe-check below, the custom read function should
+ only be used if it is actually enabled.
-- FAQ: update the pronunciation section
+- telnet.c: fix handling of 0 being returned from custom read function
- As we weren't using the correct phonetic description and doing it correctly
- involves funny letters that I'm sure will cause problems for people in a text
- document so I instead rephrased it and link to a WAV file with a person
- actually saying 'curl'.
+ According to [1]: "Returning 0 will signal end-of-file to the library
+ and cause it to stop the current transfer."
+ This change makes the Windows telnet code handle this case accordingly.
- Reported-By: Dimitar Boevski
+ [1] http://curl.haxx.se/libcurl/c/CURLOPT_READFUNCTION.html
-- CURLOPT_COOKIE*: added more cross-references
+Daniel Stenberg (24 Feb 2015)
+- sws: stop logging about TPC_NODELAY nonsense
-- BINDINGS: add node-libcurl
+- lib530: make it less timing sensible
- Reported-By: Jonathan Cardoso Machado
- URL: http://curl.haxx.se/mail/lib-2014-09/0102.html
+ ... by making sure the first request is completed before doing the
+ remainder.
-- README.http2: updated to reflect current status
+Kamil Dudka (23 Feb 2015)
+- connect: wait for IPv4 connection attempts
+
+ ... even if the last IPv6 connection attempt has failed.
+
+ Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1187531#c4
-- formdata: removed unnecessary USE_SSLEAY use
+- connect: avoid skipping an IPv4 address
+
+ ... in case the protocol versions are mixed in a DNS response
+ (IPv6 -> IPv4 -> IPv6).
+
+ Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1187531#c3
-- curlssl: make tls backend symbols use curlssl in the name
+Daniel Stenberg (23 Feb 2015)
+- RELEASE-NOTES: synced with 5e4395eab839d
-- url: let the backend decide CURLOPT_SSL_CTX_ support
+- ROADMAP: curl_easy_setopt.3 has already been split up
- ... to further remove specific TLS backend knowledge from url.c
+ Remove cmake as marked for removal. It is in much better state now.
-- vtls: have the backend tell if it supports CERTINFO
+- ROADMAP: extend the HTTP/2 stuff, remove SPDY
-- [Catalin Patulea brought this change]
+- [Julian Ospald brought this change]
- configure: allow --with-ca-path with PolarSSL too
+ configure: allow both --with-ca-bundle and --with-ca-path
- Missed this in af45542c.
+ SSL_CTX_load_verify_locations by default (and if given non-Null
+ parameters) searches the CAfile first and falls back to CApath. This
+ allows for CAfile to be a basis (e.g. installed by the package manager)
+ and CApath to be a user configured directory.
- Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
-
-- CURLOPT_CAPATH: return failure if set without backend support
-
-- [Tatsuhiro Tsujikawa brought this change]
-
- http2: Fix busy loop when EOF is encountered
+ This wasn't reflected by the previous configure constraint which this
+ patch fixes.
- Previously we did not handle EOF from underlying transport socket and
- wrongly just returned error code CURL_AGAIN from http2_recv, which
- caused busy loop since socket has been closed. This patch adds the
- code to handle EOF situation and tells the upper layer that we got
- EOF.
-
-Steve Holme (13 Sep 2014)
-- build: Added batch wrapper to checksrc.pl
+ Bug: https://github.com/bagder/curl/pull/139
-- RELEASE-NOTES: Synced with bd3df5ec6d
+- [Ben Boeckel brought this change]
-- [Marcel Raad brought this change]
+ cmake: install the dll file to the correct directory
- sasl_sspi: Fixed Unicode build
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1422
- Verified-by: Steve Holme
+- [Alessandro Ghedini brought this change]
-Daniel Stenberg (12 Sep 2014)
-- libcurl-tutorial.3: fix GnuTLS link to thread-safety guidelines
+ nss: fix NPN/ALPN protocol negotiation
- The former link was turned into a 404 at some point.
+ Correctly check for memcmp() return value (it returns 0 if the strings match).
- Reported-By: Askar Safin
+ This is not really important, since curl is going to use http/1.1 anyway, but
+ it's still a bug I guess.
-- contributors.sh: split list of names at comma
+- [Alessandro Ghedini brought this change]
+
+ polarssl: fix ALPN protocol negotiation
- ... to support a list of names provided in a commit message.
+ Correctly check for strncmp() return value (it returns 0 if the strings
+ match).
-Steve Holme (12 Sep 2014)
-- [Ulrich Telle brought this change]
+- [Sergei Nikulov brought this change]
- ntlm: Fixed HTTP proxy authentication when using Windows SSPI
-
- Removed ISC_REQ_* flags from calls to InitializeSecurityContext to fix
- bug in NTLM handshake for HTTP proxy authentication.
-
- NTLM handshake for HTTP proxy authentication failed with error
- SEC_E_INVALID_TOKEN from InitializeSecurityContext for certain proxy
- servers on generating the NTLM Type-3 message.
+ CMake: Fix generation of tool_hugehelp.c on windows
- The flag ISC_REQ_CONFIDENTIALITY seems to cause the problem according
- to the observations and suggestions made in a bug report for the
- QT project (https://bugreports.qt-project.org/browse/QTBUG-17322).
+ Use "cmake -E echo" instead of "echo".
- Removing all the flags solved the problem.
-
- Bug: http://curl.haxx.se/mail/lib-2014-08/0273.html
- Reported-by: Ulrich Telle
- Assisted-by: Steve Holme, Daniel Stenberg
+ Reviewed-by: Brad King <brad.king@kitware.com>
-Daniel Stenberg (12 Sep 2014)
-- [Ray Satiro brought this change]
+- [Sergei Nikulov brought this change]
- newlines: fix mixed newlines to LF-only
+ CMake: fix winsock2 detection on windows
- I use the curl repo mainly on Windows with the typical Windows git
- checkout which converts the LF line endings in the curl repo to CRLF
- automatically on checkout. The automatic conversion is not done on files
- in the repo with mixed line endings. I recently noticed some weird
- output with projects/build-openssl.bat that I traced back to mixed line
- endings, so I scanned the repo and there are files (excluding the
- test data) that have mixed line endings.
+ Set CMAKE_REQUIRED_DEFINITIONS to include definitions needed to get
+ the winsock2 API from windows.h. Simplify the order of checks to
+ avoid extra conditions.
- I used this command below to do the scan. Unfortunately it's not as easy
- as git grep, at least not on Windows. This gets the names of all the
- files in the repo's HEAD, gets each of those files raw from HEAD, checks
- for mixed line endings of both LF and CRLF, and prints the name if
- mixed. I excluded path tests/data/test* because those can have mixed
- line endings if I understand correctly.
+ Use check_include_file instead of check_include_file_concat to look
+ for OpenSSL headers. They do not need to participate in a sequence
+ of dependent system headers. Also they may cause winsock.h to be
+ included before ws2tcpip.h, causing the latter to not be detected
+ in the sequence.
- for f in `git ls-tree --name-only --full-tree -r HEAD`;
- do if [ -n "${f##tests/data/test*}" ];
- then git show "HEAD:$f" | \
- perl -0777 -ne 'exit 1 if /([^\r]\n.*\r\n)|(\r\n.*[^\r]\n)/';
- if [ $? -ne 0 ];
- then echo "$f";
- fi;
- fi;
- done
-
-- [Viktor Szakáts brought this change]
+ Reviewed-by: Brad King <brad.king@kitware.com>
- mk-ca-bundle.pl: converted tabs to spaces, deleted trailing spaces
+- [Alessandro Ghedini brought this change]
-- ROADMAP: markdown eats underscores
-
- It interprets them as italic indictors unless we backtick the word.
+ gtls: fix build with HTTP2
-- ROADMAP: tiny formatting edit for nicer web output
+Steve Holme (16 Feb 2015)
+- Makefile.vc6: Corrected typos in rename of darwinssl.obj
-Steve Holme (10 Sep 2014)
-- ROADMAP.md: Updated GSSAPI authentication following 7.38.0 additions
+Nick Zitzmann (15 Feb 2015)
+- By request, change the name of "curl_darwinssl.[ch]" to "darwinssl.[ch]"
-- INTERNALS: Added email and updated Kerberos details
+Steve Holme (14 Feb 2015)
+- RELEASE-NOTES: Synced with 6f89f86c3d
-- FEATURES: Updated Kerberos details
-
- Added support for Kerberos 5 to the email protocols following the recent
- additions in 7.38.0.
-
- Removed Kerberos 4 as this has been gone for a while now.
+- tests/README: Updated to reflect email test ranges
-Daniel Stenberg (10 Sep 2014)
-- [Paul Howarth brought this change]
+- [Alessandro Ghedini brought this change]
- openssl: build fix for versions < 0.9.8e
-
- Bug: http://curl.haxx.se/mail/lib-2014-09/0064.html
+ curl.1: --cert-status is also supported by OpenSSL now
-- mk-ca-bundle.pl: first, try downloading HTTPS with curl
-
- As a sort of step forward, this script will now first try to get the
- data from the HTTPS URL using curl, and only if that fails it will
- switch back to the HTTP transfer using perl's native LWP functionality.
- To reduce the risk of this script being tricked.
+- build: Removed Visual Studio SuppressStartupBanner directive for VC8+
- Using HTTPS to get a cert bundle introduces a chicken-and-egg problem so
- we can't really ever completely disable HTTP, but chances are that most
- users already have a ca cert bundle that trusts the mozilla.org site
- that this script downloads from.
-
- A future version of this script will probably switch to require a
- dedicated "insecure" command line option to allow downloading over HTTP
- (or unverified HTTPS).
+ Visual Studio 2005 and above defaults to disabling the startup banner
+ for the Compiler, Linker and MIDL tools (with /NOLOGO). As such there
+ is no need to explicitly set the SuppressStartupBanner directive, as
+ this is a leftover from the VC7 and VC7.1 projects being upgraded to
+ VC8 and above.
-- LICENSE-MIXING: removed krb4 info
+Kamil Dudka (12 Feb 2015)
+- openssl: fix a compile-time warning
- krb4 has been dropped since a while now
-
-- bump: on the 7.38.1-DEV train now!
+ lib/vtls/openssl.c:1450:7: warning: extra tokens at end of #endif directive
-- SSLCERTS: minor updates
+Steve Holme (11 Feb 2015)
+- openssl: Use OPENSSL_IS_BORINGSSL for BoringSSL detection
- Edited format to look better on the web, added a "it is about trust"
- section.
+ For consistency with other conditionally compiled code in openssl.c,
+ use OPENSSL_IS_BORINGSSL rather than HAVE_BORINGSSL and try to use
+ HAVE_BORINGSSL outside of openssl.c when the OpenSSL header files are
+ not included.
-Version 7.38.0 (10 Sep 2014)
+Patrick Monnerat (11 Feb 2015)
+- ftp: accept all 2xx responses to the PORT command
-Daniel Stenberg (10 Sep 2014)
-- dist: two cmake files are no more
+Steve Holme (9 Feb 2015)
+- openssl: Disable OCSP in old versions of OpenSSL
- CMake/FindOpenSSL.cmake and FindZLIB.cmake are gone since 14aa8f0c117b
+ Versions of OpenSSL prior to v0.9.8h do not support the necessary
+ functions for OCSP stapling.
-- RELEASE-NOTES: final update for 7.38.0
+Daniel Stenberg (9 Feb 2015)
+- [Tatsuhiro Tsujikawa brought this change]
-- cookies: reject incoming cookies set for TLDs
-
- Test 61 was modified to verify this.
+ http2: Fix bug that associated stream canceled on PUSH_PROMISE
- CVE-2014-3620
-
- Reported-by: Tim Ruehsen
- URL: http://curl.haxx.se/docs/adv_20140910B.html
+ Previously we don't ignore PUSH_PROMISE header fields in on_header
+ callback. It makes header values mixed with following HEADERS,
+ resulting protocol error.
-- [Tim Ruehsen brought this change]
+- [Jay Satiro brought this change]
- cookies: only use full host matches for hosts used as IP address
+ polarssl: Fix exclusive SSL protocol version options
- By not detecting and rejecting domain names for partial literal IP
- addresses properly when parsing received HTTP cookies, libcurl can be
- fooled to both send cookies to wrong sites and to allow arbitrary sites
- to set cookies for others.
+ Prior to this change the options for exclusive SSL protocol versions did
+ not actually set the protocol exclusive.
- CVE-2014-3613
-
- Bug: http://curl.haxx.se/docs/adv_20140910A.html
+ http://curl.haxx.se/mail/lib-2015-01/0002.html
+ Reported-by: Dan Fandrich
-- HISTORY: fix the 1998 title position
+- [Jay Satiro brought this change]
-- HISTORY: extended and now markdown
+ gskit: Fix exclusive SSLv3 option
-- SSLCERTS: converted to markdown
+- curl.1: clarify that -X is used for all requests
- Only minor edits to make it generate nice HTML output using markdown, as
- this document serves both in source release tarballs as on the web site.
-
- URL: http://curl.haxx.se/docs/sslcerts.html
+ Reported-by: Jon Seymour
+
+- curl.1: add warning when using -H and redirects
-- ftp-wildcard.c: spell fix
+Steve Holme (7 Feb 2015)
+- schannel: Removed curl_ prefix from source files
- Reported-By: Frank Gevaerts
+ Removed the curl_ prefix from the schannel source files as discussed
+ with Marc and Daniel at FOSDEM.
-- RELEASE-NOTES: synced with 921a0c22a6f
+Daniel Stenberg (6 Feb 2015)
+- md5: use axTLS's own MD5 functions when available
-- THANKS: synced with RELEASE-NOTES for 921a0c22a6f
+- MD(4|5): make the MD4_* and MD5_* functions static
-- polarassl: avoid memset() when clearing the first byte is enough
+- axtls: fix conversion from size_t to int warning
-- [Catalin Patulea brought this change]
+Steve Holme (5 Feb 2015)
+- ftp: Use 'CURLcode result' for curl result codes
- polarssl: support CURLOPT_CAPATH / --capath
+Daniel Stenberg (5 Feb 2015)
+- openssl: SSL_SESSION->ssl_version no longer exist
- Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
-
-- SECURITY: eh, make more sense!
-
-- SECURITY: how to join the curl-security list
+ The struct went private in 1.0.2 so we cannot read the version number
+ from there anymore. Use SSL_version() instead!
+
+ Reported-by: Gisle Vanem
+ Bug: http://curl.haxx.se/mail/lib-2015-02/0034.html
-- RELEASE-NOTES: fix the required nghttp2 version typo
+Dan Fandrich (4 Feb 2015)
+- unit1600: Fix compilation when NTLM is disabled
-- [Brandon Casey brought this change]
+Daniel Stenberg (4 Feb 2015)
+- MD5: fix compiler warnings and code style nits
- Ensure progress.size_dl/progress.size_ul are always >= 0
+- MD5: replace implementation
- Historically the default "unknown" value for progress.size_dl and
- progress.size_ul has been zero, since these values are initialized
- implicitly by the calloc that allocates the curl handle that these
- variables are a part of. Users of curl that install progress
- callbacks may expect these values to always be >= 0.
+ The previous one was "encumbered" by RSA Inc - to avoid the licensing
+ restrictions it has being replaced. This is the initial import,
+ inserting the md5.c and md5.h files from
+ http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- Currently it is possible for progress.size_dl and progress.size_ul
- to by set to a value of -1, if Curl_pgrsSetDownloadSize() or
- Curl_pgrsSetUploadSize() are passed a "size" of -1 (which a few
- places currently do, and a following patch will add more). So
- lets update Curl_pgrsSetDownloadSize() and Curl_pgrsSetUploadSize()
- so they make sure that these variables always contain a value that
- is >= 0.
+ Code-by: Alexander Peslyak
+
+- MD4: fix compiler warnings and code style nits
+
+- MD4: replace implementation
- Updates test579 and test599.
+ The previous one was "encumbered" by RSA Inc - to avoid the licensing
+ restrictions it has being replaced. This is the initial import,
+ inserting the md4.c and md4.h files from
+ http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4
- Signed-off-by: Brandon Casey <drafnel@gmail.com>
+ Code-by: Alexander Peslyak
-Steve Holme (7 Sep 2014)
-- tests: Added test1420 to the makefile
+Steve Holme (4 Feb 2015)
+- telnet: Prefer 'CURLcode result' for curl result codes
-- test1420: Removed unnecessary CURLOPT setting
+- hostasyn: Prefer 'CURLcode result' for curl result codes
-- tests: Added more "Clear Text" authentication keywords
+- schannel: Prefer 'CURLcode result' for curl result codes
-- tests: Updated "based on" text due to email test renumbering
+Daniel Stenberg (3 Feb 2015)
+- unit1601: MD5 unit tests
-- tests: For consistency added --libcurl to test name
+- unit1600: unit test for Curl_ntlm_core_mk_nt_hash
-- tests: Added --libcurl for IMAP test case
+- unit1600: NTLM unit test
-- multi.c: Avoid invalid memory read after free() from commit 3c8c873252
-
- As the current element in the list is free()d by Curl_llist_remove(),
- when the associated connection is pending, reworked the loop to avoid
- accessing the next element through e->next afterward.
+- tests/README: add a new range, clean up some language
-- multi.c: Fixed compilation warning from commit 3c8c873252
-
- warning: implicit conversion from enumeration type 'CURLMcode' to
- different enumeration type 'CURLcode'
-
-- url.c: Use CURLAUTH_NONE constant rather than 0
-
- Small follow up to commit 898808fa8c to use auth constants rather than
- hard code value when clearing picked authentication mechanism.
-
-- RELEASE-NOTES: Synced with fd1ce3856a
+- [Jay Satiro brought this change]
-Nick Zitzmann (4 Sep 2014)
-- [Vilmos Nebehaj brought this change]
+ opts: CURLOPT_CAINFO availability depends on SSL engine
- darwinssl: Use CopyCertSubject() to check CA cert.
+- getpass: protect include with proper #ifdef
- SecCertificateCopyPublicKey() is not available on iPhone. Use
- CopyCertSubject() instead to see if the certificate returned by
- SecCertificateCreateWithData() is valid.
-
- Reported-by: Toby Peterson
-
-Steve Holme (4 Sep 2014)
-- RELEASE-NOTES: Clarify email Kerberos support is currently via Windows SSPI
+ Reported-by: Tamir
-Daniel Stenberg (4 Sep 2014)
-- MAIL-ETIQUETTE: "1.8 I posted, now what?"
-
-- CURLOPT_CA*: better refering between *CAINFO and *CAPATH
+- getpass_r: read from stdin, not stdout!
- ... and a minor wording edit
-
-- THANKS: added Dennis Clarke
+ The file number used was wrong. This bug was introduced over 10 years
+ ago, proving this function isn't used much...
- Dennis Clarke from Blastwave.org for ensuring that nightly builds run
- smooth on Solaris!
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1476
+ Reported-by: Tamir
-- curl_multi_cleanup: remove superfluous NULL assigns
-
- ... as the struct is free()d in the end anyway. It was first pointed out
- to me that one of the ->msglist assignments were supposed to have been
- ->pending but was a copy and paste mistake when I realized none of the
- clearing of pointers had to be there.
+- test1135: verify the CURL_EXTERN order in header files
-- multi: convert CURLM_STATE_CONNECT_PEND handling to a list
+- Makefile.am: fix 'make distcheck'
- ... instead of scanning through all handles, stash only the actual
- handles that are in that state in the new ->pending list and scan that
- list only. It should be mostly empty or very short. And only used for
- pipelining.
+ ... by removing generated files from the *_DIST variable [*] and instead
+ generate them with a .dist suffix, since that is then handled and put
+ into the release archive by our generic dist-hook.
- This avoids a rather hefty slow-down especially notable if you add many
- handles to the same multi handle. Regression introduced in commit
- 0f147887 (version 7.30.0).
+ [*] = 'make distcheck' fails with non-existing files listed there
+
+Steve Holme (2 Feb 2015)
+- curl_sasl.c: More code policing
- Bug: http://curl.haxx.se/mail/lib-2014-07/0206.html
- Reported-by: David Meyer
+ Better use of 80 character line limit, comment corrections and line
+ spacing preferences.
-- RELEASE-NOTES: synced with e608324f9f9
+Daniel Stenberg (2 Feb 2015)
+- libcurl-symbols: first basic shot for autogenerated docs
-- [Andre Heinecke brought this change]
+- FAQ: minor edit of 3.22
- polarssl: implement CURLOPT_SSLVERSION
+Steve Holme (2 Feb 2015)
+- build: Added removal of Visual Studio project files
- Forwards the setting as minimum ssl version (if set) to polarssl. If
- the server does not support the requested version the SSL Handshake will
- fail.
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1419
+ Added the removal of the locally generated project files so one
+ may revert to a clean repository.
-nickzman (1 Sep 2014)
-- Merge pull request #115 from ldx/darwinsslfixpr
+- build: Renamed top level Visual Studio solution files
- darwinssl: now accepts cacert bundles in PEM format in addition to single certs
-
-Vilmos Nebehaj (1 Sep 2014)
-- Check CA certificate in curl_darwinssl.c.
+ In preparation for adding the test suite and examples projects renamed
+ the top level "all" solution files to better describe what they are.
- SecCertificateCreateWithData() returns a non-NULL SecCertificateRef even
- if the buffer holds an invalid or corrupt certificate. Call
- SecCertificateCopyPublicKey() to make sure cacert is a valid
- certificate.
+ This will also enable us to use "curl" rather than "curlsrc" for the
+ command line tool solution and project files, which will simplify some
+ of the configuration.
-Daniel Stenberg (31 Aug 2014)
-- low-speed-limit: avoid timeout flood
+- build: Enabled DEBUGBUILD in Visual Studio debug builds
- Introducing Curl_expire_latest(). To be used when we the code flow only
- wants to get called at a later time that is "no later than X" so that
- something can be checked (and another timeout be added).
+ Defined the DEBUGBUILD pre-processor variable to allow extra logging,
+ which is particularly useful in debug builds, as we use this and Visual
+ Studio typically uses _DEBUG.
- The low-speed logic for example could easily be made to set very many
- expire timeouts if it would be called faster or sooner than what it had
- set its own timer and this goes for a few other timers too that aren't
- explictiy checked for timer expiration in the code.
-
- If there's no condition the code that says if(time-passed >= TIME), then
- Curl_expire_latest() is preferred to Curl_expire().
+ We could define DEBUBBUILD, in curl_setup.h, when _MSC_VER and _DEBUG is
+ defined but that would also affect the makefile based builds which we
+ probably don't want to do.
+
+- build: Removed unused Visual Studio bscmake settings
+
+Daniel Stenberg (2 Feb 2015)
+- CURLOPT_HTTP_VERSION.3: CURL_HTTP_VERSION_2_0 added in 7.33.0
- If there exists such a condition, it is on the other hand important that
- Curl_expire() is used and not the other.
+ And modify the text to refer to HTTP 2 as it isn't called "2.0".
- Bug: http://curl.haxx.se/mail/lib-2014-06/0235.html
- Reported-by: Florian Weimer
+ Reported-By: Michael Wallner
-- [Michael Wallner brought this change]
+Marc Hoersken (31 Jan 2015)
+- TODO: moved WinSSL/SChannel todo items into docs
- resolve: cache lookup for async resolvers
-
- While waiting for a host resolve, check if the host cache may have
- gotten the name already (by someone else), for when the same name is
- resolved by several simultanoues requests.
+Daniel Stenberg (29 Jan 2015)
+- [Michael Kaufmann brought this change]
+
+ CURLOPT_SEEKFUNCTION.3: also when server closes a connection
+
+Steve Holme (29 Jan 2015)
+- curl_sasl.c: Fixed compilation warning when cryptography is disabled
- The resolver thread occasionally gets stuck in getaddrinfo() when the
- DNS or anything else is crappy or slow, so when a host is found in the
- DNS cache, leave the thread alone and let itself cleanup the mess.
+ curl_sasl.c:1506: warning: unused variable 'chlg'
-Vilmos Nebehaj (30 Aug 2014)
-- Fix CA certificate bundle handling in darwinssl.
+- curl_sasl.c: Fixed compilation warning when verbose debug output disabled
- If the --cacert option is used with a CA certificate bundle that
- contains multiple CA certificates, iterate through it, adding each
- certificate as a trusted root CA.
+ curl_sasl.c:1317: warning: unused parameter 'conn'
+
+- ntlm_core: Use own odd parity function when crypto engine doesn't have one
-Daniel Stenberg (29 Aug 2014)
-- [Askar Safin brought this change]
+- ntlm_core: Prefer sizeof(key) rather than hard coded sizes
- getinfo-times: Typo fixed
+- ntlm_core: Added consistent comments to DES functions
-- [Askar Safin brought this change]
+- des: Added Curl_des_set_odd_parity()
+
+ Added Curl_des_set_odd_parity() for use when cryptography engines
+ don't include this functionality.
- libcurl.3: Typo fixed
+- tests: Grouped SMTP SASL EXTERNAL tests with other SMTP tests
-- curl_formadd.3: setting CURLFORM_CONTENTSLENGTH 0 zero means strlen
+- tests: Grouped POP3 SASL EXTERNAL tests with other POP3 tests
-- curl.1: add an example for -H
+- tests: Grouped IMAP SASL EXTERNAL tests with other IMAP tests
-- FAQ: mention -w in the 4.20 answer as well
+- sasl: Minor code policing and grammar corrections
-- FAQ: 4.20 curl doesn't return error for HTTP non-200 responses
+Daniel Stenberg (28 Jan 2015)
+- [Gisle Vanem brought this change]
-- CURLOPT_NOBODY.3: clarify this option is for downloads
+ ldap: build with BoringSSL
+
+- security: avoid compiler warning
- When enabling CURLOPT_NOBODY, libcurl effectively switches off upload
- mode and will do a download (without a body). This is now better
- explained in this man page.
+ Possible access to uninitialised memory '&nread' at line 140 of
+ lib/security.c in function 'ftp_send_command'.
- Bug: http://curl.haxx.se/mail/lib-2014-08/0236.html
- Reported-by: John Coffey
+ Reported-by: Rich Burridge
-- INTERNALS: nghttp2 must be 0.6.0 or later
+- runtests: identify BoringSSL and libressl
-- [Tatsuhiro Tsujikawa brought this change]
+Patrick Monnerat (27 Jan 2015)
+- docs: cite SASL external authentication.
+
+- sasl: remove XOAUTH2 from default enabled authentication mechanism.
+
+- test: add test cases for sasl external authentication (imap/pop3/smtp).
- Compile with latest nghttp2
+- imap: remove automatic password setting: it breaks external sasl authentication
-Dan Fandrich (26 Aug 2014)
-- THANKS: removed a few more duplicates
+- sasl: implement EXTERNAL authentication mechanism.
+ Its use is only enabled by explicit requirement in URL (;AUTH=EXTERNAL) and
+ by not setting the password.
-Daniel Stenberg (26 Aug 2014)
-- RELEASE-NOTES: synced with 007242257683a
+Steve Holme (27 Jan 2015)
+- openssl: Fixed Curl_ossl_cert_status_request() not returning FALSE
- ... and bumped the contributor amount after recount
+ Modified the Curl_ossl_cert_status_request() function to return FALSE
+ when built with BoringSSL or when OpenSSL is missing the necessary TLS
+ extensions.
-- THANKS: added 52 missing contributors
+- openssl: Fixed compilation errors when OpenSSL built with 'no-tlsext'
- I re-ran contributors.sh on all changes since 7.10 and I found these
- contributors who are mentioned in the commits but never were added to
- THANKS before!
+ Fixed the build of openssl.c when OpenSSL is built without the necessary
+ TLS extensions for OCSP stapling.
- I also removed a couple of duplicates (mostly due to different
- spellings).
+ Reported-by: John E. Malmberg
-- contributors: grep and sort case insensitively
+- [Brad Spencer brought this change]
-- [Michael Osipov brought this change]
-
- configure.ac: Add support for recent GSS-API implementations for HP-UX
-
- By default, configure script assumes that libcurl will use the
- HP-supplied GSS-API implementation which does not have krb5-config.
- If a dev needs a more recent version which has that config script,
- the change will allow to pass an appropriate GSSAPI_ROOT.
+ curl_setup: Disable SMB/CIFS support when HTTP only
-- CONNECT: close proxy connections that fail to CONNECT
-
- This is usually due to failed auth. There's no point in us keeping such
- a connection alive since it shouldn't be re-used anyway.
-
- Bug: http://curl.haxx.se/bug/view.cgi?id=1381
- Reported-by: Marcel Raad
+- RELEASE-NOTES: Synced with 37824498a3
-- RELEASE-NOTES: added two missing HTTP/2 bug fixes
+Daniel Stenberg (22 Jan 2015)
+- configure: remove detection of the old yassl emulation API
- And renamed all http2 references to HTTP/2 in this file
+ ... as that is ancient history and not used.
-- RELEASE-NOTES: synced with f646e9075f47
+- OCSP stapling: disabled when build with BoringSSL
-- [Jakub Zakrzewski brought this change]
+- [Alessandro Ghedini brought this change]
- Cmake: Possibility to use OpenLDAP, OpenSSL, LibSSH2 on windows
+ openssl: add support for the Certificate Status Request TLS extension
- At this point I can build libcurl on windows. It provides at least the same
- list of protocols as for linux build and works with our software.
-
-- [Jakub Zakrzewski brought this change]
+ Also known as "status_request" or OCSP stapling, defined in RFC6066
+ section 8.
+
+ Thanks-to: Joe Mason
+ - for the work-around for the OpenSSL bug.
- Cmake: Removed repeated content from ending blocks
+- BoringSSL: fix build for non-configure builds
- They are unnecesary in modern CMake and removing them improves readability.
+ HAVE_BORINGSSL gets defined now by configure and should be defined by
+ other build systems in case a BoringSSL build is desired.
-- [Jakub Zakrzewski brought this change]
+- configure: fix BoringSSL detection and detect libresssl
- Cmake: Removed some useless empty SET statements.
+Steve Holme (22 Jan 2015)
+- curl_sasl: Reinstate the sasl_ prefix for locally scoped functions
- Undefined variables resolve to empty strings and we do not ever test if
- the variable is defined thus those SETs are superfluous.
+ Commit 7a8b2885e2 made some functions static and removed the public
+ Curl_ prefix. Unfortunately, it also removed the sasl_ prefix, which
+ is the naming convention we use in this source file.
-- [Jakub Zakrzewski brought this change]
+- curl_sasl: Minor code policing following recent commits
- Cmake: Removed useless comments from CMakeLists.txt
+Daniel Stenberg (22 Jan 2015)
+- [John Malmberg brought this change]
+
+ openvms: Handle openssl/0.8.9zb version parsing
- They look like some relics after changes.
+ packages/vms/gnv_link_curl.com was assuming only a single letter suffix
+ in the openssl version. That assumption has been fixed for 7.40.
-- [Jakub Zakrzewski brought this change]
+- BoringSSL: detected by configure, switches off NTLM
- Cmake: Don't check for all headers each time
-
- One header at a time is the right way. Apart from that the output on
- windows goes from:
- ...
- -- Looking for include files I:/src/libssh2-1.4.3/include/libssh2.h, ws2tcpip.h
- -- Looking for include files I:/src/libssh2-1.4.3/include/libssh2.h, ws2tcpip.h
- - found
- -- Looking for 3 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
- ock2.h
- -- Looking for 3 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
- ock2.h - found
- -- Looking for 4 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., stdi
- o.h
- -- Looking for 4 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., stdi
- o.h - found
- -- Looking for 5 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wind
- ows.h
- -- Looking for 5 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wind
- ows.h - found
- -- Looking for 6 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
- ock.h
- -- Looking for 6 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
- ock.h - found
- -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
- filio.h
- -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
- filio.h - not found
- -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
- ioctl.h
- -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
- ioctl.h - not found
- -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
- resource.h
- ...
-
- To much nicer:
- ...
- -- Looking for ws2tcpip.h
- -- Looking for ws2tcpip.h - found
- -- Looking for winsock2.h
- -- Looking for winsock2.h - found
- -- Looking for stdio.h
- -- Looking for stdio.h - found
- -- Looking for windows.h
- -- Looking for windows.h - found
- -- Looking for winsock.h
- -- Looking for winsock.h - found
- -- Looking for sys/filio.h
- -- Looking for sys/filio.h - not found
- -- Looking for sys/ioctl.h
- -- Looking for sys/ioctl.h - not found
- -- Looking for sys/resource.h
+- BoringSSL: no PKCS12 support nor ERR_remove_state
-- [Jakub Zakrzewski brought this change]
+- [Leith Bade brought this change]
- Cmake: Append OpenSSL include directory to search path
-
- At this point I can build libcurl with OpenSSL, OpenLDAP and LibSSH2.
- Supported protocols are at least:
- HTTP, HTTPS, FTP, SFTP, TFTP, LDAP, LDAPS, POP3, SMTP
- (those are the ones we have regression tests for
- in our product's testsuite)
+ BoringSSL: fix build
-- [Jakub Zakrzewski brought this change]
+Steve Holme (20 Jan 2015)
+- curl_sasl.c: chlglen is not used when cryptography is disabled
- Cmake: Search for liblber, LDAP SSL headers, swith for using OpenLDAP code.
+- curl_sasl.c: Fixed compilation warning when cyptography is disabled
+
+ curl_sasl.c:1453: warning C4101: 'serverdata' : unreferenced local
+ variable
-- [Jakub Zakrzewski brought this change]
+- curl_sasl.c: Fixed compilation error when USE_WINDOWS_SSPI defined
+
+ curl_sasl.c:1221: error C2065: 'mechtable' : undeclared identifier
+
+ This error could also happen for non-SSPI builds when cryptography is
+ disabled (CURL_DISABLE_CRYPTO_AUTH is defined).
- Cmake: LibSSH2 detection and use.
+Patrick Monnerat (20 Jan 2015)
+- SASL: make some procedures local-scoped
-- [Jakub Zakrzewski brought this change]
+- SASL: common state engine for imap/pop3/smtp
- Cmake: Moved macros out of the main CMakeLists.txt
+- SASL: common URL option and auth capabilities decoders for all protocols
-- [Jakub Zakrzewski brought this change]
+- IMAP/POP3/SMTP: use a per-connection sub-structure for SASL parameters.
- Cmake: Added missing protocol-disable switches
+Daniel Stenberg (20 Jan 2015)
+- ipv6: enclose AF_INET6 uses with proper #ifdefs for ipv6
- They already have their defines in config.h. This makes it possible to
- disable the protocols from command line during configure step.
+ Reported-by: Chris Young
-- [Jakub Zakrzewski brought this change]
+- [Chris Young brought this change]
- Cmake: Made boolean defines be defined to "1" instead of "ON"
+ timeval: typecast for better type (on Amiga)
- It's by convention, for compatibility and because the comments say so.
- Just mabe someone have written a test like "#if HAVE_XX==1"
-
-- [Jakub Zakrzewski brought this change]
-
- Cmake: Require at least CMake 2.8.
+ There is an issue with conflicting "struct timeval" definitions with
+ certain AmigaOS releases and C libraries, depending on what gets
+ included when. It's a minor difference - the OS one is unsigned,
+ whereas the common structure has signed elements. If the OS one ends up
+ getting defined, this causes a timing calculation error in curl.
- CMake 2.6 is already a bit old. Many bugs have been fixed since
- its release. We use 2.8 in our company and we have no intention
- of polluting our environment with old software, so 2.6 would
- not be tested. This shouldn't be a problem since all one need
- to build CMake from source is C and C++ compiler.
+ It's easy enough to resolve this at the curl end, by casting the
+ potentially errorneous calculation to a signed long.
-- disconnect: don't touch easy-related state on disconnects
+- openssl: do public key pinning check independently
- This was done to make sure NTLM state that is bound to a connection
- doesn't survive and gets used for the subsequent request - but
- disconnects can also be done to for example make room in the connection
- cache and thus that connection is not strictly related to the easy
- handle's current operation.
+ ... of the other cert verification checks so that you can set verifyhost
+ and verifypeer to FALSE and still check the public key.
- The http authentication state is still kept in the easy handle since all
- http auth _except_ NTLM is connection independent and thus survive over
- multiple connections.
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1471
+ Reported-by: Kyle J. McKay
+
+Patrick Monnerat (19 Jan 2015)
+- OS400: CURLOPT_SSL_VERIFYSTATUS for ILE/RPG too.
+
+Steve Holme (18 Jan 2015)
+- ldap: Renamed the CURL_LDAP_WIN definition to USE_WIN32_LDAP
- Bug: http://curl.haxx.se/mail/lib-2014-08/0148.html
- Reported-by: Paras S
+ For consistency with other USE_WIN32_ defines as well as the
+ USE_OPENLDAP define.
-- curl.1: clarify --limit-rate's effect on both directions
+- http_negotiate: Use dynamic buffer for SPN generation
- Bug: http://curl.haxx.se/bug/view.cgi?id=1414
- Reported-by: teo8976
+ Use a dynamicly allocated buffer for the temporary SPN variable similar
+ to how the SASL GSS-API code does, rather than using a fixed buffer of
+ 2048 characters.
-- curl.1: mention the --post30x options within the --location desc
+- sasl_gssapi: Make Curl_sasl_build_gssapi_spn() public
-Dan Fandrich (22 Aug 2014)
-- sasl: Fixed a memory leak on OOM
+- sasl_gssapi: Fixed memory leak with local SPN variable
-Daniel Stenberg (22 Aug 2014)
-- [Frank Meier brought this change]
+Daniel Stenberg (17 Jan 2015)
+- http_negotiate.c: unused variable 'ret'
- NTLM: ignore CURLOPT_FORBID_REUSE during NTLM HTTP auth
-
- Problem: if CURLOPT_FORBID_REUSE is set, requests using NTLM failed
- since NTLM requires multiple requests that re-use the same connection
- for the authentication to work
+Steve Holme (17 Jan 2015)
+- gskit.h: Code policing of function pointer arguments
+
+- vtls: Removed unimplemented overrides of curlssl_close_all()
- Solution: Ignore the forbid reuse flag in case the NTLM authentication
- handshake is in progress, according to the NTLM state flag.
+ Carrying on from commit 037cd0d991, removed the following unimplemented
+ instances of curlssl_close_all():
- Fixed known bug #77.
-
-Steve Holme (22 Aug 2014)
-- openssl.c: Fixed longer than 79 columns
+ Curl_axtls_close_all()
+ Curl_darwinssl_close_all()
+ Curl_cyassl_close_all()
+ Curl_gskit_close_all()
+ Curl_gtls_close_all()
+ Curl_nss_close_all()
+ Curl_polarssl_close_all()
-- openssl.c: Fixed compilation warning
+- vtls: Separate the SSL backend definition from the API setup
- warning: declaration of 'minor' shadows a global declaration
+ Slight code cleanup as the SSL backend #define is mixed up with the API
+ function setup.
-Daniel Stenberg (21 Aug 2014)
-- [Haris Okanovic brought this change]
-
- win32: Fixed WinSock 2 #if
+- vtls: Fixed compilation errors when SSL not used
- A conditionally compiled block in connect.c references WinSock 2
- symbols, but used `#ifdef HAVE_WINSOCK_H` instead of `#ifdef
- HAVE_WINSOCK2_H`.
+ Fixed the following warning and error from commit 3af90a6e19 when SSL
+ is not being used:
- Bug: http://curl.haxx.se/mail/lib-2014-08/0155.html
-
-- Curl_disconnect: don't free the URL
+ url.c:2004: warning C4013: 'Curl_ssl_cert_status_request' undefined;
+ assuming extern returning int
- The URL is not a property of the connection so it should not be freed in
- the connection disconnect but in the Curl_close() that frees the easy
- handle.
+ error LNK2019: unresolved external symbol Curl_ssl_cert_status_request
+ referenced in function Curl_setopt
+
+- http_negotiate: Added empty decoded challenge message info text
+
+- http_negotiate: Return CURLcode in Curl_input_negotiate() instead of int
+
+- http_negotiate_sspi: Prefer use of 'attrs' for context attributes
- Bug: http://curl.haxx.se/mail/lib-2014-08/0148.html
- Reported-by: Paras S
+ Use the same variable name as other areas of SSPI code.
-- help output: minor whitespace edits
+- http_negotiate_sspi: Use correct return type for QuerySecurityPackageInfo()
- Should've been amended in the previous commit but wasn't due to a
- mistake.
+ Use the SECURITY_STATUS typedef rather than a unsigned long for the
+ QuerySecurityPackageInfo() return and rename the variable as per other
+ areas of SSPI code.
-- [Zearin brought this change]
+- http_negotiate_sspi: Use 'CURLcode result' for CURL result code
- help output: use ≥2 spaces between option and description
+- curl_endian: Fixed build when 64-bit integers are not supported (Part 2)
- ... and some other cleanups
+ Missed Curl_read64_be() in commit bb12d44471 :(
-- FAQ: some actually sometimes get paid...
+Daniel Stenberg (16 Jan 2015)
+- CURLOPT_SSL_VERIFYSTATUS.3: mention it is added in version 7.41.0
-Steve Holme (17 Aug 2014)
-- sasl_sspi: Fixed a memory leak with the GSSAPI base-64 decoded challenge
+- curlver.h: next release is 7.41.0 due to the changes
-- sasl_sspi: Renamed GSSAPI mutual authentication parameter
-
- ...From "mutual" to "mutual_auth" which better describes what it is.
+- RELEASE-NOTES: mention the new OCSP stapling options, bump version
-- sasl_sspi: Corrected some of the GSSAPI security message error codes
-
- Corrected a number of the error codes that can be returned from the
- Curl_sasl_create_gssapi_security_message() function when things go
- wrong.
+- opts: add CURLOPT_SSL_VERIFYSTATUS* to docs/Makefile
+
+- help: add --cert-status to --help output
+
+- copyright years: after OCSP stapling changes
+
+- [Alessandro Ghedini brought this change]
+
+ curl: add --cert-status option
- It makes more sense to return CURLE_BAD_CONTENT_ENCODING when the
- inbound security challenge can't be decoded correctly or doesn't
- contain the KERB_WRAP_NO_ENCRYPT flag and CURLE_OUT_OF_MEMORY when
- EncryptMessage() fails. Unfortunately the previous error code of
- CURLE_RECV_ERROR was a copy and paste mistakes on my part and should
- have been correct in commit 4b491c675f :(
+ This enables the CURLOPT_SSL_VERIFYSTATUS functionality.
-- docs: Escaped single backslash
+- [Alessandro Ghedini brought this change]
-- TODO: Updated following GSSAPI (Kerberos V5) additions
+ nss: add support for the Certificate Status Request TLS extension
- Updated "FTP 4.6 GSSAPI via Windows SSPI" and "SASL 14.1 Other
- authentication mechanisms" following recent additions.
+ Also known as "status_request" or OCSP stapling, defined in RFC6066 section 8.
- Added SASL 14.2 GSSAPI via GSS-API libraries.
+ This requires NSS 3.15 or higher.
-- CURLOPT_USERNAME.3: Added Kerberos V5 and NTLM domain information
-
- This repeats what has already been documented in both the curl manpage
- and CURLOPT_USERPWD documentation but is provided here for completeness
- as someone may not especially read the latter when using libcurl.
+- [Alessandro Ghedini brought this change]
-- CURLOPT_USERPWD.3: Updated following Kerberos V5 SSPI changes
+ gtls: add support for the Certificate Status Request TLS extension
- Added information about Kerberos V5 requiring the domain part in the
- user name.
+ Also known as "status_request" or OCSP stapling, defined in RFC6066 section 8.
- Mentioned that the user name can be specified in UPN format, and not
- just in Down-Level Logon Name format, following the information
- added in commit 7679cb3fa8 reworking the exisitng information in the
- process.
+ This requires GnuTLS 3.1.3 or higher to build, however it's recommended to use
+ at least GnuTLS 3.3.11 since previous versions had a bug that caused the OCSP
+ response verfication to fail even on valid responses.
-- docs: Added Kerberos V5 and NTLM domain information to --user
+- [Alessandro Ghedini brought this change]
-- docs: Added Kerberos V5 to the --user SSPI current credentials usage
+ url: add CURLOPT_SSL_VERIFYSTATUS option
+
+ This option can be used to enable/disable certificate status verification using
+ the "Certificate Status Request" TLS extension defined in RFC6066 section 8.
+
+ This also adds the CURLE_SSL_INVALIDCERTSTATUS error, to be used when the
+ certificate status verification fails, and the Curl_ssl_cert_status_request()
+ function, used to check whether the SSL backend supports the status_request
+ extension.
-- sasl_sspi: Tell the server we don't support a GSSAPI receive buffer
+- TheArtOfHttpScripting: skip the date at the top, we have git
-- smtp: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
+- TheArtOfHttpScripting: phrase it TLS lib agnostic
-- pop3: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
+Steve Holme (16 Jan 2015)
+- TODO: Added some SMB ideas
-- imap: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
+- RELEASE-NOTES: Synced with 5f09947d28
-- email: Added mutual authentication flag
+- build-openssl.bat: Added check for Perl installation
-Daniel Stenberg (15 Aug 2014)
-- RELEASE-NOTES: synced with 0187c9e11d079
+- checksrc.bat: Better detection of Perl installation
-- http: fix the Content-Range: parser
-
- ... to handle "*/[total]". Also, removed the strange hack that made
- CURLOPT_FAILONERROR on a 416 response after a *RESUME_FROM return
- CURLE_OK.
+- curl_endian: Fixed build when 64-bit integers are not supported
- Reported-by: Dimitrios Siganos
- Bug: http://curl.haxx.se/mail/lib-2014-06/0221.html
+ Bug: http://curl.haxx.se/mail/lib-2015-01/0094.html
+ Reported-by: John E. Malmberg
-Steve Holme (14 Aug 2014)
-- email: Introduced the GSSAPI states
+Daniel Stenberg (15 Jan 2015)
+- [Yun SangHo brought this change]
-- curl_sasl_sspi.c: Fixed more compilation warnings from commit 4b491c675f
-
- warning: unused variable 'resp'
-
- warning: no previous prototype for 'Curl_sasl_gssapi_cleanup'
+ curl.h: remove extra space
-- SHA-1: 61c93383b7f6cf79d12ff99e9dced1d1cc2a7064
+- Curl_pretransfer: reset expected transfer sizes
- * curl_sasl_sspi.c: Fixed compilation warning from commit 4b491c675f
-
- warning: declaration of 'result' shadows a previous local
+ Reported-by: Mohammad AlSaleh
+ Bug: http://curl.haxx.se/mail/lib-2015-01/0065.html
-- curl_sasl.h: Fixed compilation error from commit 4b491c675f
+Marc Hoersken (12 Jan 2015)
+- curl_schannel.c: mark session as removed from cache if not freed
- warning: 'struct kerberos5data' declared inside parameter list
+ If the session is still used by active SSL/TLS connections, it
+ cannot be closed yet. Thus we mark the session as not being cached
+ any longer so that the reference counting mechanism in
+ Curl_schannel_shutdown is used to close and free the session.
- Due to missing forward declaration.
+ Reported-by: Jean-Francois Durand
-- urldata.h: Fixed compilation warnings from commit 3ec253532e
-
- warning: extra tokens at end of #endif directive
+Steve Holme (9 Jan 2015)
+- RELEASE-NOTES: Synced with d21b66835f
-- sasl_sspi: Added GSSAPI message functions
+Guenter Knauf (9 Jan 2015)
+- Merge pull request #134 from vszakats/mingw-m64
+
+ add -m64 CFLAGS when targeting mingw64, add -m32/-m64 to LDFLAGS
-- urldata: Introduced a GSSAPI (Kerberos V5) data structure
+- Merge pull request #136 from vszakats/mingw-allow-custom-cflags
- Added a kerberos5data structure which is similar in nature to the
- ntlmdata and negotiatedata structures.
+ mingw build: allow to pass custom CFLAGS
-- sspi: Moved KERB_WRAP_NO_ENCRYPT from socks_sspi module
+Daniel Stenberg (9 Jan 2015)
+- NSS: fix compiler error when built http2-enabled
+
+Steve Holme (9 Jan 2015)
+- gssapi: Remove need for duplicated GSS_C_NT_HOSTBASED_SERVICE definitions
- In preparation for the upcoming SSPI implementation of GSSAPI
- authentication, moved the definition of KERB_WRAP_NO_ENCRYPT from
- socks_sspi.c to curl_sspi.h allowing it to be shared amongst other
- SSPI based code.
+ Better code reuse and consistency in calls to gss_import_name().
-Daniel Stenberg (13 Aug 2014)
-- mk-ca-bundle.pl: add missing $
+Viktor Szakats (9 Jan 2015)
+- mingw build: allow to pass custom CFLAGS
-- mk-ca-bundle.pl: switched to using hg.mozilla.org
+Daniel Stenberg (8 Jan 2015)
+- FTP: if EPSV fails on IPV6 connections, bail out
- ... as mxr.mozilla.org is due to be retired.
+ ... instead of trying PASV, since PASV can't work with IPv6.
- The new host doesn't support If-Modified-Since nor ETags, meaning that
- the script will now defer to download and do a post-transfer checksum
- check to see if a new output is to be generated. The new output format
- will hold the SHA1 checksum of the source file for that purpose.
+ Reported-by: Vojtěch Král
+
+- FTP: fix IPv6 host using link-local address
- We call this version 1.22
+ ... and make sure we can connect the data connection to a host name that
+ is longer than 48 bytes.
- Reported-by: Ed Morley
- Bug: http://curl.haxx.se/bug/view.cgi?id=1409
+ Also simplifies the code somewhat by re-using the original host name
+ more, as it is likely still in the DNS cache.
+
+ Original-Patch-by: Vojtěch Král
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1468
-- [Jose Alf brought this change]
+Steve Holme (8 Jan 2015)
+- [Sam Schanken brought this change]
- openssl: fix version report for the 0.9.8 branch
+ winbuild: Added option to build with c-ares
- Fixed libcurl to correctly output the newer versions of OpenSSL 0.9.8,
- starting from openssl-0.9.8za.
+ Added support for a WITH_CARES option to be used when invoking nmake
+ via Makefile.vc. This option enables linking against both the DLL and
+ static versions of the c-ares libraries, as well as the debug and
+ release varients, depending on the value of DEBUG. The USE_ARES
+ preprocessor symbol is also defined.
-- [Frank Meier brought this change]
+Guenter Knauf (8 Jan 2015)
+- NetWare build: added TLS-SRP enabled build.
- create_conn: prune dead connections
-
- Bringing back the old functionality that was mistakenly removed when the
- connection cache was remade. When creating a new connection, all the
- existing ones are checked and those that are known to be dead get
- disconnected for real and removed from the connection cache. It helps
- the cache from holding on to very many stale connections and aids in
- keeping down the number of system sockets in wait states.
-
- Help-by: Jonatan Vela <jonatan.vela@ergon.ch>
+Steve Holme (8 Jan 2015)
+- sasl_gssapi: Fixed build on NetBSD with built-in GSS-API
- Bug: http://curl.haxx.se/mail/lib-2014-06/0189.html
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1469
+ Reported-by: Thomas Klausner
-Kamil Dudka (11 Aug 2014)
-- docs/SSLCERTS: update the section about NSS database
-
- Bug: http://curl.haxx.se/mail/lib-2014-07/0335.html
- Reported-by: David Shaw
+Viktor Szakats (8 Jan 2015)
+- add -m64 clags when targeting mingw64, add -m32/-m64 to LDFLAGS
-Daniel Stenberg (11 Aug 2014)
-- [Peter Wang brought this change]
+Daniel Stenberg (8 Jan 2015)
+- bump: start working towards 7.40.1
- Curl_poll + Curl_wait_ms: fix timeout return value
-
- Curl_poll and Curl_wait_ms require the fix applied to Curl_socket_check
- in commits b61e8b8 and c771968:
-
- When poll or select are interrupted and coincides with the timeout
- elapsing, the functions return -1 indicating an error instead of 0 for
- the timeout.
+- THANKS: 14 new contributors from the 7.40.0 release notes
-Steve Holme (10 Aug 2014)
-- config-tpf.h: Fixed up line lengths > 79 characters
+Version 7.40.0 (7 Jan 2015)
-- config-symbian.h: Fixed up line lengths > 79 characters
+Daniel Stenberg (7 Jan 2015)
+- RELEASE-NOTES: version 7.40.0
-- tool_hugehelp.c.cvs: Added copyright
+- darwinssl: fix session ID keys to only reuse identical sessions
- Added copyright due to warning from checksrc.pl.
+ ...to avoid a session ID getting cached without certificate checking and
+ then after a subsequent _enabling_ of the check libcurl could still
+ re-use the session done without cert checks.
+
+ Bug: http://curl.haxx.se/docs/adv_20150108A.html
+ Reported-by: Marc Hesse
-- RELEASE-NOTES: Synced with cd6ecf6a89
+- tests: make sure CRLFs can't be used in URLs passed to proxy
+
+ Bug: http://curl.haxx.se/docs/adv_20150108B.html
-- sasl_sspi: Fixed hard coded buffer for response generation
+- url-parsing: reject CRLFs within URLs
- Given the SSPI package info query indicates a token size of 4096 bytes,
- updated to use a dynamic buffer for the response message generation
- rather than a fixed buffer of 1024 bytes.
+ Bug: http://curl.haxx.se/docs/adv_20150108B.html
+ Reported-by: Andrey Labunets
+
+Steve Holme (7 Jan 2015)
+- ldap: Convert attribute output to UTF-8 when Unicode
-- sasl_sspi: Fixed missing free of challenge buffer on SPN failure
+- ldap: Convert DN output to UTF-8 when Unicode
-- http_negotiate_sspi: Tidy up to remove the get_gss_name() function
+Daniel Stenberg (7 Jan 2015)
+- hostip: remove 'stale' argument from Curl_fetch_addr proto
- Due to the reduction of code in commit 3b924b29 of get_gss_name() the
- function isn't necessary anymore.
+ Also, remove the log output of the resolved name is NOT in the cache in
+ the spirit of only telling when something is actually happening.
-- http_negotiate_sspi: Use a dynamic buffer for SPN generation
+Steve Holme (7 Jan 2015)
+- ldap/imap: Fixed spelling mistake in comments and variable names
- Updated to use a dynamic buffer for the SPN generation via the recently
- introduced Curl_sasl_build_spn() function rather than a fixed buffer of
- 1024 characters, which should have been more than enough, but by using
- the new function removes the need for another variable sname to do the
- wide character conversion in Unicode builds.
+ Reported-by: Michael Osipov
-- sasl: Tidy up to rename SPN variable from URI
+Daniel Stenberg (7 Jan 2015)
+- RELEASE-NOTES: updated with ./contributors.sh output
-- sasl: Use a dynamic buffer for SPN generation
-
- Updated Curl_sasl_create_digest_md5_message() to use a dynamic buffer
- for the SPN generation via the recently introduced Curl_sasl_build_spn()
- function rather than a fixed buffer of 128 characters.
+Dan Fandrich (5 Jan 2015)
+- curl_multibyte.h: Eliminated some trailing whitespace
-- sasl_sspi: Fixed SPN not being converted to wchar under Unicode builds
-
- Curl_sasl_create_digest_md5_message() would simply cast the SPN variable
- to a TCHAR when calling InitializeSecurityContext(). This meant that,
- under Unicode builds, it would not be valid wide character string.
-
- Updated to use the recently introduced Curl_sasl_build_spn() function
- which performs the correct conversion for us.
+Steve Holme (4 Jan 2015)
+- RELEASE-NOTES: Synced with ea93252ef1
-- sasl: Introduced Curl_sasl_build_spn() for building a SPN
-
- Various parts of the libcurl source code build a SPN for inclusion in
- authentication data. This information is either used by our own native
- generation routines or passed to authentication functions in third-party
- libraries such as SSPI. However, some of these instances use fixed
- buffers rather than dynamically allocated ones and not all of those that
- should, convert to wide character strings in Unicode builds.
+- ldap: Fixed Unicode usage for all Win32 builds
- Implemented a common function that generates a SPN and performs the
- wide character conversion where necessary.
+ Otherwise, the fixes in the previous commits would only be applicable
+ to IDN and SSPI based builds and not others such as OpenSSL with LDAP
+ enabled.
-- sasl_sspi: Fixed memory leak with not releasing Package Info struct
-
- Curl_sasl_create_digest_md5_message() wouldn't free the Package Info
- structure after QuerySecurityPackageInfo() had allocated it.
+- ldap: Fixed memory leak from commit efb64fdf80
-- [Michael Osipov brought this change]
+- ldap: Fix memory leak from commit 3a805c5cc1
- docs: Update SPNEGO and GSS-API related doc sections
+- ldap: Fixed attribute variable warnings when Unicode is enabled
- Reflect recent changes in SPNEGO and GSS-API code in the docs.
- Update them with appropriate namings and remove visible spots for
- GSS-Negotiate.
+ Use 'TCHAR *' for local attribute variable rather than 'char *'.
-- sspi: Minor code tidy up to standardise coding style
-
- Following the recent changes and in attempt to align the SSPI based
- authentication code performed the following:
+- ldap: Fixed DN variable warnings when Unicode is enabled
- * Use NULL and SECBUFFVERSION rather than hard coded constants.
- * Avoid comparison of zero in if statements.
- * Standardised the buf and desc setup code.
+ Use 'TCHAR *' for local DN variable rather than 'char *'.
-- schannel: Fixed compilation warning in vtls.c
+- ldap: Remove the unescape_elements() function
- vtls.c:688:43: warning: unused parameter 'data'
+ Due to the recent modifications this function is no longer used.
-- tool_getparam.c: Fixed compilation warning
+- ldap.c: Fixed compilation warning
- warning: `orig_opt' might be used uninitialized in this function
+ ldap.c:98: warning: extra tokens at end of #endif directive
-- RELEASE-NOTES: Synced with 159c3aafd8
+- ldap: Fixed support for Unicode filter in Win32 search call
-Daniel Stenberg (8 Aug 2014)
-- curl_ntlm_msgs: make < 80 columns wide
+- ldap.c: Fixed compilation warning
+
+ ldap.c:802: warning: comparison between signed and unsigned integer
+ expressions
-Steve Holme (8 Aug 2014)
-- ntlm: Fixed hard coded buffer for SSPI based auth packet generation
+- ldap: Fixed support for Unicode attributes in Win32 search call
+
+- ldap: Fixed memory leak from commit efb64fdf80
- Given the SSPI package info query indicates a token size of 2888 bytes,
- and as with the Winbind code and commit 9008f3d56, use a dynamic buffer
- for the Type-1 and Type-3 message generation rather than a fixed buffer
- of 1024 bytes.
+ The unescapped DN was not freed after a successful character conversion.
-- ntlm: Added support for SSPI package info query
+- ldap.c: Fixed compilation error
- Just as with the SSPI implementations of Digest and Negotiate added a
- package info query so that libcurl can a) return a more appropriate
- error code when the NTLM package is not supported and b) it can be of
- use later to allocate a dynamic buffer for the Type-1 and Type-3
- output tokens rather than use a fixed buffer of 1024 bytes.
+ ldap.c:738: error: macro "LDAP_TRACE" passed 2 arguments, but takes
+ just 1
-Daniel Stenberg (7 Aug 2014)
-- http2: added some more logging for debugging stream problems
+- ldap.c: Fixed compilation warning
+
+ ldap.c:89: warning: extra tokens at end of #endif directive
-- [Tatsuhiro Tsujikawa brought this change]
+- ldap: Fixed support for Unicode DN in Win32 search call
- HTTP/2: Reset promised stream, not its associated stream.
+- ldap: Fixed Unicode user and password in Win32 bind calls
-- [Tatsuhiro Tsujikawa brought this change]
+- ldap: Fixed Unicode host name in Win32 initialisation calls
- HTTP/2: Move :authority before non-pseudo header fields
+- ldap: Use host.dispname for infof() connection failure messages
+
+ As host.name may be encoded use dispname for infof() failure messages.
-- http2: show the received header for better debugging
+- ldap: Prefer 'CURLcode result' for curl result codes
-- openssl: replace call to OPENSSL_config
-
- OPENSSL_config() is "strongly recommended" to use but unfortunately that
- function makes an exit() call on wrongly formatted config files which
- makes it hard to use in some situations. OPENSSL_config() itself calls
- CONF_modules_load_file() and we use that instead and we ignore its
- return code!
+- ldap: Pass write length in all Curl_client_write() calls
- Reported-by: Jan Ehrhardt
- Bug: http://curl.haxx.se/bug/view.cgi?id=1401
+ As we get the length for the DN and attribute variables, and we know
+ the length for the line terminator, pass the length values rather than
+ zero as this will save Curl_client_write() from having to perform an
+ additional strlen() call.
-Dan Fandrich (7 Aug 2014)
-- [Fabian Keil brought this change]
+- ldap: Fixed attribute memory leaks on failed client write
+
+ Fixed memory leaks from commit 086ad79970 as was noted in the commit
+ comments.
- runtests.pl: Pad test case numbers with up to three zeroes
+- ldap: Fixed DN memory leaks on failed client write
- Test case numbers with four digits have been available for a
- while now.
+ Fixed memory leaks from commit 086ad79970 as was noted in the commit
+ comments.
-Steve Holme (7 Aug 2014)
-- docs: Added Negotiate to the SSPI current credentials usage description
+- curl_ntlm_core.c: Fixed compilation warning from commit 1cb17b2a5d
+
+ curl_ntlm_core.c:146: warning: passing 'DES_cblock' (aka 'unsigned char
+ [8]') to parameter of type 'char *' converts
+ between pointers to integer types with different
+ sign
-- TODO: HTTP Digest via Windows SSPI
+- ntlm: Use extend_key_56_to_64() for all cryptography engines
+
+ Rather than duplicate the code in setup_des_key() for OpenSSL and in
+ extend_key_56_to_64() for non-OpenSSL based crypto engines, as it is
+ the same, use extend_key_56_to_64() for all engines.
-- TODO: FTP GSSAPI via Windows SSPI
+- RELEASE-NOTES: Synced with 34f0bd110f
-- http_negotiate_sspi: Fixed specific username and password not working
+- curl_ntlm_core.c: Fixed compilation warning
- Bug: http://curl.haxx.se/mail/lib-2014-06/0224.html
- Reported-by: Leonardo Rosati
+ curl_ntlm_core.c:458: warning: 'ascii_uppercase_to_unicode_le' defined
+ but not used
-- http_negotiate_sspi: Fixed endless unauthorized loop in commit 6bc76194e8
-
- If the server rejects our authentication attempt and curl hasn't
- called CompleteAuthToken() then the status variable will be
- SEC_I_CONTINUE_NEEDED and not SEC_E_OK.
+- endian: Fixed bit-shift in 64-bit integer read functions
- As such the existing detection mechanism for determining whether or not
- the authentication process has finished is not sufficient.
+ From commit 43792592ca and 4bb5a351b2.
- However, the WWW-Authenticate: Negotiate header line will not contain
- any data when the server has exhausted the negotiation, so we can use
- that coupled with the already allocated context pointer.
+ Reported-by: Michael Osipov
-Daniel Stenberg (5 Aug 2014)
-- RELEASE-NOTES: synced with 5b37db44a3eb
+- smb: Use endian functions for reading NBT and message size values
-Dan Fandrich (5 Aug 2014)
-- parsedate.c: fix the return code for an overflow edge condition
+- endian: Added big endian read functions
-Daniel Stenberg (5 Aug 2014)
-- [Toby Peterson brought this change]
+- endian: Added 64-bit integer read function
- darwinssl: don't use strtok()
-
- The GetDarwinVersionNumber() function uses strtok, which is not
- thread-safe.
+- COPYING: Bumped copyright year to 2015
-- Curl_ossl_version: adapted to detect BoringSSL
-
- This seems to be the way it should work. Right now we can't build with
- BoringSSL and try this out properly due to a minor API breakage.
+- version: Bump copyright year to 2015
-- Curl_ossl_version: detect and show libressl
+- smb.c: Fixed compilation warnings
- LibreSSL is otherwise OpenSSL API compliant (so far)
+ smb.c:780: warning: passing 'char *' to parameter of type 'unsigned
+ char *' converts between pointers to integer types with
+ different sign
+ smb.c:781: warning: passing 'char *' to parameter of type 'unsigned
+ char *' converts between pointers to integer types with
+ different sign
+ smb.c:804: warning: passing 'char *' to parameter of type 'unsigned
+ char *' converts between pointers to integer types with
+ different sign
-- [Tatsuhiro Tsujikawa brought this change]
+- smb: Use endian functions for reading length and offset values
- HTTP/2: Fix infinite loop in readwrite_data()
+- endian: Added 16-bit integer write function
+
+- endian: Fixed Linux compilation issues
- To prevent infinite loop in readwrite_data() function when stream is
- reset before any response body comes, reset closed flag to false once
- it is evaluated to true.
+ Having files named endian.[c|h] seemed to cause issues under Linux so
+ renamed them both to have the curl_ prefix in the filenames.
-Dan Fandrich (3 Aug 2014)
-- gtls: only define Curl_gtls_seed if Nettle is not being used
+- [Julien Nabet brought this change]
-- ssl: provide Curl_ssl_backend even if no SSL library is available
+ lib1900.c: Fixed cppcheck error
+
+ lib1900.c:182: (style) Array index 'handlenum' is used before limits
+ check
+
+ Bug: https://github.com/bagder/curl/pull/133
-Daniel Stenberg (2 Aug 2014)
-- [Tatsuhiro Tsujikawa brought this change]
+- endian: Added standard function descriptions
- HTTP2: Support expect: 100-continue
-
- "Expect: 100-continue", which was once deprecated in HTTP/2, is now
- resurrected in HTTP/2 draft 14. This change adds its support to
- HTTP/2 code. This change also includes stricter header field
- checking.
+- endian: Renamed functions for curl API naming convention
-- CURLOPT_SSL_VERIFYPEER.3. add a warning about disabling it
+- endian: Moved write functions to new module
-- FEATURES: minor update
+- endian: Moved read functions to new module
-- openssl: make ossl_send return CURLE_OK better
-
- Previously it only returned a CURLcode for errors, which is when it
- returns a different size than what was passed in to it.
+- endian: Introduced endian module
- The http2 code only checked the curlcode and thus failed.
-
-- RELEASE-NOTES: synced with 7bb4c8cadb5d0
+ To allow the little endian functions, currently used in two of the NTLM
+ source files, to be used by other modules such as the SMB module.
-- [Michael Wallner brought this change]
+- sepheaders.c: Applied curl oding standards
- CURLOPT_HEADEROPT.3: typo: do -> to
+- [Julien Nabet brought this change]
-- [Marcel Raad brought this change]
+ sepheaders.c: Fixed resource leak on failure
- schannel: use CryptGenRandom for random numbers
-
- This function is available for every Windows version since Windows 95/NT.
+- vtls: Use '(void) arg' for unused parameters
- reference:
- http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942.aspx
+ Prefer void for unused parameters, rather than assigning an argument to
+ itself as a) unintelligent compilers won't optimize it out, b) it can't
+ be used for const parameters, c) it will cause compilation warnings for
+ clang with -Wself-assign and d) is inconsistent with other areas of the
+ curl source code.
-- curl_version_info.3: 'ssl_version_num' is always 0
+- smb.c: Fixed compilation warning
- ... and has been so since 2005
+ smb.c:586: warning: conversion to 'short unsigned int' from 'int' may
+ alter its value
-- ssl: generalize how the ssl backend identifier is set
+- [Bill Nagel brought this change]
+
+ smb: Use the connection's upload buffer
- Each backend now defines CURL_SSL_BACKEND accordingly. Added the *AXTLS
- one which was missing previously.
+ Use the connection's upload buffer instead of allocating our own send
+ buffer.
-Dan Fandrich (31 Jul 2014)
-- axtls: define curlssl_random using axTLS's PRNG
+- RELEASE-NOTES: Synced with 1933f9d33c
-- cyassl: fix the test for ASN_NO_SIGNER_E
+- schannel: Moved the ISC return flag definitions to the SSPI module
- It's an enum so a macro test won't work. The CyaSSL changelog doesn't
- say exactly when this error code was introduced, but it's likely
- to be 2.7.0.
+ Moved our Initialize Security Context return attribute definitions to
+ the SSPI module, as a) these can be used by other SSPI based providers
+ and b) the ISC required attributes are defined there.
-- cyassl: use RNG_GenerateBlock to generate a good random number
+- [Bill Nagel brought this change]
-- opts: fixed some typos
+ smb: Close the connection after a failed client write
-- smtp: fixed a segfault during test 1320 torture test
+- darwinssl: Fixed compilation warning
- Under these circumstances, the connection hasn't been fully established
- and smtp_connect hasn't been called, yet smtp_done still calls the state
- machine which dereferences the NULL conn pointer in struct pingpong.
+ vtls.c:683:43: warning: unused parameter 'data'
-Daniel Stenberg (30 Jul 2014)
-- vtls: repair build without TLS support
+- sockfilt.c: Fixed compilation warnings
- ... by defining Curl_ssl_random() properly
+ sockfilt.c:288: warning: conversion to 'DWORD' from 'size_t' may alter
+ its value
+ sockfilt.c:291: warning: conversion to 'DWORD' from 'size_t' may alter
+ its value
+ sockfilt.c:323: warning: conversion to 'DWORD' from 'size_t' may alter
+ its value
+ sockfilt.c:326: warning: conversion to 'DWORD' from 'size_t' may alter
+ its value
-- polarssl: provide a (weak) random function
+- test1509: Fixed compilation warning
- This now provides a weak random function since PolarSSL doesn't have a
- quick and easy way to provide a good one. It does however provide the
- framework to make one so it _can_ and _should_ be done...
-
-- [Michael Wallner brought this change]
-
- curl_tlsinfo -> curl_tlssessioninfo
+ lib1509.c:93:18: warning: conversion to 'long int' from 'size_t' may
+ alter its value
-- cyassl: use the default (weeker) random
+- test556: Fixed compilation warning
- I couldn't find any dedicated function in its API to get a "good" random
- with.
+ lib556.c:90: warning: conversion to 'unsigned int' from 'size_t' may
+ alter its value
-- cyassl: made it compile with version 2.0.6 again
-
- ASN_NO_SIGNER_E didn't exist back then!
+- sasl_gssapi: Fixed use of dummy username with real username
-- vtls: make the random function mandatory in the TLS backend
+- vtls: Fixed compilation warning and an ignored return code
- To force each backend implementation to really attempt to provide proper
- random. If a proper random function is missing, then we can explicitly
- make use of the default one we use when TLS support is missing.
+ curl_schannel.h:123: warning: right-hand operand of comma expression
+ has no effect
- This commit makes sure it works for darwinssl, gnutls, nss and openssl.
-
-- libcurl.m4: include the standard source header
+ Some instances of the curlssl_close_all() function were declared with a
+ void return type whilst others as int. The schannel version returned
+ CURLE_NOT_BUILT_IN and others simply returned zero, but in all cases the
+ return code was ignored by the calling function Curl_ssl_close_all().
- ... with permission from David Shaw
-
-Kamil Dudka (28 Jul 2014)
-- nss: do not check the version of NSS at run time
+ For the time being and to keep the internal API consistent, changed all
+ declarations to use a void return type.
- The minimal required version of NSS is 3.14.x so it does not make sense
- to check for NSS 3.12.0+ at run time.
+ To reduce code we might want to consider removing the unimplemented
+ versions and use a void #define like schannel does.
-Daniel Stenberg (28 Jul 2014)
-- [Anthon Pang brought this change]
+Daniel Stenberg (28 Dec 2014)
+- TODO: 2.3 Better support for same name resolves
- curl.h: bring back CURLE_OBSOLETE16
-
- Removing defines, even obsolete ones that haven't been used for a very
- long time, still break a lot of applications.
+Steve Holme (28 Dec 2014)
+- test1520: Fixed initial teething problems
- Bug: https://github.com/bagder/curl/pull/106
-
-Dan Fandrich (26 Jul 2014)
-- [Fabian Keil brought this change]
+ * Missing initialisation of upload status caused a seg fault
+ * Missing data termination caused corrupt data to be uploaded
+ * Data verification should be performed in <upload> element
+ * Added missing recipient list cleanup
- tests: Fix a couple of incomplete response lines
+- test1520: Fixed compilation errors
-- [Fabian Keil brought this change]
+- tests: Added test for bug #1456
- runtests.pl: Remove filteroff() which hasn't been used since 2001
+- checksrc.bat: Fixed a problem opening files with spaces in the filename
-- [Fabian Keil brought this change]
+- openldap: Prefer use of 'CURLcode result'
- runtests.pl: Don't expect $TESTDIR/DISABLED to exist
-
- If a non-standard $TESTDIR is used the file may not be necessary.
+- openldap: Use 'LDAPMessage *msg' for messages
- Previously a "missing" file resulted in the warning:
- readline() on closed filehandle D at ./runtests.pl line 4940.
-
-- [Fabian Keil brought this change]
-
- getpart.pm: Fix a comment typo
+ This frees up the 'result' variable for CURLcode based result codes.
-Daniel Stenberg (25 Jul 2014)
-- c-ares: fix build without IPv6 support
-
- Bug: http://curl.haxx.se/mail/lib-2014-07/0337.html
- Reported-by: Spork Schivago
+- nss: Don't ignore Curl_extract_certinfo() OOM failure
-- Curl_base64url_encode: unit-tested in 1302
+- nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
-- base64: added Curl_base64url_encode()
-
- This is now used by the http2 code. It has two different symbols at the
- end of the base64 table to make the output "url safe".
+- nss: Use 'CURLcode result' for curl result codes
- Bug: https://github.com/tatsuhiro-t/nghttp2/issues/62
+ ...and don't use CURLE_OK in failure/success comparisons.
-- [Marcel Raad brought this change]
+- getinfo: Code style policing
- SSPI Negotiate: Fix 3 memory leaks
-
- Curl_base64_decode allocates the output string by itself and two other
- strings were not freed either.
+- getinfo: Use 'CURLcode result' for curl result codes
-- symbols: CURL_VERSION_GSSNEGOTIATE is deprecated
+- darwinssl: Use 'CURLcode result' for curl result codes
-- test1013.pl: GSS-Negotiate doesn't exist as a feature anymore
+- polarssl: Use 'CURLcode result' for curl result codes
-- [Sergey Nikulov brought this change]
+- docs: Updated following the addition of SASL GSSAPI via GSS-API libraries
+
+ As this feature has been implemented for 7.40.0.
- libtest: fixed duplicated line in Makefile
+- asiohiper.cpp: No need to initialise members of ConnInfo
- Bug: https://github.com/bagder/curl/pull/105
+ ...as calloc() automatically clears the area of memory with zeros.
-Patrick Monnerat (23 Jul 2014)
-- GSSAPI: remove useless *_MECHANISM defines.
+- asiohiper.cpp: Updated for curl coding standards
+
+ ...with the exception of the start of block statement curly brackets.
-Daniel Stenberg (23 Jul 2014)
-- findprotocol: show unsupported protocol within quotes
+- code/docs: Use correct case for IPv4 and IPv6
- ... to aid when for example prefixed with a space or other weird
- character.
+ For consistency, as we seem to have a bit of a mixed bag, changed all
+ instances of ipv4 and ipv6 in comments and documentations to use the
+ correct case.
-Patrick Monnerat (23 Jul 2014)
-- GSSAPI: private export mechanisms OIDs. OS400: Make RPG binding up to date.
+- runtests: Fixed detection of Unix Sockets feature
+
+ ...following change in curl --version output.
-Daniel Stenberg (23 Jul 2014)
-- [Marcel Raad brought this change]
+- code/docs: Use Unix rather than UNIX to avoid use of the trademark
+
+ Use Unix when generically writing about Unix based systems as UNIX is
+ the trademark and should only be used in a particular product's name.
- conncache: fix compiler warning
+- ip2ip.c: Fixed compilation warning when IPv6 Scope ID not supported
- warning C4267: '=' : conversion from 'size_t' to 'long', possible loss
- of data
+ if2ip.c:119: warning: unused parameter 'remote_scope_id'
- The member connection_id of struct connectdata is a long (always a
- 32-bit signed integer on Visual C++) and the member next_connection_id
- of struct conncache is a size_t, so one of them should be changed to
- match the other.
+ ...and some minor code style policing in the same function.
+
+- vtls: Don't set cert info count until memory allocation is successful
- This patch the size_t in struct conncache to long (the less invasive
- change as that variable is only ever used in a single code line).
+ Otherwise Curl_ssl_init_certinfo() can fail and set the num_of_certs
+ member variable to the requested count, which could then be used
+ incorrectly as libcurl closes down.
+
+- vtls: Use CURLcode for Curl_ssl_init_certinfo() return type
- Bug: http://curl.haxx.se/bug/view.cgi?id=1399
+ The return type for this function was 0 on success and 1 on error. This
+ was then examined by the calling functions and, in most cases, used to
+ return CURLE_OUT_OF_MEMORY.
+
+ Instead use CURLcode for the return type and return the out of memory
+ error directly, propagating it up the call stack.
-- RELEASE-NOTES: synced with 81cd24adb8b
+- configure: Use camel case for UNIX sockets feature output
+
+ To match the curl --version output.
-- http2: more and better error checking
+Marc Hoersken (26 Dec 2014)
+- sockfilt.c: Reduce the number of individual memory allocations
- 1 - fixes the warnings when built without http2 support
+ Merge multiple internal arrays into one, even if some variables
+ will not not be used. They are all created with the number of
+ file descriptors as their size.
- 2 - adds CURLE_HTTP2, a new error code for errors detected by nghttp2
- basically when they are about http2 specific things.
+ Also fix possible thread handle leak in CloseHandle-loop.
-Dan Fandrich (23 Jul 2014)
-- cyassl.c: return the correct error code on no CA cert
+- sockfilt.c: Replace 100ms sleep with thread throttle
+
+ Improves performance of test cases 574 and 575 by 50%.
- CyaSSL 3.0.0 returns a unique error code if no CA cert is available,
- so translate that into CURLE_SSL_CACERT_BADFILE when peer verification
- is requested.
+ A value of zero causes the thread to relinquish the remainder
+ of its time slice to any other thread of equal priority that is
+ ready to run. If there are no other threads of equal priority
+ ready to run, the function returns immediately, and the thread
+ continues execution.
+
+ http://msdn.microsoft.com/library/windows/desktop/ms686307.aspx
-Daniel Stenberg (23 Jul 2014)
-- symbols-in-versions: new SPNEGO/GSS-API symbols in 7.38.0
+Steve Holme (25 Dec 2014)
+- tool_help: Use camel case for UNIX sockets feature output
+
+ In line with the other features listed in the --version output,
+ capitalise the UNIX socket feature.
-- test1013.pl: remove SPNEGO/GSS-API tweaks
+- vtls: Use bool for Curl_ssl_getsessionid() return type
- No longer necessary after Michael Osipov's rework
+ The return type of this function is a boolean value, and even uses a
+ bool internally, so use bool in the function declaration as well as
+ the variables that store the return value, to avoid any confusion.
-- http_negotiate: remove unused variable
+- schannel: Minor code style policing for casts
-- [Michael Osipov brought this change]
+- schannel: Prefer 'CURLcode result' for curl result codes
- docs: Improve inline GSS-API naming in code documentation
+- cyassl: Prefer 'CURLcode result' for curl result codes
-- [Michael Osipov brought this change]
+- tool_xattr: Use 'CURLcode result' for curl result codes
- curl.h/features: Deprecate GSS-Negotiate macros due to bad naming
+- curl_ntlm_core.c: Fixed compilation warnings
- - Replace CURLAUTH_GSSNEGOTIATE with CURLAUTH_NEGOTIATE
- - CURL_VERSION_GSSNEGOTIATE is deprecated which
- is served by CURL_VERSION_SSPI, CURL_VERSION_GSSAPI and
- CURUL_VERSION_SPNEGO now.
- - Remove display of feature 'GSS-Negotiate'
-
-- [Michael Osipov brought this change]
-
- configure/features: Add feature and version info for GSS-API and SPNEGO
-
-- [Michael Osipov brought this change]
+ curl_ntlm_core.c:301: warning: pointer targets in passing argument 2 of
+ 'CryptImportKey' differ in signedness
+ curl_ntlm_core.c:310: warning: passing argument 6 of 'CryptEncrypt' from
+ incompatible pointer type
+ curl_ntlm_core.c:540: warning: passing argument 4 of 'CryptGetHashParam'
+ from incompatible pointer type
- HTTP: Remove checkprefix("GSS-Negotiate")
-
- That auth mech has never existed neither on MS nor on Unix side.
- There is only Negotiate over SPNEGO.
+- RELEASE-NOTES: Synced with 8830df8b66
-- [Michael Osipov brought this change]
+- gtls: Use preferred 'CURLcode result'
- curl_gssapi: Add macros for common mechs and pass them appropriately
+- openldap: Use standard naming for setup connection function
- Macros defined: KRB5_MECHANISM and SPNEGO_MECHANISM called from
- HTTP, FTP and SOCKS on Unix
+ Renamed ldap_setup() to ldap_setup_connection() to follow more widely
+ used function naming.
-- CONNECT: Revert Curl_proxyCONNECT back to 7.29.0 design
-
- This reverts commit cb3e6dfa3511 and instead fixes the problem
- differently.
-
- The reverted commit addressed a test failure in test 1021 by simplifying
- and generalizing the code flow in a way that damaged the
- performance. Now we modify the flow so that Curl_proxyCONNECT() again
- does as much as possible in one go, yet still do test 1021 with and
- without valgrind. It failed due to mistakes in the multi state machine.
+- rtmp: Use standard naming for setup connection function
- Bug: http://curl.haxx.se/bug/view.cgi?id=1397
- Reported-by: Paul Saab
-
-- [Marcel Raad brought this change]
+ Renamed rtmp_setup() to rtmp_setup_connection() to follow more widely
+ used function naming.
- url.c: use the preferred symbol name: *READDATA
-
- with CURL_NO_OLDIES defined, it doesn't compile because this deprecated
- symbol (*INFILE) is used
+- smb: Use standard naming for setup connection function
- Bug: http://curl.haxx.se/bug/view.cgi?id=1398
-
-Dan Fandrich (19 Jul 2014)
-- [Alessandro Ghedini brought this change]
+ Renamed smb_setup() to smb_setup_connection() to follow more widely
+ used function naming.
- CURLOPT_CHUNK_BGN_FUNCTION: fix typo
+- config-win32.h: Fixed line length > 79 columns
-Kamil Dudka (18 Jul 2014)
-- [Alessandro Ghedini brought this change]
+- openssl: Prefer we don't use NULL in comparisons
- build: link curl to NSS libraries when NSS support is enabled
-
- This fixes a build failure on Debian caused by commit
- 24c3cdce88f39731506c287cb276e8bf4a1ce393.
+- build: Removed WIN32 definition from the Visual Studio projects
- Bug: http://curl.haxx.se/mail/lib-2014-07/0209.html
+ As this pre-processor definition is defined in curl_setup.h there is no
+ need to include it in the Visual Studio project files.
-Steve Holme (17 Jul 2014)
-- build: Removed unnecessary XML Documentation file directive from VC8 to VC12
+- build: Removed WIN64 definition from the libcurl Visual Studio projects
- The curl tool project files for VC8 to VC12 would set this setting to
- $(IntDir) which is the Visual Studio default value. To avoid confusion
- when viewing settings from within Visual Studio and for consistency
- with the libcurl project files removed this setting.
+ Removed the WIN64 pre-processor definition from the libcurl project
+ files as:
- Conflicts:
- projects/Windows/VC10/src/curlsrc.tmpl
- projects/Windows/VC11/src/curlsrc.tmpl
- projects/Windows/VC12/src/curlsrc.tmpl
- projects/Windows/VC8/src/curlsrc.tmpl
- projects/Windows/VC9/src/curlsrc.tmpl
-
-- build: Removed unnecessary Precompiled Header file directive in VC7 to VC12
+ * WIN64 is not used in our source code
+ * The curl projects files don't define it
+ * It isn't required by or used in the platform SDK
+ * For backwards compatability curl_setup.h defines WIN32
+ * The compiler automatically defines _WIN64 for x64 builds
- The curl tool project files for VC7 to VC12 would set this settings to
- $(IntDir)$(TargetName).pch which is the Visual Studio default value. To
- avoid confusion when viewing settings from within Visual Studio and for
- consistency with the libcurl project files removed this setting.
+ Historically Visual Studio projects have defined WIN32, in addition to
+ the compiler defined _WIN32 definition, and I had incorrectly changed
+ that to WIN64 for the x64 libcurl builds but not in the curl projects.
- Conflicts:
- projects/Windows/VC10/src/curlsrc.tmpl
- projects/Windows/VC11/src/curlsrc.tmpl
- projects/Windows/VC12/src/curlsrc.tmpl
- projects/Windows/VC8/src/curlsrc.tmpl
- projects/Windows/VC9/src/curlsrc.tmpl
-
-- build: Removed unnecessary ASM and Object file directives in VC7 to VC12
+ As such, it is questionable whether this should be defined or not. For
+ more information see the following cache of a discussion that took
+ place on the microsoft.public.vc.mfc newsgroup:
- The curl tool project files for VC7 to VC12 would set these settings to
- $(IntDir) which is the Visual Studio default value. To avoid confusion
- when viewing settings from within Visual Studio and for consistency
- with the libcurl project files removed these two settings.
-
-Daniel Stenberg (17 Jul 2014)
-- [Dave Reisner brought this change]
+ http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2008-06/msg00074.html
- src/Makefile.am: add .DELETE_ON_ERROR
-
- This prevents targets like tool_hugehelp.c from leaving around
- half-constructed files if the rule fails with GNU make.
+- openssl.c Fix for compilation errors with older versions of OpenSSL
- Reported-by: Rafaël Carré <funman@videolan.org>
-
-- THANKS: added new contributors from 7.37.1 announcement
+ openssl.c:1408: error: 'TLS1_1_VERSION' undeclared
+ openssl.c:1411: error: 'TLS1_2_VERSION' undeclared
-Dan Fandrich (17 Jul 2014)
-- testcurl.pl: log the value of --runtestopts in the test header
+Daniel Stenberg (22 Dec 2014)
+- [John Malmberg brought this change]
-Daniel Stenberg (16 Jul 2014)
-- RELEASE-NOTES: cleared, working towards next release
+ Fix comment edit in vms/backup_gnv_curl_src.com
+
+ packages/vms/backup_gnv_curl_src.com: Originally copied from Bash port.
-- curl_gssapi.c: make line shorter than 80 columns
+- curl: show size of inhibited data when using -v
+
+ To offer some more info and yet it doesn't use more lines.
-- [David Woodhouse brought this change]
+- openssl: fix SSL/TLS versions in verbose output
- Fix negotiate auth to proxies to track correct state
+- openssl: make it compile against openssl 1.1.0-DEV master branch
-- [David Woodhouse brought this change]
+Marc Hoersken (22 Dec 2014)
+- sshserver.pl: clarify and streamline variable names
- Don't abort Negotiate auth when the server has a response for us
-
- It's wrong to assume that we can send a single SPNEGO packet which will
- complete the authentication. It's a *negotiation* — the clue is in the
- name. So make sure we handle responses from the server.
+Daniel Stenberg (21 Dec 2014)
+- openssl: warn for SRP set if SSLv3 is used, not for TLS version
- Curl_input_negotiate() will already handle bailing out if it thinks the
- state is GSS_S_COMPLETE (or SEC_E_OK on Windows) and the server keeps
- talking to us, so we should avoid endless loops that way.
-
-- [David Woodhouse brought this change]
+ ... as it requires TLS and it was was left to warn on the default from
+ when default was SSL...
- Don't clear GSSAPI state between each exchange in the negotiation
+- smb: use memcpy() instead of strncpy()
- GSSAPI doesn't work very well if we forget everything ever time.
+ ... as it never copies the trailing zero anyway and always just the four
+ bytes so let's not mislead anyone into thinking it is actually treated
+ as a string.
- XX: Is Curl_http_done() the right place to do the final cleanup?
+ Coverity CID: 1260214
-- [David Woodhouse brought this change]
+- [John E. Malmberg brought this change]
- Use SPNEGO for HTTP Negotiate
+ VMS: Updates for 0740-0D1220
- This is the correct way to do SPNEGO. Just ask for it
+ lib/setup-vms.h : VAX HP OpenSSL port is ancient, needs help.
+ More defines to set symbols to uppercase.
- Now I correctly see it trying NTLMSSP authentication when a Kerberos ticket
- isn't available. Of course, we bail out when the server responds with the
- challenge packet, since we don't expect that. But I'll fix that bug next...
-
-- [David Woodhouse brought this change]
-
- Remove all traces of FBOpenSSL SPNEGO support
+ src/tool_main.c : Fix parameter to vms_special_exit() call.
- This is just fundamentally broken. SPNEGO (RFC4178) is a protocol which
- allows client and server to negotiate the underlying mechanism which will
- actually be used to authenticate. This is *often* Kerberos, and can also
- be NTLM and other things. And to complicate matters, there are various
- different OIDs which can be used to specify the Kerberos mechanism too.
+ packages/vms/ :
+ backup_gnv_curl_src.com : Fix the error message to have the correct package.
- A SPNEGO exchange will identify *which* GSSAPI mechanism is being used,
- and will exchange GSSAPI tokens which are appropriate for that mechanism.
+ build_curl-config_script.com : Rewrite to be more accurate.
- But this SPNEGO implementation just strips the incoming SPNEGO packet
- and extracts the token, if any. And completely discards the information
- about *which* mechanism is being used. Then we *assume* it was Kerberos,
- and feed the token into gss_init_sec_context() with the default
- mechanism (GSS_S_NO_OID for the mech_type argument).
+ build_libcurl_pc.com : Use tool_version.h now.
- Furthermore... broken as this code is, it was never even *used* for input
- tokens anyway, because higher layers of curl would just bail out if the
- server actually said anything *back* to us in the negotiation. We assume
- that we send a single token to the server, and it accepts it. If the server
- wants to continue the exchange (as is required for NTLM and for SPNEGO
- to do anything useful), then curl was broken anyway.
+ build_vms.com : Fix to handle lib/vtls directory.
- So the only bit which actually did anything was the bit in
- Curl_output_negotiate(), which always generates an *initial* SPNEGO
- token saying "Hey, I support only the Kerberos mechanism and this is its
- token".
+ curl_gnv_build_steps.txt : Updated build procedure documentation.
- You could have done that by manually just prefixing the Kerberos token
- with the appropriate bytes, if you weren't going to do any proper SPNEGO
- handling. There's no need for the FBOpenSSL library at all.
+ generate_config_vms_h_curl.com :
+ * VAX does not support 64 bit ints, so no NTLM support for now.
+ * VAX HP SSL port is ancient, needs some help.
+ * Disable NGHTTP2 for now, not ported to VMS.
+ * Disable UNIX_SOCKETS, not available on VMS yet.
+ * HP GSSAPI port does not have gss_nt_service_name.
- The sane way to do SPNEGO is just to *ask* the GSSAPI library to do
- SPNEGO. That's what the 'mech_type' argument to gss_init_sec_context()
- is for. And then it should all Just Workâ„¢.
+ gnv_link_curl.com : Update for new curl structure.
- That 'sane way' will be added in a subsequent patch, as will bug fixes
- for our failure to handle any exchange other than a single outbound
- token to the server which results in immediate success.
-
-- [David Woodhouse brought this change]
-
- ntlm_wb: Avoid invoking ntlm_auth helper with empty username
-
-- [David Woodhouse brought this change]
+ pcsi_product_gnv_curl.com : Set up to optionally do a complete build.
- ntlm_wb: Fix hard-coded limit on NTLM auth packet size
+Marc Hoersken (21 Dec 2014)
+- sockfilt.c: use non-Ex functions that are available before WinXP
- Bumping it to 1KiB in commit aaaf9e50ec is all very well, but having hit
- a hard limit once let's just make it cope by reallocating as necessary.
-
-Version 7.37.1 (16 Jul 2014)
-
-Daniel Stenberg (16 Jul 2014)
-- RELEASE-NOTES: synced with 4cb2521595
+ It was initially reported by Guenter that GetFileSizeEx
+ requires (_WIN32_WINNT >= 0x0500) to be true.
-- test506: verify aa6884845168
+- tests: use Cygwin-style paths in SSH, SSHD and SFTP config files
- After the fixed cookie lock deadlock, this test now passes and it
- detects double-locking and double-unlocking of mutexes.
-
-- [Yousuke Kimoto brought this change]
-
- cookie: avoid mutex deadlock
+ Second patch to enable Windows support using Cygwin-based OpenSSH.
- ... by removing the extra mutex locks around th call to
- Curl_flush_cookies() which takes care of the locking itself already.
+ Tested with CopSSH 5.0.0 free edition using an msys shell on Windows 7.
+
+- tests: support spaces in paths to SSH, SSHD and SFTP binaries
- Bug: http://curl.haxx.se/mail/lib-2014-02/0184.html
+ First patch to enable Windows support using Cygwin-based OpenSSH.
-- gnutls: fix compiler warning
+Steve Holme (20 Dec 2014)
+- non-ascii: Reduce variable usage
- conversion to 'int' from 'long int' may alter its value
+ Removed 'next' variable in Curl_convert_form(). Rather than setting it
+ from 'form->next' and using that to set 'form' after the conversion
+ just use 'form = form->next' instead.
-Dan Fandrich (15 Jul 2014)
-- test320: strip off the actual negotiated cipher width
+- non-ascii: Prefer while loop rather than a do loop
- It's irrelevant to the test, and will change depending on which SSL
- library is being used by libcurl.
+ This also removes the need to check that the 'form' argument is valid.
-- gnutls: detect lack of SRP support in GnuTLS at run-time and try without
+- non-ascii: Reduce variable scope
- Reported-by: David Woodhouse
+ As 'result' isn't used out side the conversion callback code and
+ previously caused variable shadowing in the libiconv based code.
-Daniel Stenberg (14 Jul 2014)
-- [Michał Górny brought this change]
+- non-ascii: We prefer 'CURLcode result'
+
+ This also fixes a variable shadowing issue when HAVE_ICONV is defined
+ as rc was declared for the result code of libiconv based functions.
- configure: respect host tool prefix for krb5-config
+Marc Hoersken (19 Dec 2014)
+- secureserver.pl: clean up formatting of config and fix verbose output
- Use ${host_alias}-krb5-config if available. This improves cross-
- compilation support and fixes multilib on Gentoo (at least).
+ Verbose output was not matching the actual configuration file,
+ because FIPS and Windows conditions were ignored.
-- [David Woodhouse brought this change]
+- secureserver.pl: update Windows detection and fix path conversion
- gnutls: handle IP address in cert name check
+- secureserver.pl: make OpenSSL CApath and cert absolute path values
- Before GnuTLS 3.3.6, the gnutls_x509_crt_check_hostname() function
- didn't actually check IP addresses in SubjectAltName, even though it was
- explicitly documented as doing so. So do it ourselves...
+ Recent stunnel versions (5.08) seem to have trouble with relative
+ paths on Windows. This turns the relative paths into absolute ones.
-Dan Fandrich (14 Jul 2014)
-- build: set _POSIX_PTHREAD_SEMANTICS on Solaris to get proper getpwuid_r
+Patrick Monnerat (18 Dec 2014)
+- if2ip: dummy scope parameter for Curl_if2ip() call in SIOCGIFADDR-enabled code.
-Daniel Stenberg (14 Jul 2014)
-- RELEASE-NOTES: next one is called 7.37.1
+- [Kyle J. McKay brought this change]
-Dan Fandrich (13 Jul 2014)
-- gnutls: improved error message if setting cipher list fails
-
- Reported-by: David Woodhouse
+ parseurlandfillconn(): fix improper non-numeric scope_id stripping.
+ Fixes SF bug 1149: http://sourceforge.net/p/curl/bugs/1449/
-- netrc: fixed thread safety problem by using getpwuid_r if available
-
- The old way using getpwuid could cause problems in programs that enable
- reading from netrc files simultaneously in multiple threads.
+- IPV6: address scope != scope id
+ There was a confusion between these: this commit tries to disambiguate them.
+ - Scope can be computed from the address itself.
+ - Scope id is scope dependent: it is currently defined as 1-based local
+ interface index for link-local scoped addresses, and as a site index(?) for
+ (obsolete) site-local addresses. Linux only supports it for link-local
+ addresses.
+ The URL parser properly parses a scope id as an interface index, but stores it
+ in a field named "scope": confusion. The field has been renamed into "scope_id".
+ Curl_if2ip() used the scope id as it was a scope. This caused failures
+ to bind to an interface.
+ Scope is now computed from the addresses and Curl_if2ip() matches them.
+ If redundantly specified in the URL, scope id is check for mismatch with
+ the interface index.
- Reported-by: David Woodhouse
+ This commit should fix SF bug #1451.
-- RELEASE-NOTES: add the reporter of the previous bug fix
+- connect: singleipconnect(): properly try other address families after failure
-- netrc: treat failure to find home dir same as missing netrc file
+Daniel Stenberg (16 Dec 2014)
+- SFTP: work-around servers that return zero size on STAT
- This previously caused a fatal error (with a confusing error code, at
- that).
+ Bug: http://curl.haxx.se/mail/lib-2014-12/0103.html
+ Pathed-by: Marc Renault
+
+- glob_next_url: make the loop count upwards
- Reported by: Glen A Johnson Jr.
+ As the former contruct apparently caused a compiler warning, mentioned
+ in d8efde07e556c.
-Steve Holme (12 Jul 2014)
-- RELEASE-NOTES: Synced with aaaf9e50ec
+- tool_operate: we prefer 'CURLcode result'
-- ntlm_wb: Fixed buffer size not being large enough for NTLMv2 sessions
+- tool_urlglob: unify return codes to use CURLcode
- Bug: http://curl.haxx.se/mail/lib-2014-07/0103.html
- Reported-by: David Woodhouse
+ There was a mix of GlobCode, CURLcode and ints and they were mostly
+ passing around CURLcode errors. This change makes the functions use only
+ CURLcode and removes the GlobCode type completely.
-- build: Fixed overridden compiler PDB settings in VC7 to VC12
-
- The curl tool project files for VC7 to VC12 would override the default
- setting with the output filename being the same as the linker PDB file.
- As such the compiler file would be overwritten with the linker file
- for all debug builds.
+- tool_urlglob.c: partly reverse dc19789444
- To avoid this overwrite and for consistency with the libcurl project
- files, removed the setting to force the default filename to be used.
-
-Dan Fandrich (12 Jul 2014)
-- tests: added globbing keyword to URL globbing tests
+ The loop in glob_next_url() needs to be done backwards to maintain the
+ logic. dc19789444 caused test 1235 to fail.
-- Fixed some "statement not reached" warnings
+- KNOWN_BUGS: the SFTP code doesn't support CURLINFO_FILETIME
-- gnutls: fixed a couple of uninitialized variable references
+- [Jay Satiro brought this change]
-- gnutls: fixed compilation against versions < 2.12.0
+ opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
+
+ Change CURLOPT_TIMEOUT doc to warn that if CURLOPT_TIMEOUT and
+ CURLOPT_TIMEOUT_MS are both set whichever one is set last is the one
+ that will be used.
- The AES-GCM ciphers were added to GnuTLS as late as ver. 3.0.1 but
- the code path in which they're referenced here is only ever used for
- somewhat older GnuTLS versions. This caused undeclared identifier errors
- when compiling against those.
+ Prior to this change that behavior was only noted in the
+ CURLOPT_TIMEOUT_MS doc.
-- gnutls: explicitly added SRP to the priority string
+Nick Zitzmann (15 Dec 2014)
+- darwinssl: fix incorrect usage of aprintf()
- This seems to have become necessary for SRP support to work starting
- with GnuTLS ver. 2.99.0. Since support for SRP was added to GnuTLS
- before the function that takes this priority string, there should be no
- issue with backward compatibility.
+ Commit b13923f changed an snprintf() to use aprintf(), but the API usage
+ wasn't correct, and was causing a crash to occur. This fixes it.
-- tests: adjust for capitalization differences in newer gnutls-serv
+Steve Holme (14 Dec 2014)
+- copyright: Updated the copyright year following recent updates
-- test320/1/2/4: fix the port number substitution variables
+Daniel Stenberg (14 Dec 2014)
+- tool_urlglob.c: reverse two loops
- These tests have been broken since commit 1958fe57 in Oct. 2011
+ By counting from 0 and up instead of backwards like before, we remove
+ the need for the "funny" check of the unsigned variable when decreased
+ passed zero. Easier to read and less risk for compiler warnings.
-- tests: document more test identifiers and variables
+Marc Hoersken (14 Dec 2014)
+- tool_urlglob.c: Added braces to clarify the conditions
-- gnutls: ignore invalid certificate dates with VERIFYPEER disabled
+- tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
- This makes the behaviour consistent with what happens if a date can
- be extracted from the certificate but is expired.
-
-Steve Holme (10 Jul 2014)
-- CURLOPT_UPLOAD: Corrected argument type
+ The >= 0 is actually not required, since i underflows and
+ the for-loop is stopped using the < condition, but this
+ makes the VS2012 compiler and code analysis happy.
-Daniel Stenberg (9 Jul 2014)
-- FAQ: expand the thread-safe section
+- tool_binmode.c: Explicitly ignore the return code of setmode
- ... with a mention of *NOSIGNAL, based on talk in bug #1386
+ Fixes code analysis warning C6031:
+ return value ignored: <function> could return unexpected value
-Dan Fandrich (9 Jul 2014)
-- url.c: Fixed memory leak on OOM
+- lib: Fixed multiple code analysis warnings if SAL are available
- This showed itself on some systems with torture failures
- in tests 1060 and 1061
+ warning C28252: Inconsistent annotation for function:
+ parameter has another annotation on this instance
-- Update instances of some obsolete CURLOPTs to their new names
+Steve Holme (14 Dec 2014)
+- smb.c: Fixed code analysis warning
+
+ smb.c:320: warning C6297: Arithmetic overflow: 32-bit value is shifted,
+ then cast to 64-bit value. Result may not be an expected
+ value
-Daniel Stenberg (5 Jul 2014)
-- [Marcel Raad brought this change]
+Marc Hoersken (14 Dec 2014)
+- tool_util.c: Use GetTickCount64 if it is available
- compiler warnings: potentially uninitialized variables
+Steve Holme (14 Dec 2014)
+- smb: Use HAVE_PROCESS_H for process.h inclusion
- ... pointed out by MSVC2013
+ Rather than testing against _WIN32 use the preferred HAVE_PROCESS_H
+ pre-processor define when including process.h.
+
+Daniel Stenberg (14 Dec 2014)
+- darwinssl: aprintf() to allocate the session key
- Bug: http://curl.haxx.se/bug/view.cgi?id=1391
+ ... to avoid using a fixed memory size that risks being too large or too
+ small.
-Kamil Dudka (4 Jul 2014)
-- nss: make the list of CRL items global
+Marc Hoersken (14 Dec 2014)
+- curl_schannel: Improvements to memory re-allocation strategy
- Otherwise NSS could use an already freed item for another connection.
+ - do not grow memory by doubling its size
+ - do not leak previously allocated memory if reallocation fails
+ - replace while-loop with a single check to make sure
+ that the requested amount of data fits into the buffer
+
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1450
+ Reported-by: Warren Menzer
-- nss: fix a memory leak when CURLOPT_CRLFILE is used
+Steve Holme (14 Dec 2014)
+- asyn-ares: We prefer use of 'CURLcode result'
-- nss: make crl_der allocated on heap
-
- ... and spell it as crl_der instead of crlDER
+Marc Hoersken (14 Dec 2014)
+- curl_schannel.c: Data may be available before connection shutdown
-- nss: let nss_{cache,load}_crl return CURLcode
+Steve Holme (14 Dec 2014)
+- http2: Use 'CURLcode result' for curl result codes
+
+- asyn-thread: We prefer 'CURLcode result'
-- tool: oops, forgot to include <plarenas.h>
+- smb: Fixed unnecessary initialisation of struct member variables
- ... that contains the declaration of PL_ArenaFinish()
+ There is no need to set the 'state' and 'result' member variables to
+ SMB_REQUESTING (0) and CURLE_OK (0) after the allocation via calloc()
+ as calloc() initialises the contents to zero.
-- tool: call PL_ArenaFinish() on exit if NSPR is used
+- ntlm: Fixed return code for bad type-2 Target Info
- This prevents valgrind from reporting still reachable memory allocated
- by NSPR arenas (mainly the freelist).
+ Use CURLE_BAD_CONTENT_ENCODING for bad type-2 Target Info security
+ buffers just like we do for bad decodes.
+
+- ntlm: Remove unnecessary casts in readshort_le()
- Reported-by: Hubert Kario
+ I don't think both of my fix ups from yesterday were needed to fix the
+ compilation warning, so remove the one that I think is unnecessary and
+ let the next Android autobuild prove/disprove it.
-Daniel Stenberg (3 Jul 2014)
-- [Dimitrios Siganos brought this change]
+- curl_ntlm_msgs.c: Another attempt to fix compilation warning
+
+ curl_ntlm_msgs.c:170: warning: conversion to 'short unsigned int' from
+ 'int' may alter its value
- example: use correct type (long) for CURLOPT_FOLLOWLOCATION
+Guenter Knauf (13 Dec 2014)
+- synctime.c: added own user-agent string.
-- [Dimitrios Siganos brought this change]
+Steve Holme (13 Dec 2014)
+- smb.c: Fixed line longer than 79 columns
- Document type of argument for CURLOPT_FOLLOWLOCATION.
+- curl_ntlm_msgs.c: Fixed compilation warning from commit 783b5c3b11
+
+ curl_ntlm_msgs.c:169: warning: conversion to 'short unsigned int' from
+ 'int' may alter its value
-- [Dimitrios Siganos brought this change]
+Guenter Knauf (13 Dec 2014)
+- mk-ca-bundle.pl: restored forced run again.
- Document type of argument for CURLOPT_ERRORBUFFER.
+- synctime.c: removed another timeserver URL.
+
+ worldtimeserver.com seems also no longer available.
-- [Dimitrios Siganos brought this change]
+- synctime.c: fixed timeserver URLs.
+
+ For getting the date header its not necessary to access special
+ pages or even CGI scripts - all pages including the main index
+ reply with the date header, therefore shortened URLs to domain.
+ Removed worldtime.com; added pool.ntp.org.
+
+Steve Holme (13 Dec 2014)
+- ftp.c: Fixed compilation warning when no verbose string support
+
+ ftp.c:819: warning: unused parameter 'lineno'
- Document type of argument for CURLOPT_COPYPOSTFIELDS.
+- smb: Added state change functions to assist with debugging
+
+ For debugging purposes, and as per other protocols within curl, added
+ state change functions rather than changing the states directly.
-- [Dimitrios Siganos brought this change]
+- ntlm: Use short integer when decoding 16-bit values
- Document type of argument for CURLOPT_ADDRESS_SCOPE.
+- RELEASE-NOTES: Synced with 6291a16b20
-- curl.1: minor language fix
+- smtp.c: Fixed compilation warnings
- Bug: http://curl.haxx.se/mail/archive-2014-07/0006.html
-
-- [Ray Satiro brought this change]
+ smtp.c:2357 warning: adding 'size_t' (aka 'unsigned long') to a string
+ does not append to the string
+ smtp.c:2375 warning: adding 'size_t' (aka 'unsigned long') to a string
+ does not append to the string
+ smtp.c:2386 warning: adding 'size_t' (aka 'unsigned long') to a string
+ does not append to the string
+
+ Used array index notation instead.
- progress callback: skip last callback update on errors
+- smb: Disable SMB when 64-bit integers are not supported
- When an error has been detected, skip the final forced call to the
- progress callback by making sure to pass the current return code
- variable in the Curl_done() call in the CURLM_STATE_DONE state.
+ This fixes compilation issues with compilers that don't support 64-bit
+ integers through long long or __int64.
+
+- ntlm: Disable NTLM v2 when 64-bit integers are not supported
- This avoids the "extra" callback that could occur even if you returned
- error from the progress callback.
+ This fixes compilation issues with compilers that don't support 64-bit
+ integers through long long or __int64 which was introduced in commit
+ 07b66cbfa4.
+
+- ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
- Bug: http://curl.haxx.se/mail/lib-2014-06/0062.html
- Reported by: Jonathan Cardoso Machado
+ Previously USE_NTLM2SESSION would only be defined automatically when
+ USE_NTRESPONSES wasn't already defined. Separated the two definitions
+ so that the user can manually set USE_NTRESPONSES themselves but
+ USE_NTLM2SESSION is defined automatically if they don't define it.
-Dan Fandrich (2 Jul 2014)
-- opts: fixed some CURLOPT references so they get turned into links
+- smtp.c: Fixed line longer than 79 columns
-Kamil Dudka (2 Jul 2014)
-- tool: call PR_Cleanup() on exit if NSPR is used
+- config-win32.h: Don't enable Windows Crypt API if using OpenSSL
- This prevents valgrind from reporting possibly lost memory that NSPR
- uses for file descriptor cache and other globally allocated internal
- data structures.
+ As the OpenSSL and NSS Crypto engines are prefered by the core NTLM
+ routines, to the Windows Crypt API, don't define USE_WIN32_CRYPT
+ automatically when either OpenSSL or NSS are in use - doing so would
+ disable NTLM2Session responses in NTLM type-3 messages.
-- nss: make the fallback to SSLv3 work again
+- smtp: Fixed inappropriate free of the scratch buffer
- This feature was unintentionally disabled by commit ff92fcfb.
+ If the scratch buffer was allocated in a previous call to
+ Curl_smtp_escape_eob(), a new buffer not allocated in the subsequent
+ call and no action taken by that call, then an attempt would be made to
+ try and free the buffer which, by now, would be part of the data->state
+ structure.
+
+ This bug was introduced in commit 4bd860a001.
-- nss: do not abort on connection failure
+- smtp: Fixed dot stuffing when EOL characters were at end of input buffers
- ... due to calling SSL_VersionRangeGet() with NULL file descriptor
+ Fixed a problem with the CRLF. detection when multiple buffers were
+ used to upload an email to libcurl and the line ending character(s)
+ appeared at the end of each buffer. This meant any lines which started
+ with . would not be escaped into .. and could be interpreted as the end
+ of transmission string instead.
- reported-by: upstream tests 305 and 404
+ This only affected libcurl based applications that used a read function
+ and wasn't reproducible with the curl command-line tool.
+
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1456
+ Assisted-by: Patrick Monnerat
-Dan Fandrich (1 Jul 2014)
-- opts: Document the socket callback function parameters
+Daniel Stenberg (11 Dec 2014)
+- telnet: fix "cast increases required alignment of target type"
+
+- ntlm_wb_response: fix "statement not reached"
+
+ ... and I could use a break instead of a goto to end the loop.
+
+ Bug: http://curl.haxx.se/mail/lib-2014-12/0089.html
+ Reported-by: Tor Arntsen
-Steve Holme (28 Jun 2014)
-- opts: Fixed some typos
+Steve Holme (10 Dec 2014)
+- RELEASE-NOTES: Synced with 1cc5194337
+
+ Added some bug fixes that I had missed in previous synchronisations.
-Dan Fandrich (25 Jun 2014)
-- curl_easy_setopt.3: fixed the error code for an unsupported option
+Daniel Stenberg (10 Dec 2014)
+- Curl_unix2addr: avoid using the variable name 'sun'
+
+ I suspect this causes compile failures on Solaris:
+
+ Bug: http://curl.haxx.se/mail/lib-2014-12/0081.html
-- opts: added some DEFAULT and RETURN VALUE sections
+Steve Holme (10 Dec 2014)
+- url.c: Fixed compilation warning when USE_NTLM is not defined
+
+ url.c:3078: warning: variable 'credentialsMatch' set but not used
-Daniel Stenberg (21 Jun 2014)
-- libcurl docs: man page edits
+- parsedate.c: Fixed compilation warning
+
+ parsedate.c:548: warning: 'parsed' may be used uninitialized in this
+ function
- mainly to improve how the web versions render
+ As curl_getdate() returns -1 when parsedate() fails we can initialise
+ parsed to -1.
-Dan Fandrich (21 Jun 2014)
-- curl_easy_setopt.3: fixed some typos
+Daniel Stenberg (10 Dec 2014)
+- TODO: Cache negative name resolves
+
+ Worth exploring
-Daniel Stenberg (21 Jun 2014)
-- lib man pages: update easy setopt option references
+- ldap: check Curl_client_write() return codes
- ... by using the "\fIopt(3)\fP" syntax they will be linked properly when
- the web version of the page is generated.
+ There might be one or two memory leaks left in the error paths.
-- opts: the CURLOPT_SSL_ENABLE_*PN options are enabled by default
+- ldap: rename variables to comply to curl standards
-- [Colin Hogben brought this change]
+Dan Fandrich (10 Dec 2014)
+- sws.c: Fixed 'rc' may be used uninitialized warning
- lib: documentation updates in README.hostip
+- cookies: Improved OOM handling in cookies
- c-ares now does support IPv6;
- avoid implying threaded resolver is Windows-only;
- two referenced source files were renamed in 7de2f92
+ This fixes the test 506 torture test. The internal cookie API really
+ ought to be improved to separate cookie parsing errors (which may be
+ ignored) with OOM errors (which should be fatal).
-- curl_easy_setopt.3: CURLOPT_POSTFIELDS is the exception
-
- ... to the always-copy-char *-argument.
+Guenter Knauf (9 Dec 2014)
+- synctime.c: fixed user-agent setting.
- And fix some minor mistakes.
+ Some websites meanwhile refuse to reply to requests from ancient
+ browsers like IE6, therefore I've comment out this setting, but
+ also fixed the string to now fake IE8 if someone enables it.
-- curl_easy_setopt.3: refer to the individual man pages
-
- With all the new individual option man pages created, this now refers to
- each separate one instead of duplicaing the info. Also makes this page
- easier to overview.
+Daniel Stenberg (9 Dec 2014)
+- smb: fix unused return code warning
-Dan Fandrich (21 Jun 2014)
-- opts: fixed mancheck for out-of-tree builds
+Patrick Monnerat (9 Dec 2014)
+- Curl_client_write() & al.: chop long data, convert data only once.
+
+Guenter Knauf (9 Dec 2014)
+- VC build: added sspi define for winssl-zlib builds.
-Daniel Stenberg (21 Jun 2014)
-- curl_easy_setopt.3: shorten
+Daniel Stenberg (9 Dec 2014)
+- schannel_recv: return the correct code
- shorten descriptions, mostly refer to the separate descriptions
+ Bug: http://curl.haxx.se/bug/view.cgi?id=1462
+ Reported-by: Tae Hyoung Ahn
-- CURLOPT_DNS_LOCAL_IP4.3: better short desc
+- http2: avoid logging neg "failure" if h2 was not requested
-Dan Fandrich (20 Jun 2014)
-- opts: document CURLE_OUT_OF_MEMORY among other return values
+- openldap: do not ignore Curl_client_write() return codes
-- opts: fixed some typos
+- compile: warn on unused return code from Curl_client_write()
-Daniel Stenberg (20 Jun 2014)
-- opts: various corrections
+Patrick Monnerat (8 Dec 2014)
+- SMB: Fix a data size mismatch that broke SMB on big-endian platforms
-- opts: add the rest of the options
+Steve Holme (7 Dec 2014)
+- smb: Fixed Windows autoconf builds following commit eb88d778e7
- ... and fixed mancheck to ignore obsolete options
+ As Windows based autoconf builds don't yet define USE_WIN32_CRYPTO
+ either explicitly through --enable-win32-cypto or automatically on
+ _WIN32 based platforms, subsequent builds broke with the following
+ error message:
+
+ "Can't compile NTLM support without a crypto library."
+
+- RELEASE-NOTES: Synced with 526603ff05
+
+- [Bill Nagel brought this change]
-- opts: the final bunch of options as man pages
+ smb: Build with SSPI enabled
- Now all current options have their own man pages.
+ Build SMB/CIFS protocol support when SSPI is enabled.
-- opts: 37 additional man pages
+- [Bill Nagel brought this change]
-- CURLOPT_URL: move up the text from "Notes"
+ ntlm: Use Windows Crypt API
+
+ Allow the use of the Windows Crypt API for NTLMv1 functions.
-- ROADMAP: removed, now ROADMAP.md
+Dan Fandrich (7 Dec 2014)
+- cookie.c: Refactored cleanup code to simplify
+
+ Also, fixed the outdated comments on the cookie API.
+
+- get_url_file_name: Fixed crash on OOM on debug build
+
+ This caused a null-pointer dereference which caused a few dozen
+ torture tests to fail.
-- ROADMAP.md: make it markdown formatted
+Steve Holme (6 Dec 2014)
+- sws.c: Fixed compilation warning
+
+ sws.c:2191 warning: 'rc' may be used uninitialized in this function
-- ROADMAP: initial commit of "curl the next few years"
+- ftp.c: Fixed compilation warnings when proxy support disabled
- To be further discussed, debated and edited
+ ftp.c:1827 warning: unused parameter 'newhost'
+ ftp.c:1827 warning: unused parameter 'newport'
-- opts: more man pages
+- smb: Fixed a problem with large file transfers
+
+ Fixed an issue with the message size calculation where the raw bytes
+ from the buffer were interpreted as signed values rather than unsigned
+ values.
+
+ Reported-by: Gisle Vanem
+ Assisted-by: Bill Nagel
-- CURLOPT_UNRESTRICTED_AUTH.3: added missing 'T'
+- smb: Moved the URL decoding into a separate function
-- opts: makefile now includes all current man pages
+- smb: Fixed URL encoded URLs not working
-- opts: 11 more man pages
+- Makefile.inc: Added our standard header and updated file formatting
-Dan Fandrich (18 Jun 2014)
-- opts: document CURLE_OUT_OF_MEMORY as RETURN VALUE
+- Makefile.inc: Updated file formatting
+
+ Aligned continuation character and used space as the separator
+ character as per other makefile files.
-- opts: fixed a couple of typos
+- curl_md4.h: Updated copyright year following recent edit
+
+ ...and minor layout adjustment.
-Patrick Monnerat (18 Jun 2014)
-- OS400: make it compilable again. Make RPG binding up to date.
+Patrick Monnerat (5 Dec 2014)
+- SMB: Fix big endian problems. Make it OS/400 aware.
-- buildconf: do not search tools in current directory.
+- OS400: enable NTLM authentication
-Dan Fandrich (18 Jun 2014)
-- curl.h: renamed CURLOPT_DEPRECATEDx to CURLOPT_OBSOLETEx
+Steve Holme (5 Dec 2014)
+- multi.c: Fixed compilation warning
- This is consistent with the existing obsolete error code naming
- convention.
+ multi.c:2695: warning: declaration of `exp' shadows a global declaration
+
+Guenter Knauf (5 Dec 2014)
+- build: updated dependencies in makefiles.
-Daniel Stenberg (18 Jun 2014)
-- opts: 16 more man pages
+Steve Holme (5 Dec 2014)
+- sasl: Corrected formatting of function descriptions
diff --git a/CMake/FindGSS.cmake b/CMake/FindGSS.cmake
index 4986a8e09..dfaeaf307 100644
--- a/CMake/FindGSS.cmake
+++ b/CMake/FindGSS.cmake
@@ -155,7 +155,7 @@ message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
set(GSS_FLAVOUR "MIT")
else()
# prevent compiling the header - just check if we can include it
- set(CMAKE_REQUIRED_DEFINITIONS "-D__ROKEN_H__")
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc75d59de..9a42cc75c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -76,6 +76,24 @@ option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
option(ENABLE_THREADED_RESOLVER "Set to ON to enable POSIX threaded DNS lookup" OFF)
+
+option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF)
+option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF)
+
+if (ENABLE_DEBUG)
+ # DEBUGBUILD will be defined only for Debug builds
+ if(NOT CMAKE_VERSION VERSION_LESS 3.0)
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUGBUILD>)
+ else()
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUGBUILD)
+ endif()
+ set(ENABLE_CURLDEBUG ON)
+endif()
+
+if (ENABLE_CURLDEBUG)
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG)
+endif()
+
# initialize CURL_LIBS
set(CURL_LIBS "")
@@ -238,6 +256,7 @@ include (CheckCSourceCompiles)
# On windows preload settings
if(WIN32)
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WINSOCKAPI_")
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
endif(WIN32)
@@ -279,7 +298,6 @@ endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
mark_as_advanced(CMAKE_USE_OPENSSL)
-set(USE_SSLEAY OFF)
set(USE_OPENSSL OFF)
set(HAVE_LIBCRYPTO OFF)
set(HAVE_LIBSSL OFF)
@@ -288,32 +306,31 @@ if(CMAKE_USE_OPENSSL)
find_package(OpenSSL)
if(OPENSSL_FOUND)
list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
- set(USE_SSLEAY ON)
set(USE_OPENSSL ON)
set(HAVE_LIBCRYPTO ON)
set(HAVE_LIBSSL ON)
include_directories(${OPENSSL_INCLUDE_DIR})
set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
- check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
- check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
- check_include_file_concat("openssl/err.h" HAVE_OPENSSL_ERR_H)
- check_include_file_concat("openssl/pem.h" HAVE_OPENSSL_PEM_H)
- check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
- check_include_file_concat("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
- check_include_file_concat("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
- check_include_file_concat("openssl/x509.h" HAVE_OPENSSL_X509_H)
- check_include_file_concat("openssl/rand.h" HAVE_OPENSSL_RAND_H)
+ check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
+ check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
+ check_include_file("openssl/err.h" HAVE_OPENSSL_ERR_H)
+ check_include_file("openssl/pem.h" HAVE_OPENSSL_PEM_H)
+ check_include_file("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
+ check_include_file("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
+ check_include_file("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
+ check_include_file("openssl/x509.h" HAVE_OPENSSL_X509_H)
+ check_include_file("openssl/rand.h" HAVE_OPENSSL_RAND_H)
endif()
endif()
if(NOT CURL_DISABLE_LDAP)
if(WIN32)
- option(CURL_LDAP_WIN "Use Windows LDAP implementation" ON)
- if(CURL_LDAP_WIN)
+ option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON)
+ if(USE_WIN32_LDAP)
check_library_exists("wldap32" cldap_open "" HAVE_WLDAP32)
if(NOT HAVE_WLDAP32)
- set(CURL_LDAP_WIN OFF)
+ set(USE_WIN32_LDAP OFF)
endif()
endif()
endif()
@@ -323,12 +340,12 @@ if(NOT CURL_DISABLE_LDAP)
set(CMAKE_LDAP_LIB "ldap" CACHE STRING "Name or full path to ldap library")
set(CMAKE_LBER_LIB "lber" CACHE STRING "Name or full path to lber library")
- if(CMAKE_USE_OPENLDAP AND CURL_LDAP_WIN)
- message(FATAL_ERROR "Cannot use CURL_LDAP_WIN and CMAKE_USE_OPENLDAP at the same time")
+ if(CMAKE_USE_OPENLDAP AND USE_WIN32_LDAP)
+ message(FATAL_ERROR "Cannot use USE_WIN32_LDAP and CMAKE_USE_OPENLDAP at the same time")
endif()
# Now that we know, we're not using windows LDAP...
- if(NOT CURL_LDAP_WIN)
+ if(NOT USE_WIN32_LDAP)
# Check for LDAP
set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP)
@@ -384,7 +401,7 @@ if(NOT CURL_DISABLE_LDAP)
return 0;
}"
)
- set(CMAKE_REQUIRED_DEFINITIONS "-DLDAP_DEPRECATED=1" "-DWIN32_LEAN_AND_MEAN")
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DLDAP_DEPRECATED=1")
list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB})
if(HAVE_LIBLBER)
list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB})
@@ -474,7 +491,7 @@ mark_as_advanced(CMAKE_USE_GSSAPI)
if(CMAKE_USE_GSSAPI)
find_package(GSS)
- set(HAVE_GSS_API ${GSS_FOUND})
+ set(HAVE_GSSAPI ${GSS_FOUND})
if(GSS_FOUND)
message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
@@ -537,15 +554,13 @@ endif()
# Check for header files
if(NOT UNIX)
- check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H)
- check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H)
-endif(NOT UNIX)
-check_include_file_concat("stdio.h" HAVE_STDIO_H)
-if(NOT UNIX)
check_include_file_concat("windows.h" HAVE_WINDOWS_H)
check_include_file_concat("winsock.h" HAVE_WINSOCK_H)
+ check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H)
+ check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H)
endif(NOT UNIX)
+check_include_file_concat("stdio.h" HAVE_STDIO_H)
check_include_file_concat("inttypes.h" HAVE_INTTYPES_H)
check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H)
check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H)
@@ -737,7 +752,6 @@ if(CMAKE_USE_OPENSSL)
HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)
if(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
set(USE_OPENSSL 1)
- set(USE_SSLEAY 1)
endif(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
endif(CMAKE_USE_OPENSSL)
check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
@@ -1032,12 +1046,12 @@ _add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX)
_add_if("IDN" HAVE_LIBIDN)
# TODO SSP1 (WinSSL) check is missing
_add_if("SSPI" USE_WINDOWS_SSPI)
-_add_if("GSS-API" HAVE_GSS_API)
+_add_if("GSS-API" HAVE_GSSAPI)
# TODO SSP1 missing for SPNEGO
_add_if("SPNEGO" NOT CURL_DISABLE_CRYPTO_AUTH AND
- (HAVE_GSS_API OR USE_WINDOWS_SSPI))
+ (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
_add_if("Kerberos" NOT CURL_DISABLE_CRYPTO_AUTH AND
- (HAVE_GSS_API OR USE_WINDOWS_SSPI))
+ (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS, DARWINSSL
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR
diff --git a/MacOSX-Framework b/MacOSX-Framework
index 9863b78ee..6251bff2e 100755
--- a/MacOSX-Framework
+++ b/MacOSX-Framework
@@ -94,7 +94,7 @@ if test ! -z $SDK32; then
rm -r libcurl.framework
mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Resources
cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl
- install_name_tool -id @executable_path/../Frameworks/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
+ install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
/usr/bin/sed -e "s/7\.12\.3/$VERSION/" lib/libcurl.plist >libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
cp include/curl/*.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
@@ -121,7 +121,7 @@ if test ! -z $SDK32; then
echo "----Appending 64 bit framework to 32 bit framework..."
cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
- install_name_tool -id @executable_path/../Frameworks/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
+ install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
cp libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl32
pwd
lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl
diff --git a/Makefile b/Makefile
index f0f50d8cf..393a09d47 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -566,6 +566,17 @@ src/Makefile.vc12: src/Makefile.vc6
@echo "generate $@"
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" src/Makefile.vc6 > src/Makefile.vc12
+# VC14 makefiles are for use with VS2015
+vc14: lib/Makefile.vc14 src/Makefile.vc14
+
+lib/Makefile.vc14: lib/Makefile.vc6
+ @echo "generate $@"
+ @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc14/g" -e "s/VC6/VC14/g" lib/Makefile.vc6 > lib/Makefile.vc14
+
+src/Makefile.vc14: src/Makefile.vc6
+ @echo "generate $@"
+ @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc14/g" -e "s/VC6/VC14/g" src/Makefile.vc6 > src/Makefile.vc14
+
ca-bundle: lib/mk-ca-bundle.pl
@echo "generate a fresh ca-bundle.crt"
@perl $< -b -l -u lib/ca-bundle.crt
diff --git a/Makefile.am b/Makefile.am
index 3b91e8303..5f1c881bc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -30,101 +30,113 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
include/curl/curlbuild.h.cmake CMake/Macros.cmake
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp
+VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp
+VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
+VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj
+VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj
+VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
+VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj
+VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj
+VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
+VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj
+VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj
+VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
+VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj
+VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj
+VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
+VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
-VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
-VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
-VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj
+VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
-VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
-VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
-VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj
+VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
-VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
-VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
-VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj
+VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
+VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
+VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
+VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
+VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
+
VC_DIST = projects/README \
projects/build-openssl.bat \
+ projects/build-wolfssl.bat \
projects/checksrc.bat \
- projects/Windows/VC6/curl.dsw \
- projects/Windows/VC6/lib/libcurl.dsw $(VC6_LIBDSP) \
- projects/Windows/VC6/src/curlsrc.dsw $(VC6_SRCDSP) \
- projects/Windows/VC7/curl.sln \
- projects/Windows/VC7/lib/libcurl.sln $(VC7_LIBVCPROJ) \
- projects/Windows/VC7/src/curlsrc.sln $(VC7_SRCVCPROJ) \
- projects/Windows/VC7.1/curl.sln \
- projects/Windows/VC7.1/lib/libcurl.sln $(VC71_LIBVCPROJ) \
- projects/Windows/VC7.1/src/curlsrc.sln $(VC71_SRCVCPROJ) \
- projects/Windows/VC8/curl.sln \
- projects/Windows/VC8/lib/libcurl.sln $(VC8_LIBVCPROJ) \
- projects/Windows/VC8/src/curlsrc.sln $(VC8_SRCVCPROJ) \
- projects/Windows/VC9/curl.sln \
- projects/Windows/VC9/lib/libcurl.sln $(VC9_LIBVCPROJ) \
- projects/Windows/VC9/src/curlsrc.sln $(VC9_SRCVCPROJ) \
- projects/Windows/VC10/curl.sln \
- projects/Windows/VC10/lib/libcurl.sln $(VC10_LIBVCXPROJ) \
- projects/Windows/VC10/src/curlsrc.sln $(VC10_SRCVCXPROJ) \
- projects/Windows/VC11/curl.sln \
- projects/Windows/VC11/lib/libcurl.sln $(VC11_LIBVCXPROJ) \
- projects/Windows/VC11/src/curlsrc.sln $(VC11_SRCVCXPROJ) \
- projects/Windows/VC12/curl.sln \
- projects/Windows/VC12/lib/libcurl.sln $(VC12_LIBVCXPROJ) \
- projects/Windows/VC12/src/curlsrc.sln $(VC12_SRCVCXPROJ)
+ projects/Windows/VC6/curl-all.dsw \
+ projects/Windows/VC6/lib/libcurl.dsw \
+ projects/Windows/VC6/src/curl.dsw \
+ projects/Windows/VC7/curl-all.sln \
+ projects/Windows/VC7/lib/libcurl.sln \
+ projects/Windows/VC7/src/curl.sln \
+ projects/Windows/VC7.1/curl-all.sln \
+ projects/Windows/VC7.1/lib/libcurl.sln \
+ projects/Windows/VC7.1/src/curl.sln \
+ projects/Windows/VC8/curl-all.sln \
+ projects/Windows/VC8/lib/libcurl.sln \
+ projects/Windows/VC8/src/curl.sln \
+ projects/Windows/VC9/curl-all.sln \
+ projects/Windows/VC9/lib/libcurl.sln \
+ projects/Windows/VC9/src/curl.sln \
+ projects/Windows/VC10/curl-all.sln \
+ projects/Windows/VC10/lib/libcurl.sln \
+ projects/Windows/VC10/src/curl.sln \
+ projects/Windows/VC11/curl-all.sln \
+ projects/Windows/VC11/lib/libcurl.sln \
+ projects/Windows/VC11/src/curl.sln \
+ projects/Windows/VC12/curl-all.sln \
+ projects/Windows/VC12/lib/libcurl.sln \
+ projects/Windows/VC12/src/curl.sln \
+ projects/Windows/VC14/curl-all.sln \
+ projects/Windows/VC14/lib/libcurl.sln \
+ projects/Windows/VC14/src/curl.sln
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
winbuild/MakefileBuild.vc winbuild/Makefile.vc \
winbuild/Makefile.msvc.names
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
$(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
$(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
+ $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
bin_SCRIPTS = curl-config
@@ -153,7 +165,7 @@ html:
pdf:
cd docs; make pdf
-check: test examples
+check: test examples check-docs
if CROSSCOMPILING
test-full: test
@@ -181,6 +193,9 @@ endif
examples:
@(cd docs/examples; $(MAKE) check)
+check-docs:
+ @(cd docs/libcurl; $(MAKE) check)
+
# This is a hook to have 'make clean' also clean up the docs and the tests
# dir. The extra check for the Makefiles being present is necessary because
# 'make distcheck' will make clean first in these directories _before_ it runs
@@ -266,7 +281,7 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
- $(VC12_SRCVCXPROJ_DEPS)
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
@(win32_lib_srcs='$(LIB_CFILES)'; \
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
win32_lib_rc='$(LIB_RCFILES)'; \
@@ -527,4 +542,22 @@ function gen_element(type, dir, file)\
-v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)
+ "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
diff --git a/Makefile.in b/Makefile.in
index 51c490e9e..a86901d51 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -43,7 +43,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -69,7 +69,17 @@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -132,12 +142,6 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc \
- $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \
- $(srcdir)/curl-config.in $(srcdir)/libcurl.pc.in COPYING \
- README compile config.guess config.sub depcomp install-sh \
- missing ltmain.sh
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -159,9 +163,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES = curl-config libcurl.pc
@@ -251,6 +257,10 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-config.in \
+ $(srcdir)/lib/Makefile.inc $(srcdir)/libcurl.pc.in \
+ $(srcdir)/src/Makefile.inc COPYING README compile config.guess \
+ config.sub depcomp install-sh ltmain.sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -350,7 +360,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -403,6 +413,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -419,7 +430,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -487,93 +497,104 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
include/curl/curlbuild.h.cmake CMake/Macros.cmake
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp
+VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp
+VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
+VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj
+VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj
+VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
+VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj
+VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj
+VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
+VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj
+VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj
+VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
+VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj
+VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj
+VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
+VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
-VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
-VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
-VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj
+VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
-VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
-VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
-VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj
+VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
-VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
-VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
-VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj
+VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
+VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
+VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
+VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
+VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
VC_DIST = projects/README \
projects/build-openssl.bat \
+ projects/build-wolfssl.bat \
projects/checksrc.bat \
- projects/Windows/VC6/curl.dsw \
- projects/Windows/VC6/lib/libcurl.dsw $(VC6_LIBDSP) \
- projects/Windows/VC6/src/curlsrc.dsw $(VC6_SRCDSP) \
- projects/Windows/VC7/curl.sln \
- projects/Windows/VC7/lib/libcurl.sln $(VC7_LIBVCPROJ) \
- projects/Windows/VC7/src/curlsrc.sln $(VC7_SRCVCPROJ) \
- projects/Windows/VC7.1/curl.sln \
- projects/Windows/VC7.1/lib/libcurl.sln $(VC71_LIBVCPROJ) \
- projects/Windows/VC7.1/src/curlsrc.sln $(VC71_SRCVCPROJ) \
- projects/Windows/VC8/curl.sln \
- projects/Windows/VC8/lib/libcurl.sln $(VC8_LIBVCPROJ) \
- projects/Windows/VC8/src/curlsrc.sln $(VC8_SRCVCPROJ) \
- projects/Windows/VC9/curl.sln \
- projects/Windows/VC9/lib/libcurl.sln $(VC9_LIBVCPROJ) \
- projects/Windows/VC9/src/curlsrc.sln $(VC9_SRCVCPROJ) \
- projects/Windows/VC10/curl.sln \
- projects/Windows/VC10/lib/libcurl.sln $(VC10_LIBVCXPROJ) \
- projects/Windows/VC10/src/curlsrc.sln $(VC10_SRCVCXPROJ) \
- projects/Windows/VC11/curl.sln \
- projects/Windows/VC11/lib/libcurl.sln $(VC11_LIBVCXPROJ) \
- projects/Windows/VC11/src/curlsrc.sln $(VC11_SRCVCXPROJ) \
- projects/Windows/VC12/curl.sln \
- projects/Windows/VC12/lib/libcurl.sln $(VC12_LIBVCXPROJ) \
- projects/Windows/VC12/src/curlsrc.sln $(VC12_SRCVCXPROJ)
+ projects/Windows/VC6/curl-all.dsw \
+ projects/Windows/VC6/lib/libcurl.dsw \
+ projects/Windows/VC6/src/curl.dsw \
+ projects/Windows/VC7/curl-all.sln \
+ projects/Windows/VC7/lib/libcurl.sln \
+ projects/Windows/VC7/src/curl.sln \
+ projects/Windows/VC7.1/curl-all.sln \
+ projects/Windows/VC7.1/lib/libcurl.sln \
+ projects/Windows/VC7.1/src/curl.sln \
+ projects/Windows/VC8/curl-all.sln \
+ projects/Windows/VC8/lib/libcurl.sln \
+ projects/Windows/VC8/src/curl.sln \
+ projects/Windows/VC9/curl-all.sln \
+ projects/Windows/VC9/lib/libcurl.sln \
+ projects/Windows/VC9/src/curl.sln \
+ projects/Windows/VC10/curl-all.sln \
+ projects/Windows/VC10/lib/libcurl.sln \
+ projects/Windows/VC10/src/curl.sln \
+ projects/Windows/VC11/curl-all.sln \
+ projects/Windows/VC11/lib/libcurl.sln \
+ projects/Windows/VC11/src/curl.sln \
+ projects/Windows/VC12/curl-all.sln \
+ projects/Windows/VC12/lib/libcurl.sln \
+ projects/Windows/VC12/src/curl.sln \
+ projects/Windows/VC14/curl-all.sln \
+ projects/Windows/VC14/lib/libcurl.sln \
+ projects/Windows/VC14/src/curl.sln
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
winbuild/MakefileBuild.vc winbuild/Makefile.vc \
winbuild/Makefile.msvc.names
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
$(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
$(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
+ $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
bin_SCRIPTS = curl-config
SUBDIRS = lib src include
@@ -582,11 +603,11 @@ pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcurl.pc
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c \
vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c \
- vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+ vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c
LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h \
- vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+ vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
@@ -604,8 +625,9 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c \
asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c \
curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c \
- hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c \
- http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+ hostcheck.c conncache.c pipeline.c dotdot.c x509asn1.c \
+ http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c \
+ curl_des.c
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
@@ -621,9 +643,10 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \
curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \
curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \
- curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h \
+ curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h \
conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h \
- dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+ dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
+ curl_printf.h
LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
@@ -749,7 +772,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/li
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -759,7 +781,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc:
+$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -1029,15 +1051,15 @@ dist-xz: distdir
$(am__post_remove_distdir)
dist-tarZ: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
@@ -1073,17 +1095,17 @@ distcheck: dist
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
- mkdir $(distdir)/_build $(distdir)/_inst
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=.. --prefix="$$dc_install_base" \
+ --srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1265,6 +1287,8 @@ uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA
uninstall-am uninstall-binSCRIPTS uninstall-hook \
uninstall-pkgconfigDATA
+.PRECIOUS: Makefile
+
# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
@@ -1283,7 +1307,7 @@ html:
pdf:
cd docs; make pdf
-check: test examples
+check: test examples check-docs
@CROSSCOMPILING_TRUE@test-full: test
@CROSSCOMPILING_TRUE@test-torture: test
@@ -1306,6 +1330,9 @@ check: test examples
examples:
@(cd docs/examples; $(MAKE) check)
+check-docs:
+ @(cd docs/libcurl; $(MAKE) check)
+
# This is a hook to have 'make clean' also clean up the docs and the tests
# dir. The extra check for the Makefiles being present is necessary because
# 'make distcheck' will make clean first in these directories _before_ it runs
@@ -1391,7 +1418,7 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
- $(VC12_SRCVCXPROJ_DEPS)
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
@(win32_lib_srcs='$(LIB_CFILES)'; \
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
win32_lib_rc='$(LIB_RCFILES)'; \
@@ -1652,7 +1679,25 @@ function gen_element(type, dir, file)\
-v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)
+ "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
# 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.
diff --git a/README b/README
index 2ffacc32c..d92c7f8bf 100644
--- a/README
+++ b/README
@@ -38,12 +38,12 @@ GIT
To download the very latest source off the GIT server do this:
- git clone git://github.com/bagder/curl.git
+ git clone https://github.com/bagder/curl.git
(you'll get a directory named curl created, filled with the source code)
NOTICE
Curl contains pieces of source code that is Copyright (c) 1998, 1999
- Kungliga Tekniska Högskolan. This notice is included here to comply with the
+ Kungliga Tekniska Högskolan. This notice is included here to comply with the
distribution terms.
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 123088f6c..f1229788c 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,146 +1,81 @@
-Curl and libcurl 7.40.0
+Curl and libcurl 7.44.0
- Public curl releases: 143
- Command line options: 162
- curl_easy_setopt() options: 208
+ Public curl releases: 148
+ Command line options: 176
+ curl_easy_setopt() options: 219
Public functions in libcurl: 58
- Contributors: 1219
+ Contributors: 1291
This release includes the following changes:
- o http_digest: Added support for Windows SSPI based authentication
- o version info: Added Kerberos V5 to the supported features
- o Makefile: Added VC targets for WinIDN
- o config-win32: Introduce build targets for VS2012+
- o SSL: Add PEM format support for public key pinning
- o smtp: Added support for the conversion of Unix newlines during mail send [8]
- o smb: Added initial support for the SMB/CIFS protocol
- o Added support for HTTP over unix domain sockets, via
- CURLOPT_UNIX_SOCKET_PATH and --unix-socket
- o sasl: Added support for GSS-API based Kerberos V5 authentication
+ o http2: added CURLMOPT_PUSHFUNCTION and CURLMOPT_PUSHDATA [6]
+ o examples: added http2-serverpush.c [7]
+ o http2: added curl_pushheader_byname() and curl_pushheader_bynum()
+ o docs: added CODE_OF_CONDUCT.md [8]
+ o curl: Add --ssl-no-revoke to disable certificate revocation checks [5]
+ o libcurl: New value CURLSSLOPT_NO_REVOKE for CURLOPT_SSL_OPTIONS [9]
+ o makefile: Added support for VC14
+ o build: Added Visual Studio 2015 (VC14) project files
+ o build: Added wolfSSL configurations to VC10+ project files [18]
This release includes the following bugfixes:
- o darwinssl: fix session ID keys to only reuse identical sessions [18]
- o url-parsing: reject CRLFs within URLs [19]
- o OS400: Adjust specific support to last release
- o THANKS: Remove duplicate names
- o url.c: Fixed compilation warning
- o ssh: Fixed build on platforms where R_OK is not defined [1]
- o tool_strdup.c: include the tool strdup.h
- o build: Fixed Visual Studio project file generation of strdup.[c|h]
- o curl_easy_setopt.3: add CURLOPT_PINNEDPUBLICKEY [2]
- o curl.1: show zone index use in a URL
- o mk-ca-bundle.vbs: switch to new certdata.txt url
- o Makefile.dist: Added some missing SSPI configurations
- o build: Fixed no NTLM support for email when CURL_DISABLE_HTTP is defined
- o SSH: use the port number as well for known_known checks [3]
- o libssh2: detect features based on version, not configure checks
- o http2: Deal with HTTP/2 data inside Upgrade response header buffer [4]
- o multi: removed Curl_multi_set_easy_connection
- o symbol-scan.pl: do not require autotools
- o cmake: add ENABLE_THREADED_RESOLVER, rename ARES
- o cmake: build libhostname for test suite
- o cmake: fix HAVE_GETHOSTNAME definition
- o tests: fix libhostname visibility
- o tests: fix memleak in server/resolve.c
- o vtls.h: Fixed compiler warning when compiled without SSL
- o CMake: Restore order-dependent header checks
- o CMake: Restore order-dependent library checks
- o tool: Removed krb4 from the supported features
- o http2: Don't send Upgrade headers when we already do HTTP/2
- o examples: Don't call select() to sleep on windows [6]
- o win32: Updated some legacy APIs to use the newer extended versions [5]
- o easy.c: Fixed compilation warning when no verbose string support
- o connect.c: Fixed compilation warning when no verbose string support
- o build: in Makefile.m32 pass -F flag to windres
- o build: in Makefile.m32 add -m32 flag for 32bit
- o multi: when leaving for timeout, close accordingly
- o CMake: Simplify if() conditions on check result variables
- o build: in Makefile.m32 try to detect 64bit target
- o multi: inform about closed sockets before they are closed
- o multi-uv.c: close the file handle after download
- o examples: Wait recommended 100ms when no file descriptors are ready
- o ntlm: Split the SSPI based messaging code from the native messaging code
- o cmake: fix NTLM detection when CURL_DISABLE_HTTP defined
- o cmake: add Kerberos to the supported feature
- o CURLOPT_POSTFIELDS.3: mention the COPYPOSTFIELDS option
- o http: Disable pipelining for HTTP/2 and upgraded connections
- o ntlm: Fixed static'ness of local decode function
- o sasl: Reduced the need for two sets of NTLM messaging functions
- o multi.c: Fixed compilation warnings when no verbose string support
- o select.c: fix compilation for VxWorks [7]
- o multi-single.c: switch to use curl_multi_wait
- o curl_multi_wait.3: clarify numfds being used if not NULL
- o http.c: Fixed compilation warnings from features being disabled
- o NSS: enable the CAPATH option [9]
- o docs: Fix FAILONERROR typos
- o HTTP: don't abort connections with pending Negotiate authentication
- o HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request
- o http_perhapsrewind: don't abort CONNECT requests
- o build: updated dependencies in makefiles
- o multi.c: Fixed compilation warning
- o ftp.c: Fixed compilation warnings when proxy support disabled
- o get_url_file_name: Fixed crash on OOM on debug build
- o cookie.c: Refactored cleanup code to simplify
- o OS400: enable NTLM authentication
- o ntlm: Use Windows Crypt API
- o http2: avoid logging neg "failure" if h2 was not requested
- o schannel_recv: return the correct code [10]
- o VC build: added sspi define for winssl-zlib builds
- o Curl_client_write(): chop long data, convert data only once
- o openldap: do not ignore Curl_client_write() return code
- o ldap: check Curl_client_write() return codes
- o parsedate.c: Fixed compilation warning
- o url.c: Fixed compilation warning when USE_NTLM is not defined
- o ntlm_wb_response: fix "statement not reached" [11]
- o telnet: fix "cast increases required alignment of target type"
- o smtp: Fixed dot stuffing when EOL characters at end of input buffers [12]
- o ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
- o ntlm: Disable NTLM v2 when 64-bit integers are not supported
- o ntlm: Use short integer when decoding 16-bit values
- o ftp.c: Fixed compilation warning when no verbose string support
- o synctime.c: fixed timeserver URLs
- o mk-ca-bundle.pl: restored forced run again
- o ntlm: Fixed return code for bad type-2 Target Info
- o curl_schannel.c: Data may be available before connection shutdown
- o curl_schannel: Improvements to memory re-allocation strategy [13]
- o darwinssl: aprintf() to allocate the session key
- o tool_util.c: Use GetTickCount64 if it is available
- o lib: Fixed multiple code analysis warnings if SAL are available
- o tool_binmode.c: Explicitly ignore the return code of setmode
- o tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
- o opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
- o SFTP: work-around servers that return zero size on STAT [14]
- o connect: singleipconnect(): properly try other address families after failure
- o IPV6: address scope != scope id [15]
- o parseurlandfillconn(): fix improper non-numeric scope_id stripping [16]
- o secureserver.pl: make OpenSSL CApath and cert absolute path values
- o secureserver.pl: update Windows detection and fix path conversion
- o secureserver.pl: clean up formatting of config and fix verbose output
- o tests: Added Windows support using Cygwin-based OpenSSH
- o sockfilt.c: use non-Ex functions that are available before WinXP
- o VMS: Updates for 0740-0D1220
- o openssl: warn for SRP set if SSLv3 is used, not for TLS version
- o openssl: make it compile against openssl 1.1.0-DEV master branch
- o openssl: fix SSL/TLS versions in verbose output
- o curl: show size of inhibited data when using -v
- o build: Removed WIN32 definition from the Visual Studio projects
- o build: Removed WIN64 definition from the libcurl Visual Studio projects
- o vtls: Use bool for Curl_ssl_getsessionid() return type
- o sockfilt.c: Replace 100ms sleep with thread throttle
- o sockfilt.c: Reduce the number of individual memory allocations
- o vtls: Don't set cert info count until memory allocation is successful
- o nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
- o nss: Don't ignore Curl_extract_certinfo() OOM failure
- o vtls: Fixed compilation warning and an ignored return code
- o sockfilt.c: Fixed compilation warnings
- o darwinssl: Fixed compilation warning
- o vtls: Use '(void) arg' for unused parameters
- o sepheaders.c: Fixed resource leak on failure
- o lib1900.c: Fixed cppcheck error [17]
- o ldap: Fixed Unicode connection details in Win32 initialsation / bind calls
- o ldap: Fixed Unicode DN, attributes and filter in Win32 search calls
+ o FTP: fix HTTP CONNECT logic regression [1]
+ o openssl: Fix build with openssl < ~ 0.9.8f
+ o openssl: fix build with BoringSSL
+ o curl_easy_setopt.3: option order doesn't matter
+ o openssl: fix use of uninitialized buffer [2]
+ o RTSP: removed dead code
+ o Makefile.m32: add support for CURL_LDFLAG_EXTRAS
+ o curl: always provide negotiate/kerberos options
+ o cookie: Fix bug in export if any-domain cookie is present
+ o curl_easy_setopt.3: mention CURLOPT_PIPEWAIT
+ o INSTALL: Advise use of non-native SSL for Windows <= XP
+ o tool_help: fix --tlsv1 help text to use >= for TLSv1
+ o HTTP: POSTFIELDSIZE set after added to multi handle [3]
+ o SSL-PROBLEMS: mention WinSSL problems in WinXP
+ o setup-vms.h: Symbol case fixups
+ o SSL: Pinned public key hash support
+ o libtest: call PR_Cleanup() on exit if NSPR is used
+ o ntlm_wb: Fix theoretical memory leak
+ o runtests: Allow for spaces in curl custom path
+ o http2: add stream != NULL checks for reliability
+ o schannel: Replace deprecated GetVersion with VerifyVersionInfo
+ o http2: verify success of strchr() in http2_send()
+ o configure: add --disable-rt option
+ o openssl: work around MSVC warning
+ o HTTP: ignore "Content-Encoding: compress"
+ o configure: check if OpenSSL linking wants -ldl
+ o build-openssl.bat: Show syntax if required args are missing
+ o test1902: attempt to make the test more reliable
+ o libcurl-thread.3: Consolidate thread safety info
+ o maketgz: Fixed some VC makefiles missing from the release tarball
+ o libcurl-multi.3: mention curl_multi_wait [10]
+ o ABI doc: use secure URL
+ o http: move HTTP/2 cleanup code off http_disconnect() [11]
+ o libcurl-thread.3: Warn memory functions must be thread safe [12]
+ o curl_global_init_mem.3: Warn threaded resolver needs thread safe funcs [13]
+ o docs: formpost needs the full size at start of upload [14]
+ o curl_gssapi: remove 'const' to fix compiler warnings
+ o SSH: three state machine fixups [15]
+ o libcurl.3: fix a single typo [16]
+ o generate.bat: Only clean prerequisite files when in ALL mode
+ o curl_slist_append.3: add error checking to the example
+ o buildconf.bat: Added support for file clean-up via -clean
+ o generate.bat: Use buildconf.bat for prerequisite file clean-up
+ o NTLM: handle auth for only a single request [17]
+ o curl_multi_remove_handle.3: fix formatting [19]
+ o checksrc.bat: Fixed error when [directory] isn't a curl source directory
+ o checksrc.bat: Fixed error when missing *.c and *.h files
+ o CURLOPT_RESOLVE.3: Note removal support was added in 7.42 [20]
+ o test46: update cookie expire time
+ o SFTP: fix range request off-by-one in size check [21]
+ o CMake: fix GSSAPI builds [22]
+ o build: refer to fixed libidn versions [4]
+ o http2: discard frames with no SessionHandle [23]
+ o curl_easy_recv.3: fix formatting
+ o libcurl-tutorial.3: fix formatting [24]
+ o curl_formget.3: correct return code [25]
This release includes the following known bugs:
@@ -149,35 +84,41 @@ This release includes the following known bugs:
This release would not have looked like this without help, code, reports and
advice from friends like these:
- Andrey Labunets, Anthon Pang, Bill Nagel, Brad Harder, Brad King, Carlo Wood,
- Christian Hägele, Dan Fandrich, Daniel Stenberg, Dave Reisner, Frank Gevaerts,
- Gisle Vanem, Guenter Knauf, Jan Ehrhardt, Johan Lantz, John E. Malmberg,
- Jon Spencer, Julien Nabet, Kamil Dudka, Kyle J. McKay, Lucas Pardue,
- Marc Hesse, Marc Hoersken, Marc Renault, Michael Osipov, Nick Zitzmann,
- Nobuhiro Ban, Patrick Monnerat, Peter Wu, Ray Satiro, Sam Hurst,
- Stefan Bühler, Stefan Neis, Steve Holme, Tae Hyoung Ahn, Tatsuhiro Tsujikawa,
- Tomasz Kojm, Tor Arntsen, Waldek Kozba, Warren Menzer
+ Anders Bakken, Cédric Connes, Dan Fandrich, Daniel Stenberg, David Woodhouse,
+ Eric Ridge, Feist Josselin, Gustavo Grieco, Inca R, Isaac Boukris,
+ Jakub Zakrzewski, John E. Malmberg, Kamil Dudka, Lior Kaplan, Marcel Raad,
+ Michael Kaufmann, Michał Fita, Patrick Monnerat, Paul Howarth, Ray Satiro,
+ Roger Leigh, Stefan Bühler, Štefan Kremeň, Steve Holme, Svyatoslav Mishyn,
+ Tatsuhiro Tsujikawa, Terri Oda, Tim Stack, TJ Saunders, Tomas Tomecek,
+ Viktor Szakáts,
+ (31 contributors)
Thanks! (and sorry if I forgot to mention someone)
References to bug reports and discussions on issues:
- [1] = http://curl.haxx.se/mail/lib-2014-11/0035.html
- [2] = http://curl.haxx.se/mail/lib-2014-11/0078.html
- [3] = http://curl.haxx.se/bug/view.cgi?id=1448
- [4] = https://github.com/tatsuhiro-t/nghttp2/issues/103
- [5] = http://sourceforge.net/p/curl/feature-requests/82/
- [6] = http://curl.haxx.se/mail/lib-2014-11/0221.html
- [7] = http://curl.haxx.se/bug/view.cgi?id=1455
- [8] = http://curl.haxx.se/bug/view.cgi?id=1456
- [9] = http://curl.haxx.se/bug/view.cgi?id=1457
- [10] = http://curl.haxx.se/bug/view.cgi?id=1462
- [11] = http://curl.haxx.se/mail/lib-2014-12/0089.html
- [12] = http://curl.haxx.se/bug/view.cgi?id=1456
- [13] = http://curl.haxx.se/bug/view.cgi?id=1450
- [14] = http://curl.haxx.se/mail/lib-2014-12/0103.html
- [15] = http://curl.haxx.se/bug/view.cgi?id=1451
- [16] = http://curl.haxx.se/bug/view.cgi?id=1449
- [17] = https://github.com/bagder/curl/pull/133
- [18] = http://curl.haxx.se/docs/adv_20150108A.html
- [19] = http://curl.haxx.se/docs/adv_20150108B.html
+ [1] = https://github.com/bagder/curl/issues/278
+ [2] = https://github.com/bagder/curl/issues/318
+ [3] = http://curl.haxx.se/mail/lib-2015-06/0122.html
+ [4] = http://curl.haxx.se/bug/?i=371
+ [5] = https://github.com/bagder/curl/issues/264
+ [6] = http://curl.haxx.se/libcurl/c/CURLMOPT_PUSHFUNCTION.html
+ [7] = http://curl.haxx.se/libcurl/c/http2-serverpush.html
+ [8] = https://github.com/bagder/curl/blob/master/docs/CODE_OF_CONDUCT.md
+ [9] = http://curl.haxx.se/libcurl/c/CURLOPT_SSL_OPTIONS.html
+ [10] = https://github.com/bagder/curl/issues/356
+ [11] = https://bugzilla.redhat.com/1248389
+ [12] = http://curl.haxx.se/mail/lib-2015-07/0149.html
+ [13] = http://curl.haxx.se/mail/lib-2015-07/0149.html
+ [14] = http://curl.haxx.se/bug/?i=360
+ [15] = http://curl.haxx.se/bug/?i=357
+ [16] = https://github.com/bagder/curl/issues/361
+ [17] = https://github.com/bagder/curl/issues/363
+ [18] = https://github.com/bagder/curl/pull/174
+ [19] = https://github.com/bagder/curl/issues/366
+ [20] = http://curl.haxx.se/mail/lib-2015-08/0019.html
+ [21] = http://curl.haxx.se/bug/?i=359
+ [22] = http://curl.haxx.se/bug/?i=370
+ [23] = http://curl.haxx.se/bug/?i=372
+ [24] = http://curl.haxx.se/bug/?i=374
+ [25] = http://curl.haxx.se/bug/?i=375
diff --git a/acinclude.m4 b/acinclude.m4
index 453358dc9..782f32d64 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1851,8 +1851,10 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
AC_MSG_CHECKING([for monotonic clock_gettime])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
+ #
+ if test "x$dontwant_rt" == "xno" ; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1866,17 +1868,18 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
#include <time.h>
#endif
#endif
- ]],[[
- struct timespec ts;
- (void)clock_gettime(CLOCK_MONOTONIC, &ts);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- ac_cv_func_clock_gettime="yes"
- ],[
- AC_MSG_RESULT([no])
- ac_cv_func_clock_gettime="no"
- ])
+ ]],[[
+ struct timespec ts;
+ (void)clock_gettime(CLOCK_MONOTONIC, &ts);
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ ac_cv_func_clock_gettime="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ ac_cv_func_clock_gettime="no"
+ ])
+ fi
dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
dnl until library linking and run-time checks for clock_gettime succeed.
])
@@ -2452,23 +2455,6 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
])
-# This is only a temporary fix. This macro is here to replace the broken one
-# delivered by the automake project (including the 1.9.6 release). As soon as
-# they ship a working version we SHOULD remove this work-around.
-
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} \"$am_aux_dir/missing\""
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-
dnl CURL_VERIFY_RUNTIMELIBS
dnl -------------------------------------------------
dnl Verify that the shared libs found so far can be used when running
@@ -2607,15 +2593,16 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
"x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
dnl both given
- AC_MSG_ERROR([Can't specify both --with-ca-bundle and --with-ca-path.])
+ ca="$want_ca"
+ capath="$want_capath"
elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
dnl --with-ca-bundle given
ca="$want_ca"
capath="no"
elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
dnl --with-ca-path given
- if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
- AC_MSG_ERROR([--with-ca-path only works with openSSL or PolarSSL])
+ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
+ AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL])
fi
capath="$want_capath"
ca="no"
@@ -2669,11 +2656,13 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle])
AC_SUBST(CURL_CA_BUNDLE)
AC_MSG_RESULT([$ca])
- elif test "x$capath" != "xno"; then
+ fi
+ if test "x$capath" != "xno"; then
CURL_CA_PATH="\"$capath\""
AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path])
AC_MSG_RESULT([$capath (capath)])
- else
+ fi
+ if test "x$ca" = "xno" && test "x$capath" = "xno"; then
AC_MSG_RESULT([no])
fi
])
diff --git a/aclocal.m4 b/aclocal.m4
index fd841cac6..32d8994d6 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -408,7 +408,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -498,8 +498,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -573,6 +573,9 @@ END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
@@ -602,7 +605,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -613,7 +616,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -623,7 +626,7 @@ if test x"${install_sh}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -645,7 +648,7 @@ AC_SUBST([am__leading_dot])])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -680,7 +683,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -730,7 +733,7 @@ rm -f confinc confmf
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -769,7 +772,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -798,7 +801,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -845,7 +848,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -864,7 +867,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -945,7 +948,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1005,7 +1008,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1033,7 +1036,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1052,7 +1055,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/buildconf b/buildconf
index f3f0bd54d..705f0d34e 100755
--- a/buildconf
+++ b/buildconf
@@ -318,6 +318,8 @@ for fname in .deps \
ltsugar.m4 \
ltversion.m4 \
lt~obsolete.m4 \
+ missing \
+ install-sh \
stamp-h1 \
stamp-h2 \
stamp-h3 ; do
@@ -329,7 +331,7 @@ done
#
echo "buildconf: running libtoolize"
-${libtoolize} --copy --automake --force || die "libtoolize command failed"
+${libtoolize} --copy --force || die "libtoolize command failed"
# When using libtool 1.5.X (X < 26) we copy libtool.m4 to our local m4
# subdirectory and this local copy is patched to fix some warnings that
diff --git a/compile b/compile
index 531136b06..a85b723c7 100755
--- a/compile
+++ b/compile
@@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/configure b/configure
index bbdf84682..34cbe8c0f 100755
--- a/configure
+++ b/configure
@@ -923,9 +923,9 @@ USE_POLARSSL
HAVE_GNUTLS_SRP
USE_GNUTLS_NETTLE
USE_GNUTLS
-HAVE_SSLEAY_SRP
+HAVE_OPENSSL_SRP
RANDOM_FILE
-USE_SSLEAY
+SSL_LIBS
PKGCONFIG
USE_DARWINSSL
USE_WINDOWS_SSPI
@@ -1105,6 +1105,7 @@ enable_curldebug
enable_symbol_hiding
enable_hidden_symbols
enable_ares
+enable_rt
enable_dependency_tracking
enable_silent_rules
enable_largefile
@@ -1816,6 +1817,7 @@ Optional Features:
To be deprecated, use --disable-symbol-hiding
--enable-ares[=PATH] Enable c-ares for DNS lookups
--disable-ares Disable c-ares for DNS lookups
+ --disable-rt disable dependency on -lrt
--enable-dependency-tracking
do not reject slow dependency extractors
--disable-dependency-tracking
@@ -3259,6 +3261,38 @@ fi
$as_echo "$want_ares" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable dependency on -lrt" >&5
+$as_echo_n "checking whether to disable dependency on -lrt... " >&6; }
+ OPT_RT="default"
+ # Check whether --enable-rt was given.
+if test "${enable_rt+set}" = set; then :
+ enableval=$enable_rt; OPT_RT=$enableval
+fi
+
+ case "$OPT_RT" in
+ no)
+ dontwant_rt="yes"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ ;;
+ default)
+ dontwant_rt="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: (assumed no)
+ ;;
+ *" >&5
+$as_echo "(assumed no)
+ ;;
+ *" >&6; }
+ dontwant_rt="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+ if test "$dontwant_rt" = "yes" && test "$want_thres" = "yes" ; then
+ as_fn_error $? "options --disable-rt and --enable-thread-resolver are mutually exclusive, at most one can be selected." "$LINENO" 5
+ fi
+
+
#
# Check that 'XC_CONFIGURE_PREAMBLE' has already run.
#
@@ -4858,7 +4892,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version='1.14'
+am__api_version='1.15'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
@@ -4937,17 +4971,24 @@ test "$program_suffix" != NONE &&
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} \"$am_aux_dir/missing\""
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -5342,8 +5383,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
@@ -19929,7 +19970,9 @@ done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for monotonic clock_gettime" >&5
$as_echo_n "checking for monotonic clock_gettime... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ #
+ if test "x$dontwant_rt" == "xno" ; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19950,8 +19993,8 @@ $as_echo_n "checking for monotonic clock_gettime... " >&6; }
int main (void)
{
- struct timespec ts;
- (void)clock_gettime(CLOCK_MONOTONIC, &ts);
+ struct timespec ts;
+ (void)clock_gettime(CLOCK_MONOTONIC, &ts);
;
return 0;
@@ -19960,18 +20003,19 @@ int main (void)
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- ac_cv_func_clock_gettime="yes"
+ ac_cv_func_clock_gettime="yes"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- ac_cv_func_clock_gettime="no"
+ ac_cv_func_clock_gettime="no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
#
@@ -20921,7 +20965,7 @@ done
if test "$LDAPLIBNAME" = "wldap32"; then
curl_ldap_msg="enabled (winldap)"
-$as_echo "#define CURL_LDAP_WIN 1" >>confdefs.h
+$as_echo "#define USE_WIN32_LDAP 1" >>confdefs.h
else
curl_ldap_msg="enabled (OpenLDAP)"
@@ -21117,6 +21161,8 @@ if test "${with_gssapi+set}" = set; then :
fi
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
save_CPPFLAGS="$CPPFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5
$as_echo_n "checking if GSS-API support is requested... " >&6; }
@@ -21127,8 +21173,8 @@ $as_echo "yes" >&6; }
if test -z "$GSSAPI_INCS"; then
if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
- elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
- GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
+ elif test -f "$KRB5CONFIG"; then
+ GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
elif test "$GSSAPI_ROOT" != "yes"; then
GSSAPI_INCS="-I$GSSAPI_ROOT/include"
fi
@@ -21272,8 +21318,8 @@ $as_echo "#define HAVE_GSSAPI 1" >>confdefs.h
if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
LIBS="$gss_libs $LIBS"
- elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
- gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
+ elif test -f "$KRB5CONFIG"; then
+ gss_libs=`$KRB5CONFIG --libs gssapi`
LIBS="$gss_libs $LIBS"
else
case $host in
@@ -21579,6 +21625,7 @@ $as_echo "found" >&6; }
fi
$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&5
$as_echo "$as_me: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&5
@@ -21719,6 +21766,76 @@ fi
if test X"$HAVECRYPTO" = X"yes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking without -ldl" >&5
+$as_echo_n "checking OpenSSL linking without -ldl... " >&6; }
+ saved_libs=$LIBS
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <openssl/evp.h>
+
+int main (void)
+{
+
+ SSLeay_add_all_algorithms();
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ LIBS="$saved_libs"
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl" >&5
+$as_echo_n "checking OpenSSL linking with -ldl... " >&6; }
+ LIBS="-ldl $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <openssl/evp.h>
+
+int main (void)
+{
+
+ SSLeay_add_all_algorithms();
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ LIBS="$saved_libs -ldl"
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ LIBS="$saved_libs"
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ fi
+
+ if test X"$HAVECRYPTO" = X"yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_connect in -lssl" >&5
$as_echo_n "checking for SSL_connect in -lssl... " >&6; }
@@ -21865,10 +21982,6 @@ done
fi
if test X"$OPENSSL_ENABLED" = X"1"; then
-
-$as_echo "#define USE_SSLEAY 1" >>confdefs.h
-
-
for ac_header in openssl/pkcs12.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "openssl/pkcs12.h" "ac_cv_header_openssl_pkcs12_h" "$ac_includes_default"
@@ -21884,8 +21997,6 @@ done
else
LIBS="$CLEANLIBS"
fi
- USE_SSLEAY="$OPENSSL_ENABLED"
-
if test X"$OPT_SSL" != Xoff &&
test "$OPENSSL_ENABLED" != "1"; then
@@ -21932,7 +22043,8 @@ fi
ENGINE_cleanup \
CRYPTO_cleanup_all_ex_data \
SSL_get_shutdown \
- SSLv2_client_method
+ SSLv2_client_method \
+ DES_set_odd_parity
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -21945,23 +22057,33 @@ fi
done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BoringSSL" >&5
+$as_echo_n "checking for BoringSSL... " >&6; }
+ if test "x$ac_cv_func_DES_set_odd_parity" != "xyes"; then
+ curl_ssl_msg="enabled (BoringSSL)"
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_BORINGSSL 1
+_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yaSSL using OpenSSL compatibility mode" >&5
-$as_echo_n "checking for yaSSL using OpenSSL compatibility mode... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libressl" >&5
+$as_echo_n "checking for libressl... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <openssl/ssl.h>
+#include <openssl/opensslv.h>
int main (void)
{
-#if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
- int dummy = SSL_ERROR_NONE;
-#else
- Not the yaSSL OpenSSL compatibility header.
-#endif
+ int dummy = LIBRESSL_VERSION_NUMBER;
;
return 0;
@@ -21974,10 +22096,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
$as_echo "yes" >&6; }
cat >>confdefs.h <<_ACEOF
-#define USE_YASSLEMUL 1
+#define HAVE_LIBRESSL 1
_ACEOF
- curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
+ curl_ssl_msg="enabled (libressl)"
else
@@ -22072,6 +22194,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
esac
case $tst_api in
0x110) tst_show="1.1.0" ;;
+ 0x102) tst_show="1.0.2" ;;
0x101) tst_show="1.0.1" ;;
0x100) tst_show="1.0.0" ;;
0x099) tst_show="0.9.9" ;;
@@ -22181,6 +22304,42 @@ rm -f core conftest.err conftest.$ac_objext \
/* end confdefs.h. */
+#define SSL_CONF_CTX_new innocuous_SSL_CONF_CTX_new
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef SSL_CONF_CTX_new
+#ifdef __cplusplus
+extern "C"
+#endif
+char SSL_CONF_CTX_new ();
+#if defined __stub_SSL_CONF_CTX_new || defined __stub___SSL_CONF_CTX_new
+choke me
+#endif
+
+int main (void)
+{
+return SSL_CONF_CTX_new ();
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ tst_api="0x102"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+ if test "$tst_api" = "unknown"; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
#define SSL_renegotiate_abbreviated innocuous_SSL_renegotiate_abbreviated
#ifdef __STDC__
# include <limits.h>
@@ -22538,6 +22697,7 @@ rm -f core conftest.err conftest.$ac_objext \
fi
case $tst_api in
0x110) tst_show="1.1.0" ;;
+ 0x102) tst_show="1.0.2" ;;
0x101) tst_show="1.0.1" ;;
0x100) tst_show="1.0.0" ;;
0x099) tst_show="0.9.9" ;;
@@ -22680,9 +22840,9 @@ $as_echo "$ac_cv_lib_crypto_SRP_Calc_client_key" >&6; }
if test "x$ac_cv_lib_crypto_SRP_Calc_client_key" = xyes; then :
-$as_echo "#define HAVE_SSLEAY_SRP 1" >>confdefs.h
+$as_echo "#define HAVE_OPENSSL_SRP 1" >>confdefs.h
- HAVE_SSLEAY_SRP=1
+ HAVE_OPENSSL_SRP=1
fi
@@ -23352,6 +23512,9 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
OPT_CYASSL=""
fi
+
+ cyassllibname=cyassl
+
if test -z "$OPT_CYASSL" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lcyassl" >&5
@@ -23465,11 +23628,79 @@ else
CPPFLAGS=$_cppflags
LDFLAGS=$_ldflags
+ cyassllib=""
fi
fi
+ addld=""
+ addlib=""
+ addcflags=""
+
+ if test "x$USE_CYASSL" != "xyes"; then
+ addld=-L$OPT_CYASSL/lib$libsuff
+ addcflags=-I$OPT_CYASSL/include
+ cyassllib=$OPT_CYASSL/lib$libsuff
+
+ LDFLAGS="$LDFLAGS $addld"
+ if test "$addcflags" != "-I/usr/include"; then
+ CPPFLAGS="$CPPFLAGS $addcflags"
+ fi
+
+ cyassllibname=wolfssl
+ my_ac_save_LIBS="$LIBS"
+ LIBS="-l$cyassllibname -lm $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lwolfssl" >&5
+$as_echo_n "checking for CyaSSL_Init in -lwolfssl... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+/* These aren't needed for detection and confuse WolfSSL.
+ They are set up properly later if it is detected. */
+#undef SIZEOF_LONG
+#undef SIZEOF_LONG_LONG
+#include <cyassl/ssl.h>
+
+int main (void)
+{
+
+ return CyaSSL_Init();
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_CYASSL 1" >>confdefs.h
+
+ USE_CYASSL=1
+
+ CYASSL_ENABLED=1
+ USE_CYASSL="yes"
+ curl_ssl_msg="enabled (CyaSSL)"
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ CPPFLAGS=$_cppflags
+ LDFLAGS=$_ldflags
+ cyassllib=""
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$my_ac_save_LIBS"
+ fi
+
if test "x$USE_CYASSL" = "xyes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: detected CyaSSL" >&5
$as_echo "$as_me: detected CyaSSL" >&6;}
@@ -23508,6 +23739,19 @@ _ACEOF
+ for ac_header in cyassl/options.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "cyassl/options.h" "ac_cv_header_cyassl_options_h" "$ac_includes_default"
+if test "x$ac_cv_header_cyassl_options_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_CYASSL_OPTIONS_H 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in cyassl/error-ssl.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "cyassl/error-ssl.h" "ac_cv_header_cyassl_error_ssl_h" "$ac_includes_default"
@@ -23521,7 +23765,7 @@ fi
done
- LIBS="-lcyassl -lm $LIBS"
+ LIBS="-l$cyassllibname -lm $LIBS"
if test -n "$cyassllib"; then
if test "x$cross_compiling" != "xyes"; then
@@ -23705,24 +23949,190 @@ $as_echo "found" >&6; }
fi
fi
else
- # Without pkg-config, we'll kludge in some defaults
- addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
- addcflags="-I$OPT_NSS/include"
- version="unknown"
- nssprefix=$OPT_NSS
- fi
+ NSS_PCDIR="$OPT_NSS/lib/pkgconfig"
+ if test -f "$NSS_PCDIR/nss.pc"; then
- if test -n "$addlib"; then
- CLEANLIBS="$LIBS"
- CLEANCPPFLAGS="$CPPFLAGS"
+ PKGCONFIG="no"
- LIBS="$addlib $LIBS"
- if test "$addcflags" != "-I/usr/include"; then
- CPPFLAGS="$CPPFLAGS $addcflags"
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+ ac_pt_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_pt_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+
+ if test x$PKGCONFIG != xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nss options with pkg-config" >&5
+$as_echo_n "checking for nss options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$NSS_PCDIR"; then
+ PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists nss >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+ fi
+ fi
+
+ if test "$PKGCONFIG" != "no" ; then
+ addld=`
+ if test -n "$NSS_PCDIR"; then
+ PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --libs-only-L nss`
+ addlib=`
+ if test -n "$NSS_PCDIR"; then
+ PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --libs-only-l nss`
+ addcflags=`
+ if test -n "$NSS_PCDIR"; then
+ PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --cflags nss`
+ version=`
+ if test -n "$NSS_PCDIR"; then
+ PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --modversion nss`
+ nssprefix=`
+ if test -n "$NSS_PCDIR"; then
+ PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --variable=prefix nss`
+ fi
fi
+ fi
+
+ if test -z "$addlib"; then
+ # Without pkg-config, we'll kludge in some defaults
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using hard-wired libraries and compilation flags for NSS." >&5
+$as_echo "$as_me: WARNING: Using hard-wired libraries and compilation flags for NSS." >&2;}
+ addld="-L$OPT_NSS/lib"
+ addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4"
+ addcflags="-I$OPT_NSS/include"
+ version="unknown"
+ nssprefix=$OPT_NSS
+ fi
+
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANLIBS="$LIBS"
+ CLEANCPPFLAGS="$CPPFLAGS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_VersionRangeSet in -lnss3" >&5
+ LDFLAGS="$addld $LDFLAGS"
+ LIBS="$addlib $LIBS"
+ if test "$addcflags" != "-I/usr/include"; then
+ CPPFLAGS="$CPPFLAGS $addcflags"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_VersionRangeSet in -lnss3" >&5
$as_echo_n "checking for SSL_VersionRangeSet in -lnss3... " >&6; }
if ${ac_cv_lib_nss3_SSL_VersionRangeSet+:} false; then :
$as_echo_n "(cached) " >&6
@@ -23760,37 +24170,36 @@ if test "x$ac_cv_lib_nss3_SSL_VersionRangeSet" = xyes; then :
$as_echo "#define USE_NSS 1" >>confdefs.h
- USE_NSS=1
+ USE_NSS=1
- USE_NSS="yes"
- NSS_ENABLED=1
- curl_ssl_msg="enabled (NSS)"
+ USE_NSS="yes"
+ NSS_ENABLED=1
+ curl_ssl_msg="enabled (NSS)"
else
- LIBS="$CLEANLIBS"
- CPPFLAGS="$CLEANCPPFLAGS"
+ LDFLAGS="$CLEANLDFLAGS"
+ LIBS="$CLEANLIBS"
+ CPPFLAGS="$CLEANCPPFLAGS"
fi
- if test "x$USE_NSS" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
+ if test "x$USE_NSS" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
$as_echo "$as_me: detected NSS version $version" >&6;}
- NSS_LIBS=$addlib
+ NSS_LIBS=$addlib
- if test "x$cross_compiling" != "xyes"; then
- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
- export LD_LIBRARY_PATH
- { $as_echo "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&5
+ if test "x$cross_compiling" != "xyes"; then
+ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
+ export LD_LIBRARY_PATH
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&5
$as_echo "$as_me: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&6;}
- fi
fi
fi
-
fi
fi
OPT_AXTLS=off
@@ -23935,13 +24344,14 @@ fi
if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
"x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
- as_fn_error $? "Can't specify both --with-ca-bundle and --with-ca-path." "$LINENO" 5
+ ca="$want_ca"
+ capath="$want_capath"
elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
ca="$want_ca"
capath="no"
elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
- if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
- as_fn_error $? "--with-ca-path only works with openSSL or PolarSSL" "$LINENO" 5
+ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
+ as_fn_error $? "--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL" "$LINENO" 5
fi
capath="$want_capath"
ca="no"
@@ -23993,7 +24403,8 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ca" >&5
$as_echo "$ca" >&6; }
- elif test "x$capath" != "xno"; then
+ fi
+ if test "x$capath" != "xno"; then
CURL_CA_PATH="\"$capath\""
cat >>confdefs.h <<_ACEOF
@@ -24002,7 +24413,8 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $capath (capath)" >&5
$as_echo "$capath (capath)" >&6; }
- else
+ fi
+ if test "x$ca" = "xno" && test "x$capath" = "xno"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
@@ -25744,9 +26156,11 @@ $as_echo "$as_me: -L is $LD_H2" >&6;}
CPPFLAGS="$CPPFLAGS $CPP_H2"
LIBS="$LIB_H2 $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_callbacks_set_send_callback in -lnghttp2" >&5
-$as_echo_n "checking for nghttp2_session_callbacks_set_send_callback in -lnghttp2... " >&6; }
-if ${ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback+:} false; then :
+ # use nghttp2_option_set_no_recv_client_magic to require nghttp2
+ # >= 1.0.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nghttp2_option_set_no_recv_client_magic in -lnghttp2" >&5
+$as_echo_n "checking for nghttp2_option_set_no_recv_client_magic in -lnghttp2... " >&6; }
+if ${ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -25758,26 +26172,26 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char nghttp2_session_callbacks_set_send_callback ();
+char nghttp2_option_set_no_recv_client_magic ();
int main (void)
{
-return nghttp2_session_callbacks_set_send_callback ();
+return nghttp2_option_set_no_recv_client_magic ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback=yes
+ ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic=yes
else
- ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback=no
+ ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" >&5
-$as_echo "$ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" >&6; }
-if test "x$ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic" >&5
+$as_echo "$ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic" >&6; }
+if test "x$ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic" = xyes; then :
for ac_header in nghttp2/nghttp2.h
do :
@@ -38758,7 +39172,7 @@ if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
as_fn_error $? "Options --enable-threaded-resolver and --enable-ares are mutually exclusive" "$LINENO" 5
fi
-if test "$want_thres" = "yes"; then
+if test "$want_thres" = "yes" && test "$dontwant_rt" = "no"; then
ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
if test "x$ac_cv_header_pthread_h" = xyes; then :
@@ -38998,7 +39412,7 @@ $as_echo "yes" >&6; }
fi
-if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
+if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then
$as_echo "#define USE_TLS_SRP 1" >>confdefs.h
@@ -39164,7 +39578,7 @@ ENABLE_STATIC="$enable_static"
-if test "x$USE_SSLEAY" = "x1"; then
+if test "x$OPENSSL_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
elif test -n "$SSL_ENABLED"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
@@ -39203,7 +39617,7 @@ if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
fi
if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
- if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+ if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
-o "x$DARWINSSL_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
@@ -39275,7 +39689,7 @@ if test "x$CURL_DISABLE_IMAP" != "x1"; then
fi
if test "x$CURL_DISABLE_SMB" != "x1" \
-a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
- -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+ -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
-o "x$DARWINSSL_ENABLED" = "x1" \); then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
diff --git a/configure.ac b/configure.ac
index a1b560ceb..683299d10 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -47,6 +47,7 @@ CURL_CHECK_OPTION_WERROR
CURL_CHECK_OPTION_CURLDEBUG
CURL_CHECK_OPTION_SYMBOL_HIDING
CURL_CHECK_OPTION_ARES
+CURL_CHECK_OPTION_RT
XC_CHECK_PATH_SEPARATOR
@@ -1046,7 +1047,7 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
if test "$LDAPLIBNAME" = "wldap32"; then
curl_ldap_msg="enabled (winldap)"
- AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
+ AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
else
curl_ldap_msg="enabled (OpenLDAP)"
if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
@@ -1184,6 +1185,8 @@ AC_ARG_WITH(gssapi,
fi
])
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
save_CPPFLAGS="$CPPFLAGS"
AC_MSG_CHECKING([if GSS-API support is requested])
if test x"$want_gss" = xyes; then
@@ -1192,8 +1195,8 @@ if test x"$want_gss" = xyes; then
if test -z "$GSSAPI_INCS"; then
if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
- elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
- GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
+ elif test -f "$KRB5CONFIG"; then
+ GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
elif test "$GSSAPI_ROOT" != "yes"; then
GSSAPI_INCS="-I$GSSAPI_ROOT/include"
fi
@@ -1283,10 +1286,10 @@ if test x"$want_gss" = xyes; then
dnl into LIBS
gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
LIBS="$gss_libs $LIBS"
- elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
+ elif test -f "$KRB5CONFIG"; then
dnl krb5-config doesn't have --libs-only-L or similar, put everything
dnl into LIBS
- gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
+ gss_libs=`$KRB5CONFIG --libs gssapi`
LIBS="$gss_libs $LIBS"
else
case $host in
@@ -1451,6 +1454,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
+ AC_SUBST(SSL_LIBS)
AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
@@ -1506,6 +1510,46 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
if test X"$HAVECRYPTO" = X"yes"; then
+ AC_MSG_CHECKING([OpenSSL linking without -ldl])
+ saved_libs=$LIBS
+ AC_TRY_LINK(
+ [
+ #include <openssl/evp.h>
+ ],
+ [
+ SSLeay_add_all_algorithms();
+ ],
+ [
+ AC_MSG_RESULT(yes)
+ LIBS="$saved_libs"
+ ],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_CHECKING([OpenSSL linking with -ldl])
+ LIBS="-ldl $LIBS"
+ AC_TRY_LINK(
+ [
+ #include <openssl/evp.h>
+ ],
+ [
+ SSLeay_add_all_algorithms();
+ ],
+ [
+ AC_MSG_RESULT(yes)
+ LIBS="$saved_libs -ldl"
+ ],
+ [
+ AC_MSG_RESULT(no)
+ LIBS="$saved_libs"
+ ]
+ )
+
+ ]
+ )
+
+ fi
+
+ if test X"$HAVECRYPTO" = X"yes"; then
dnl This is only reasonable to do if crypto actually is there: check for
dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
@@ -1527,7 +1571,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
else
- dnl Have the libraries--check for SSLeay/OpenSSL headers
+ dnl Have the libraries--check for OpenSSL headers
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
openssl/pem.h openssl/ssl.h openssl/err.h,
curl_ssl_msg="enabled (OpenSSL)"
@@ -1551,17 +1595,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
fi
if test X"$OPENSSL_ENABLED" = X"1"; then
- AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
-
dnl is there a pkcs12.h header present?
AC_CHECK_HEADERS(openssl/pkcs12.h)
else
LIBS="$CLEANLIBS"
fi
- dnl USE_SSLEAY is the historical name for what configure calls
- dnl OPENSSL_ENABLED; the names should really be unified
- USE_SSLEAY="$OPENSSL_ENABLED"
- AC_SUBST(USE_SSLEAY)
if test X"$OPT_SSL" != Xoff &&
test "$OPENSSL_ENABLED" != "1"; then
@@ -1578,8 +1616,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
])
- dnl these can only exist if openssl exists
- dnl yassl doesn't have SSL_get_shutdown
+ dnl These can only exist if OpenSSL exists
+ dnl Older versions of Cyassl (some time before 2.9.4) don't have
+ dnl SSL_get_shutdown (but this check won't actually detect it there
+ dnl as it's a macro that needs the header files be included)
+ dnl BoringSSL doesn't have DES_set_odd_parity
AC_CHECK_FUNCS( RAND_status \
RAND_screen \
@@ -1587,28 +1628,30 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
ENGINE_cleanup \
CRYPTO_cleanup_all_ex_data \
SSL_get_shutdown \
- SSLv2_client_method )
-
- dnl Make an attempt to detect if this is actually yassl's headers and
- dnl OpenSSL emulation layer. We still leave everything else believing
- dnl and acting like OpenSSL.
-
- AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
+ SSLv2_client_method \
+ DES_set_odd_parity )
+
+ AC_MSG_CHECKING([for BoringSSL])
+ if test "x$ac_cv_func_DES_set_odd_parity" != "xyes"; then
+ curl_ssl_msg="enabled (BoringSSL)"
+ AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1,
+ [Define to 1 if using BoringSSL.])
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ AC_MSG_CHECKING([for libressl])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#include <openssl/ssl.h>
+#include <openssl/opensslv.h>
]],[[
-#if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
- int dummy = SSL_ERROR_NONE;
-#else
- Not the yaSSL OpenSSL compatibility header.
-#endif
+ int dummy = LIBRESSL_VERSION_NUMBER;
]])
],[
AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
- [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
- curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
+ AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1,
+ [Define to 1 if using libressl.])
+ curl_ssl_msg="enabled (libressl)"
],[
AC_MSG_RESULT([no])
])
@@ -1672,8 +1715,8 @@ dnl ---
if test "$OPENSSL_ENABLED" = "1"; then
AC_CHECK_LIB(crypto, SRP_Calc_client_key,
[
- AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
- AC_SUBST(HAVE_SSLEAY_SRP, [1])
+ AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key])
+ AC_SUBST(HAVE_OPENSSL_SRP, [1])
])
fi
@@ -1943,6 +1986,10 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
OPT_CYASSL=""
fi
+ dnl This should be reworked to use pkg-config instead
+
+ cyassllibname=cyassl
+
if test -z "$OPT_CYASSL" ; then
dnl check for lib in system default first
@@ -1984,19 +2031,70 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
[
CPPFLAGS=$_cppflags
LDFLAGS=$_ldflags
+ cyassllib=""
])
fi
+ addld=""
+ addlib=""
+ addcflags=""
+
+ if test "x$USE_CYASSL" != "xyes"; then
+ dnl libcyassl renamed to libwolfssl as of 3.4.0
+ addld=-L$OPT_CYASSL/lib$libsuff
+ addcflags=-I$OPT_CYASSL/include
+ cyassllib=$OPT_CYASSL/lib$libsuff
+
+ LDFLAGS="$LDFLAGS $addld"
+ if test "$addcflags" != "-I/usr/include"; then
+ CPPFLAGS="$CPPFLAGS $addcflags"
+ fi
+
+ cyassllibname=wolfssl
+ my_ac_save_LIBS="$LIBS"
+ LIBS="-l$cyassllibname -lm $LIBS"
+
+ AC_MSG_CHECKING([for CyaSSL_Init in -lwolfssl])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+/* These aren't needed for detection and confuse WolfSSL.
+ They are set up properly later if it is detected. */
+#undef SIZEOF_LONG
+#undef SIZEOF_LONG_LONG
+#include <cyassl/ssl.h>
+ ]],[[
+ return CyaSSL_Init();
+ ]])
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
+ AC_SUBST(USE_CYASSL, [1])
+ CYASSL_ENABLED=1
+ USE_CYASSL="yes"
+ curl_ssl_msg="enabled (CyaSSL)"
+ ],
+ [
+ AC_MSG_RESULT(no)
+ CPPFLAGS=$_cppflags
+ LDFLAGS=$_ldflags
+ cyassllib=""
+ ])
+ LIBS="$my_ac_save_LIBS"
+ fi
+
if test "x$USE_CYASSL" = "xyes"; then
AC_MSG_NOTICE([detected CyaSSL])
dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
AC_CHECK_SIZEOF(long long)
+ dnl Versions since at least 2.6.0 may have options.h
+ AC_CHECK_HEADERS(cyassl/options.h)
+
dnl Versions since at least 2.9.4 renamed error.h to error-ssl.h
AC_CHECK_HEADERS(cyassl/error-ssl.h)
- LIBS="-lcyassl -lm $LIBS"
+ LIBS="-l$cyassllibname -lm $LIBS"
if test -n "$cyassllib"; then
dnl when shared libs were found in a path that the run-time
@@ -2063,56 +2161,72 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
fi
fi
else
- # Without pkg-config, we'll kludge in some defaults
- addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
- addcflags="-I$OPT_NSS/include"
- version="unknown"
- nssprefix=$OPT_NSS
+ NSS_PCDIR="$OPT_NSS/lib/pkgconfig"
+ if test -f "$NSS_PCDIR/nss.pc"; then
+ CURL_CHECK_PKGCONFIG(nss, [$NSS_PCDIR])
+ if test "$PKGCONFIG" != "no" ; then
+ addld=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-L nss`
+ addlib=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-l nss`
+ addcflags=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --cflags nss`
+ version=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --modversion nss`
+ nssprefix=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --variable=prefix nss`
+ fi
+ fi
fi
- if test -n "$addlib"; then
+ if test -z "$addlib"; then
+ # Without pkg-config, we'll kludge in some defaults
+ AC_MSG_WARN([Using hard-wired libraries and compilation flags for NSS.])
+ addld="-L$OPT_NSS/lib"
+ addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4"
+ addcflags="-I$OPT_NSS/include"
+ version="unknown"
+ nssprefix=$OPT_NSS
+ fi
- CLEANLIBS="$LIBS"
- CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANLIBS="$LIBS"
+ CLEANCPPFLAGS="$CPPFLAGS"
- LIBS="$addlib $LIBS"
- if test "$addcflags" != "-I/usr/include"; then
- CPPFLAGS="$CPPFLAGS $addcflags"
- fi
+ LDFLAGS="$addld $LDFLAGS"
+ LIBS="$addlib $LIBS"
+ if test "$addcflags" != "-I/usr/include"; then
+ CPPFLAGS="$CPPFLAGS $addcflags"
+ fi
- dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
- AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
- [
- AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
- AC_SUBST(USE_NSS, [1])
- USE_NSS="yes"
- NSS_ENABLED=1
- curl_ssl_msg="enabled (NSS)"
- ],
- [
- LIBS="$CLEANLIBS"
- CPPFLAGS="$CLEANCPPFLAGS"
- ])
+ dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
+ AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
+ [
+ AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
+ AC_SUBST(USE_NSS, [1])
+ USE_NSS="yes"
+ NSS_ENABLED=1
+ curl_ssl_msg="enabled (NSS)"
+ ],
+ [
+ LDFLAGS="$CLEANLDFLAGS"
+ LIBS="$CLEANLIBS"
+ CPPFLAGS="$CLEANCPPFLAGS"
+ ])
- if test "x$USE_NSS" = "xyes"; then
- AC_MSG_NOTICE([detected NSS version $version])
+ if test "x$USE_NSS" = "xyes"; then
+ AC_MSG_NOTICE([detected NSS version $version])
- dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
- NSS_LIBS=$addlib
- AC_SUBST([NSS_LIBS])
+ dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
+ NSS_LIBS=$addlib
+ AC_SUBST([NSS_LIBS])
- dnl when shared libs were found in a path that the run-time
- dnl linker doesn't search through, we need to add it to
- dnl LD_LIBRARY_PATH to prevent further configure tests to fail
- dnl due to this
- if test "x$cross_compiling" != "xyes"; then
- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
- export LD_LIBRARY_PATH
- AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
- fi
+ dnl when shared libs were found in a path that the run-time
+ dnl linker doesn't search through, we need to add it to
+ dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+ dnl due to this
+ if test "x$cross_compiling" != "xyes"; then
+ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
+ export LD_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
fi
- fi
+ fi dnl NSS found
fi dnl NSS not disabled
@@ -2768,7 +2882,9 @@ if test X"$want_h2" != Xno; then
CPPFLAGS="$CPPFLAGS $CPP_H2"
LIBS="$LIB_H2 $LIBS"
- AC_CHECK_LIB(nghttp2, nghttp2_session_callbacks_set_send_callback,
+ # use nghttp2_option_set_no_recv_client_magic to require nghttp2
+ # >= 1.0.0
+ AC_CHECK_LIB(nghttp2, nghttp2_option_set_no_recv_client_magic,
[
AC_CHECK_HEADERS(nghttp2/nghttp2.h,
curl_h2_msg="enabled (nghttp2)"
@@ -3142,7 +3258,7 @@ if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
[Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
fi
-if test "$want_thres" = "yes"; then
+if test "$want_thres" = "yes" && test "$dontwant_rt" = "no"; then
AC_CHECK_HEADER(pthread.h,
[ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
save_CFLAGS="$CFLAGS"
@@ -3268,7 +3384,7 @@ AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
want_tls_srp=yes
)
-if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
+if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then
AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
USE_TLS_SRP=1
curl_tls_srp_msg="enabled"
@@ -3382,7 +3498,7 @@ dnl For keeping supported features and protocols also in pkg-config file
dnl since it is more cross-compile friendly than curl-config
dnl
-if test "x$USE_SSLEAY" = "x1"; then
+if test "x$OPENSSL_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
elif test -n "$SSL_ENABLED"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
@@ -3421,7 +3537,7 @@ if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
fi
if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
- if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+ if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
-o "x$DARWINSSL_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
@@ -3494,7 +3610,7 @@ if test "x$CURL_DISABLE_IMAP" != "x1"; then
fi
if test "x$CURL_DISABLE_SMB" != "x1" \
-a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
- -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+ -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
-o "x$DARWINSSL_ENABLED" = "x1" \); then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
diff --git a/curl-config.in b/curl-config.in
index 1ddf4c2c7..939872241 100644
--- a/curl-config.in
+++ b/curl-config.in
@@ -71,7 +71,7 @@ while test $# -gt 0; do
;;
--ca)
- echo "@CURL_CA_BUNDLE@"
+ echo @CURL_CA_BUNDLE@
;;
--cc)
diff --git a/depcomp b/depcomp
index 4ebd5b3a2..fc98710e2 100755
--- a/depcomp
+++ b/depcomp
@@ -3,7 +3,7 @@
scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/docs/BINDINGS b/docs/BINDINGS
index d4cf488d8..fed16e990 100644
--- a/docs/BINDINGS
+++ b/docs/BINDINGS
@@ -50,7 +50,7 @@ Cocoa
D
Written by Kenneth Bogert
- http://curl.haxx.se/libcurl/d/
+ http://dlang.org/library/std/net/curl.html
Dylan
@@ -60,7 +60,7 @@ Dylan
Eiffel
Written by Eiffel Software
- http://curl.haxx.se/libcurl/eiffel/
+ https://room.eiffel.com/library/curl
Euphoria
@@ -78,7 +78,7 @@ Ferite
Gambas
- http://gambas.sourceforge.net
+ http://gambas.sourceforge.net/
glib/GTK+
@@ -90,6 +90,11 @@ Guile:
Written by Michael L. Gran
http://www.lonelycactus.com/guile-curl.html
+Harbour
+
+ Written by Viktor Szakáts
+ https://github.com/vszakats/harbour-core/tree/master/contrib/hbcurl
+
Haskell
Written by Galois, Inc
@@ -97,8 +102,7 @@ Haskell
Java
- Maintained by [blank]
- http://curl.haxx.se/libcurl/java/
+ https://github.com/pjlegato/curl-java
Julia
@@ -115,7 +119,7 @@ Lua
luacurl by Alexander Marinov
http://luacurl.luaforge.net/
- Lua-cURL by Jürgen Hötzel
+ Lua-cURL by Jürgen Hötzel
http://luaforge.net/projects/lua-curl/
Mono
@@ -126,7 +130,7 @@ Mono
.NET
libcurl-net by Jeffrey Phillips
- http://sourceforge.net/projects/libcurl-net/
+ https://sourceforge.net/projects/libcurl-net/
node.js
@@ -141,7 +145,7 @@ Object-Pascal
O'Caml
Written by Lars Nilsson
- http://sourceforge.net/projects/ocurl/
+ https://sourceforge.net/projects/ocurl/
Pascal
@@ -150,13 +154,13 @@ Pascal
Perl
- Maintained by Cris Bailiff
- http://curl.haxx.se/libcurl/perl/
+ Maintained by Cris Bailiff and Bálint Szilakszi
+ https://github.com/szbalint/WWW--Curl
PHP
Written by Sterling Hughes
- http://curl.haxx.se/libcurl/php/
+ https://php.net/curl
PostgreSQL
@@ -170,8 +174,7 @@ Python
R
- RCurl by Duncan Temple Lang
- http://www.omegahat.org/RCurl/
+ http://cran.r-project.org/package=curl
Rexx
@@ -192,10 +195,15 @@ Ruby
ruby-curl-multi - written by Kristjan Petursson and Keith Rarick
http://curl-multi.rubyforge.org/
+Rust
+
+ curl-rust - by Carl Lerche
+ https://github.com/carllerche/curl-rust
+
Scheme
Bigloo binding by Kirill Lisovsky
- http://curl.haxx.se/libcurl/scheme/
+ http://www.metapaper.net/lisovsky/web/curl/
S-Lang
@@ -219,13 +227,13 @@ SPL
Tcl
- Tclcurl by Andrés García
- http://personal1.iddeo.es/andresgarci/tclcurl/english/docs.html
+ Tclcurl by Andrés García
+ http://mirror.yellow5.com/tclcurl/
Visual Basic
libcurl-vb by Jeffrey Phillips
- http://sourceforge.net/projects/libcurl-vb/
+ https://sourceforge.net/projects/libcurl-vb/
Visual Foxpro
@@ -245,3 +253,8 @@ XBLite
Written by David Szafranski
http://perso.wanadoo.fr/xblite/libraries.html
+
+Xojo
+
+ Written by Andrew Lambert
+ https://github.com/charonn0/RB-libcURL
diff --git a/docs/BUGS b/docs/BUGS
index c0c6fa82a..36686ef87 100644
--- a/docs/BUGS
+++ b/docs/BUGS
@@ -35,11 +35,9 @@ BUGS
have a go at a solution. You can optionally also post your bug/problem at
curl's bug tracking system over at
- https://sourceforge.net/p/curl/bugs/
+ https://github.com/bagder/curl/issues
- Please read the rest of this document below first before doing that! Also,
- you need to login to your sourceforge account before being able to submit a
- bug report (necessary evil done to avoid spam).
+ Please read the rest of this document below first before doing that!
If you feel you need to ask around first, find a suitable mailing list and
post there. The lists are available on http://curl.haxx.se/mail/
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..04ea66ed9
--- /dev/null
+++ b/docs/CODE_OF_CONDUCT.md
@@ -0,0 +1,32 @@
+Contributor Code of Conduct
+===========================
+
+As contributors and maintainers of this project, we pledge to respect all
+people who contribute through reporting issues, posting feature requests,
+updating documentation, submitting pull requests or patches, and other
+activities.
+
+We are committed to making participation in this project a harassment-free
+experience for everyone, regardless of level of experience, gender, gender
+identity and expression, sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, or religion.
+
+Examples of unacceptable behavior by participants include the use of sexual
+language or imagery, derogatory comments or personal attacks, trolling, public
+or private harassment, insults, or other unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct. Project maintainers who do not
+follow the Code of Conduct may be removed from the project team.
+
+This code of conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by opening an issue or contacting one or more of the project
+maintainers.
+
+This Code of Conduct is adapted from the [Contributor
+Covenant](http://contributor-covenant.org), version 1.1.0, available at
+[http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)
diff --git a/docs/CONTRIBUTE b/docs/CONTRIBUTE
index 83fa42099..c6ea9773f 100644
--- a/docs/CONTRIBUTE
+++ b/docs/CONTRIBUTE
@@ -34,7 +34,7 @@
3.3 How To Make a Patch without git
3.4 How to get your changes into the main sources
3.5 Write good commit messages
- 3.6 Please don't send pull requests
+ 3.6 About pull requests
==============================================================================
@@ -52,6 +52,10 @@
We also hang out on IRC in #curl on irc.freenode.net
+ If you're at all interested in the code side of things, consider clicking
+ 'watch' on the curl repo at github to get notified on pull requests and new
+ issues posted there.
+
1.2. License
When contributing with code, you agree to put your changes and new code under
@@ -78,10 +82,10 @@
1.3 What To Read
- Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS, the
- most recent CHANGES. Just lurking on the curl-library mailing list is gonna
- give you a lot of insights on what's going on right now. Asking there is a
- good idea too.
+ Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS and the
+ most recent changes in the git log. Just lurking on the curl-library mailing
+ list is gonna give you a lot of insights on what's going on right now. Asking
+ there is a good idea too.
2. cURL Coding Standards
@@ -199,7 +203,7 @@
You need to first checkout the repository:
- git clone git://github.com/bagder/curl.git
+ git clone https://github.com/bagder/curl.git
You then proceed and edit all the files you like and you commit them to your
local repository:
@@ -241,8 +245,8 @@
For unix-like operating systems:
- http://www.gnu.org/software/patch/patch.html
- http://www.gnu.org/directory/diffutils.html
+ https://savannah.gnu.org/projects/patch/
+ https://www.gnu.org/software/diffutils/
For Windows:
@@ -288,27 +292,15 @@
and make sure that you have your own user and email setup correctly in git
before you commit
-3.6 Please don't send pull requests
+3.6 About pull requests
With git (and especially github) it is easy and tempting to send a pull
- request to one or more people in the curl project to have changes merged this
- way instead of mailing patches to the curl-library mailing list.
-
- We don't like that. We want them mailed for these reasons:
-
- - Peer review. Anyone and everyone on the list can review, comment and
- improve on the patch. Pull requests limit this ability.
-
- - Anyone can merge the patch into their own trees for testing and those who
- have push rights can push it to the main repo. It doesn't have to be anyone
- the patch author knows beforehand.
-
- - Commit messages can be tweaked and changed if merged locally instead of
- using github. Merges directly on github requires the changes to be perfect
- already, which they seldom are.
+ request to the curl project to have changes merged this way instead of
+ mailing patches to the curl-library mailing list.
- - Merges on github prevents rebases and even enforces --no-ff which is a git
- style we don't otherwise use in the project
+ We used to dislike this but we're trying to change that and accept that this
+ is a frictionless way for people to contribute to the project. We now welcome
+ pull requests!
- However: once patches have been reviewed and deemed fine on list they are
- perfectly OK to be pulled from a published git tree.
+ We will continue to avoid using github's merge tools to make the history
+ linear and to make sure commits follow our style guidelines.
diff --git a/docs/DISTRO-DILEMMA b/docs/DISTRO-DILEMMA
index 71186a268..2d317fdb0 100644
--- a/docs/DISTRO-DILEMMA
+++ b/docs/DISTRO-DILEMMA
@@ -112,7 +112,7 @@ The Better License, Original BSD, GPL or LGPL?
In Debian land, there seems to be a common opinion that LGPL is "maximally
compatible" with apps while Original BSD is not. Like this:
- http://lists.debian.org/debian-devel/2005/09/msg01417.html
+ https://lists.debian.org/debian-devel/2005/09/msg01417.html
More SSL Libraries
@@ -163,13 +163,13 @@ Distro Angle of this Problem
Footnotes
[1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
- [2] = http://www.fsf.org/licensing/essays/bsd.html
- [3] = http://www.fsf.org/licensing/licenses/gpl.html
+ [2] = https://www.gnu.org/philosophy/bsd.html
+ [3] = https://www.gnu.org/licenses/gpl.html
[4] = http://curl.haxx.se/docs/copyright.html
- [5] = http://www.openssl.org/source/license.html
- [6] = http://www.fsf.org/licensing/licenses/gpl.html end of section 3
- [7] = http://www.fsf.org/licensing/licenses/lgpl.html
- [8] = http://en.wikipedia.org/wiki/OpenSSL_exception
+ [5] = https://www.openssl.org/source/license.html
+ [6] = https://www.gnu.org/licenses/gpl.html end of section 3
+ [7] = https://www.gnu.org/licenses/lgpl.html
+ [8] = https://en.wikipedia.org/wiki/OpenSSL_exception
Feedback/Updates provided by
diff --git a/docs/FAQ b/docs/FAQ
index 043b7bbc1..06a306d99 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -21,6 +21,7 @@ FAQ
1.12 I have a problem who can I chat with?
1.13 curl's ECCN number?
1.14 How do I submit my patch?
+ 1.15 How do I port libcurl to my OS?
2. Install Related Problems
2.1 configure doesn't find OpenSSL even when it is installed
@@ -81,6 +82,7 @@ FAQ
4.18 file:// URLs containing drive letters (Windows, NetWare)
4.19 Why doesn't cURL return an error when the network cable is unplugged?
4.20 curl doesn't return error for HTTP non-200 responses!
+ 4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
5. libcurl Issues
5.1 Is libcurl thread-safe?
@@ -350,7 +352,7 @@ FAQ
cryptography. When doing so, the Export Control Classification Number (ECCN)
is used to identify the level of export control etc.
- ASF gives a good explanation at http://www.apache.org/dev/crypto.html
+ ASF gives a good explanation at https://www.apache.org/dev/crypto.html
We believe curl's number might be ECCN 5D002, another possibility is
5D992. It seems necessary to write them, asking to confirm.
@@ -379,6 +381,19 @@ FAQ
Lots of more details are found in the CONTRIBUTE and INTERNALS docs.
+ 1.15 How do I port libcurl to my OS?
+
+ Here's a rough step-by-step:
+
+ 1. copy a suitable lib/config-*.h file as a start to lib/config-[youros].h
+
+ 2. edit lib/config-[youros].h to match your OS and setup
+
+ 3. edit lib/curl_setup.h to include config-[youros].h when your OS is
+ detected by the preprocessor, in the style others already exist
+
+ 4. compile lib/*.c and make them into a library
+
2. Install Related Problems
@@ -764,8 +779,9 @@ FAQ
request-body in a GET request with something like "curl -X GET -d data
[URL]"
- Note that -X doesn't change curl's behavior. It only modifies the actual
- string sent in the request.
+ Note that -X doesn't actually change curl's behavior as it only modifies the
+ actual string sent in the request, but that may of course trigger a
+ different set of events.
Accordingly, by using -XPOST on a command line that for example would follow
a 303 redirect, you will effectively prevent curl from behaving
@@ -1026,7 +1042,7 @@ FAQ
timeout is set.
See option TcpMaxConnectRetransmissions on this page:
- http://support.microsoft.com/?scid=kb%3Ben-us%3B175523&x=6&y=7
+ https://support.microsoft.com/en-us/kb/175523/en-us
Also, even on non-Windows systems there may run a firewall or anti-virus
software or similar that accepts the connection but does not actually do
@@ -1043,7 +1059,7 @@ FAQ
You'll find that even if D:\blah.txt does exist, cURL returns a 'file
not found' error.
- According to RFC 1738 (http://www.faqs.org/rfcs/rfc1738.html),
+ According to RFC 1738 (https://www.ietf.org/rfc/rfc1738.txt),
file:// URLs must contain a host component, but it is ignored by
most implementations. In the above example, 'D:' is treated as the
host component, and is taken away. Thus, cURL tries to open '/blah.txt'.
@@ -1115,6 +1131,16 @@ FAQ
You can also use the -w option and the variable %{response_code} to extract
the exact response code that was return in the response.
+ 4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
+
+ If you use verbose to see the HTTP request when you send off a HTTP/2
+ request, it will still say 1.1.
+
+ The reason for this is that we first generate the request to send using the
+ old 1.1 style and show that request in the verbose output, and then we
+ convert it over to the binary header-compressed HTTP/2 style. The actual
+ "1.1" part from that request is then not actually used in the transfer. The
+ binary HTTP/2 headers are not human readable.
5. libcurl Issues
@@ -1137,13 +1163,13 @@ FAQ
If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
need to provide one or two locking functions:
- http://www.openssl.org/docs/crypto/threads.html
+ https://www.openssl.org/docs/crypto/threads.html
If you use a GnuTLS-powered libcurl in a multi-threaded environment, you
need to provide locking function(s) for libgcrypt (which is used by GnuTLS
for the crypto functions).
- http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
+ https://web.archive.org/web/20111103083330/http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
No special locking is needed with a NSS-powered libcurl. NSS is thread-safe.
@@ -1319,7 +1345,7 @@ FAQ
Also note that on many networks NATs or other IP-munging techniques are used
that makes you see and use a different IP address locally than what the
remote server will see you coming from. You may also consider using
- http://www.torproject.org .
+ https://www.torproject.org/ .
5.13 How do I stop an ongoing transfer?
diff --git a/docs/FEATURES b/docs/FEATURES
index a67400242..10fbdd570 100644
--- a/docs/FEATURES
+++ b/docs/FEATURES
@@ -134,8 +134,8 @@ SMB
- authentication with NTLMv1
SMTP
- - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and Kerberos 5
- (*4)
+ - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9), Kerberos 5
+ (*4) and External.
- send e-mails
- mail from support
- mail size support
@@ -150,8 +150,8 @@ SMTPS (*1)
POP3
- authentication: Clear Text, APOP and SASL
- - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and
- Kerberos 5 (*4)
+ - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9),
+ Kerberos 5 (*4) and External.
- list e-mails
- retrieve e-mails
- enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
@@ -165,8 +165,8 @@ POP3S (*1)
IMAP
- authentication: Clear Text and SASL
- - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and
- Kerberos 5 (*4)
+ - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9),
+ Kerberos 5 (*4) and External.
- list the folders of a mailbox
- select a mailbox with support for verifying the UIDVALIDITY
- fetch e-mails with support for specifying the UID and SECTION
diff --git a/docs/HTTP-COOKIES b/docs/HTTP-COOKIES
index 818e161ee..b5abddfa6 100644
--- a/docs/HTTP-COOKIES
+++ b/docs/HTTP-COOKIES
@@ -36,7 +36,7 @@ HTTP Cookies
For a very long time, the only spec explaining how to use cookies was the
original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html
- In 2011, RFC6265 (http://www.ietf.org/rfc/rfc6265.txt) was finally published
+ In 2011, RFC6265 (https://www.ietf.org/rfc/rfc6265.txt) was finally published
and details how cookies work within HTTP.
1.2 Cookies saved to disk
diff --git a/docs/HTTP2.md b/docs/HTTP2.md
new file mode 100644
index 000000000..b4e2983bd
--- /dev/null
+++ b/docs/HTTP2.md
@@ -0,0 +1,107 @@
+HTTP/2 with curl
+================
+
+[HTTP/2 Spec](https://www.rfc-editor.org/rfc/rfc7540.txt)
+[http2 explained](http://daniel.haxx.se/http2/)
+
+Build prerequisites
+-------------------
+ - nghttp2
+ - OpenSSL, NSS, GnutTLS or PolarSSL with a new enough version
+
+[nghttp2](https://nghttp2.org/)
+-------------------------------
+
+libcurl uses this 3rd party library for the low level protocol handling
+parts. The reason for this is that HTTP/2 is much more complex at that layer
+than HTTP/1.1 (which we implement on our own) and that nghttp2 is an already
+existing and well functional library.
+
+We require at least version 1.0.0.
+
+Over an http:// URL
+-------------------
+
+If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will
+include an upgrade header in the initial request to the host to allow
+upgrading to HTTP/2.
+
+Possibly we can later introduce an option that will cause libcurl to fail if
+not possible to upgrade. Possibly we introduce an option that makes libcurl
+use HTTP/2 at once over http://
+
+Over an https:// URL
+--------------------
+
+If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use
+ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce
+an option that will cause libcurl to fail if not possible to use HTTP/2.
+Consider options to explicitly disable ALPN and/or NPN.
+
+ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is
+for a similar purpose, was made prior to ALPN and is used for SPDY so early
+HTTP/2 servers are implemented using NPN before ALPN support is widespread.
+
+SSL libs
+--------
+
+The challenge is the ALPN and NPN support and all our different SSL
+backends. You may need a fairly updated SSL library version for it to
+provide the necessary TLS features. Right now we support:
+
+ - OpenSSL: ALPN and NPN
+ - NSS: ALPN and NPN
+ - GnuTLS: ALPN
+ - PolarSSL: ALPN
+
+Multiplexing
+------------
+
+Starting in 7.43.0, libcurl fully supports HTTP/2 multiplexing, which is the
+term for doing multiple independent transfers over the same physical TCP
+connection.
+
+To take advantage of multiplexing, you need to use the multi interface and set
+`CURLMOPT_PIPELINING` to `CURLPIPE_MULTIPLEX`. With that bit set, libcurl will
+attempt to re-use existing HTTP/2 connections and just add a new stream over
+that when doing subsequent parallel requests.
+
+While libcurl sets up a connection to a HTTP server there is a period during
+which it doesn't know if it can pipeline or do multiplexing and if you add new
+transfers in that period, libcurl will default to start new connections for
+those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0), you
+can ask that a transfer should rather wait and see in case there's a
+connection for the same host in progress that might end up being possible to
+multiplex on. It favours keeping the number of connections low to the cost of
+slightly longer time to first byte transferred.
+
+Applications
+------------
+
+We hide HTTP/2's binary nature and convert received HTTP/2 traffic to headers
+in HTTP 1.1 style. This allows applications to work unmodified.
+
+curl tool
+---------
+
+curl offers the `--http2` command line option to enable use of HTTP/2
+
+HTTP Alternative Services
+-------------------------
+
+Alt-Svc is a suggested extension with a corresponding frame (ALTSVC) in HTTP/2
+that tells the client about an alternative "route" to the same content for the
+same origin server that you get the response from. A browser or long-living
+client can use that hint to create a new connection asynchronously. For
+libcurl, we may introduce a way to bring such clues to the applicaton and/or
+let a subsequent request use the alternate route
+automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-05)
+
+TODO
+----
+
+ - Provide API to set priorities / dependencies of individual streams
+
+ - Implement "prior-knowledge" HTTP/2 connecitons over clear text so that
+ curl can connect with HTTP/2 at once without 1.1+Upgrade.
+
diff --git a/docs/INSTALL b/docs/INSTALL
index 30dec5343..67cd489da 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -173,13 +173,13 @@ Win32
advice given above.
KB94248 - How To Use the C Run-Time
- http://support.microsoft.com/kb/94248/en-us
+ https://support.microsoft.com/kb/94248/en-us
KB140584 - How to link with the correct C Run-Time (CRT) library
- http://support.microsoft.com/kb/140584/en-us
+ https://support.microsoft.com/kb/140584/en-us
KB190799 - Potential Errors Passing CRT Objects Across DLL Boundaries
- http://msdn.microsoft.com/en-us/library/ms235460
+ https://msdn.microsoft.com/en-us/library/ms235460
If your app is misbehaving in some strange way, or it is suffering
from memory corruption, before asking for further help, please try
@@ -209,8 +209,8 @@ Win32
environment variables, for example:
set ZLIB_PATH=c:\zlib-1.2.8
- set OPENSSL_PATH=c:\openssl-0.9.8zc
- set LIBSSH2_PATH=c:\libssh2-1.4.3
+ set OPENSSL_PATH=c:\openssl-1.0.2c
+ set LIBSSH2_PATH=c:\libssh2-1.6.0
ATTENTION: if you want to build with libssh2 support you have to use latest
version 0.17 - previous versions will NOT work with 7.17.0 and later!
@@ -232,7 +232,7 @@ Win32
- optional MingW32-built OpenLDAP SDK available from:
http://www.gknw.net/mirror/openldap/
- optional recent Novell CLDAP SDK available from:
- http://developer.novell.com/ndk/cldap.htm
+ https://www.novell.com/developer/ndk/ldap_libraries_for_c.html
Cygwin
------
@@ -254,7 +254,7 @@ Win32
If you use MSVC 6 it is required that you use the February 2003 edition of
the 'Platform SDK' which can be downloaded from:
- http://www.microsoft.com/en-us/download/details.aspx?id=12261
+ https://www.microsoft.com/en-us/download/details.aspx?id=12261
Building any software with MSVC 6 without having PSDK installed is just
asking for trouble down the road once you have released it, you might notice
@@ -263,7 +263,7 @@ Win32
software built in such way will at some point regret having done so.
If the compiler has been updated with the installation of a service pack as
- those mentioned in http://support.microsoft.com/kb/194022 the compiler can be
+ those mentioned in https://support.microsoft.com/kb/194022 the compiler can be
safely used to read source code, translate and make it object code.
But, even with the service packs mentioned above installed, the resulting
@@ -299,7 +299,7 @@ Win32
Then run 'nmake vc' in curl's root directory.
If you want to compile with zlib support, you will need to build
- zlib (http://www.gzip.org/zlib/) as well. Please read the zlib
+ zlib (http://www.zlib.net/) as well. Please read the zlib
documentation on how to compile zlib. Define the ZLIB_PATH environment
variable to the location of zlib.h and zlib.lib, for example:
@@ -471,6 +471,15 @@ Win32
add '-DCURL_STATICLIB' to your CFLAGS. Otherwise the linker will look for
dynamic import symbols.
+ Legacy Windows and SSL
+ ----------------------
+
+ WinSSL (specifically SChannel from Windows SSPI), is the native SSL library
+ in Windows. However, WinSSL in Windows <= XP is unable to connect to servers
+ that no longer support the legacy handshakes and algorithms used by those
+ versions. If you will be using curl in one of those earlier versions of
+ Windows you should choose another SSL backend such as OpenSSL.
+
Apple iOS and Mac OS X
======================
@@ -665,12 +674,10 @@ NetWare
- gnu make and awk running on the platform you compile on;
native Win32 versions can be downloaded from:
http://www.gknw.net/development/prgtools/
- - recent Novell LibC SDK available from:
- http://developer.novell.com/ndk/libc.htm
- - or recent Novell CLib SDK available from:
- http://developer.novell.com/ndk/clib.htm
+ - recent Novell LibC or Novell CLib SDK available from:
+ https://www.novell.com/developer/ndk/
- optional recent Novell CLDAP SDK available from:
- http://developer.novell.com/ndk/cldap.htm
+ https://www.novell.com/developer/ndk/ldap_libraries_for_c.html
- optional zlib sources (static or dynamic linking with zlib.imp);
sources with NetWare Makefile can be obtained from:
http://www.gknw.net/mirror/zlib/
@@ -825,7 +832,7 @@ VxWorks
To build libcurl for VxWorks you need:
- - CYGWIN (free, http://cygwin.com/)
+ - CYGWIN (free, https://cygwin.com/)
- Wind River Workbench (commercial)
If you have CYGWIN and Workbench installed on you machine
@@ -1086,18 +1093,18 @@ Useful URLs
axTLS http://axtls.sourceforge.net/
c-ares http://c-ares.haxx.se/
-GNU GSS http://www.gnu.org/software/gss/
-GnuTLS http://www.gnu.org/software/gnutls/
-Heimdal http://www.pdc.kth.se/heimdal/
-libidn http://www.gnu.org/software/libidn/
+GNU GSS https://www.gnu.org/software/gss/
+GnuTLS https://www.gnu.org/software/gnutls/
+Heimdal http://www.h5l.org/
+libidn https://www.gnu.org/software/libidn/
libmetalink https://launchpad.net/libmetalink/
libssh2 http://www.libssh2.org/
MIT Kerberos http://web.mit.edu/kerberos/www/dist/
-NSS http://www.mozilla.org/projects/security/pki/nss/
+NSS https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
OpenLDAP http://www.openldap.org/
-OpenSSL http://www.openssl.org/
-PolarSSL http://polarssl.org/
-yassl http://www.yassl.com/
+OpenSSL https://www.openssl.org/
+PolarSSL https://tls.mbed.org/
+wolfSSL https://www.wolfssl.com/wolfSSL/
Zlib http://www.zlib.net/
MingW http://www.mingw.org/
diff --git a/docs/INSTALL.devcpp b/docs/INSTALL.devcpp
index 46d1836af..ee2d7036f 100644
--- a/docs/INSTALL.devcpp
+++ b/docs/INSTALL.devcpp
@@ -95,7 +95,7 @@ install instructions may produce erratic behaviour in DevCpp. For further info
check the following sites
http://aditsu.freeunixhost.com/dev-cpp-faq.html
-http://sourceforge.net/forum/message.php?msg_id=3252213
+https://sourceforge.net/p/dev-cpp/discussion/48211/thread/2a85ea46
As I have mentioned before I will confine this to the SSL Library compilations
but the process is very similar for compilation of the executable - curl.exe;
diff --git a/docs/INTERNALS b/docs/INTERNALS
index f8b1b47b4..4cd63b4e2 100644
--- a/docs/INTERNALS
+++ b/docs/INTERNALS
@@ -1,18 +1,57 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
-INTERNALS
+Table of Contents
+=================
- The project is split in two. The library and the client. The client part uses
- the library, but the library is designed to allow other applications to use
- it.
+ - [Intro](#intro)
+ - [git](#git)
+ - [Portability](#Portability)
+ - [Windows vs Unix](#winvsunix)
+ - [Library](#Library)
+ - [`Curl_connect`](#Curl_connect)
+ - [`Curl_do`](#Curl_do)
+ - [`Curl_readwrite`](#Curl_readwrite)
+ - [`Curl_done`](#Curl_done)
+ - [`Curl_disconnect`](#Curl_disconnect)
+ - [HTTP(S)](#http)
+ - [FTP](#ftp)
+ - [Kerberos](#kerberos)
+ - [TELNET](#telnet)
+ - [FILE](#file)
+ - [SMB](#smb)
+ - [LDAP](#ldap)
+ - [E-mail](#email)
+ - [General](#general)
+ - [Persistent Connections](#persistent)
+ - [multi interface/non-blocking](#multi)
+ - [SSL libraries](#ssl)
+ - [Library Symbols](#symbols)
+ - [Return Codes and Informationals](#returncodes)
+ - [AP/ABI](#abi)
+ - [Client](#client)
+ - [Memory Debugging](#memorydebug)
+ - [Test Suite](#test)
+ - [Asynchronous name resolves](#asyncdns)
+ - [c-ares](#cares)
+ - [`curl_off_t`](#curl_off_t)
+ - [curlx](#curlx)
+ - [Content Encoding](#contentencoding)
+ - [hostip.c explained](#hostip)
+ - [Track Down Memory Leaks](#memoryleak)
+ - [`multi_socket`](#multi_socket)
+ - [Structs in libcurl](#structs)
+
+<a name="intro"></a>
+curl internals
+==============
+
+ This project is split in two. The library and the client. The client part
+ uses the library, but the library is designed to allow other applications to
+ use it.
The largest amount of code and complexity is in the library part.
-GIT
+
+<a name="git"></a>
+git
===
All changes to the sources are committed to the git repository as soon as
@@ -23,6 +62,7 @@ GIT
Tagging shall be used extensively, and by the time we release new archives we
should tag the sources with a name similar to the released version number.
+<a name="Portability"></a>
Portability
===========
@@ -34,45 +74,55 @@ Portability
want it to remain functional and buildable with these and later versions
(older versions may still work but is not what we work hard to maintain):
- OpenSSL 0.9.7
- GnuTLS 1.2
- zlib 1.1.4
- libssh2 0.16
- c-ares 1.6.0
- libidn 0.4.1
- cyassl 2.0.0
- openldap 2.0
- MIT Kerberos 1.2.4
- GSKit V5R3M0
- NSS 3.14.x
- axTLS 1.2.7
- PolarSSL 1.3.0
- Heimdal ?
- nghttp2 0.6.0
+Dependencies
+------------
+
+ - OpenSSL 0.9.7
+ - GnuTLS 1.2
+ - zlib 1.1.4
+ - libssh2 0.16
+ - c-ares 1.6.0
+ - libidn 0.4.1
+ - cyassl 2.0.0
+ - openldap 2.0
+ - MIT Kerberos 1.2.4
+ - GSKit V5R3M0
+ - NSS 3.14.x
+ - axTLS 1.2.7
+ - PolarSSL 1.3.0
+ - Heimdal ?
+ - nghttp2 1.0.0
+
+Operating Systems
+-----------------
On systems where configure runs, we aim at working on them all - if they have
a suitable C compiler. On systems that don't run configure, we strive to keep
curl running fine on:
- Windows 98
- AS/400 V5R3M0
- Symbian 9.1
- Windows CE ?
- TPF ?
+ - Windows 98
+ - AS/400 V5R3M0
+ - Symbian 9.1
+ - Windows CE ?
+ - TPF ?
+
+Build tools
+-----------
When writing code (mostly for generating stuff included in release tarballs)
we use a few "build tools" and we make sure that we remain functional with
these versions:
- GNU Libtool 1.4.2
- GNU Autoconf 2.57
- GNU Automake 1.7 (we currently avoid 1.10 due to Solaris-related bugs)
- GNU M4 1.4
- perl 5.004
- roffit 0.5
- groff ? (any version that supports "groff -Tps -man [in] [out]")
- ps2pdf (gs) ?
+ - GNU Libtool 1.4.2
+ - GNU Autoconf 2.57
+ - GNU Automake 1.7
+ - GNU M4 1.4
+ - perl 5.004
+ - roffit 0.5
+ - groff ? (any version that supports "groff -Tps -man [in] [out]")
+ - ps2pdf (gs) ?
+<a name="winvsunix"></a>
Windows vs Unix
===============
@@ -87,8 +137,9 @@ Windows vs Unix
2. Windows requires a couple of init calls for the socket stuff.
- That's taken care of by the curl_global_init() call, but if other libs also
- do it etc there might be reasons for applications to alter that behaviour.
+ That's taken care of by the `curl_global_init()` call, but if other libs
+ also do it etc there might be reasons for applications to alter that
+ behaviour.
3. The file descriptors for network communication and file operations are
not easily interchangeable as in unix.
@@ -101,28 +152,29 @@ Windows vs Unix
We set stdout to binary under windows
- Inside the source code, We make an effort to avoid '#ifdef [Your OS]'. All
+ Inside the source code, We make an effort to avoid `#ifdef [Your OS]`. All
conditionals that deal with features *should* instead be in the format
- '#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts,
- we maintain a curl_config-win32.h file in lib directory that is supposed to
- look exactly as a curl_config.h file would have looked like on a Windows
+ `#ifdef HAVE_THAT_WEIRD_FUNCTION`. Since Windows can't run configure scripts,
+ we maintain a `curl_config-win32.h` file in lib directory that is supposed to
+ look exactly as a `curl_config.h` file would have looked like on a Windows
machine!
Generally speaking: always remember that this will be compiled on dozens of
operating systems. Don't walk on the edge.
+<a name="Library"></a>
Library
=======
- (See LIBCURL-STRUCTS for a separate document describing all major internal
+ (See `LIBCURL-STRUCTS` for a separate document describing all major internal
structs and their purposes.)
There are plenty of entry points to the library, namely each publicly defined
function that libcurl offers to applications. All of those functions are
- rather small and easy-to-follow. All the ones prefixed with 'curl_easy' are
+ rather small and easy-to-follow. All the ones prefixed with `curl_easy` are
put in the lib/easy.c file.
- curl_global_init_() and curl_global_cleanup() should be called by the
+ `curl_global_init_()` and `curl_global_cleanup()` should be called by the
application to initialize and clean up global stuff in the library. As of
today, it can handle the global SSL initing if SSL is enabled and it can init
the socket layer on windows machines. libcurl itself has no "global" scope.
@@ -130,51 +182,56 @@ Library
All printf()-style functions use the supplied clones in lib/mprintf.c. This
makes sure we stay absolutely platform independent.
- curl_easy_init() allocates an internal struct and makes some initializations.
- The returned handle does not reveal internals. This is the 'SessionHandle'
- struct which works as an "anchor" struct for all curl_easy functions. All
- connections performed will get connect-specific data allocated that should be
- used for things related to particular connections/requests.
+ [ `curl_easy_init()`][2] allocates an internal struct and makes some
+ initializations. The returned handle does not reveal internals. This is the
+ 'SessionHandle' struct which works as an "anchor" struct for all `curl_easy`
+ functions. All connections performed will get connect-specific data allocated
+ that should be used for things related to particular connections/requests.
- curl_easy_setopt() takes three arguments, where the option stuff must be
- passed in pairs: the parameter-ID and the parameter-value. The list of
+ [`curl_easy_setopt()`][1] takes three arguments, where the option stuff must
+ be passed in pairs: the parameter-ID and the parameter-value. The list of
options is documented in the man page. This function mainly sets things in
the 'SessionHandle' struct.
- curl_easy_perform() is just a wrapper function that makes use of the multi
- API. It basically curl_multi_init(), curl_multi_add_handle(),
- curl_multi_wait(), and curl_multi_perform() until the transfer is done and
- then returns.
+ `curl_easy_perform()` is just a wrapper function that makes use of the multi
+ API. It basically calls `curl_multi_init()`, `curl_multi_add_handle()`,
+ `curl_multi_wait()`, and `curl_multi_perform()` until the transfer is done
+ and then returns.
Some of the most important key functions in url.c are called from multi.c
when certain key steps are to be made in the transfer operation.
- o Curl_connect()
+<a name="Curl_connect"></a>
+Curl_connect()
+--------------
Analyzes the URL, it separates the different components and connects to the
remote host. This may involve using a proxy and/or using SSL. The
- Curl_resolv() function in lib/hostip.c is used for looking up host names
+ `Curl_resolv()` function in lib/hostip.c is used for looking up host names
(it does then use the proper underlying method, which may vary between
platforms and builds).
- When Curl_connect is done, we are connected to the remote site. Then it is
- time to tell the server to get a document/file. Curl_do() arranges this.
+ When `Curl_connect` is done, we are connected to the remote site. Then it
+ is time to tell the server to get a document/file. `Curl_do()` arranges
+ this.
This function makes sure there's an allocated and initiated 'connectdata'
struct that is used for this particular connection only (although there may
be several requests performed on the same connect). A bunch of things are
inited/inherited from the SessionHandle struct.
- o Curl_do()
+<a name="Curl_do"></a>
+Curl_do()
+---------
- Curl_do() makes sure the proper protocol-specific function is called. The
+ `Curl_do()` makes sure the proper protocol-specific function is called. The
functions are named after the protocols they handle.
The protocol-specific functions of course deal with protocol-specific
- negotiations and setup. They have access to the Curl_sendf() (from
+ negotiations and setup. They have access to the `Curl_sendf()` (from
lib/sendf.c) function to send printf-style formatted data to the remote
host and when they're ready to make the actual file transfer they call the
- Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
+ `Curl_Transfer()` function (in lib/transfer.c) to setup the transfer and
returns.
If this DO function fails and the connection is being re-used, libcurl will
@@ -183,11 +240,13 @@ Library
we have discovered a dead connection before the DO function and thus we
might wrongly be re-using a connection that was closed by the remote peer.
- Some time during the DO function, the Curl_setup_transfer() function must
+ Some time during the DO function, the `Curl_setup_transfer()` function must
be called with some basic info about the upcoming transfer: what socket(s)
to read/write and the expected file transfer sizes (if known).
- o Curl_readwrite()
+<a name="Curl_readwrite"></a>
+Curl_readwrite()
+----------------
Called during the transfer of the actual protocol payload.
@@ -196,18 +255,22 @@ Library
called). The speedcheck functions in lib/speedcheck.c are also used to
verify that the transfer is as fast as required.
- o Curl_done()
+<a name="Curl_done"></a>
+Curl_done()
+-----------
Called after a transfer is done. This function takes care of everything
that has to be done after a transfer. This function attempts to leave
- matters in a state so that Curl_do() should be possible to call again on
+ matters in a state so that `Curl_do()` should be possible to call again on
the same connection (in a persistent connection case). It might also soon
- be closed with Curl_disconnect().
+ be closed with `Curl_disconnect()`.
- o Curl_disconnect()
+<a name="Curl_disconnect"></a>
+Curl_disconnect()
+-----------------
When doing normal connections and transfers, no one ever tries to close any
- connections so this is not normally called when curl_easy_perform() is
+ connections so this is not normally called when `curl_easy_perform()` is
used. This function is only used when we are certain that no more transfers
is going to be made on the connection. It can be also closed by force, or
it can be called to make sure that libcurl doesn't keep too many
@@ -216,8 +279,9 @@ Library
This function cleans up all resources that are associated with a single
connection.
-
- HTTP(S)
+<a name="http"></a>
+HTTP(S)
+=======
HTTP offers a lot and is the protocol in curl that uses the most lines of
code. There is a special file (lib/formdata.c) that offers all the multipart
@@ -229,100 +293,123 @@ Library
HTTPS uses in almost every means the same procedure as HTTP, with only two
exceptions: the connect procedure is different and the function used to read
or write from the socket is different, although the latter fact is hidden in
- the source by the use of Curl_read() for reading and Curl_write() for writing
- data to the remote server.
+ the source by the use of `Curl_read()` for reading and `Curl_write()` for
+ writing data to the remote server.
- http_chunks.c contains functions that understands HTTP 1.1 chunked transfer
+ `http_chunks.c` contains functions that understands HTTP 1.1 chunked transfer
encoding.
- An interesting detail with the HTTP(S) request, is the Curl_add_buffer()
+ An interesting detail with the HTTP(S) request, is the `Curl_add_buffer()`
series of functions we use. They append data to one single buffer, and when
the building is done the entire request is sent off in one single write. This
is done this way to overcome problems with flawed firewalls and lame servers.
- FTP
+<a name="ftp"></a>
+FTP
+===
- The Curl_if2ip() function can be used for getting the IP number of a
+ The `Curl_if2ip()` function can be used for getting the IP number of a
specified network interface, and it resides in lib/if2ip.c.
- Curl_ftpsendf() is used for sending FTP commands to the remote server. It was
- made a separate function to prevent us programmers from forgetting that they
- must be CRLF terminated. They must also be sent in one single write() to make
- firewalls and similar happy.
+ `Curl_ftpsendf()` is used for sending FTP commands to the remote server. It
+ was made a separate function to prevent us programmers from forgetting that
+ they must be CRLF terminated. They must also be sent in one single write() to
+ make firewalls and similar happy.
- Kerberos
+<a name="kerberos"></a>
+Kerberos
+--------
Kerberos support is mainly in lib/krb5.c and lib/security.c but also
- curl_sasl_sspi.c and curl_sasl_gssapi.c for the email protocols and
- socks_gssapi.c & socks_sspi.c for SOCKS5 proxy specifics.
+ `curl_sasl_sspi.c` and `curl_sasl_gssapi.c` for the email protocols and
+ `socks_gssapi.c` and `socks_sspi.c` for SOCKS5 proxy specifics.
- TELNET
+<a name="telnet"></a>
+TELNET
+======
Telnet is implemented in lib/telnet.c.
- FILE
+<a name="file"></a>
+FILE
+====
The file:// protocol is dealt with in lib/file.c.
- SMB
+<a name="smb"></a>
+SMB
+===
The smb:// protocol is dealt with in lib/smb.c.
- LDAP
+<a name="ldap"></a>
+LDAP
+====
Everything LDAP is in lib/ldap.c and lib/openldap.c
- E-mail
+<a name="email"></a>
+E-mail
+======
The e-mail related source code is in lib/imap.c, lib/pop3.c and lib/smtp.c.
- GENERAL
+<a name="general"></a>
+General
+=======
URL encoding and decoding, called escaping and unescaping in the source code,
is found in lib/escape.c.
While transferring data in Transfer() a few functions might get used.
- curl_getdate() in lib/parsedate.c is for HTTP date comparisons (and more).
+ `curl_getdate()` in lib/parsedate.c is for HTTP date comparisons (and more).
- lib/getenv.c offers curl_getenv() which is for reading environment variables
- in a neat platform independent way. That's used in the client, but also in
- lib/url.c when checking the proxy environment variables. Note that contrary
- to the normal unix getenv(), this returns an allocated buffer that must be
- free()ed after use.
+ lib/getenv.c offers `curl_getenv()` which is for reading environment
+ variables in a neat platform independent way. That's used in the client, but
+ also in lib/url.c when checking the proxy environment variables. Note that
+ contrary to the normal unix getenv(), this returns an allocated buffer that
+ must be free()ed after use.
lib/netrc.c holds the .netrc parser
lib/timeval.c features replacement functions for systems that don't have
gettimeofday() and a few support functions for timeval conversions.
- A function named curl_version() that returns the full curl version string is
- found in lib/version.c.
+ A function named `curl_version()` that returns the full curl version string
+ is found in lib/version.c.
+<a name="persistent"></a>
Persistent Connections
======================
The persistent connection support in libcurl requires some considerations on
how to do things inside of the library.
- o The 'SessionHandle' struct returned in the curl_easy_init() call must never
- hold connection-oriented data. It is meant to hold the root data as well as
- all the options etc that the library-user may choose.
- o The 'SessionHandle' struct holds the "connection cache" (an array of
+ - The 'SessionHandle' struct returned in the [`curl_easy_init()`][2] call
+ must never hold connection-oriented data. It is meant to hold the root data
+ as well as all the options etc that the library-user may choose.
+
+ - The 'SessionHandle' struct holds the "connection cache" (an array of
pointers to 'connectdata' structs).
- o This enables the 'curl handle' to be reused on subsequent transfers.
- o When libcurl is told to perform a transfer, it first checks for an already
+
+ - This enables the 'curl handle' to be reused on subsequent transfers.
+
+ - When libcurl is told to perform a transfer, it first checks for an already
existing connection in the cache that we can use. Otherwise it creates a
new one and adds that the cache. If the cache is full already when a new
connection is added added, it will first close the oldest unused one.
- o When the transfer operation is complete, the connection is left
+
+ - When the transfer operation is complete, the connection is left
open. Particular options may tell libcurl not to, and protocols may signal
closure on connections and then they won't be kept open of course.
- o When curl_easy_cleanup() is called, we close all still opened connections,
+
+ - When `curl_easy_cleanup()` is called, we close all still opened connections,
unless of course the multi interface "owns" the connections.
The curl handle must be re-used in order for the persistent connections to
work.
+<a name="multi"></a>
multi interface/non-blocking
============================
@@ -341,6 +428,7 @@ multi interface/non-blocking
protocols are crappy examples and they are subject for rewrite in the future
to better fit the libcurl protocol family.
+<a name="ssl"></a>
SSL libraries
=============
@@ -350,36 +438,39 @@ SSL libraries
in future libcurl versions.
To deal with this internally in the best way possible, we have a generic SSL
- function API as provided by the vtls.[ch] system, and they are the only SSL
- functions we must use from within libcurl. vtls is then crafted to use the
- appropriate lower-level function calls to whatever SSL library that is in
+ function API as provided by the vtls/vtls.[ch] system, and they are the only
+ SSL functions we must use from within libcurl. vtls is then crafted to use
+ the appropriate lower-level function calls to whatever SSL library that is in
use. For example vtls/openssl.[ch] for the OpenSSL library.
+<a name="symbols"></a>
Library Symbols
===============
- All symbols used internally in libcurl must use a 'Curl_' prefix if they're
+ All symbols used internally in libcurl must use a `Curl_` prefix if they're
used in more than a single file. Single-file symbols must be made static.
- Public ("exported") symbols must use a 'curl_' prefix. (There are exceptions,
+ Public ("exported") symbols must use a `curl_` prefix. (There are exceptions,
but they are to be changed to follow this pattern in future versions.) Public
- API functions are marked with CURL_EXTERN in the public header files so that
- all others can be hidden on platforms where this is possible.
+ API functions are marked with `CURL_EXTERN` in the public header files so
+ that all others can be hidden on platforms where this is possible.
+<a name="returncodes"></a>
Return Codes and Informationals
===============================
I've made things simple. Almost every function in libcurl returns a CURLcode,
- that must be CURLE_OK if everything is OK or otherwise a suitable error code
- as the curl/curl.h include file defines. The very spot that detects an error
- must use the Curl_failf() function to set the human-readable error
+ that must be `CURLE_OK` if everything is OK or otherwise a suitable error
+ code as the curl/curl.h include file defines. The very spot that detects an
+ error must use the `Curl_failf()` function to set the human-readable error
description.
In aiding the user to understand what's happening and to debug curl usage, we
- must supply a fair amount of informational messages by using the Curl_infof()
- function. Those messages are only displayed when the user explicitly asks for
- them. They are best used when revealing information that isn't otherwise
- obvious.
+ must supply a fair amount of informational messages by using the
+ `Curl_infof()` function. Those messages are only displayed when the user
+ explicitly asks for them. They are best used when revealing information that
+ isn't otherwise obvious.
+<a name="abi"></a>
API/ABI
=======
@@ -387,29 +478,31 @@ API/ABI
that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI
for our promise to users.
+<a name="client"></a>
Client
======
- main() resides in src/tool_main.c.
+ main() resides in `src/tool_main.c`.
- src/tool_hugehelp.c is automatically generated by the mkhelp.pl perl script
+ `src/tool_hugehelp.c` is automatically generated by the mkhelp.pl perl script
to display the complete "manual" and the src/tool_urlglob.c file holds the
functions used for the URL-"globbing" support. Globbing in the sense that the
{} and [] expansion stuff is there.
The client mostly messes around to setup its 'config' struct properly, then
- it calls the curl_easy_*() functions of the library and when it gets back
- control after the curl_easy_perform() it cleans up the library, checks status
- and exits.
+ it calls the `curl_easy_*()` functions of the library and when it gets back
+ control after the `curl_easy_perform()` it cleans up the library, checks
+ status and exits.
When the operation is done, the ourWriteOut() function in src/writeout.c may
be called to report about the operation. That function is using the
- curl_easy_getinfo() function to extract useful information from the curl
+ `curl_easy_getinfo()` function to extract useful information from the curl
session.
It may loop and do all this several times if many URLs were specified on the
command line or config file.
+<a name="memorydebug"></a>
Memory Debugging
================
@@ -439,6 +532,7 @@ Memory Debugging
the configure script. When --enable-debug is given both features will be
enabled, unless some restriction prevents memory tracking from being used.
+<a name="test"></a>
Test Suite
==========
@@ -456,29 +550,546 @@ Test Suite
The test suite automatically detects if curl was built with the memory
debugging enabled, and if it was it will detect memory leaks, too.
-Building Releases
-=================
+<a name="asyncdns"></a>
+Asynchronous name resolves
+==========================
+
+ libcurl can be built to do name resolves asynchronously, using either the
+ normal resolver in a threaded manner or by using c-ares.
+
+<a name="cares"></a>
+[c-ares][3]
+------
+
+### Build libcurl to use a c-ares
+
+1. ./configure --enable-ares=/path/to/ares/install
+2. make
+
+### c-ares on win32
+
+ First I compiled c-ares. I changed the default C runtime library to be the
+ single-threaded rather than the multi-threaded (this seems to be required to
+ prevent linking errors later on). Then I simply build the areslib project
+ (the other projects adig/ahost seem to fail under MSVC).
+
+ Next was libcurl. I opened lib/config-win32.h and I added a:
+ `#define USE_ARES 1`
+
+ Next thing I did was I added the path for the ares includes to the include
+ path, and the libares.lib to the libraries.
+
+ Lastly, I also changed libcurl to be single-threaded rather than
+ multi-threaded, again this was to prevent some duplicate symbol errors. I'm
+ not sure why I needed to change everything to single-threaded, but when I
+ didn't I got redefinition errors for several CRT functions (malloc, stricmp,
+ etc.)
+
+<a name="curl_off_t"></a>
+`curl_off_t`
+==========
+
+ curl_off_t is a data type provided by the external libcurl include
+ headers. It is the type meant to be used for the [`curl_easy_setopt()`][1]
+ options that end with LARGE. The type is 64bit large on most modern
+ platforms.
+
+curlx
+=====
+
+ The libcurl source code offers a few functions by source only. They are not
+ part of the official libcurl API, but the source files might be useful for
+ others so apps can optionally compile/build with these sources to gain
+ additional functions.
+
+ We provide them through a single header file for easy access for apps:
+ "curlx.h"
+
+`curlx_strtoofft()`
+-------------------
+ A macro that converts a string containing a number to a curl_off_t number.
+ This might use the curlx_strtoll() function which is provided as source
+ code in strtoofft.c. Note that the function is only provided if no
+ strtoll() (or equivalent) function exist on your platform. If curl_off_t
+ is only a 32 bit number on your platform, this macro uses strtol().
+
+`curlx_tvnow()`
+---------------
+ returns a struct timeval for the current time.
+
+`curlx_tvdiff()`
+--------------
+ returns the difference between two timeval structs, in number of
+ milliseconds.
+
+`curlx_tvdiff_secs()`
+---------------------
+ returns the same as curlx_tvdiff but with full usec resolution (as a
+ double)
+
+Future
+------
+
+ Several functions will be removed from the public curl_ name space in a
+ future libcurl release. They will then only become available as curlx_
+ functions instead. To make the transition easier, we already today provide
+ these functions with the curlx_ prefix to allow sources to get built properly
+ with the new function names. The functions this concerns are:
+
+ - `curlx_getenv`
+ - `curlx_strequal`
+ - `curlx_strnequal`
+ - `curlx_mvsnprintf`
+ - `curlx_msnprintf`
+ - `curlx_maprintf`
+ - `curlx_mvaprintf`
+ - `curlx_msprintf`
+ - `curlx_mprintf`
+ - `curlx_mfprintf`
+ - `curlx_mvsprintf`
+ - `curlx_mvprintf`
+ - `curlx_mvfprintf`
+
+<a name="contentencoding"></a>
+Content Encoding
+================
+
+## About content encodings
+
+ [HTTP/1.1][4] specifies that a client may request that a server encode its
+ response. This is usually used to compress a response using one of a set of
+ commonly available compression techniques. These schemes are 'deflate' (the
+ zlib algorithm), 'gzip' and 'compress'. A client requests that the sever
+ perform an encoding by including an Accept-Encoding header in the request
+ document. The value of the header should be one of the recognized tokens
+ 'deflate', ... (there's a way to register new schemes/tokens, see sec 3.5 of
+ the spec). A server MAY honor the client's encoding request. When a response
+ is encoded, the server includes a Content-Encoding header in the
+ response. The value of the Content-Encoding header indicates which scheme was
+ used to encode the data.
+
+ A client may tell a server that it can understand several different encoding
+ schemes. In this case the server may choose any one of those and use it to
+ encode the response (indicating which one using the Content-Encoding header).
+ It's also possible for a client to attach priorities to different schemes so
+ that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
+ information on the Accept-Encoding header.
+
+## Supported content encodings
+
+ The 'deflate' and 'gzip' content encoding are supported by libcurl. Both
+ regular and chunked transfers work fine. The zlib library is required for
+ this feature.
+
+## The libcurl interface
+
+ To cause libcurl to request a content encoding use:
+
+ [`curl_easy_setopt`][1](curl, [`CURLOPT_ACCEPT_ENCODING`][5], string)
+
+ where string is the intended value of the Accept-Encoding header.
+
+ Currently, libcurl only understands how to process responses that use the
+ "deflate" or "gzip" Content-Encoding, so the only values for
+ [`CURLOPT_ACCEPT_ENCODING`][5] that will work (besides "identity," which does
+ nothing) are "deflate" and "gzip" If a response is encoded using the
+ "compress" or methods, libcurl will return an error indicating that the
+ response could not be decoded. If <string> is NULL no Accept-Encoding header
+ is generated. If <string> is a zero-length string, then an Accept-Encoding
+ header containing all supported encodings will be generated.
+
+ The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for
+ content to be automatically decoded. If it is not set and the server still
+ sends encoded content (despite not having been asked), the data is returned
+ in its raw form and the Content-Encoding type is not checked.
+
+## The curl interface
+
+ Use the [--compressed][6] option with curl to cause it to ask servers to
+ compress responses using any format supported by curl.
+
+<a name="hostip"></a>
+hostip.c explained
+==================
+
+ The main compile-time defines to keep in mind when reading the host*.c source
+ file are these:
+
+## `CURLRES_IPV6`
+
+ this host has getaddrinfo() and family, and thus we use that. The host may
+ not be able to resolve IPv6, but we don't really have to take that into
+ account. Hosts that aren't IPv6-enabled have CURLRES_IPV4 defined.
+
+## `CURLRES_ARES`
+
+ is defined if libcurl is built to use c-ares for asynchronous name
+ resolves. This can be Windows or *nix.
+
+## `CURLRES_THREADED`
+
+ is defined if libcurl is built to use threading for asynchronous name
+ resolves. The name resolve will be done in a new thread, and the supported
+ asynch API will be the same as for ares-builds. This is the default under
+ (native) Windows.
+
+ If any of the two previous are defined, `CURLRES_ASYNCH` is defined too. If
+ libcurl is not built to use an asynchronous resolver, `CURLRES_SYNCH` is
+ defined.
+
+## host*.c sources
+
+ The host*.c sources files are split up like this:
+
+ - hostip.c - method-independent resolver functions and utility functions
+ - hostasyn.c - functions for asynchronous name resolves
+ - hostsyn.c - functions for synchronous name resolves
+ - asyn-ares.c - functions for asynchronous name resolves using c-ares
+ - asyn-thread.c - functions for asynchronous name resolves using threads
+ - hostip4.c - IPv4 specific functions
+ - hostip6.c - IPv6 specific functions
+
+ The hostip.h is the single united header file for all this. It defines the
+ `CURLRES_*` defines based on the config*.h and curl_setup.h defines.
+
+<a name="memoryleak"></a>
+Track Down Memory Leaks
+=======================
+
+## Single-threaded
+
+ Please note that this memory leak system is not adjusted to work in more
+ than one thread. If you want/need to use it in a multi-threaded app. Please
+ adjust accordingly.
+
+
+## Build
+
+ Rebuild libcurl with -DCURLDEBUG (usually, rerunning configure with
+ --enable-debug fixes this). 'make clean' first, then 'make' so that all
+ files actually are rebuilt properly. It will also make sense to build
+ libcurl with the debug option (usually -g to the compiler) so that debugging
+ it will be easier if you actually do find a leak in the library.
+
+ This will create a library that has memory debugging enabled.
+
+## Modify Your Application
+
+ Add a line in your application code:
+
+ `curl_memdebug("dump");`
+
+ This will make the malloc debug system output a full trace of all resource
+ using functions to the given file name. Make sure you rebuild your program
+ and that you link with the same libcurl you built for this purpose as
+ described above.
+
+## Run Your Application
+
+ Run your program as usual. Watch the specified memory trace file grow.
+
+ Make your program exit and use the proper libcurl cleanup functions etc. So
+ that all non-leaks are returned/freed properly.
+
+## Analyze the Flow
+
+ Use the tests/memanalyze.pl perl script to analyze the dump file:
+
+ tests/memanalyze.pl dump
+
+ This now outputs a report on what resources that were allocated but never
+ freed etc. This report is very fine for posting to the list!
+
+ If this doesn't produce any output, no leak was detected in libcurl. Then
+ the leak is mostly likely to be in your code.
+
+<a name="multi_socket"></a>
+`multi_socket`
+==============
+
+ Implementation of the `curl_multi_socket` API
+
+ The main ideas of this API are simply:
+
+ 1 - The application can use whatever event system it likes as it gets info
+ from libcurl about what file descriptors libcurl waits for what action
+ on. (The previous API returns `fd_sets` which is very select()-centric).
+
+ 2 - When the application discovers action on a single socket, it calls
+ libcurl and informs that there was action on this particular socket and
+ libcurl can then act on that socket/transfer only and not care about
+ any other transfers. (The previous API always had to scan through all
+ the existing transfers.)
+
+ The idea is that [`curl_multi_socket_action()`][7] calls a given callback
+ with information about what socket to wait for what action on, and the
+ callback only gets called if the status of that socket has changed.
+
+ We also added a timer callback that makes libcurl call the application when
+ the timeout value changes, and you set that with [`curl_multi_setopt()`][9]
+ and the [`CURLMOPT_TIMERFUNCTION`][10] option. To get this to work,
+ Internally, there's an added a struct to each easy handle in which we store
+ an "expire time" (if any). The structs are then "splay sorted" so that we
+ can add and remove times from the linked list and yet somewhat swiftly
+ figure out both how long time there is until the next nearest timer expires
+ and which timer (handle) we should take care of now. Of course, the upside
+ of all this is that we get a [`curl_multi_timeout()`][8] that should also
+ work with old-style applications that use [`curl_multi_perform()`][11].
+
+ We created an internal "socket to easy handles" hash table that given
+ a socket (file descriptor) return the easy handle that waits for action on
+ that socket. This hash is made using the already existing hash code
+ (previously only used for the DNS cache).
+
+ To make libcurl able to report plain sockets in the socket callback, we had
+ to re-organize the internals of the [`curl_multi_fdset()`][12] etc so that
+ the conversion from sockets to `fd_sets` for that function is only done in
+ the last step before the data is returned. I also had to extend c-ares to
+ get a function that can return plain sockets, as that library too returned
+ only `fd_sets` and that is no longer good enough. The changes done to c-ares
+ are available in c-ares 1.3.1 and later.
+
+<a name="structs"></a>
+Structs in libcurl
+==================
+
+This section should cover 7.32.0 pretty accurately, but will make sense even
+for older and later versions as things don't change drastically that often.
+
+## SessionHandle
+
+ The SessionHandle handle struct is the one returned to the outside in the
+ external API as a "CURL *". This is usually known as an easy handle in API
+ documentations and examples.
+
+ Information and state that is related to the actual connection is in the
+ 'connectdata' struct. When a transfer is about to be made, libcurl will
+ either create a new connection or re-use an existing one. The particular
+ connectdata that is used by this handle is pointed out by
+ SessionHandle->easy_conn.
+
+ Data and information that regard this particular single transfer is put in
+ the SingleRequest sub-struct.
+
+ When the SessionHandle struct is added to a multi handle, as it must be in
+ order to do any transfer, the ->multi member will point to the `Curl_multi`
+ struct it belongs to. The ->prev and ->next members will then be used by the
+ multi code to keep a linked list of SessionHandle structs that are added to
+ that same multi handle. libcurl always uses multi so ->multi *will* point to
+ a `Curl_multi` when a transfer is in progress.
+
+ ->mstate is the multi state of this particular SessionHandle. When
+ `multi_runsingle()` is called, it will act on this handle according to which
+ state it is in. The mstate is also what tells which sockets to return for a
+ specific SessionHandle when [`curl_multi_fdset()`][12] is called etc.
+
+ The libcurl source code generally use the name 'data' for the variable that
+ points to the SessionHandle.
+
+ When doing multiplexed HTTP/2 transfers, each SessionHandle is associated
+ with an individual stream, sharing the same connectdata struct. Multiplexing
+ makes it even more important to keep things associated with the right thing!
+
+## connectdata
+
+ A general idea in libcurl is to keep connections around in a connection
+ "cache" after they have been used in case they will be used again and then
+ re-use an existing one instead of creating a new as it creates a significant
+ performance boost.
+
+ Each 'connectdata' identifies a single physical connection to a server. If
+ the connection can't be kept alive, the connection will be closed after use
+ and then this struct can be removed from the cache and freed.
+
+ Thus, the same SessionHandle can be used multiple times and each time select
+ another connectdata struct to use for the connection. Keep this in mind, as
+ it is then important to consider if options or choices are based on the
+ connection or the SessionHandle.
+
+ Functions in libcurl will assume that connectdata->data points to the
+ SessionHandle that uses this connection (for the moment).
+
+ As a special complexity, some protocols supported by libcurl require a
+ special disconnect procedure that is more than just shutting down the
+ socket. It can involve sending one or more commands to the server before
+ doing so. Since connections are kept in the connection cache after use, the
+ original SessionHandle may no longer be around when the time comes to shut
+ down a particular connection. For this purpose, libcurl holds a special
+ dummy `closure_handle` SessionHandle in the `Curl_multi` struct to use when
+ needed.
+
+ FTP uses two TCP connections for a typical transfer but it keeps both in
+ this single struct and thus can be considered a single connection for most
+ internal concerns.
+
+ The libcurl source code generally use the name 'conn' for the variable that
+ points to the connectdata.
+
+## Curl_multi
+
+ Internally, the easy interface is implemented as a wrapper around multi
+ interface functions. This makes everything multi interface.
+
+ `Curl_multi` is the multi handle struct exposed as "CURLM *" in external APIs.
+
+ This struct holds a list of SessionHandle structs that have been added to
+ this handle with [`curl_multi_add_handle()`][13]. The start of the list is
+ ->easyp and ->num_easy is a counter of added SessionHandles.
+
+ ->msglist is a linked list of messages to send back when
+ [`curl_multi_info_read()`][14] is called. Basically a node is added to that
+ list when an individual SessionHandle's transfer has completed.
+
+ ->hostcache points to the name cache. It is a hash table for looking up name
+ to IP. The nodes have a limited life time in there and this cache is meant
+ to reduce the time for when the same name is wanted within a short period of
+ time.
+
+ ->timetree points to a tree of SessionHandles, sorted by the remaining time
+ until it should be checked - normally some sort of timeout. Each
+ SessionHandle has one node in the tree.
+
+ ->sockhash is a hash table to allow fast lookups of socket descriptor to
+ which SessionHandle that uses that descriptor. This is necessary for the
+ `multi_socket` API.
+
+ ->conn_cache points to the connection cache. It keeps track of all
+ connections that are kept after use. The cache has a maximum size.
+
+ ->closure_handle is described in the 'connectdata' section.
+
+ The libcurl source code generally use the name 'multi' for the variable that
+ points to the Curl_multi struct.
+
+## Curl_handler
+
+ Each unique protocol that is supported by libcurl needs to provide at least
+ one `Curl_handler` struct. It defines what the protocol is called and what
+ functions the main code should call to deal with protocol specific issues.
+ In general, there's a source file named [protocol].c in which there's a
+ "struct `Curl_handler` `Curl_handler_[protocol]`" declared. In url.c there's
+ then the main array with all individual `Curl_handler` structs pointed to
+ from a single array which is scanned through when a URL is given to libcurl
+ to work with.
+
+ ->scheme is the URL scheme name, usually spelled out in uppercase. That's
+ "HTTP" or "FTP" etc. SSL versions of the protcol need its own `Curl_handler`
+ setup so HTTPS separate from HTTP.
+
+ ->setup_connection is called to allow the protocol code to allocate protocol
+ specific data that then gets associated with that SessionHandle for the rest
+ of this transfer. It gets freed again at the end of the transfer. It will be
+ called before the 'connectdata' for the transfer has been selected/created.
+ Most protocols will allocate its private 'struct [PROTOCOL]' here and assign
+ SessionHandle->req.protop to point to it.
+
+ ->connect_it allows a protocol to do some specific actions after the TCP
+ connect is done, that can still be considered part of the connection phase.
+
+ Some protocols will alter the connectdata->recv[] and connectdata->send[]
+ function pointers in this function.
+
+ ->connecting is similarly a function that keeps getting called as long as the
+ protocol considers itself still in the connecting phase.
+
+ ->do_it is the function called to issue the transfer request. What we call
+ the DO action internally. If the DO is not enough and things need to be kept
+ getting done for the entire DO sequence to complete, ->doing is then usually
+ also provided. Each protocol that needs to do multiple commands or similar
+ for do/doing need to implement their own state machines (see SCP, SFTP,
+ FTP). Some protocols (only FTP and only due to historical reasons) has a
+ separate piece of the DO state called `DO_MORE`.
+
+ ->doing keeps getting called while issuing the transfer request command(s)
+
+ ->done gets called when the transfer is complete and DONE. That's after the
+ main data has been transferred.
+
+ ->do_more gets called during the `DO_MORE` state. The FTP protocol uses this
+ state when setting up the second connection.
+
+ ->`proto_getsock`
+ ->`doing_getsock`
+ ->`domore_getsock`
+ ->`perform_getsock`
+ Functions that return socket information. Which socket(s) to wait for which
+ action(s) during the particular multi state.
+
+ ->disconnect is called immediately before the TCP connection is shutdown.
+
+ ->readwrite gets called during transfer to allow the protocol to do extra
+ reads/writes
+
+ ->defport is the default report TCP or UDP port this protocol uses
+
+ ->protocol is one or more bits in the `CURLPROTO_*` set. The SSL versions
+ have their "base" protocol set and then the SSL variation. Like
+ "HTTP|HTTPS".
+
+ ->flags is a bitmask with additional information about the protocol that will
+ make it get treated differently by the generic engine:
+
+ - `PROTOPT_SSL` - will make it connect and negotiate SSL
+
+ - `PROTOPT_DUAL` - this protocol uses two connections
+
+ - `PROTOPT_CLOSEACTION` - this protocol has actions to do before closing the
+ connection. This flag is no longer used by code, yet still set for a bunch
+ protocol handlers.
+
+ - `PROTOPT_DIRLOCK` - "direction lock". The SSH protocols set this bit to
+ limit which "direction" of socket actions that the main engine will
+ concern itself about.
+
+ - `PROTOPT_NONETWORK` - a protocol that doesn't use network (read file:)
+
+ - `PROTOPT_NEEDSPWD` - this protocol needs a password and will use a default
+ one unless one is provided
+
+ - `PROTOPT_NOURLQUERY` - this protocol can't handle a query part on the URL
+ (?foo=bar)
+
+## conncache
- There's no magic to this. When you consider everything stable enough to be
- released, do this:
+ Is a hash table with connections for later re-use. Each SessionHandle has
+ a pointer to its connection cache. Each multi handle sets up a connection
+ cache that all added SessionHandles share by default.
- 1. Tag the source code accordingly.
+## Curl_share
+
+ The libcurl share API allocates a `Curl_share` struct, exposed to the
+ external API as "CURLSH *".
- 2. run the 'maketgz' script (using 'make distcheck' will give you a pretty
- good view on the status of the current sources). maketgz requires a
- version number and creates the release archive. maketgz uses 'make dist'
- for the actual archive building, why you need to fill in the Makefile.am
- files properly for which files that should be included in the release
- archives.
+ The idea is that the struct can have a set of own versions of caches and
+ pools and then by providing this struct in the `CURLOPT_SHARE` option, those
+ specific SessionHandles will use the caches/pools that this share handle
+ holds.
+
+ Then individual SessionHandle structs can be made to share specific things
+ that they otherwise wouldn't, such as cookies.
- 3. When that's complete, sign the output files.
+ The `Curl_share` struct can currently hold cookies, DNS cache and the SSL
+ session cache.
- 4. Upload
+## CookieInfo
- 5. Update web site and changelog on site
+ This is the main cookie struct. It holds all known cookies and related
+ information. Each SessionHandle has its own private CookieInfo even when
+ they are added to a multi handle. They can be made to share cookies by using
+ the share API.
- 6. Send announcement to the mailing lists
- NOTE: you must have curl checked out from git to be able to do a proper
- release build. The release tarballs do not have everything setup in order to
- do releases properly.
+[1]: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
+[2]: http://curl.haxx.se/libcurl/c/curl_easy_init.html
+[3]: http://c-ares.haxx.se/
+[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
+[5]: http://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
+[6]: http://curl.haxx.se/docs/manpage.html#--compressed
+[7]: http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
+[8]: http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
+[9]: http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
+[10]: http://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
+[11]: http://curl.haxx.se/libcurl/c/curl_multi_perform.html
+[12]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+[13]: http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
+[14]: http://curl.haxx.se/libcurl/c/curl_multi_info_read.html
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 778856773..345dc45d5 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -3,6 +3,15 @@ join in and help us correct one or more of these! Also be sure to check the
changelog of the current development status, as one or more of these problems
may have been fixed since this was written!
+90. IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
+ code reveals that pingpong.c contains some truncation code, at line 408,
+ when it deems the server response to be too large truncating it to 40
+ characters"
+ http://curl.haxx.se/bug/view.cgi?id=1366
+
+89. Disabling HTTP Pipelining when there are ongoing transfers can lead to
+ heap corruption and crash. http://curl.haxx.se/bug/view.cgi?id=1411
+
88. libcurl doesn't support CURLINFO_FILETIME for SFTP transfers and thus
curl's -R option also doesn't work then.
@@ -88,7 +97,7 @@ may have been fixed since this was written!
something beyond ascii but currently libcurl will only pass in the verbatim
string the app provides. There are several browsers that already do this
encoding. The key seems to be the updated draft to RFC2231:
- http://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
+ https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
66. When using telnet, the time limitation options don't work.
http://curl.haxx.se/bug/view.cgi?id=846
diff --git a/docs/LIBCURL-STRUCTS b/docs/LIBCURL-STRUCTS
deleted file mode 100644
index 136d17ce7..000000000
--- a/docs/LIBCURL-STRUCTS
+++ /dev/null
@@ -1,245 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
-Structs in libcurl
-
-This document should cover 7.32.0 pretty accurately, but will make sense even
-for older and later versions as things don't change drastically that often.
-
- 1. The main structs in libcurl
- 1.1 SessionHandle
- 1.2 connectdata
- 1.3 Curl_multi
- 1.4 Curl_handler
- 1.5 conncache
- 1.6 Curl_share
- 1.7 CookieInfo
-
-==============================================================================
-
-1. The main structs in libcurl
-
- 1.1 SessionHandle
-
- The SessionHandle handle struct is the one returned to the outside in the
- external API as a "CURL *". This is usually known as an easy handle in API
- documentations and examples.
-
- Information and state that is related to the actual connection is in the
- 'connectdata' struct. When a transfer is about to be made, libcurl will
- either create a new connection or re-use an existing one. The particular
- connectdata that is used by this handle is pointed out by
- SessionHandle->easy_conn.
-
- Data and information that regard this particular single transfer is put in
- the SingleRequest sub-struct.
-
- When the SessionHandle struct is added to a multi handle, as it must be in
- order to do any transfer, the ->multi member will point to the Curl_multi
- struct it belongs to. The ->prev and ->next members will then be used by the
- multi code to keep a linked list of SessionHandle structs that are added to
- that same multi handle. libcurl always uses multi so ->multi *will* point to
- a Curl_multi when a transfer is in progress.
-
- ->mstate is the multi state of this particular SessionHandle. When
- multi_runsingle() is called, it will act on this handle according to which
- state it is in. The mstate is also what tells which sockets to return for a
- specific SessionHandle when curl_multi_fdset() is called etc.
-
- The libcurl source code generally use the name 'data' for the variable that
- points to the SessionHandle.
-
-
- 1.2 connectdata
-
- A general idea in libcurl is to keep connections around in a connection
- "cache" after they have been used in case they will be used again and then
- re-use an existing one instead of creating a new as it creates a significant
- performance boost.
-
- Each 'connectdata' identifies a single physical connection to a server. If
- the connection can't be kept alive, the connection will be closed after use
- and then this struct can be removed from the cache and freed.
-
- Thus, the same SessionHandle can be used multiple times and each time select
- another connectdata struct to use for the connection. Keep this in mind, as
- it is then important to consider if options or choices are based on the
- connection or the SessionHandle.
-
- Functions in libcurl will assume that connectdata->data points to the
- SessionHandle that uses this connection.
-
- As a special complexity, some protocols supported by libcurl require a
- special disconnect procedure that is more than just shutting down the
- socket. It can involve sending one or more commands to the server before
- doing so. Since connections are kept in the connection cache after use, the
- original SessionHandle may no longer be around when the time comes to shut
- down a particular connection. For this purpose, libcurl holds a special
- dummy 'closure_handle' SessionHandle in the Curl_multi struct to
-
- FTP uses two TCP connections for a typical transfer but it keeps both in
- this single struct and thus can be considered a single connection for most
- internal concerns.
-
- The libcurl source code generally use the name 'conn' for the variable that
- points to the connectdata.
-
-
- 1.3 Curl_multi
-
- Internally, the easy interface is implemented as a wrapper around multi
- interface functions. This makes everything multi interface.
-
- Curl_multi is the multi handle struct exposed as "CURLM *" in external APIs.
-
- This struct holds a list of SessionHandle structs that have been added to
- this handle with curl_multi_add_handle(). The start of the list is ->easyp
- and ->num_easy is a counter of added SessionHandles.
-
- ->msglist is a linked list of messages to send back when
- curl_multi_info_read() is called. Basically a node is added to that list
- when an individual SessionHandle's transfer has completed.
-
- ->hostcache points to the name cache. It is a hash table for looking up name
- to IP. The nodes have a limited life time in there and this cache is meant
- to reduce the time for when the same name is wanted within a short period of
- time.
-
- ->timetree points to a tree of SessionHandles, sorted by the remaining time
- until it should be checked - normally some sort of timeout. Each
- SessionHandle has one node in the tree.
-
- ->sockhash is a hash table to allow fast lookups of socket descriptor to
- which SessionHandle that uses that descriptor. This is necessary for the
- multi_socket API.
-
- ->conn_cache points to the connection cache. It keeps track of all
- connections that are kept after use. The cache has a maximum size.
-
- ->closure_handle is described in the 'connectdata' section.
-
- The libcurl source code generally use the name 'multi' for the variable that
- points to the Curl_multi struct.
-
-
- 1.4 Curl_handler
-
- Each unique protocol that is supported by libcurl needs to provide at least
- one Curl_handler struct. It defines what the protocol is called and what
- functions the main code should call to deal with protocol specific issues.
- In general, there's a source file named [protocol].c in which there's a
- "struct Curl_handler Curl_handler_[protocol]" declared. In url.c there's
- then the main array with all individual Curl_handler structs pointed to from
- a single array which is scanned through when a URL is given to libcurl to
- work with.
-
- ->scheme is the URL scheme name, usually spelled out in uppercase. That's
- "HTTP" or "FTP" etc. SSL versions of the protcol need its own Curl_handler
- setup so HTTPS separate from HTTP.
-
- ->setup_connection is called to allow the protocol code to allocate protocol
- specific data that then gets associated with that SessionHandle for the rest
- of this transfer. It gets freed again at the end of the transfer. It will be
- called before the 'connectdata' for the transfer has been selected/created.
- Most protocols will allocate its private 'struct [PROTOCOL]' here and assign
- SessionHandle->req.protop to point to it.
-
- ->connect_it allows a protocol to do some specific actions after the TCP
- connect is done, that can still be considered part of the connection phase.
-
- Some protocols will alter the connectdata->recv[] and connectdata->send[]
- function pointers in this function.
-
- ->connecting is similarly a function that keeps getting called as long as the
- protocol considers itself still in the connecting phase.
-
- ->do_it is the function called to issue the transfer request. What we call
- the DO action internally. If the DO is not enough and things need to be kept
- getting done for the entire DO sequence to complete, ->doing is then usually
- also provided. Each protocol that needs to do multiple commands or similar
- for do/doing need to implement their own state machines (see SCP, SFTP,
- FTP). Some protocols (only FTP and only due to historical reasons) has a
- separate piece of the DO state called DO_MORE.
-
- ->doing keeps getting called while issuing the transfer request command(s)
-
- ->done gets called when the transfer is complete and DONE. That's after the
- main data has been transferred.
-
- ->do_more gets called during the DO_MORE state. The FTP protocol uses this
- state when setting up the second connection.
-
- ->proto_getsock
- ->doing_getsock
- ->domore_getsock
- ->perform_getsock
- Functions that return socket information. Which socket(s) to wait for which
- action(s) during the particular multi state.
-
- ->disconnect is called immediately before the TCP connection is shutdown.
-
- ->readwrite gets called during transfer to allow the protocol to do extra
- reads/writes
-
- ->defport is the default report TCP or UDP port this protocol uses
-
- ->protocol is one or more bits in the CURLPROTO_* set. The SSL versions have
- their "base" protocol set and then the SSL variation. Like "HTTP|HTTPS".
-
- ->flags is a bitmask with additional information about the protocol that will
- make it get treated differently by the generic engine:
-
- PROTOPT_SSL - will make it connect and negotiate SSL
-
- PROTOPT_DUAL - this protocol uses two connections
-
- PROTOPT_CLOSEACTION - this protocol has actions to do before closing the
- connection. This flag is no longer used by code, yet still set for a bunch
- protocol handlers.
-
- PROTOPT_DIRLOCK - "direction lock". The SSH protocols set this bit to
- limit which "direction" of socket actions that the main engine will
- concern itself about.
-
- PROTOPT_NONETWORK - a protocol that doesn't use network (read file:)
-
- PROTOPT_NEEDSPWD - this protocol needs a password and will use a default
- one unless one is provided
-
- PROTOPT_NOURLQUERY - this protocol can't handle a query part on the URL
- (?foo=bar)
-
-
- 1.5 conncache
-
- Is a hash table with connections for later re-use. Each SessionHandle has
- a pointer to its connection cache. Each multi handle sets up a connection
- cache that all added SessionHandles share by default.
-
-
- 1.6 Curl_share
-
- The libcurl share API allocates a Curl_share struct, exposed to the external
- API as "CURLSH *".
-
- The idea is that the struct can have a set of own versions of caches and
- pools and then by providing this struct in the CURLOPT_SHARE option, those
- specific SessionHandles will use the caches/pools that this share handle
- holds.
-
- Then individual SessionHandle structs can be made to share specific things
- that they otherwise wouldn't, such as cookies.
-
- The Curl_share struct can currently hold cookies, DNS cache and the SSL
- session cache.
-
-
- 1.7 CookieInfo
-
- This is the main cookie struct. It holds all known cookies and related
- information. Each SessionHandle has its own private CookieInfo even when
- they are added to a multi handle. They can be made to share cookies by using
- the share API.
diff --git a/docs/LICENSE-MIXING b/docs/LICENSE-MIXING
index a53835c4c..ccb6ada32 100644
--- a/docs/LICENSE-MIXING
+++ b/docs/LICENSE-MIXING
@@ -23,29 +23,29 @@ libcurl http://curl.haxx.se/docs/copyright.html
Uses an MIT (or Modified BSD)-style license that is as liberal as
possible.
-OpenSSL http://www.openssl.org/source/license.html
+OpenSSL https://www.openssl.org/source/license.html
(May be used for SSL/TLS support) Uses an Original BSD-style license
with an announcement clause that makes it "incompatible" with GPL. You
are not allowed to ship binaries that link with OpenSSL that includes
GPL code (unless that specific GPL code includes an exception for
OpenSSL - a habit that is growing more and more common). If OpenSSL's
- licensing is a problem for you, consider using GnuTLS or yassl
- instead.
+ licensing is a problem for you, consider using another TLS library.
GnuTLS http://www.gnutls.org/
(May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
- a problem for you, consider using OpenSSL instead. Also note that
+ a problem for you, consider using another TLS library. Also note that
GnuTLS itself depends on and uses other libs (libgcrypt and
libgpg-error) and they too are LGPL- or GPL-licensed.
-yassl http://www.yassl.com/
+WolfSSL https://www.wolfssl.com/
- (May be used for SSL/TLS support) Uses the GPL[1] license. If this is
- a problem for you, consider using OpenSSL or GnuTLS instead.
+ (May be used for SSL/TLS support) Uses the GPL[1] license or a
+ propietary license. If this is a problem for you, consider using
+ another TLS library.
-NSS http://www.mozilla.org/projects/security/pki/nss/
+NSS https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
(May be used for SSL/TLS support) Is covered by the MPL[4] license,
the GPL[1] license and the LGPL[3] license. You may choose to license
@@ -57,13 +57,29 @@ axTLS http://axtls.sourceforge.net/
(May be used for SSL/TLS support) Uses a Modified BSD-style license.
+mbedTLS https://tls.mbed.org/
+
+ (May be used for SSL/TLS support) Uses the GPL[1] license or a
+ propietary license. If this is a problem for you, consider using
+ another TLS library.
+
+BoringSSL https://boringssl.googlesource.com/
+
+ (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
+ license as that.
+
+libressl http://www.libressl.org/
+
+ (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
+ license as that.
+
c-ares http://daniel.haxx.se/projects/c-ares/license.html
(Used for asynchronous name resolves) Uses an MIT license that is very
liberal and imposes no restrictions on any other library or part you
may link with.
-zlib http://www.gzip.org/zlib/zlib_license.html
+zlib http://www.zlib.net/zlib_license.html
(Used for compressed Transfer-Encoding support) Uses an MIT-style
license that shouldn't collide with any other library.
@@ -73,12 +89,12 @@ MIT Kerberos http://web.mit.edu/kerberos/www/dist/
(May be used for GSS support) MIT licensed, that shouldn't collide
with any other parts.
-Heimdal http://www.pdc.kth.se/heimdal/
+Heimdal http://www.h5l.org
(May be used for GSS support) Heimdal is Original BSD licensed with
the announcement clause.
-GNU GSS http://www.gnu.org/software/gss/
+GNU GSS https://www.gnu.org/software/gss/
(May be used for GSS support) GNU GSS is GPL licensed. Note that you
may not distribute binary curl packages that uses this if you build
@@ -105,10 +121,10 @@ libssh2 http://www.libssh2.org/
(Used for scp and sftp support) libssh2 uses a Modified BSD-style
license.
-[1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
-[2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
+[1] = GPL - GNU General Public License: https://www.gnu.org/licenses/gpl.html
+[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
how to write such an exception to the GPL
[3] = LGPL - GNU Lesser General Public License:
- http://www.gnu.org/licenses/lgpl.html
+ https://www.gnu.org/licenses/lgpl.html
[4] = MPL - Mozilla Public License:
- http://www.mozilla.org/MPL/
+ https://www.mozilla.org/MPL/
diff --git a/docs/MAIL-ETIQUETTE b/docs/MAIL-ETIQUETTE
index fb503126a..b6c0f4521 100644
--- a/docs/MAIL-ETIQUETTE
+++ b/docs/MAIL-ETIQUETTE
@@ -230,7 +230,7 @@ MAIL ETIQUETTE
Quote as little as possible. Just enough to provide the context you cannot
leave out. A lengthy description can be found here:
- http://www.netmeister.org/news/learn2quote.html
+ https://www.netmeister.org/news/learn2quote.html
2.7 Digest
diff --git a/docs/MANUAL b/docs/MANUAL
index 113df2016..fb349485f 100644
--- a/docs/MANUAL
+++ b/docs/MANUAL
@@ -470,8 +470,8 @@ COOKIES
stored cookies which match the request as it follows the location. The
file "empty.txt" may be a nonexistent file.
- Alas, to both read and write cookies from a netscape cookie file, you can
- set both -b and -c to use the same file:
+ To read and write cookies from a netscape cookie file, you can set both -b
+ and -c to use the same file:
curl -b cookies.txt -c cookies.txt www.example.com
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 1f92911a4..cfef3e9ab 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -37,8 +37,8 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
$(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS SECURITY RELEASE-PROCEDURE \
- SSL-PROBLEMS
+ MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE \
+ SSL-PROBLEMS HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md
MAN2HTML= roffit < $< >$@
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 49f933894..975026977 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -36,7 +36,17 @@
#
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -100,8 +110,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs INSTALL THANKS TODO
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -214,6 +223,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in INSTALL THANKS TODO
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -297,7 +307,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -350,6 +360,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -366,7 +377,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -438,8 +448,8 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
$(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS SECURITY RELEASE-PROCEDURE \
- SSL-PROBLEMS
+ MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE \
+ SSL-PROBLEMS HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md
MAN2HTML = roffit < $< >$@
SUFFIXES = .1 .html .pdf
@@ -459,7 +469,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign docs/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -800,6 +809,8 @@ uninstall-man: uninstall-man1
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-man uninstall-man1
+.PRECIOUS: Makefile
+
html: $(HTMLPAGES)
cd libcurl; make html
diff --git a/docs/RELEASE-PROCEDURE b/docs/RELEASE-PROCEDURE
index 2f85b3fb7..fc31274e8 100644
--- a/docs/RELEASE-PROCEDURE
+++ b/docs/RELEASE-PROCEDURE
@@ -1,9 +1,3 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
curl release procedure - how to do a release
============================================
@@ -84,11 +78,12 @@ Coming dates
Based on the description above, here are some planned release dates (at the
time of this writing):
-- November 5, 2014 (version 7.39.0)
-- December 31, 2014
-- February 25, 2015
-- April 22, 2015
-- June 17, 2015
+- June 17, 2015 (version 7.43.0)
- August 12, 2015
- October 7, 2015
- December 2, 2015
+- January 27, 2016
+- March 23, 2016
+- May 18, 2016
+- July 13, 2016
+- September 7, 2016
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
new file mode 100644
index 000000000..eb52d1877
--- /dev/null
+++ b/docs/ROADMAP.md
@@ -0,0 +1,139 @@
+curl the next few years - perhaps
+=================================
+
+Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
+intended to serve as a guideline for others for information, feedback and
+possible participation.
+
+HTTP/2
+------
+
+- test suite
+
+ Base this on existing nghttp2 server to start with to make functional
+ tests. Later on we can adopt that code or work with nghttp2 to provide ways
+ to have the http2 server respond with broken responses to make sure we deal
+ with that nicely as well.
+
+ To decide: if we need to bundle parts of the nghttp2 stuff that probably
+ won't be shipped by many distros.
+
+- stream properties API
+
+ Provide options for setting priorities and dependencies among the streams
+ (easy handles). They are mostly information set for the stream and sent to
+ the server so we don't have to add much logic for this.
+
+- server push
+
+ Not exactly clear exactly how to support this API-wise, but by adding
+ handles without asking for a resource it could be a way to be prepared to
+ receive pushes in case such are sent. We probably need it to still specify
+ a URL with host name, port etc but we probably need a special option to
+ tell libcurl it is for server push purposes.
+
+- provide option for HTTP/2 "prior knowledge" over clear text
+
+ As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
+ it speaks HTTP/2.
+
+- provide option to allow curl to default to HTTP/2 only when using HTTPS
+
+ We could switch on HTTP/2 by-default for HTTPS quite easily and it
+ shouldn't hurt anyone, while HTTP/2 for HTTP by default could introduce
+ lots of Upgrade: roundtrips that users won't like. So a separated option
+ alternative makes sense.
+
+SRV records
+-----------
+
+How to find services for specific domains/hosts.
+
+HTTPS to proxy
+--------------
+
+To avoid network traffic to/from the proxy getting snooped on.
+
+curl_formadd()
+--------------
+
+make sure there's an easy handle passed in to `curl_formadd()`,
+`curl_formget()` and `curl_formfree()` by adding replacement functions and
+deprecating the old ones to allow custom mallocs and more
+
+third-party SASL
+----------------
+
+add support for third-party SASL libraries such as Cyrus SASL - may need to
+move existing native and SSPI based authentication into vsasl folder after
+reworking HTTP and SASL code
+
+SASL authentication in LDAP
+---------------------------
+
+...
+
+Simplify the SMTP email
+-----------------------
+
+Simplify the SMTP email interface so that programmers don't have to
+construct the body of an email that contains all the headers, alternative
+content, images and attachments - maintain raw interface so that
+programmers that want to do this can
+
+email capabilities
+------------------
+
+Allow the email protocols to return the capabilities before
+authenticating. This will allow an application to decide on the best
+authentication mechanism
+
+Win32 pthreads
+--------------
+
+Allow Windows threading model to be replaced by Win32 pthreads port
+
+dynamic buffer size
+-------------------
+
+Implement a dynamic buffer size to allow SFTP to use much larger buffers and
+possibly allow the size to be customizable by applications. Use less memory
+when handles are not in use?
+
+New stuff - curl
+----------------
+
+1. Embed a language interpreter (lua?). For that middle ground where curl
+ isn’t enough and a libcurl binding feels “too muchâ€. Build-time conditional
+ of course.
+
+2. Simplify the SMTP command line so that the headers and multi-part content
+ don't have to be constructed before calling curl
+
+Improve
+-------
+
+1. build for windows (considered hard by many users)
+
+2. curl -h output (considered overwhelming to users)
+
+3. we have > 160 command line options, is there a way to redo things to
+ simplify or improve the situation as we are likely to keep adding
+ features/options in the future too
+
+4. docs (considered "bad" by users but how do we make it better?)
+
+ - split up curl.1
+
+5. authentication framework (consider merging HTTP and SASL authentication to
+ give one API for protocols to call)
+
+6. Perform some of the clean up from the TODO document, removing old
+ definitions and such like that are currently earmarked to be removed years
+ ago
+
+Remove
+------
+
+1. makefile.vc files as there is no point in maintaining two sets of Windows
+ makefiles. Note: These are currently being used by the Windows autobuilds
diff --git a/docs/SSL-PROBLEMS b/docs/SSL-PROBLEMS
index 7ee4d14ee..45faa241c 100644
--- a/docs/SSL-PROBLEMS
+++ b/docs/SSL-PROBLEMS
@@ -26,7 +26,7 @@ CA bundle missing intermediate certificates
problems if your CA cert does not have the certificates for the
intermediates in the whole trust chain.
-SSL version
+Protocol version
Some broken servers fail to support the protocol negotiation properly that
SSL servers are supposed to handle. This may cause the connection to fail
@@ -36,7 +36,9 @@ SSL version
An additional complication can be that modern SSL libraries sometimes are
built with support for older SSL and TLS versions disabled!
-SSL ciphers
+ All versions of SSL are considered insecure and should be avoided. Use TLS.
+
+Ciphers
Clients give servers a list of ciphers to select from. If the list doesn't
include any ciphers the server wants/can use, the connection handshake
@@ -51,9 +53,13 @@ SSL ciphers
Note that these weak ciphers are identified as flawed. For example, this
includes symmetric ciphers with less than 128 bit keys and RC4.
+ WinSSL in Windows XP is not able to connect to servers that no longer
+ support the legacy handshakes and algorithms used by those versions, so we
+ advice against building curl to use WinSSL on really old Windows versions.
+
References:
- http://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
+ https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
Allow BEAST
@@ -65,3 +71,17 @@ Allow BEAST
introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
but on the other hand it allows curl to connect to that kind of strange
servers.
+
+Disabling certificate revocation checks
+
+ Some SSL backends may do certificate revocation checks (CRL, OCSP, etc)
+ depending on the OS or build configuration. The --ssl-no-revoke option was
+ introduced in 7.44.0 to disable revocation checking but currently is only
+ supported for WinSSL (the native Windows SSL library), with an exception in
+ the case of Windows' Untrusted Publishers blacklist which it seems can't be
+ bypassed. This option may have broader support to accommodate other SSL
+ backends in the future.
+
+ References:
+
+ http://curl.haxx.se/docs/ssl-compared.html
diff --git a/docs/THANKS b/docs/THANKS
index 0887881ab..89a738ddd 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -36,10 +36,14 @@ Alex Suykov
Alex Vinnik
Alex aka WindEagle
Alexander Beedie
+Alexander Dyagilev
+Alexander Elgert
Alexander Klauer
Alexander Kourakos
Alexander Krasnostavsky
Alexander Lazic
+Alexander Pepper
+Alexander Peslyak
Alexander Zhuravlev
Alexey Borzov
Alexey Pesternikov
@@ -52,6 +56,7 @@ Alona Rossen
Amol Pattekar
Amr Shahin
Anatoli Tubman
+Anders Bakken
Anders Gustafsson
Anders Havn
Andi Jahja
@@ -79,6 +84,7 @@ Andrew Kurushin
Andrew Moise
Andrew Wansink
Andrew de los Reyes
+Andrey Labunets
Andrii Moiseiev
Andrés García
Andy Cedilnik
@@ -86,6 +92,7 @@ Andy Serpa
Andy Tsouladze
Angus Mackay
Anthon Pang
+Anthony Avina
Anthony Bryan
Anthony G. Basile
Antoine Calando
@@ -100,6 +107,7 @@ Arnaud Ebalard
Arthur Murray
Arve Knudsen
Arvid Norberg
+Ashish Shukla
Ask Bjørn Hansen
Askar Safin
Ates Goral
@@ -112,6 +120,7 @@ Balint Szilakszi
Barry Abrahamson
Bart Whiteley
Bas Mevissen
+Ben Boeckel
Ben Darnell
Ben Greear
Ben Madsen
@@ -126,6 +135,7 @@ Benoit Neil
Benoit Sigoure
Bernard Leak
Bernhard Reutner-Fischer
+Bert Huijben
Bertrand Demiddelaer
Bill Doyle
Bill Egert
@@ -142,6 +152,7 @@ Bob Richmond
Bob Schader
Bogdan Nicula
Brad Burdick
+Brad Harder
Brad Hards
Brad King
Brad Spencer
@@ -151,8 +162,10 @@ Brandon Wang
Brendan Jurd
Brent Beardsley
Brian Akins
+Brian Chrisman
Brian Dessent
Brian J. Murrell
+Brian Prodoehl
Brian R Duffy
Brian Ulm
Brock Noland
@@ -172,9 +185,11 @@ Catalin Patulea
Chad Monroe
Chandrakant Bagul
Charles Kerr
+Charles Romestant
Chen Prog
Chih-Chung Chang
Chris "Bob Bob"
+Chris Araman
Chris Combes
Chris Conlon
Chris Deidun
@@ -221,6 +236,7 @@ Curt Bogmine
Cyrill Osterwalder
Cédric Deltheil
D. Flinkmann
+Da-Yoon Chung
Dag Ekengren
Dagobert Michelsen
Damian Dixon
@@ -237,6 +253,7 @@ Daniel Black
Daniel Cater
Daniel Egger
Daniel Johnson
+Daniel Melani
Daniel Mentz
Daniel Steinberg
Daniel Stenberg
@@ -298,6 +315,7 @@ Dirk Manske
Dmitri Shubin
Dmitriy Sergeyev
Dmitry Bartsevich
+Dmitry Eremin-Solenikov
Dmitry Falko
Dmitry Kurochkin
Dmitry Popov
@@ -313,6 +331,7 @@ Douglas Kilpatrick
Douglas R. Horner
Douglas Steinwand
Dov Murik
+Drake Arconis
Duane Cathey
Duncan Mac-Vicar Prett
Dustin Boswell
@@ -327,10 +346,12 @@ Edward Rudd
Edward Sheldrake
Eelco Dolstra
Eetu Ojanen
+Egon Eckert
Eldar Zaitov
Ellis Pritchard
Elmira A Semenova
Emanuele Bovisio
+Emil Lerner
Emil Romanus
Emiliano Ida
Enrico Scholz
@@ -381,6 +402,7 @@ François Charlier
Fred Machado
Fred New
Fred Noz
+Fred Stluka
Frederic Lepied
Fredrik Thulin
Gabriel Kuri
@@ -418,6 +440,7 @@ Glenn Sheridan
Gordon Marler
Gorilla Maguila
Grant Erickson
+Grant Pannell
Greg Hewgill
Greg Morse
Greg Onufer
@@ -436,6 +459,7 @@ Götz Babin-Ebell
Hamish Mackenzie
Hang Kin Lau
Hang Su
+Hanno Böck
Hanno Kranzhoff
Hans Steegers
Hans-Jurgen May
@@ -476,6 +500,7 @@ Immanuel Gregoire
Ingmar Runge
Ingo Ralf Blum
Ingo Wilken
+Isaac Boukris
Ishan SinghLevett
Ivo Bellin Salarin
Jack Zhang
@@ -516,6 +541,7 @@ Jaz Fresh
Jean Jacques Drouin
Jean-Claude Chauve
Jean-Francois Bertrand
+Jean-Francois Durand
Jean-Louis Lemaire
Jean-Marc Ranger
Jean-Noël Rouvignac
@@ -528,10 +554,12 @@ Jeff Lawson
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
+Jens Rantil
Jeremy Friesner
Jeremy Huddleston
Jeremy Lin
Jeroen Koekkoek
+Jeroen Ooms
Jerome Muffat-Meridol
Jerome Robert
Jerome Vouillon
@@ -545,6 +573,7 @@ Jim Drash
Jim Freeman
Jim Hollinger
Jim Meyering
+Jiri Dvorak
Jiri Hruska
Jiri Jaburek
Jiri Malak
@@ -553,8 +582,10 @@ Joe Halpin
Joe Malicki
Joe Mason
Joel Chen
+Joel Depooter
Jofell Gallardo
Johan Anderson
+Johan Lantz
Johan Nilsson
Johan van Selst
Johannes Bauer
@@ -572,6 +603,7 @@ John Kelly
John Lask
John Lightsey
John Marino
+John Marshall
John McGowan
John P. McCaskey
John Suprock
@@ -581,6 +613,8 @@ Johnny Luong
Jon Grubbs
Jon Nelson
Jon Sargeant
+Jon Seymour
+Jon Spencer
Jon Torrey
Jon Travis
Jon Turner
@@ -589,6 +623,7 @@ Jonas Schnelli
Jonatan Lander
Jonatan Vela
Jonathan Cardoso Machado
+Jonathan Cardoso Machado Machado
Jonathan Hseu
Jonathan Nieder
Jongki Suwandi
@@ -605,8 +640,10 @@ Judson Bishop
Juergen Wilke
Jukka Pihl
Julian Noble
+Julian Ospald
Julian Taylor
Julien Chaffraix
+Julien Nabet
Julien Royer
Jun-ichiro itojun Hagino
Jurij Smakov
@@ -652,6 +689,7 @@ Krishnendu Majumdar
Krister Johansen
Kristian Gunstone
Kristian Köhntopp
+Kyle J. McKay
Kyle L. Huff
Kyle Sallee
Lachlan O'Dea
@@ -670,6 +708,7 @@ Laurent Rabret
Legoff Vincent
Lehel Bernadt
Leif W
+Leith Bade
Len Krause
Lenaic Lefever
Lenny Rachitsky
@@ -682,6 +721,7 @@ Lindley French
Ling Thio
Linus Nielsen Feltzing
Lisa Xu
+Liviu Chircu
Liza Alenchery
Lluís Batlle i Rossell
Loic Dachary
@@ -709,8 +749,10 @@ Manuel Massing
Marc Boucher
Marc Deslauriers
Marc Doughty
+Marc Hesse
Marc Hoersken
Marc Kleine-Budde
+Marc Renault
Marcel Raad
Marcel Roelofs
Marcelo Juchem
@@ -733,6 +775,7 @@ Mark Salisbury
Mark Snelling
Mark Tully
Markus Duft
+Markus Elfring
Markus Koetter
Markus Moeller
Markus Oberhumer
@@ -761,6 +804,7 @@ Matt Wixson
Matteo Rocco
Matthew Blain
Matthew Clarke
+Matthew Hall
Matthias Bolte
Maurice Barnum
Mauro Iorio
@@ -781,16 +825,19 @@ Michael Day
Michael Goffioul
Michael Jahn
Michael Jerris
+Michael Kaufmann
Michael Mealling
Michael Mueller
Michael Osipov
Michael Smith
+Michael Stapelberg
Michael Stillwell
Michael Wallner
Michal Bonino
Michal Marek
Michał Górny
Michał Kowalczyk
+Michel Promonet
Michele Bini
Miguel Angel
Miguel Diaz
@@ -814,6 +861,7 @@ Mitz Wark
Mohamed Lrhazi
Mohammad AlSaleh
Mohun Biswas
+Mostyn Bramley-Moore
Myk Taylor
Nach M. S.
Nagai H
@@ -843,6 +891,7 @@ Nikos Mavrogiannopoulos
Ning Dong
Nir Soffer
Nis Jorgensen
+Nobuhiro Ban
Nodak Sodak
Norbert Frese
Norbert Novotny
@@ -854,7 +903,9 @@ Oliver Gondža
Oliver Kuckertz
Oliver Schindler
Olivier Berger
+Oren Souroujon
Oren Tirosh
+Orgad Shaneh
Ori Avtalion
Oscar Koeroo
Oscar Norlander
@@ -870,6 +921,7 @@ Patricia Muscalu
Patrick Bihan-Faou
Patrick McManus
Patrick Monnerat
+Patrick Rapin
Patrick Scott
Patrick Smith
Patrick Watson
@@ -882,6 +934,7 @@ Paul Marks
Paul Marquis
Paul Moore
Paul Nolan
+Paul Oliver
Paul Querna
Paul Saab
Pavel Cenek
@@ -898,6 +951,7 @@ Peter Heuchert
Peter Hjalmarsson
Peter Korsgaard
Peter Lamberg
+Peter Laser
Peter O'Gorman
Peter Pentchev
Peter Silva
@@ -938,6 +992,7 @@ Quinn Slack
Radu Simionescu
Rafa Muyo
Rafael Sagula
+Rafayel Mkrtchyan
Rafaël Carré
Rainer Canavan
Rainer Jung
@@ -963,6 +1018,7 @@ Rene Rebe
Reuven Wachtfogel
Reza Arbab
Ricardo Cadime
+Rich Burridge
Rich Gray
Rich Rauenzahn
Richard Archer
@@ -1021,6 +1077,8 @@ S. Moonesamy
Salvador Dávila
Salvatore Sorrentino
Sam Deane
+Sam Hurst
+Sam Schanken
Sampo Kellomaki
Samuel Díaz García
Samuel Listopad
@@ -1038,6 +1096,7 @@ Scott Barrett
Scott Cantor
Scott Davis
Scott McCreary
+Sean Boudreau
Sebastian Rasmussen
Senthil Raja Velu
Sergei Nikulov
@@ -1065,6 +1124,8 @@ Spork Schivago
Stadler Stephan
Stan van de Burgt
Stanislav Ivochkin
+Stefan Bühler
+Stefan Eissing
Stefan Esser
Stefan Krause
Stefan Neis
@@ -1079,6 +1140,7 @@ Stephen More
Sterling Hughes
Steve Green
Steve H Truong
+Steve Havelka
Steve Holme
Steve Lhomme
Steve Little
@@ -1099,6 +1161,7 @@ Symeon Paraschoudis
Sébastien Willemijns
T. Bharath
T. Yamada
+Tae Hyoung Ahn
Taneli Vahakangas
Tanguy Fautre
Tatsuhiro Tsujikawa
@@ -1108,6 +1171,7 @@ Thomas J. Moore
Thomas Klausner
Thomas L. Shinnick
Thomas Lopatic
+Thomas Ruecker
Thomas Schwinge
Thomas Tonino
Tiit Pikma
@@ -1127,6 +1191,7 @@ Timo Sirainen
Tinus van den Berg
Tobias Markus
Tobias Rundström
+Tobias Stoeckmann
Toby Peterson
Todd A Ouska
Todd Kulesza
@@ -1147,6 +1212,8 @@ Tomas Hoger
Tomas Mlcoch
Tomas Pospisek
Tomas Szepe
+Tomas Tomecek
+Tomasz Kojm
Tomasz Lacki
Tommie Gannert
Tommy Tam
@@ -1173,6 +1240,7 @@ Victor Snezhko
Vijay Panghal
Vikram Saxena
Viktor Szakáts
+Ville Skyttä
Vilmos Nebehaj
Vincent Bronner
Vincent Le Normand
@@ -1185,10 +1253,12 @@ Vladimir Grishchenko
Vladimir Lazarenko
Vojtech Janota
Vojtech Minarik
+Vojtěch Král
Vsevolod Novikov
Waldek Kozba
Walter J. Mack
Ward Willats
+Warren Menzer
Wayne Haigh
Werner Koch
Wesley Laxton
@@ -1203,6 +1273,7 @@ Wouter Van Rooy
Wu Yongzheng
Xavier Bouchoux
Yaakov Selkowitz
+Yamada Yasuharu
Yang Tse
Yarram Sunil
Yasuharu Yamada
@@ -1212,6 +1283,7 @@ Yi Huang
Yingwei Liu
Yousuke Kimoto
Yukihiro Kawada
+Yun SangHo
Yuriy Sosov
Yves Arrouye
Yves Lejeune
diff --git a/docs/TODO b/docs/TODO
index 2b5a4c273..9eb6b2682 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -9,6 +9,11 @@
Things to do in project cURL. Please tell us what you think, contribute and
send us patches that improve things!
+ Be aware that these are things that we could do, or have once been considered
+ things we could do. If you want to work on any of these areas, please
+ consider bringing it up for discussions first on the mailing list so that we
+ all agree it is still a good idea for the project!
+
All bugs documented in the KNOWN_BUGS document are subject for fixing!
1. libcurl
@@ -20,6 +25,8 @@
1.7 Detect when called from within callbacks
1.8 Allow SSL (HTTPS) to proxy
1.9 Cache negative name resolves
+ 1.10 Support IDNA2008
+ 1.11 minimize dependencies with dynamicly loaded modules
2. libcurl - multi interface
2.1 More non-blocking
@@ -44,6 +51,7 @@
5.3 Rearrange request header order
5.4 SPDY
5.5 auth= in URLs
+ 5.6 Refuse "downgrade" redirects
6. TELNET
6.1 ditch stdin
@@ -65,61 +73,75 @@
10. LDAP
10.1 SASL based authentication mechanisms
- 11. New protocols
- 11.1 RSYNC
-
- 12. SSL
- 12.1 Disable specific versions
- 12.2 Provide mutex locking API
- 12.3 Evaluate SSL patches
- 12.4 Cache OpenSSL contexts
- 12.5 Export session ids
- 12.6 Provide callback for cert verification
- 12.7 improve configure --with-ssl
- 12.8 Support DANE
-
- 13. GnuTLS
- 13.1 SSL engine stuff
- 13.2 check connection
-
- 14. SASL
- 14.1 Other authentication mechanisms
- 14.2 Add QOP support to GSSAPI authentication
+ 11. SMB
+ 11.1 File listing support
+ 11.2 Honor file timestamps
+ 11.3 Use NTLMv2
+
+ 12. New protocols
+ 12.1 RSYNC
+
+ 13. SSL
+ 13.1 Disable specific versions
+ 13.2 Provide mutex locking API
+ 13.3 Evaluate SSL patches
+ 13.4 Cache OpenSSL contexts
+ 13.5 Export session ids
+ 13.6 Provide callback for cert verification
+ 13.7 improve configure --with-ssl
+ 13.8 Support DANE
+
+ 14. GnuTLS
+ 14.1 SSL engine stuff
+ 14.2 check connection
+
+ 15. WinSSL/SChannel
+ 15.1 Add support for client certificate authentication
+ 15.2 Add support for custom server certificate validation
+ 15.3 Add support for the --ciphers option
+
+ 16. SASL
+ 16.1 Other authentication mechanisms
+ 16.2 Add QOP support to GSSAPI authentication
- 15. Client
- 15.1 sync
- 15.2 glob posts
- 15.3 prevent file overwriting
- 15.4 simultaneous parallel transfers
- 15.5 provide formpost headers
- 15.6 warning when setting an option
-
- 16. Build
- 16.1 roffit
-
- 17. Test suite
- 17.1 SSL tunnel
- 17.2 nicer lacking perl message
- 17.3 more protocols supported
- 17.4 more platforms supported
- 17.5 Add support for concurrent connections
-
- 18. Next SONAME bump
- 18.1 http-style HEAD output for FTP
- 18.2 combine error codes
- 18.3 extend CURLOPT_SOCKOPTFUNCTION prototype
-
- 19. Next major release
- 19.1 cleanup return codes
- 19.2 remove obsolete defines
- 19.3 size_t
- 19.4 remove several functions
- 19.5 remove CURLOPT_FAILONERROR
- 19.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
- 19.7 remove progress meter from libcurl
- 19.8 remove 'curl_httppost' from public
- 19.9 have form functions use CURL handle argument
- 19.10 Add CURLOPT_MAIL_CLIENT option
+ 17. Client
+ 17.1 sync
+ 17.2 glob posts
+ 17.3 prevent file overwriting
+ 17.4 simultaneous parallel transfers
+ 17.5 provide formpost headers
+ 17.6 warning when setting an option
+ 17.7 warning when sending binary output to terminal
+ 17.8 offer color-coded HTTP header output
+ 17.9 Choose the name of file in braces for complex URLs
+ 17.10 improve how curl works in a windows console window
+
+ 18. Build
+ 18.1 roffit
+
+ 19. Test suite
+ 19.1 SSL tunnel
+ 19.2 nicer lacking perl message
+ 19.3 more protocols supported
+ 19.4 more platforms supported
+ 19.5 Add support for concurrent connections
+
+ 20. Next SONAME bump
+ 20.1 http-style HEAD output for FTP
+ 20.2 combine error codes
+ 20.3 extend CURLOPT_SOCKOPTFUNCTION prototype
+
+ 21. Next major release
+ 21.1 cleanup return codes
+ 21.2 remove obsolete defines
+ 21.3 size_t
+ 21.4 remove several functions
+ 21.5 remove CURLOPT_FAILONERROR
+ 21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
+ 21.7 remove progress meter from libcurl
+ 21.8 remove 'curl_httppost' from public
+ 21.9 have form functions use CURL handle argument
+ 21.10 Add CURLOPT_MAIL_CLIENT option
==============================================================================
@@ -189,7 +211,7 @@
To prevent local users from snooping on your traffic to the proxy. Supported
by Chrome already:
- http://www.chromium.org/developers/design-documents/secure-web-proxy
+ https://www.chromium.org/developers/design-documents/secure-web-proxy
...and by Firefox soon:
https://bugzilla.mozilla.org/show_bug.cgi?id=378637
@@ -199,6 +221,19 @@
A name resolve that has failed is likely to fail when made again within a
short period of time. Currently we only cache positive responses.
+1.10 Support IDNA2008
+
+ International Domain Names are supported in libcurl since years back, powered
+ by libidn. libidn implements IDNA2003 which has been superseded by IDNA2008.
+ libidn2 is an existing library offering support for IDNA2008.
+
+1.11 minimize dependencies with dynamicly loaded modules
+
+ We can create a system with loadable modules/plug-ins, where these modules
+ would be the ones that link to 3rd party libs. That would allow us to avoid
+ having to load ALL dependencies since only the necessary ones for this
+ app/invoke/used protocols would be necessary to load. See
+ https://github.com/bagder/curl/issues/349
2. libcurl - multi interface
@@ -246,7 +281,7 @@
HOST is a command for a client to tell which host name to use, to offer FTP
servers named-based virtual hosting:
- http://tools.ietf.org/html/rfc7151
+ https://tools.ietf.org/html/rfc7151
4.2 Alter passive/active on failure and retry
@@ -330,6 +365,14 @@ This is not detailed in any FTP specification.
Additionally this should be implemented for proxy base URLs as well.
+5.6 Refuse "downgrade" redirects
+
+ See https://github.com/bagder/curl/issues/226
+
+ Consider a way to tell curl to refuse to "downgrade" protocol with a redirect
+ and/or possibly a bit that refuses redirect to change protocol completely.
+
+
6. TELNET
6.1 ditch stdin
@@ -393,32 +436,47 @@ to provide the data to send.
be possible to use ldap_bind_s() instead specifying the security context
information ourselves.
-11. New protocols
+11. SMB
+
+11.1 File listing support
-11.1 RSYNC
+Add support for listing the contents of a SMB share. The output should probably
+be the same as/similar to FTP.
+
+11.2 Honor file timestamps
+
+The timestamp of the transferred file should reflect that of the original file.
+
+11.3 Use NTLMv2
+
+Currently the SMB authentication uses NTLMv1.
+
+12. New protocols
+
+12.1 RSYNC
There's no RFC for the protocol or an URI/URL format. An implementation
should most probably use an existing rsync library, such as librsync.
-12. SSL
+13. SSL
-12.1 Disable specific versions
+13.1 Disable specific versions
Provide an option that allows for disabling specific SSL versions, such as
SSLv2 http://curl.haxx.se/bug/feature.cgi?id=1767276
-12.2 Provide mutex locking API
+13.2 Provide mutex locking API
Provide a libcurl API for setting mutex callbacks in the underlying SSL
library, so that the same application code can use mutex-locking
independently of OpenSSL or GnutTLS being used.
-12.3 Evaluate SSL patches
+13.3 Evaluate SSL patches
Evaluate/apply Gertjan van Wingerde's SSL patches:
http://curl.haxx.se/mail/lib-2004-03/0087.html
-12.4 Cache OpenSSL contexts
+13.4 Cache OpenSSL contexts
"Look at SSL cafile - quick traces look to me like these are done on every
request as well, when they should only be necessary once per SSL context (or
@@ -428,7 +486,7 @@ to provide the data to send.
style connections are re-used. It will make us use slightly more memory but
it will libcurl do less creations and deletions of SSL contexts.
-12.5 Export session ids
+13.5 Export session ids
Add an interface to libcurl that enables "session IDs" to get
exported/imported. Cris Bailiff said: "OpenSSL has functions which can
@@ -436,22 +494,22 @@ to provide the data to send.
the state from such a buffer at a later date - this is used by mod_ssl for
apache to implement and SSL session ID cache".
-12.6 Provide callback for cert verification
+13.6 Provide callback for cert verification
OpenSSL supports a callback for customised verification of the peer
certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
it be? There's so much that could be done if it were!
-12.7 improve configure --with-ssl
+13.7 improve configure --with-ssl
make the configure --with-ssl option first check for OpenSSL, then GnuTLS,
then NSS...
-12.8 Support DANE
+13.8 Support DANE
DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL
keys and certs over DNS using DNSSEC as an alternative to the CA model.
- http://www.rfc-editor.org/rfc/rfc6698.txt
+ https://www.rfc-editor.org/rfc/rfc6698.txt
An initial patch was posted by Suresh Krishnaswamy on March 7th 2013
(http://curl.haxx.se/mail/lib-2013-03/0075.html) but it was a too simple
@@ -459,34 +517,69 @@ to provide the data to send.
http://curl.haxx.se/mail/lib-2013-03/0103.html . libunbound may be the
correct library to base this development on.
-13. GnuTLS
+14. GnuTLS
-13.1 SSL engine stuff
+14.1 SSL engine stuff
Is this even possible?
-13.2 check connection
+14.2 check connection
Add a way to check if the connection seems to be alive, to correspond to the
SSL_peak() way we use with OpenSSL.
-14. SASL
+15. WinSSL/SChannel
+
+15.1 Add support for client certificate authentication
+
+ WinSSL/SChannel currently makes use of the OS-level system and user
+ certificate and private key stores. This does not allow the application
+ or the user to supply a custom client certificate using curl or libcurl.
+
+ Therefore support for the existing -E/--cert and --key options should be
+ implemented by supplying a custom certificate to the SChannel APIs, see:
+ - Getting a Certificate for Schannel
+ https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
-14.1 Other authentication mechanisms
+15.2 Add support for custom server certificate validation
- Add support for other authentication mechanisms such as EXTERNAL, OLP,
+ WinSSL/SChannel currently makes use of the OS-level system and user
+ certificate trust store. This does not allow the application or user to
+ customize the server certificate validation process using curl or libcurl.
+
+ Therefore support for the existing --cacert or --capath options should be
+ implemented by supplying a custom certificate to the SChannel APIs, see:
+ - Getting a Certificate for Schannel
+ https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
+
+15.3 Add support for the --ciphers option
+
+ The cipher suites used by WinSSL/SChannel are configured on an OS-level
+ instead of an application-level. This does not allow the application or
+ the user to customize the configured cipher suites using curl or libcurl.
+
+ Therefore support for the existing --ciphers option should be implemented
+ by mapping the OpenSSL/GnuTLS cipher suites to the SChannel APIs, see
+ - Specifying Schannel Ciphers and Cipher Strengths
+ https://msdn.microsoft.com/en-us/library/windows/desktop/aa380161.aspx
+
+16. SASL
+
+16.1 Other authentication mechanisms
+
+ Add support for other authentication mechanisms such as OLP,
GSS-SPNEGO and others.
-14.2 Add QOP support to GSSAPI authentication
+16.2 Add QOP support to GSSAPI authentication
Currently the GSSAPI authentication only supports the default QOP of auth
(Authentication), whilst Kerberos V5 supports both auth-int (Authentication
with integrity protection) and auth-conf (Authentication with integrity and
privacy protection).
-15. Client
+17. Client
-15.1 sync
+17.1 sync
"curl --sync http://example.com/feed[1-100].rss" or
"curl --sync http://example.net/{index,calendar,history}.html"
@@ -495,12 +588,12 @@ to provide the data to send.
remote file is newer than the local file. A Last-Modified HTTP date header
should also be used to set the mod date on the downloaded file.
-15.2 glob posts
+17.2 glob posts
Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'.
This is easily scripted though.
-15.3 prevent file overwriting
+17.3 prevent file overwriting
Add an option that prevents cURL from overwriting existing local files. When
used, and there already is an existing file with the target file name
@@ -508,14 +601,14 @@ to provide the data to send.
existing). So that index.html becomes first index.html.1 and then
index.html.2 etc.
-15.4 simultaneous parallel transfers
+17.4 simultaneous parallel transfers
The client could be told to use maximum N simultaneous parallel transfers and
then just make sure that happens. It should of course not make more than one
connection to the same remote host. This would require the client to use the
multi interface. http://curl.haxx.se/bug/feature.cgi?id=1558595
-15.5 provide formpost headers
+17.5 provide formpost headers
Extending the capabilities of the multipart formposting. How about leaving
the ';type=foo' syntax as it is and adding an extra tag (headers) which
@@ -529,43 +622,73 @@ to provide the data to send.
which should overwrite the program reasonable defaults (plain/text,
8bit...)
-15.6 warning when setting an option
+17.6 warning when setting an option
+
+ Display a warning when libcurl returns an error when setting an option.
+ This can be useful to tell when support for a particular feature hasn't been
+ compiled into the library.
+
+17.7 warning when sending binary output to terminal
+
+ Provide a way that prompts the user for confirmation before binary data is
+ sent to the terminal, much in the style 'less' does it.
+
+17.8 offer color-coded HTTP header output
+
+ By offering different color output on the header name and the header
+ contents, they could be made more readable and thus help users working on
+ HTTP services.
+
+17.9 Choose the name of file in braces for complex URLs
+
+ When using braces to download a list of URLs and you use complicated names
+ in the list of alternatives, it could be handy to allow curl to use other
+ names when saving.
+
+ Consider a way to offer that. Possibly like
+ {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the
+ colon is the output name.
+
+ See https://github.com/bagder/curl/issues/221
+
+17.10 improve how curl works in a windows console window
+
+ If you pull the scrollbar when transferring with curl in a Windows console
+ window, the transfer is interrupted and can get disconnected. This can
+ probably be improved. See https://github.com/bagder/curl/issues/322
- Display a warning when libcurl returns an error when setting an option.
- This can be useful to tell when support for a particular feature hasn't been
- compiled into the library.
-16. Build
+18. Build
-16.1 roffit
+18.1 roffit
Consider extending 'roffit' to produce decent ASCII output, and use that
instead of (g)nroff when building src/tool_hugehelp.c
-17. Test suite
+19. Test suite
-17.1 SSL tunnel
+19.1 SSL tunnel
Make our own version of stunnel for simple port forwarding to enable HTTPS
and FTP-SSL tests without the stunnel dependency, and it could allow us to
provide test tools built with either OpenSSL or GnuTLS
-17.2 nicer lacking perl message
+19.2 nicer lacking perl message
If perl wasn't found by the configure script, don't attempt to run the tests
but explain something nice why it doesn't.
-17.3 more protocols supported
+19.3 more protocols supported
Extend the test suite to include more protocols. The telnet could just do FTP
or http operations (for which we have test servers).
-17.4 more platforms supported
+19.4 more platforms supported
Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
fork()s and it should become even more portable.
-17.5 Add support for concurrent connections
+19.5 Add support for concurrent connections
Tests 836, 882 and 938 were designed to verify that separate connections aren't
used when using different login credentials in protocols that shouldn't re-use
@@ -579,14 +702,14 @@ to provide the data to send.
and thus the wait for connections loop is never entered to receive the second
connection.
-18. Next SONAME bump
+20. Next SONAME bump
-18.1 http-style HEAD output for FTP
+20.1 http-style HEAD output for FTP
#undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
from being output in NOBODY requests over FTP
-18.2 combine error codes
+20.2 combine error codes
Combine some of the error codes to remove duplicates. The original
numbering should not be changed, and the old identifiers would be
@@ -611,29 +734,29 @@ to provide the data to send.
CURLE_TFTP_PERM => CURLE_REMOTE_ACCESS_DENIED
-18.3 extend CURLOPT_SOCKOPTFUNCTION prototype
+20.3 extend CURLOPT_SOCKOPTFUNCTION prototype
The current prototype only provides 'purpose' that tells what the
connection/socket is for, but not any protocol or similar. It makes it hard
for applications to differentiate on TCP vs UDP and even HTTP vs FTP and
similar.
-19. Next major release
+21. Next major release
-19.1 cleanup return codes
+21.1 cleanup return codes
curl_easy_cleanup() returns void, but curl_multi_cleanup() returns a
CURLMcode. These should be changed to be the same.
-19.2 remove obsolete defines
+21.2 remove obsolete defines
remove obsolete defines from curl/curl.h
-19.3 size_t
+21.3 size_t
make several functions use size_t instead of int in their APIs
-19.4 remove several functions
+21.4 remove several functions
remove the following functions from the public API:
@@ -654,18 +777,18 @@ to provide the data to send.
curl_multi_socket_all
-19.5 remove CURLOPT_FAILONERROR
+21.5 remove CURLOPT_FAILONERROR
Remove support for CURLOPT_FAILONERROR, it has gotten too kludgy and weird
internally. Let the app judge success or not for itself.
-19.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
+21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
Remove support for a global DNS cache. Anything global is silly, and we
already offer the share interface for the same functionality but done
"right".
-19.7 remove progress meter from libcurl
+21.7 remove progress meter from libcurl
The internally provided progress meter output doesn't belong in the library.
Basically no application wants it (apart from curl) but instead applications
@@ -675,7 +798,7 @@ to provide the data to send.
variable types passed to it instead of doubles so that big files work
correctly.
-19.8 remove 'curl_httppost' from public
+21.8 remove 'curl_httppost' from public
curl_formadd() was made to fill in a public struct, but the fact that the
struct is public is never really used by application for their own advantage
@@ -684,7 +807,7 @@ to provide the data to send.
Changing them to return a private handle will benefit the implementation and
allow us much greater freedoms while still maintaining a solid API and ABI.
-19.9 have form functions use CURL handle argument
+21.9 have form functions use CURL handle argument
curl_formadd() and curl_formget() both currently have no CURL handle
argument, but both can use a callback that is set in the easy handle, and
@@ -692,7 +815,7 @@ to provide the data to send.
curl_easy_perform() (or similar) called - which is hard to grasp and a design
mistake.
-19.10 Add CURLOPT_MAIL_CLIENT option
+21.10 Add CURLOPT_MAIL_CLIENT option
Rather than use the URL to specify the mail client string to present in the
HELO and EHLO commands, libcurl should support a new CURLOPT specifically for
diff --git a/docs/TheArtOfHttpScripting b/docs/TheArtOfHttpScripting
index 7235f12f9..76faee4a8 100644
--- a/docs/TheArtOfHttpScripting
+++ b/docs/TheArtOfHttpScripting
@@ -1,4 +1,3 @@
-Updated: Dec 24, 2013 (http://curl.haxx.se/docs/httpscripting.html)
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
@@ -23,6 +22,8 @@ The Art Of Scripting HTTP Requests Using Curl
3. Fetch a page
3.1 GET
3.2 HEAD
+ 3.3 Multiple URLs in a single command line
+ 3.4 Multiple HTTP methods in a single command line
4. HTML forms
4.1 Forms explained
4.2 GET
@@ -136,7 +137,7 @@ The Art Of Scripting HTTP Requests Using Curl
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you've seen URLs like
http://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
- canonical spec.
+ canonical spec. And yeah, the formal name is not URL, it is URI.
2.2 Host
@@ -193,7 +194,6 @@ The Art Of Scripting HTTP Requests Using Curl
the associated response. The path is what is to the right side of the slash
that follows the host name and possibly port number.
-
3. Fetch a page
3.1 GET
@@ -224,6 +224,46 @@ The Art Of Scripting HTTP Requests Using Curl
may see a Content-Length: in the response headers, but there must not be an
actual body in the HEAD response.
+ 3.3 Multiple URLs in a single command line
+
+ A single curl command line may involve one or many URLs. The most common case
+ is probably to just use one, but you can specify any amount of URLs. Yes
+ any. No limits. You'll then get requests repeated over and over for all the
+ given URLs.
+
+ Example, send two GETs:
+
+ curl http://url1.example.com http://url2.example.com
+
+ If you use --data to POST to the URL, using multiple URLs means that you send
+ that same POST to all the given URLs.
+
+ Example, send two POSTs:
+
+ curl --data name=curl http://url1.example.com http://url2.example.com
+
+
+ 3.4 Multiple HTTP methods in a single command line
+
+ Sometimes you need to operate on several URLs in a single command line and do
+ different HTTP methods on each. For this, you'll enjoy the --next option. It
+ is basically a separator that separates a bunch of options from the next. All
+ the URLs before --next will get the same method and will get all the POST
+ data merged into one.
+
+ When curl reaches the --next on the command line, it'll sort of reset the
+ method and the POST data and allow a new set.
+
+ Perhaps this is best shown with a few examples. To send first a HEAD and then
+ a GET:
+
+ curl -I http://example.com --next http://example.com
+
+ To first send a POST and then a GET:
+
+ curl -d score=10 http://example.com/post.cgi --next http://example.com/results.html
+
+
4. HTML forms
4.1 Forms explained
@@ -302,6 +342,10 @@ The Art Of Scripting HTTP Requests Using Curl
curl --data-urlencode "name=I am Daniel" http://www.example.com
+ If you repeat --data several times on the command line, curl will
+ concatenate all the given data pieces - and put a '&' symbol between each
+ data segment.
+
4.4 File Upload POST
Back in late 1995 they defined an additional way to post data over HTTP. It
@@ -557,8 +601,10 @@ The Art Of Scripting HTTP Requests Using Curl
truckload of advanced features to allow all those encryptions and key
infrastructure mechanisms encrypted HTTP requires.
- Curl supports encrypted fetches thanks to the freely available OpenSSL
- libraries. To get a page from a HTTPS server, simply run curl like:
+ Curl supports encrypted fetches when built to use a TLS library and it can be
+ built to use one out of a fairly large set of libraries - "curl -V" will show
+ which one your curl was built to use (if any!). To get a page from a HTTPS
+ server, simply run curl like:
curl https://secure.example.com
@@ -584,6 +630,12 @@ The Art Of Scripting HTTP Requests Using Curl
http://curl.haxx.se/docs/sslcerts.html
+ At times you may end up with your own CA cert store and then you can tell
+ curl to use that to verify the server's certificate:
+
+ curl --cacert ca-bundle.pem https://example.com/
+
+
11. Custom Request Elements
11.1 Modify method and headers
@@ -692,7 +744,7 @@ The Art Of Scripting HTTP Requests Using Curl
14.1 Standards
- RFC 2616 is a must to read if you want in-depth understanding of the HTTP
+ RFC 7230 is a must to read if you want in-depth understanding of the HTTP
protocol
RFC 3986 explains the URL syntax
diff --git a/docs/VERSIONS b/docs/VERSIONS
index 0670089bd..72a45474d 100644
--- a/docs/VERSIONS
+++ b/docs/VERSIONS
@@ -1,22 +1,18 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
Version Numbers and Releases
+============================
Curl is not only curl. Curl is also libcurl. They're actually individually
versioned, but they mostly follow each other rather closely.
The version numbering is always built up using the same system:
- X.Y[.Z]
+ X.Y.Z
+
+ - X is main version number
+ - Y is release number
+ - Z is patch number
- Where
- X is main version number
- Y is release number
- Z is patch number
+## Bumping numbers
One of these numbers will get bumped in each new release. The numbers to the
right of a bumped number will be reset to zero. If Z is zero, it may not be
@@ -57,4 +53,4 @@ Version Numbers and Releases
release. It makes comparisons with greater than and less than work.
This number is also available as three separate defines:
- LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH.
+ `LIBCURL_VERSION_MAJOR`, `LIBCURL_VERSION_MINOR` and `LIBCURL_VERSION_PATCH`.
diff --git a/docs/curl-config.html b/docs/curl-config.html
index 1563d548b..015dae821 100644
--- a/docs/curl-config.html
+++ b/docs/curl-config.html
@@ -4,15 +4,20 @@
<title>curl-config man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/curl-config.pdf b/docs/curl-config.pdf
index 301530442..e3abdea26 100644
--- a/docs/curl-config.pdf
+++ b/docs/curl-config.pdf
Binary files differ
diff --git a/docs/curl.1 b/docs/curl.1
index 0b9971cd2..e3303a54f 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -39,8 +39,7 @@ resume, Metalink, and more. As you will see below, the number of features will
make your head spin!
curl is powered by libcurl for all transfer-related features. See
-.BR libcurl (3)
-for details.
+\fIlibcurl(3)\fP for details.
.SH URL
The URL syntax is protocol-dependent. You'll find a detailed description in
RFC 3986.
@@ -269,11 +268,11 @@ If this option is used several times, the last one will be used.
.IP "--ciphers <list of ciphers>"
(SSL) Specifies which ciphers to use in the connection. The list of ciphers
must specify valid ciphers. Read up on SSL cipher list details on this URL:
-\fIhttp://www.openssl.org/docs/apps/ciphers.html\fP
+\fIhttps://www.openssl.org/docs/apps/ciphers.html\fP
NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS
ciphers is in the NSSCipherSuite entry at this URL:
-\fIhttp://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP
+\fIhttps://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP
If this option is used several times, the last one will be used.
.IP "--compressed"
@@ -315,9 +314,10 @@ presses the submit button. This will cause curl to pass the data to the server
using the content-type application/x-www-form-urlencoded. Compare to
\fI-F, --form\fP.
-\fI-d, --data\fP is the same as \fI--data-ascii\fP. To post data purely binary,
-you should instead use the \fI--data-binary\fP option. To URL-encode the value
-of a form field you may use \fI--data-urlencode\fP.
+\fI-d, --data\fP is the same as \fI--data-ascii\fP. \fI--data-raw\fP is almost
+the same but does not have a special interpretation of the @ character. To
+post data purely binary, you should instead use the \fI--data-binary\fP option.
+To URL-encode the value of a form field you may use \fI--data-urlencode\fP.
If any of these options is used more than once on the same command line, the
data pieces specified will be merged together with a separating
@@ -329,7 +329,8 @@ read the data from, or - if you want curl to read the data from
stdin. Multiple files can also be specified. Posting data from a file
named 'foobar' would thus be done with \fI--data\fP @foobar. When --data is
told to read from a file like that, carriage returns and newlines will be
-stripped out.
+stripped out. If you don't want the @ character to have a special
+interpretation use \fI--data-raw\fP instead.
.IP "-D, --dump-header <file>"
Write the protocol headers to the specified file.
@@ -354,6 +355,10 @@ and carriage returns are preserved and conversions are never done.
If this option is used several times, the ones following the first will append
data as described in \fI-d, --data\fP.
+.IP "--data-raw <data>"
+(HTTP) This posts data similarly to \fI--data\fP but without the special
+interpretation of the @ character. See \fI-d, --data\fP.
+(Added in 7.43.0)
.IP "--data-urlencode <data>"
(HTTP) This posts data, similar to the other --data options with the exception
that this performs URL-encoding. (Added in 7.18.0)
@@ -539,19 +544,42 @@ OpenSSL-powered curl to make SSL-connections much more efficiently than using
If this option is set, the default capath value will be ignored, and if it is
used several times, the last one will be used.
-.IP "--pinnedpubkey <pinned public key>"
-(SSL) Tells curl to use the specified public key file to verify the peer. The
-file must contain a single public key in PEM or DER format.
+.IP "--pinnedpubkey <pinned public key (hashes)>"
+(SSL) Tells curl to use the specified public key file (or hashes) to verify the
+peer. This can be a path to a file which contains a single public key in PEM or
+DER format, or any number of base64 encoded sha256 hashes preceded by
+\'sha256//\' and seperated by \';\'
When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.
-This is currently only implemented in the OpenSSL, GnuTLS and GSKit backends.
+Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and
+wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL,
+GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported.
If this option is used several times, the last one will be used.
-(Added in 7.39.0)
+.IP "--cert-status"
+(SSL) Tells curl to verify the status of the server certificate by using the
+Certificate Status Request (aka. OCSP stapling) TLS extension.
+
+If this option is enabled and the server sends an invalid (e.g. expired)
+response, if the response suggests that the server certificate has been revoked,
+or no response at all is received, the verification fails.
+
+This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
+(Added in 7.41.0)
+.IP "--false-start"
+
+(SSL) Tells curl to use false start during the TLS handshake. False start is a
+mode where a TLS client will start sending application data before verifying
+the server's Finished message, thus saving a round trip when performing a full
+handshake.
+
+This is currently only implemented in the NSS and Secure Transport (on iOS 7.0
+or later, or OS X 10.9 or later) backends.
+(Added in 7.42.0)
.IP "-f, --fail"
(HTTP) Fail silently (no output at all) on server errors. This is mostly done
to better enable scripts etc to better deal with failed attempts. In normal
@@ -579,7 +607,9 @@ input:
\fBcurl\fP -F password=@/etc/passwd www.mypasswords.com
To read content from stdin instead of a file, use - as the filename. This goes
-for both @ and < constructs.
+for both @ and < constructs. Unfortunately it does not support reading the
+file from a named pipe or similar, as it needs the full size before the
+transfer starts.
You can also tell curl what Content-Type to use by using 'type=', in a manner
similar to:
@@ -641,6 +671,7 @@ curl does one CWD with the full target directory and then operates on the file
\&"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE
+.IP
(Added in 7.15.1)
.IP "--ftp-pasv"
(FTP) Use passive mode for the data connection. Passive is the internal default
@@ -733,6 +764,12 @@ Example:
\&# curl -H "X-First-Name: Joe" http://192.168.0.1/
+\fBWARNING\fP: headers set with this option will be set in all requests - even
+after redirects are followed, like when told with \fB-L, --location\fP. This
+can lead to the header being sent to other hosts than the original host, so
+sensitive headers should be used with caution combined with following
+redirects.
+
This option can be used multiple times to add/replace/remove multiple headers.
.IP "--hostpubmd5 <md5>"
(SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should
@@ -1027,13 +1064,10 @@ in Metalink file, hash check will fail.
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
home directory for login name and password. This is typically used for FTP on
Unix. If used with HTTP, curl will enable user authentication. See
-.BR netrc(4)
-or
-.BR ftp(1)
-for details on the file format. Curl will not complain if that file
-doesn't have the right permissions (it should not be either world- or
-group-readable). The environment variable "HOME" is used to find the home
-directory.
+\fInetrc(5)\fP \fIftp(1)\fP for details on the file format. Curl will not
+complain if that file doesn't have the right permissions (it should not be
+either world- or group-readable). The environment variable "HOME" is used to
+find the home directory.
A quick and very simple example of how to setup a \fI.netrc\fP to allow curl
to FTP to the machine host.domain.com with user name \&'myself' and password
@@ -1195,7 +1229,7 @@ i.e "my.host.domain" to specify the machine
make curl pick the same IP address that is already used for the control
connection
.RE
-
+.IP
If this option is used several times, the last one will be used. Disable the
use of PORT with \fI--ftp-pasv\fP. Disable the attempt to use the EPRT command
instead of PORT by using \fI--disable-eprt\fP. EPRT is really PORT++.
@@ -1209,6 +1243,12 @@ available.
(SSL/SSH) Passphrase for the private key
If this option is used several times, the last one will be used.
+.IP "--path-as-is"
+Tell curl to not handle sequences of /../ or /./ in the given URL
+path. Normally curl will squash or merge them according to standards but with
+this option set you tell it not to do that.
+
+(Added in 7.42.0)
.IP "--post301"
(HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests
into GET requests when following a 301 redirection. The non-RFC behaviour is
@@ -1294,6 +1334,11 @@ with a remote host. (Added in 7.17.1)
.IP "--proxy-ntlm"
Tells curl to use HTTP NTLM authentication when communicating with the given
proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
+.IP "--proxy-service-name <servicename>"
+This option allows you to change the service name for proxy negotiation.
+
+Examples: --proxy-negotiate proxy-name \fI--proxy-service-name\fP sockd would use
+sockd/proxy-name. (Added in 7.43.0).
.IP "--proxy1.0 <proxyhost[:port]>"
Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
assumed at port 1080.
@@ -1391,7 +1436,7 @@ specifies 300 bytes from offset 500(H)
.B 100-199,500-599
specifies two separate 100-byte ranges(*)(H)
.RE
-
+.IP
(*) = NOTE that this will cause the server to reply with a multipart
response!
@@ -1475,6 +1520,11 @@ terminal/stdout unless you redirect it.
.IP "--sasl-ir"
Enable initial response in SASL authentication.
(Added in 7.31.0)
+.IP "--service-name <servicename>"
+This option allows you to change the service name for SPNEGO.
+
+Examples: --negotiate \fI--service-name\fP sockd would use
+sockd/server-name. (Added in 7.43.0).
.IP "-S, --show-error"
When used with \fI-s\fP it makes curl show an error message if it fails.
.IP "--ssl"
@@ -1497,6 +1547,10 @@ and TLS1.0 protocols known as BEAST. If this option isn't used, the SSL layer
may use workarounds known to cause interoperability problems with some older
SSL implementations. WARNING: this option loosens the SSL security, and by
using this flag you ask for exactly that. (Added in 7.25.0)
+.IP "--ssl-no-revoke"
+(WinSSL) This option tells curl to disable certificate revocation checks.
+WARNING: this option loosens the SSL security, and by using this flag you ask
+for exactly that. (Added in 7.44.0)
.IP "--socks4 <host[:port]>"
Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080. (Added in 7.15.2)
@@ -1676,7 +1730,7 @@ impossible to use a colon in the user name with this option. The password can,
still.
When using Kerberos V5 with a Windows based server you should include the
-Windows domain name in the user name, in order for the server to succesfully
+Windows domain name in the user name, in order for the server to successfully
obtain a Kerberos Ticket. If you don't then the initial authentication
handshake may fail.
@@ -1850,7 +1904,7 @@ displayed with millisecond resolution.
The URL that was fetched last. This is most meaningful if you've told curl
to follow location: headers.
.RE
-
+.IP
If this option is used several times, the last one will be used.
.IP "-x, --proxy <[protocol://][user:password@]proxyhost[:port]>"
Use the specified proxy.
@@ -1884,7 +1938,7 @@ password.
If this option is used several times, the last one will be used.
.IP "-X, --request <command>"
(HTTP) Specifies a custom request method to use when communicating with the
-HTTP server. The specified request will be used instead of the method
+HTTP server. The specified request method will be used instead of the method
otherwise used (which defaults to GET). Read the HTTP 1.1 specification for
details and explanations. Common additional HTTP requests include PUT and
DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and
@@ -1898,6 +1952,11 @@ alter the way curl behaves. So for example if you want to make a proper HEAD
request, using -X HEAD will not suffice. You need to use the \fI-I, --head\fP
option.
+The method string you set with -X will be used for all requests, which if you
+for example use \fB-L, --location\fP may cause unintended side-effects when
+curl doesn't change request method according to the HTTP 30x response codes -
+and similar.
+
(FTP)
Specifies a custom FTP command to use instead of LIST when doing file lists
with FTP.
diff --git a/docs/curl.html b/docs/curl.html
index 2a961b7fd..c8374c4ab 100644
--- a/docs/curl.html
+++ b/docs/curl.html
@@ -4,15 +4,20 @@
<title>curl man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -50,7 +55,7 @@ p.roffit {
<p class="level0"><span Class="bold">curl [options]</span> <a class="emphasis" href="#URL">[URL...]</a> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0"><span Class="bold">curl</span> is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction.
<p class="level0">curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more. As you will see below, the number of features will make your head spin!
-<p class="level0">curl is powered by libcurl for all transfer-related features. See <span Class="manpage">libcurl (3)</span> for details. <a name="URL"></a><h2 class="nroffsh">URL</h2>
+<p class="level0">curl is powered by libcurl for all transfer-related features. See <span Class="emphasis">libcurl(3)</span> for details. <a name="URL"></a><h2 class="nroffsh">URL</h2>
<p class="level0">The URL syntax is protocol-dependent. You'll find a detailed description in <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>.
<p class="level0">You can specify multiple URLs or parts of URLs by writing part sets within braces as in:
<p class="level0">&nbsp; <a href="http://site">http://site</a>.{one,two,three}.com
@@ -74,7 +79,7 @@ p.roffit {
<p class="level0">curl displays this data to the terminal by default, so if you invoke curl to do an operation and it is about to write data to the terminal, it <span Class="emphasis">disables</span> the progress meter as otherwise it would mess up the output mixing progress meter and response data.
<p class="level0">If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (&gt;), -o [file] or similar.
<p class="level0">It is not the same case for FTP upload as that operation does not spit out any response data to the terminal.
-<p class="level0">If you prefer a progress "bar" instead of the regular meter, <a class="emphasis" href="#-">-#</a> is your friend. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
+<p class="level0">If you prefer a progress "bar" instead of the regular meter, <span Class="emphasis">-&#35;</span> is your friend. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
<p class="level0">Options start with one or two dashes. Many of the options require an additional value next to them.
<p class="level0">The short "single-dash" form of the options, -d for example, may be used with or without a space between it and its value, although a space is a recommended separator. The long "double-dash" form, --data for example, requires a space between it and its value.
<p class="level0">Short version options that don't need any additional values can be used immediately next to each other, like for example you can specify all the options -O, -L and -v at once as -OLv.
@@ -134,8 +139,8 @@ p.roffit {
<p class="level1">Use "-C -" to tell curl to automatically find out where/how to resume the transfer. It then uses the given output/input files to figure that out.
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="--ciphers"></a><span class="nroffip">--ciphers &lt;list of ciphers&gt;</span>
-<p class="level1">(SSL) Specifies which ciphers to use in the connection. The list of ciphers must specify valid ciphers. Read up on SSL cipher list details on this URL: <span Class="emphasis"><a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a></span>
-<p class="level1">NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS ciphers is in the NSSCipherSuite entry at this URL: <span Class="emphasis"><a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives</a></span>
+<p class="level1">(SSL) Specifies which ciphers to use in the connection. The list of ciphers must specify valid ciphers. Read up on SSL cipher list details on this URL: <span Class="emphasis">https://www.openssl.org/docs/apps/ciphers.html</span>
+<p class="level1">NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS ciphers is in the NSSCipherSuite entry at this URL: <span Class="emphasis">https://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html&#35;Directives</span>
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="--compressed"></a><span class="nroffip">--compressed</span>
<p class="level1">(HTTP) Request a compressed response using one of the algorithms curl supports, and save the uncompressed document. If this option is used and the server sends an unsupported encoding, curl will report an error.
@@ -155,9 +160,9 @@ p.roffit {
<p class="level1">(Added in 7.19.7)
<p class="level0"><a name="-d"></a><span class="nroffip">-d, --data &lt;data&gt;</span>
<p class="level1">(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded. Compare to <a class="emphasis" href="#-F">-F, --form</a>.
-<p class="level1"><a class="emphasis" href="#-d">-d, --data</a> is the same as <a class="emphasis" href="#--data-ascii">--data-ascii</a>. To post data purely binary, you should instead use the <a class="emphasis" href="#--data-binary">--data-binary</a> option. To URL-encode the value of a form field you may use <a class="emphasis" href="#--data-urlencode">--data-urlencode</a>.
+<p class="level1"><a class="emphasis" href="#-d">-d, --data</a> is the same as <a class="emphasis" href="#--data-ascii">--data-ascii</a>. <a class="emphasis" href="#--data-raw">--data-raw</a> is almost the same but does not have a special interpretation of the @ character. To post data purely binary, you should instead use the <a class="emphasis" href="#--data-binary">--data-binary</a> option. To URL-encode the value of a form field you may use <a class="emphasis" href="#--data-urlencode">--data-urlencode</a>.
<p class="level1">If any of these options is used more than once on the same command line, the data pieces specified will be merged together with a separating &-symbol. Thus, using '-d name=daniel -d skill=lousy' would generate a post chunk that looks like 'name=daniel&skill=lousy'.
-<p class="level1">If you start the data with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin. Multiple files can also be specified. Posting data from a file named 'foobar' would thus be done with <span Class="emphasis">--data</span> @foobar. When --data is told to read from a file like that, carriage returns and newlines will be stripped out.
+<p class="level1">If you start the data with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin. Multiple files can also be specified. Posting data from a file named 'foobar' would thus be done with <span Class="emphasis">--data</span> @foobar. When --data is told to read from a file like that, carriage returns and newlines will be stripped out. If you don't want the @ character to have a special interpretation use <a class="emphasis" href="#--data-raw">--data-raw</a> instead.
<p class="level0"><a name="-D"></a><span class="nroffip">-D, --dump-header &lt;file&gt;</span>
<p class="level1">Write the protocol headers to the specified file.
<p class="level1">This option is handy to use when you want to store the headers that an HTTP site sends to you. Cookies from the headers could then be read in a second curl invocation by using the <a class="emphasis" href="#-b">-b, --cookie</a> option! The <a class="emphasis" href="#-c">-c, --cookie-jar</a> option is a better way to store cookies.
@@ -169,6 +174,8 @@ p.roffit {
<p class="level1">(HTTP) This posts data exactly as specified with no extra processing whatsoever.
<p class="level1">If you start the data with the letter @, the rest should be a filename. Data is posted in a similar manner as <a class="emphasis" href="#--data-ascii">--data-ascii</a> does, except that newlines and carriage returns are preserved and conversions are never done.
<p class="level1">If this option is used several times, the ones following the first will append data as described in <a class="emphasis" href="#-d">-d, --data</a>.
+<p class="level0"><a name="--data-raw"></a><span class="nroffip">--data-raw &lt;data&gt;</span>
+<p class="level1">(HTTP) This posts data similarly to <span Class="emphasis">--data</span> but without the special interpretation of the @ character. See <a class="emphasis" href="#-d">-d, --data</a>. (Added in 7.43.0)
<p class="level0"><a name="--data-urlencode"></a><span class="nroffip">--data-urlencode &lt;data&gt;</span>
<p class="level1">(HTTP) This posts data, similar to the other --data options with the exception that this performs URL-encoding. (Added in 7.18.0)
<p class="level1">To be CGI-compliant, the &lt;data&gt; part should begin with a <span Class="emphasis">name</span> followed by a separator and a content specification. The &lt;data&gt; part can be passed to curl using one of the following syntaxes:
@@ -221,9 +228,9 @@ p.roffit {
<p class="level1">(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set with the <a class="emphasis" href="#-H">-H, --header</a> flag of course. When used with <a class="emphasis" href="#-L">-L, --location</a> you can append ";auto" to the --referer URL to make curl automatically set the previous URL when it follows a Location: header. The ";auto" string can be used alone, even if you don't set an initial --referer.
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="-E"></a><span class="nroffip">-E, --cert &lt;certificate[:password]&gt;</span>
-<p class="level1">(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PKCS#12 format if using Secure Transport, or PEM format if using any other engine. If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See <span Class="emphasis">--cert</span> and <a class="emphasis" href="#--key">--key</a> to specify them independently.
-<p class="level1">If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. If the nickname contains ":", it needs to be preceded by "\" so that it is not recognized as password delimiter. If the nickname contains "\", it needs to be escaped as "\\" so that it is not recognized as an escape character.
-<p class="level1">(iOS and Mac OS X only) If curl is built against Secure Transport, then the certificate string can either be the name of a certificate/private key in the system or user keychain, or the path to a PKCS#12-encoded certificate and private key. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.
+<p class="level1">(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PKCS&#35;12 format if using Secure Transport, or PEM format if using any other engine. If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See <span Class="emphasis">--cert</span> and <a class="emphasis" href="#--key">--key</a> to specify them independently.
+<p class="level1">If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS&#35;11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. If the nickname contains ":", it needs to be preceded by "\" so that it is not recognized as password delimiter. If the nickname contains "\", it needs to be escaped as "\\" so that it is not recognized as an escape character.
+<p class="level1">(iOS and Mac OS X only) If curl is built against Secure Transport, then the certificate string can either be the name of a certificate/private key in the system or user keychain, or the path to a PKCS&#35;12-encoded certificate and private key. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="--engine"></a><span class="nroffip">--engine &lt;name&gt;</span>
<p class="level1">Select the OpenSSL crypto engine to use for cipher operations. Use <a class="emphasis" href="#--engine">--engine list</a> to print a list of build-time supported engines. Note that not all (or none) of the engines may be available at run-time.
@@ -238,16 +245,24 @@ p.roffit {
<p class="level1">(SSL) Tells curl to use the specified certificate file to verify the peer. The file may contain multiple CA certificates. The certificate(s) must be in PEM format. Normally curl is built to use a default file for this, so this option is typically used to alter that default file.
<p class="level1">curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is set, and uses the given path as a path to a CA cert bundle. This option overrides that variable.
<p class="level1">The windows version of curl will automatically look for a CA certs file named &acute;curl-ca-bundle.crt&acute;, either in the same directory as curl.exe, or in the Current Working Directory, or in any folder along your PATH.
-<p class="level1">If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module (libnsspem.so) needs to be available for this option to work properly.
+<p class="level1">If curl is built against the NSS SSL library, the NSS PEM PKCS&#35;11 module (libnsspem.so) needs to be available for this option to work properly.
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="--capath"></a><span class="nroffip">--capath &lt;CA certificate directory&gt;</span>
<p class="level1">(SSL) Tells curl to use the specified certificate directory to verify the peer. Multiple paths can be provided by separating them with ":" (e.g. "path1:path2:path3"). The certificates must be in PEM format, and if curl is built against OpenSSL, the directory must have been processed using the c_rehash utility supplied with OpenSSL. Using <a class="emphasis" href="#--capath">--capath</a> can allow OpenSSL-powered curl to make SSL-connections much more efficiently than using <a class="emphasis" href="#--cacert">--cacert</a> if the <a class="emphasis" href="#--cacert">--cacert</a> file contains many CA certificates.
<p class="level1">If this option is set, the default capath value will be ignored, and if it is used several times, the last one will be used.
-<p class="level0"><a name="--pinnedpubkey"></a><span class="nroffip">--pinnedpubkey &lt;pinned public key&gt;</span>
-<p class="level1">(SSL) Tells curl to use the specified public key file to verify the peer. The file must contain a single public key in PEM or DER format.
+<p class="level0"><a name="--pinnedpubkey"></a><span class="nroffip">--pinnedpubkey &lt;pinned public key (hashes)&gt;</span>
+<p class="level1">(SSL) Tells curl to use the specified public key file (or hashes) to verify the peer. This can be a path to a file which contains a single public key in PEM or DER format, or any number of base64 encoded sha256 hashes preceded by &acute;sha256//&acute; and seperated by &acute;;&acute;
<p class="level1">When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, curl will abort the connection before sending or receiving any data.
-<p class="level1">This is currently only implemented in the OpenSSL, GnuTLS and GSKit backends.
-<p class="level1">If this option is used several times, the last one will be used. (Added in 7.39.0)
+<p class="level1">Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported.
+<p class="level1">If this option is used several times, the last one will be used.
+<p class="level0"><a name="--cert-status"></a><span class="nroffip">--cert-status</span>
+<p class="level1">(SSL) Tells curl to verify the status of the server certificate by using the Certificate Status Request (aka. OCSP stapling) TLS extension.
+<p class="level1">If this option is enabled and the server sends an invalid (e.g. expired) response, if the response suggests that the server certificate has been revoked, or no response at all is received, the verification fails.
+<p class="level1">This is currently only implemented in the OpenSSL, GnuTLS and NSS backends. (Added in 7.41.0)
+<p class="level0"><a name="--false-start"></a><span class="nroffip">--false-start</span>
+<p class="level1">
+<p class="level1">(SSL) Tells curl to use false start during the TLS handshake. False start is a mode where a TLS client will start sending application data before verifying the server's Finished message, thus saving a round trip when performing a full handshake.
+<p class="level1">This is currently only implemented in the NSS and Secure Transport (on iOS 7.0 or later, or OS X 10.9 or later) backends. (Added in 7.42.0)
<p class="level0"><a name="-f"></a><span class="nroffip">-f, --fail</span>
<p class="level1">(HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable scripts etc to better deal with failed attempts. In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22.
<p class="level1">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407).
@@ -255,7 +270,7 @@ p.roffit {
<p class="level1">(HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @ sign. To just get the content part from a file, prefix the file name with the symbol &lt;. The difference between @ and &lt; is then that @ makes a file get attached in the post as a file upload, while the &lt; makes a text field and just get the contents for that text field from a file.
<p class="level1">Example, to send your password file to the server, where 'password' is the name of the form-field to which /etc/passwd will be the input:
<p class="level1"><span Class="bold">curl</span> -F password=@/etc/passwd www.mypasswords.com
-<p class="level1">To read content from stdin instead of a file, use - as the filename. This goes for both @ and &lt; constructs.
+<p class="level1">To read content from stdin instead of a file, use - as the filename. This goes for both @ and &lt; constructs. Unfortunately it does not support reading the file from a named pipe or similar, as it needs the full size before the transfer starts.
<p class="level1">You can also tell curl what Content-Type to use by using 'type=', in a manner similar to:
<p class="level1"><span Class="bold">curl</span> -F "web=@index.html;type=text/html" url.com
<p class="level1">or
@@ -285,6 +300,8 @@ p.roffit {
<p class="level2">curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full path to the server for all these commands. This is the fastest behavior.
<p class="level1"><a name="singlecwd"></a><span class="nroffip">singlecwd</span>
<p class="level2">curl does one CWD with the full target directory and then operates on the file "normally" (like in the multicwd case). This is somewhat more standards compliant than 'nocwd' but without the full penalty of 'multicwd'.
+<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span>
<p class="level1">(Added in 7.15.1)
<p class="level0"><a name="--ftp-pasv"></a><span class="nroffip">--ftp-pasv</span>
<p class="level1">(FTP) Use passive mode for the data connection. Passive is the internal default behavior, but using this option can be used to override a previous <span Class="emphasis">-P/-ftp-port</span> option. (Added in 7.11.0)
@@ -315,7 +332,8 @@ p.roffit {
<p class="level1">See also the <a class="emphasis" href="#-A">-A, --user-agent</a> and <a class="emphasis" href="#-e">-e, --referer</a> options.
<p class="level1">Starting in 7.37.0, you need <a class="emphasis" href="#--proxy-header">--proxy-header</a> to send custom headers intended for a proxy.
<p class="level1">Example:
-<p class="level1"># curl -H "X-First-Name: Joe" <a href="http://192.168.0.1/">http://192.168.0.1/</a>
+<p class="level1">&#35; curl -H "X-First-Name: Joe" <a href="http://192.168.0.1/">http://192.168.0.1/</a>
+<p class="level1"><span Class="bold">WARNING</span>: headers set with this option will be set in all requests - even after redirects are followed, like when told with <a class="bold" href="#-L">-L, --location</a>. This can lead to the header being sent to other hosts than the original host, so sensitive headers should be used with caution combined with following redirects.
<p class="level1">This option can be used multiple times to add/replace/remove multiple headers.
<p class="level0"><a name="--hostpubmd5"></a><span class="nroffip">--hostpubmd5 &lt;md5&gt;</span>
<p class="level1">(SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, curl will refuse the connection with the host unless the md5sums match. (Added in 7.17.1)
@@ -340,25 +358,26 @@ p.roffit {
<p class="level0"><a name="-K"></a><span class="nroffip">-K, --config &lt;config file&gt;</span>
<p class="level1">Specify which config file to read curl arguments from. The config file is a text file in which command line arguments can be written which then will be used as if they were written on the actual command line.
<p class="level1">Options and their parameters must be specified on the same config file line, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter.
-<p class="level1">If the parameter is to contain whitespace, the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first column of a config line is a '#' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file.
+<p class="level1">If the parameter is to contain whitespace, the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first column of a config line is a '&#35;' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file.
<p class="level1">Specify the filename to -K, --config as '-' to make curl read the file from stdin.
<p class="level1">Note that to be able to specify a URL in the config file, you need to specify it using the <a class="emphasis" href="#--url">--url</a> option, and not by simply writing the URL on its own line. So, it could look similar to this:
<p class="level1">url = "<a href="http://curl.haxx.se/docs/">http://curl.haxx.se/docs/</a>"
<p class="level1">When curl is invoked, it always (unless <a class="emphasis" href="#-q">-q</a> is used) checks for a default config file and uses it if found. The default config file is checked for in the following places in this order:
<p class="level1">1) curl tries to find the "home dir": It first checks for the CURL_HOME and then the HOME environment variables. Failing that, it uses getpwuid() on Unix-like systems (which returns the home dir given the current user in your system). On Windows, it then checks for the APPDATA variable, or as a last resort the '%USERPROFILE%\Application Data'.
<p class="level1">2) On windows, if there is no _curlrc file in the home dir, it checks for one in the same dir the curl executable is placed. On Unix-like systems, it will simply try to load .curlrc from the determined home dir.
-<p class="level1"><pre>
-<p class="level1"># --- Example file ---
- # this is a comment
- url = "curl.haxx.se"
- output = "curlhere.html"
- user-agent = "superagent/1.0"
- <p class="level1"># and fetch another URL too
- url = "curl.haxx.se/docs/manpage.html"
- -O
- referer = "<a href="http://nowhereatall.com/">http://nowhereatall.com/</a>"
- # --- End of example file ---
- </pre>
+<p class="level1"><pre class="level1">
+&#35; --- Example file ---
+&#35; this is a comment
+url = "curl.haxx.se"
+output = "curlhere.html"
+user-agent = "superagent/1.0"
+&nbsp;
+&#35; and fetch another URL too
+url = "curl.haxx.se/docs/manpage.html"
+-O
+referer = "<a href="http://nowhereatall.com/">http://nowhereatall.com/</a>"
+&#35; --- End of example file ---
+</pre>
<p class="level1">
<p class="level1">This option can be used multiple times to load multiple config files.
@@ -430,7 +449,7 @@ p.roffit {
<p class="level1">Please note that if FILE protocol is disabled, there is no way to use a local Metalink file at the time of this writing. Also note that if <a class="emphasis" href="#--metalink">--metalink</a> and <span Class="emphasis">--include</span> are used together, <span Class="emphasis">--include</span> will be ignored. This is because including headers in the response will break Metalink parser and if the headers are included in the file described in Metalink file, hash check will fail.
<p class="level1">(Added in 7.27.0, if built against the libmetalink library.)
<p class="level0"><a name="-n"></a><span class="nroffip">-n, --netrc</span>
-<p class="level1">Makes curl scan the <span Class="emphasis">.netrc</span> (<span Class="emphasis">_netrc</span> on Windows) file in the user's home directory for login name and password. This is typically used for FTP on Unix. If used with HTTP, curl will enable user authentication. See <span Class="manpage">netrc(4)</span> or <span Class="manpage">ftp(1)</span> for details on the file format. Curl will not complain if that file doesn't have the right permissions (it should not be either world- or group-readable). The environment variable "HOME" is used to find the home directory.
+<p class="level1">Makes curl scan the <span Class="emphasis">.netrc</span> (<span Class="emphasis">_netrc</span> on Windows) file in the user's home directory for login name and password. This is typically used for FTP on Unix. If used with HTTP, curl will enable user authentication. See <span Class="emphasis">netrc(5)</span> <span Class="emphasis">ftp(1)</span> for details on the file format. Curl will not complain if that file doesn't have the right permissions (it should not be either world- or group-readable). The environment variable "HOME" is used to find the home directory.
<p class="level1">A quick and very simple example of how to setup a <span Class="emphasis">.netrc</span> to allow curl to FTP to the machine host.domain.com with user name 'myself' and password 'secret' should look similar to:
<p class="level1"><span Class="bold">machine host.domain.com login myself password secret</span>
<p class="level0"><a name="-N"></a><span class="nroffip">-N, --no-buffer</span>
@@ -463,10 +482,10 @@ p.roffit {
<p class="level1">This option requires a library built with SSL support. Use <a class="emphasis" href="#-V">-V, --version</a> to see if your curl supports NTLM.
<p class="level1">If this option is used several times, only the first one is used.
<p class="level0"><a name="-o"></a><span class="nroffip">-o, --output &lt;file&gt;</span>
-<p class="level1">Write output to &lt;file&gt; instead of stdout. If you are using {} or [] to fetch multiple documents, you can use '#' followed by a number in the &lt;file&gt; specifier. That variable will be replaced with the current string for the URL being fetched. Like in:
-<p class="level1">&nbsp; curl http://{one,two}.site.com -o "file_#1.txt"
+<p class="level1">Write output to &lt;file&gt; instead of stdout. If you are using {} or [] to fetch multiple documents, you can use '&#35;' followed by a number in the &lt;file&gt; specifier. That variable will be replaced with the current string for the URL being fetched. Like in:
+<p class="level1">&nbsp; curl http://{one,two}.site.com -o "file_&#35;1.txt"
<p class="level1">or use several variables like:
-<p class="level1">&nbsp; curl http://{site,host}.host[1-5].com -o "#1_#2"
+<p class="level1">&nbsp; curl http://{site,host}.host[1-5].com -o "&#35;1_&#35;2"
<p class="level1">You may use this option as many times as the number of URLs you have.
<p class="level1">See also the <a class="emphasis" href="#--create-dirs">--create-dirs</a> option to create the local directories dynamically. Specifying the output as '-' (a single dash) will force the output to be done to stdout.
<p class="level0"><a name="-O"></a><span class="nroffip">-O, --remote-name</span>
@@ -499,11 +518,15 @@ p.roffit {
<p class="level1"><a name="-"></a><span class="nroffip">-</span>
<p class="level2">make curl pick the same IP address that is already used for the control connection
<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span>
<p class="level1">If this option is used several times, the last one will be used. Disable the use of PORT with <a class="emphasis" href="#--ftp-pasv">--ftp-pasv</a>. Disable the attempt to use the EPRT command instead of PORT by using <a class="emphasis" href="#--disable-eprt">--disable-eprt</a>. EPRT is really PORT++.
<p class="level1">Starting in 7.19.5, you can append ":[start]-[end]" to the right of the address, to tell curl what TCP port range to use. That means you specify a port range, from a lower to a higher number. A single number works as well, but do note that it increases the risk of failure since the port may not be available.
<p class="level0"><a name="--pass"></a><span class="nroffip">--pass &lt;phrase&gt;</span>
<p class="level1">(SSL/SSH) Passphrase for the private key
<p class="level1">If this option is used several times, the last one will be used.
+<p class="level0"><a name="--path-as-is"></a><span class="nroffip">--path-as-is</span>
+<p class="level1">Tell curl to not handle sequences of /../ or /./ in the given URL path. Normally curl will squash or merge them according to standards but with this option set you tell it not to do that.
+<p class="level1">(Added in 7.42.0)
<p class="level0"><a name="--post301"></a><span class="nroffip">--post301</span>
<p class="level1">(HTTP) Tells curl to respect <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>/10.3.2 and not convert POST requests into GET requests when following a 301 redirection. The non-RFC behaviour is ubiquitous in web browsers, so curl does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when using <a class="emphasis" href="#-L">-L, --location</a> (Added in 7.17.1)
<p class="level0"><a name="--post302"></a><span class="nroffip">--post302</span>
@@ -541,6 +564,9 @@ p.roffit {
<p class="level1">Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating with the given proxy. Use <a class="emphasis" href="#--negotiate">--negotiate</a> for enabling HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1)
<p class="level0"><a name="--proxy-ntlm"></a><span class="nroffip">--proxy-ntlm</span>
<p class="level1">Tells curl to use HTTP NTLM authentication when communicating with the given proxy. Use <a class="emphasis" href="#--ntlm">--ntlm</a> for enabling NTLM with a remote host.
+<p class="level0"><a name="--proxy-service-name"></a><span class="nroffip">--proxy-service-name &lt;servicename&gt;</span>
+<p class="level1">This option allows you to change the service name for proxy negotiation.
+<p class="level1">Examples: --proxy-negotiate proxy-name <a class="emphasis" href="#--proxy-service-name">--proxy-service-name</a> sockd would use sockd/proxy-name. (Added in 7.43.0).
<p class="level0"><a name="--proxy10"></a><span class="nroffip">--proxy1.0 &lt;proxyhost[:port]&gt;</span>
<p class="level1">Use the specified HTTP 1.0 proxy. If the port number is not specified, it is assumed at port 1080.
<p class="level1">The only difference between this and the HTTP proxy option (<a class="emphasis" href="#-x">-x, --proxy</a>), is that attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol instead of the default HTTP 1.1.
@@ -586,6 +612,7 @@ p.roffit {
<p class="level2"><span Class="bold">500-700,600-799</span> specifies 300 bytes from offset 500(H)
<p class="level2"><span Class="bold">100-199,500-599</span> specifies two separate 100-byte ranges(*)(H)
<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span>
<p class="level1">(*) = NOTE that this will cause the server to reply with a multipart response!
<p class="level1">Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the 'start-stop' range syntax. If a non-digit character is given in the range, the server's response will be unspecified, depending on the server's configuration.
<p class="level1">You should also be aware that many HTTP/1.1 servers do not have this feature enabled, so that when you attempt to get a range, you'll instead get the whole document.
@@ -617,6 +644,9 @@ p.roffit {
<p class="level1">Silent or quiet mode. Don't show progress meter or error messages. Makes Curl mute. It will still output the data you ask for, potentially even to the terminal/stdout unless you redirect it.
<p class="level0"><a name="--sasl-ir"></a><span class="nroffip">--sasl-ir</span>
<p class="level1">Enable initial response in SASL authentication. (Added in 7.31.0)
+<p class="level0"><a name="--service-name"></a><span class="nroffip">--service-name &lt;servicename&gt;</span>
+<p class="level1">This option allows you to change the service name for SPNEGO.
+<p class="level1">Examples: --negotiate <a class="emphasis" href="#--service-name">--service-name</a> sockd would use sockd/server-name. (Added in 7.43.0).
<p class="level0"><a name="-S"></a><span class="nroffip">-S, --show-error</span>
<p class="level1">When used with <a class="emphasis" href="#-s">-s</a> it makes curl show an error message if it fails.
<p class="level0"><a name="--ssl"></a><span class="nroffip">--ssl</span>
@@ -627,6 +657,8 @@ p.roffit {
<p class="level1">This option was formerly known as <span Class="emphasis">--ftp-ssl-reqd</span> (added in 7.15.5). That option name can still be used but will be removed in a future version.
<p class="level0"><a name="--ssl-allow-beast"></a><span class="nroffip">--ssl-allow-beast</span>
<p class="level1">(SSL) This option tells curl to not work around a security flaw in the SSL3 and TLS1.0 protocols known as BEAST. If this option isn't used, the SSL layer may use workarounds known to cause interoperability problems with some older SSL implementations. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that. (Added in 7.25.0)
+<p class="level0"><a name="--ssl-no-revoke"></a><span class="nroffip">--ssl-no-revoke</span>
+<p class="level1">(WinSSL) This option tells curl to disable certificate revocation checks. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that. (Added in 7.44.0)
<p class="level0"><a name="--socks4"></a><span class="nroffip">--socks4 &lt;host[:port]&gt;</span>
<p class="level1">Use the specified SOCKS4 proxy. If the port number is not specified, it is assumed at port 1080. (Added in 7.15.2)
<p class="level1">This option overrides any previous use of <a class="emphasis" href="#-x">-x, --proxy</a>, as they are mutually exclusive.
@@ -706,7 +738,7 @@ p.roffit {
<p class="level1">Specify the user name and password to use for server authentication. Overrides <a class="emphasis" href="#-n">-n, --netrc</a> and <a class="emphasis" href="#--netrc-optional">--netrc-optional</a>.
<p class="level1">If you simply specify the user name, curl will prompt for a password.
<p class="level1">The user name and passwords are split up on the first colon, which makes it impossible to use a colon in the user name with this option. The password can, still.
-<p class="level1">When using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to succesfully obtain a Kerberos Ticket. If you don't then the initial authentication handshake may fail.
+<p class="level1">When using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial authentication handshake may fail.
<p class="level1">When using NTLM, the user name can be specified simply as the user name, without the domain, if there is a single domain and forest in your setup for example.
<p class="level1">To specify the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\user and user@example.com respectively.
<p class="level1">If you use a Windows SSPI-enabled curl binary and perform Kerberos V5, Negotiate, NTLM or Digest authentication then you can tell curl to select the user name and password from your environment by specifying a single colon with this option: "-u :".
@@ -758,6 +790,7 @@ p.roffit {
<p class="level2"><span Class="bold">time_total</span> The total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution.
<p class="level2"><span Class="bold">url_effective</span> The URL that was fetched last. This is most meaningful if you've told curl to follow location: headers.
<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span>
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="-x"></a><span class="nroffip">-x, --proxy &lt;[protocol://][user:password@]proxyhost[:port]&gt;</span>
<p class="level1">Use the specified proxy.
@@ -769,9 +802,10 @@ p.roffit {
<p class="level1">The proxy host can be specified the exact same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password.
<p class="level1">If this option is used several times, the last one will be used.
<p class="level0"><a name="-X"></a><span class="nroffip">-X, --request &lt;command&gt;</span>
-<p class="level1">(HTTP) Specifies a custom request method to use when communicating with the HTTP server. The specified request will be used instead of the method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more.
+<p class="level1">(HTTP) Specifies a custom request method to use when communicating with the HTTP server. The specified request method will be used instead of the method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more.
<p class="level1">Normally you don't need this option. All sorts of GET, HEAD, POST and PUT requests are rather invoked by using dedicated command line options.
<p class="level1">This option only changes the actual word used in the HTTP request, it does not alter the way curl behaves. So for example if you want to make a proper HEAD request, using -X HEAD will not suffice. You need to use the <a class="emphasis" href="#-I">-I, --head</a> option.
+<p class="level1">The method string you set with -X will be used for all requests, which if you for example use <a class="bold" href="#-L">-L, --location</a> may cause unintended side-effects when curl doesn't change request method according to the HTTP 30x response codes - and similar.
<p class="level1">(FTP) Specifies a custom FTP command to use instead of LIST when doing file lists with FTP.
<p class="level1">(POP3) Specifies a custom POP3 command to use instead of LIST or RETR. (Added in 7.26.0)
<p class="level1">(IMAP) Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0)
diff --git a/docs/curl.pdf b/docs/curl.pdf
index 630cfdb30..5e838d848 100644
--- a/docs/curl.pdf
+++ b/docs/curl.pdf
Binary files differ
diff --git a/docs/examples/10-at-a-time.c b/docs/examples/10-at-a-time.c
index 5d95a8a89..f43dc75e0 100644
--- a/docs/examples/10-at-a-time.c
+++ b/docs/examples/10-at-a-time.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,9 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example application source code using the multi interface to download many
- * files, but with a capped maximum amount of simultaneous transfers.
- *
+/* <DESC>
+ * Source code using the multi interface to download many
+ * files, with a capped maximum amount of simultaneous transfers.
+ * </DESC>
* Written by Michael Wallner
*/
diff --git a/docs/examples/Makefile.in b/docs/examples/Makefile.in
index 554c405b2..0b8c786c1 100644
--- a/docs/examples/Makefile.in
+++ b/docs/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -43,7 +43,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -58,7 +58,17 @@
#
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -122,9 +132,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
- $(top_srcdir)/depcomp README
check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
cookie_interface$(EXEEXT) debug$(EXEEXT) fileupload$(EXEEXT) \
fopen$(EXEEXT) ftpget$(EXEEXT) ftpgetresp$(EXEEXT) \
@@ -149,7 +156,9 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
imap-search$(EXEEXT) imap-create$(EXEEXT) imap-delete$(EXEEXT) \
imap-copy$(EXEEXT) imap-noop$(EXEEXT) imap-ssl$(EXEEXT) \
imap-tls$(EXEEXT) imap-multi$(EXEEXT) url2file$(EXEEXT) \
- sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT)
+ sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT) \
+ http2-download$(EXEEXT) http2-upload$(EXEEXT) \
+ http2-serverpush$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -171,7 +180,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -304,6 +314,27 @@ http_post_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@http_post_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+http2_download_SOURCES = http2-download.c
+http2_download_OBJECTS = http2-download.$(OBJEXT)
+http2_download_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http2_download_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http2_download_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+http2_serverpush_SOURCES = http2-serverpush.c
+http2_serverpush_OBJECTS = http2-serverpush.$(OBJEXT)
+http2_serverpush_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http2_serverpush_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http2_serverpush_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+http2_upload_SOURCES = http2-upload.c
+http2_upload_OBJECTS = http2-upload.$(OBJEXT)
+http2_upload_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http2_upload_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http2_upload_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
httpcustomheader_SOURCES = httpcustomheader.c
httpcustomheader_OBJECTS = httpcustomheader.$(OBJEXT)
httpcustomheader_LDADD = $(LDADD)
@@ -703,6 +734,7 @@ SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
cookie_interface.c debug.c externalsocket.c fileupload.c \
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
+ http2-download.c http2-serverpush.c http2-upload.c \
httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
@@ -719,6 +751,7 @@ DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
cookie_interface.c debug.c externalsocket.c fileupload.c \
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
+ http2-download.c http2-serverpush.c http2-upload.c \
httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
@@ -755,6 +788,8 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(top_srcdir)/depcomp README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -813,7 +848,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -868,6 +903,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -884,7 +920,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -991,7 +1026,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/examples/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign docs/examples/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -1000,7 +1034,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1092,6 +1126,18 @@ http-post$(EXEEXT): $(http_post_OBJECTS) $(http_post_DEPENDENCIES) $(EXTRA_http_
@rm -f http-post$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(http_post_OBJECTS) $(http_post_LDADD) $(LIBS)
+http2-download$(EXEEXT): $(http2_download_OBJECTS) $(http2_download_DEPENDENCIES) $(EXTRA_http2_download_DEPENDENCIES)
+ @rm -f http2-download$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(http2_download_OBJECTS) $(http2_download_LDADD) $(LIBS)
+
+http2-serverpush$(EXEEXT): $(http2_serverpush_OBJECTS) $(http2_serverpush_DEPENDENCIES) $(EXTRA_http2_serverpush_DEPENDENCIES)
+ @rm -f http2-serverpush$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(http2_serverpush_OBJECTS) $(http2_serverpush_LDADD) $(LIBS)
+
+http2-upload$(EXEEXT): $(http2_upload_OBJECTS) $(http2_upload_DEPENDENCIES) $(EXTRA_http2_upload_DEPENDENCIES)
+ @rm -f http2-upload$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(http2_upload_OBJECTS) $(http2_upload_LDADD) $(LIBS)
+
httpcustomheader$(EXEEXT): $(httpcustomheader_OBJECTS) $(httpcustomheader_DEPENDENCIES) $(EXTRA_httpcustomheader_DEPENDENCIES)
@rm -f httpcustomheader$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(httpcustomheader_OBJECTS) $(httpcustomheader_LDADD) $(LIBS)
@@ -1324,6 +1370,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinfo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-post.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-download.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-serverpush.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-upload.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpcustomheader.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpput.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@
@@ -1611,6 +1660,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
diff --git a/docs/examples/Makefile.inc b/docs/examples/Makefile.inc
index 6c8df8e2e..b2161300b 100644
--- a/docs/examples/Makefile.inc
+++ b/docs/examples/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -31,7 +31,8 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi \
imap-list imap-lsub imap-fetch imap-store imap-append imap-examine \
imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \
- imap-tls imap-multi url2file sftpget ftpsget postinmemory
+ imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
+ http2-upload http2-serverpush
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
diff --git a/docs/examples/Makefile.m32 b/docs/examples/Makefile.m32
index f607013c2..7be640c1e 100644
--- a/docs/examples/Makefile.m32
+++ b/docs/examples/Makefile.m32
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -21,7 +21,7 @@
###########################################################################
#
## Makefile for building curl examples with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (0.9.8), libssh2 (1.3), zlib (1.2.5), librtmp (2.3)
+## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4)
##
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-spi-winidn
@@ -38,23 +38,23 @@ ZLIB_PATH = ../../../zlib-1.2.8
endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-0.9.8zc
+OPENSSL_PATH = ../../../openssl-1.0.2a
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.4.3
+LIBSSH2_PATH = ../../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.3
+LIBRTMP_PATH = ../../../librtmp-2.4
endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.18
+LIBIDN_PATH = ../../../libidn-1.32
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
+# https://www.microsoft.com/en-us/download/details.aspx?id=734
ifndef WINIDN_PATH
WINIDN_PATH = ../../../Microsoft IDN Mitigation APIs
endif
@@ -62,6 +62,10 @@ endif
ifndef LDAP_SDK
LDAP_SDK = c:/novell/ndk/cldapsdk/win32
endif
+# Edit the path below to point to the base of your nghttp2 package.
+ifndef NGHTTP2_PATH
+NGHTTP2_PATH = ../../../nghttp2-1.0.0
+endif
PROOT = ../..
@@ -72,14 +76,24 @@ endif
# Edit the var below to set to your architecture or set environment var.
ifndef ARCH
-ARCH = w32
+ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
+ARCH = w64
+else
+ARCH = w32
+endif
endif
CC = $(CROSSPREFIX)gcc
CFLAGS = -g -O2 -Wall
CFLAGS += -fno-strict-aliasing
ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
+CFLAGS += -m64 -D_AMD64_
+LDFLAGS += -m64
+RCFLAGS += -F pe-x86-64
+else
+CFLAGS += -m32
+LDFLAGS += -m32
+RCFLAGS += -F pe-i386
endif
# comment LDFLAGS below to keep debug info
LDFLAGS = -s
@@ -158,9 +172,12 @@ ifeq ($(findstring -metalink,$(CFG)),-metalink)
METALINK = 1
endif
ifeq ($(findstring -winssl,$(CFG)),-winssl)
-SCHANNEL = 1
+WINSSL = 1
SSPI = 1
endif
+ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
+NGHTTP2 = 1
+endif
INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
@@ -184,6 +201,10 @@ ifdef RTMP
CFLAGS += -DUSE_LIBRTMP
curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
endif
+ifdef NGHTTP2
+ CFLAGS += -DUSE_NGHTTP2
+ curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
+endif
ifdef SSH2
CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
@@ -204,7 +225,7 @@ ifdef SSL
ifndef DYN
OPENSSL_LIBS += -lgdi32 -lcrypt32
endif
- CFLAGS += -DUSE_SSLEAY
+ CFLAGS += -DUSE_OPENSSL
curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
endif
ifdef ZLIB
@@ -223,7 +244,7 @@ endif
endif
ifdef SSPI
CFLAGS += -DUSE_WINDOWS_SSPI
- ifdef SCHANNEL
+ ifdef WINSSL
CFLAGS += -DUSE_SCHANNEL
endif
endif
diff --git a/docs/examples/Makefile.netware b/docs/examples/Makefile.netware
index 3fd6b3e77..2d85e736a 100644
--- a/docs/examples/Makefile.netware
+++ b/docs/examples/Makefile.netware
@@ -19,12 +19,12 @@ endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-0.9.8zc
+OPENSSL_PATH = ../../../openssl-1.0.2a
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.4.3
+LIBSSH2_PATH = ../../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your axTLS package.
@@ -34,12 +34,12 @@ endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.18
+LIBIDN_PATH = ../../../libidn-1.32
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.3
+LIBRTMP_PATH = ../../../librtmp-2.4
endif
# Edit the path below to point to the base of your fbopenssl package.
diff --git a/docs/examples/anyauthput.c b/docs/examples/anyauthput.c
index b89dca2e1..2962645b9 100644
--- a/docs/examples/anyauthput.c
+++ b/docs/examples/anyauthput.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP PUT upload with authentiction using "any" method. libcurl picks the
+ * one the server supports/wants.
+ * </DESC>
+ */
#include <stdio.h>
#include <fcntl.h>
#ifdef WIN32
diff --git a/docs/examples/asiohiper.cpp b/docs/examples/asiohiper.cpp
index eb5cd0386..ff4134856 100644
--- a/docs/examples/asiohiper.cpp
+++ b/docs/examples/asiohiper.cpp
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -20,11 +20,11 @@
*
***************************************************************************/
+/* <DESC>
+ * demonstrate the use of multi socket interface with boost::asio
+ * </DESC>
+ */
/*
- * file: asiohiper.cpp
- * Example program to demonstrate the use of multi socket interface
- * with boost::asio
- *
* This program is in c++ and uses boost::asio instead of libevent/libev.
* Requires boost::asio, boost::bind and boost::system
*
diff --git a/docs/examples/cacertinmem.c b/docs/examples/cacertinmem.c
index 30a5153a8..67fd382b1 100644
--- a/docs/examples/cacertinmem.c
+++ b/docs/examples/cacertinmem.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,17 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example using a "in core" PEM certificate to retrieve a https page.
- * Written by Theo Borm
+/* <DESC>
+ * CA cert in memory with OpenSSL to get a HTTPS page.
+ * </DESC>
*/
-/* on a netBSD system with OPENSSL& LIBCURL installed from
- * pkgsrc (using default paths) this program can be compiled using:
- * gcc -I/usr/pkg/include -L/usr/pkg/lib -lcurl -Wl,-R/usr/pkg/lib -lssl
- * -lcrypto -lz -o curlcacerttest curlcacerttest.c
- * on other operating systems you may want to change paths to headers
- * and libraries
-*/
#include <openssl/ssl.h>
#include <curl/curl.h>
#include <stdio.h>
diff --git a/docs/examples/certinfo.c b/docs/examples/certinfo.c
index ac0109b07..7ec70ee1c 100644
--- a/docs/examples/certinfo.c
+++ b/docs/examples/certinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Extract lots of TLS certificate info.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c
index 31949b892..bae8ea6b8 100644
--- a/docs/examples/chkspeed.c
+++ b/docs/examples/chkspeed.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show transfer timing info after download completes.
+ * </DESC>
+ */
/* Example source code to show how the callback function can be used to
* download data into a chunk of memory instead of storing it in a file.
* After successful download we use curl_easy_getinfo() calls to get the
diff --git a/docs/examples/cookie_interface.c b/docs/examples/cookie_interface.c
index 2e7c66db2..b67051c79 100644
--- a/docs/examples/cookie_interface.c
+++ b/docs/examples/cookie_interface.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This example shows usage of simple cookie interface. */
+/* <DESC>
+ * Import and export cookies with COOKIELIST.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -96,7 +99,12 @@ main(void)
return 1;
}
- /* HTTP-header style cookie */
+ /* HTTP-header style cookie. If you use the Set-Cookie format and don't
+ specify a domain then the cookie is sent for any domain and will not be
+ modified, likely not what you intended. Starting in 7.43.0 any-domain
+ cookies will not be exported either. For more information refer to the
+ CURLOPT_COOKIELIST documentation.
+ */
snprintf(nline, sizeof(nline),
"Set-Cookie: OLD_PREF=3d141414bf4209321; "
"expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
diff --git a/docs/examples/curlgtk.c b/docs/examples/curlgtk.c
index 8cb9914c6..df6b419f2 100644
--- a/docs/examples/curlgtk.c
+++ b/docs/examples/curlgtk.c
@@ -5,9 +5,12 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
+ */
+/* <DESC>
+ * use the libcurl in a gtk-threaded application
+ * </DESC>
*/
-/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
-/* an attempt to use the curl library in concert with a gtk-threaded application */
#include <stdio.h>
#include <gtk/gtk.h>
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
index 89d5f407b..9bfb0cbd8 100644
--- a/docs/examples/curlx.c
+++ b/docs/examples/curlx.c
@@ -9,7 +9,10 @@
certificate presented during ssl session establishment.
*/
-
+/* <DESC>
+ * demonstrates use of SSL context callback, requires OpenSSL
+ * </DESC>
+ */
/*
* Copyright (c) 2003 The OpenEvidence Project. All rights reserved.
@@ -490,7 +493,7 @@ int main(int argc, char **argv) {
BIO_printf(p.errorbio,"the response has a correct mimetype : %s\n",
response);
else
- BIO_printf(p.errorbio,"the reponse doesn\'t has an acceptable "
+ BIO_printf(p.errorbio,"the response doesn\'t have an acceptable "
"mime type, it is %s instead of %s\n",
response,mimetypeaccept);
}
diff --git a/docs/examples/debug.c b/docs/examples/debug.c
index 36dd80d70..6baab4405 100644
--- a/docs/examples/debug.c
+++ b/docs/examples/debug.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show how CURLOPT_DEBUGFUNCTION can be used.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c
index e03801d8c..5a60c8d2c 100644
--- a/docs/examples/evhiperfifo.c
+++ b/docs/examples/evhiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket interface together with libev
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
* download many files at once.
*
diff --git a/docs/examples/externalsocket.c b/docs/examples/externalsocket.c
index 5486d1255..cae5ccc72 100644
--- a/docs/examples/externalsocket.c
+++ b/docs/examples/externalsocket.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,9 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/*
- * This is an example demonstrating how an application can pass in a custom
+/* <DESC>
+ * An example demonstrating how an application can pass in a custom
* socket to libcurl to use. This example also handles the connect itself.
+ * </DESC>
*/
#include <stdio.h>
#include <string.h>
diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c
index 665eca0af..b695a2a61 100644
--- a/docs/examples/fileupload.c
+++ b/docs/examples/fileupload.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Upload to a file:// URL
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
#include <sys/stat.h>
diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c
index 3d2a81773..de9ce19a6 100644
--- a/docs/examples/fopen.c
+++ b/docs/examples/fopen.c
@@ -42,6 +42,10 @@
*
* This example requires libcurl 7.9.7 or later.
*/
+/* <DESC>
+ * implements an fopen() abstraction allowing reading from URLs
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -108,7 +112,7 @@ static size_t write_callback(char *buffer,
size=rembuff;
}
else {
- /* realloc suceeded increase buffer size*/
+ /* realloc succeeded increase buffer size*/
url->buffer_len+=size - rembuff;
url->buffer=newbuff;
}
@@ -131,7 +135,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
CURLMcode mc; /* curl_multi_fdset() return code */
/* only attempt to fill buffer if transactions still running and buffer
- * doesnt exceed required size already
+ * doesn't exceed required size already
*/
if((!file->still_running) || (file->buffer_pos > want))
return 0;
@@ -205,14 +209,12 @@ static int fill_buffer(URL_FILE *file, size_t want)
}
/* use to remove want bytes from the front of a files buffer */
-static int use_buffer(URL_FILE *file,int want)
+static int use_buffer(URL_FILE *file, size_t want)
{
/* sort out buffer */
if((file->buffer_pos - want) <=0) {
/* ditch buffer - write will recreate */
- if(file->buffer)
- free(file->buffer);
-
+ free(file->buffer);
file->buffer=NULL;
file->buffer_pos=0;
file->buffer_len=0;
@@ -231,7 +233,7 @@ static int use_buffer(URL_FILE *file,int want)
URL_FILE *url_fopen(const char *url,const char *operation)
{
/* this code could check for URLs or types in the 'url' and
- basicly use the real fopen() for standard files */
+ basically use the real fopen() for standard files */
URL_FILE *file;
(void)operation;
@@ -302,9 +304,7 @@ int url_fclose(URL_FILE *file)
break;
}
- if(file->buffer)
- free(file->buffer);/* free any allocated buffer space */
-
+ free(file->buffer);/* free any allocated buffer space */
free(file);
return ret;
@@ -379,7 +379,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
switch(file->type) {
case CFTYPE_FILE:
- ptr = fgets(ptr,size,file->handle.file);
+ ptr = fgets(ptr, (int)size, file->handle.file);
break;
case CFTYPE_CURL:
@@ -435,9 +435,7 @@ void url_rewind(URL_FILE *file)
curl_multi_add_handle(multi_handle, file->handle.curl);
/* ditch buffer - write will recreate - resets stream pos*/
- if(file->buffer)
- free(file->buffer);
-
+ free(file->buffer);
file->buffer=NULL;
file->buffer_pos=0;
file->buffer_len=0;
@@ -457,7 +455,7 @@ int main(int argc, char *argv[])
URL_FILE *handle;
FILE *outf;
- int nread;
+ size_t nread;
char buffer[256];
const char *url;
@@ -505,7 +503,7 @@ int main(int argc, char *argv[])
}
do {
- nread = url_fread(buffer, 1,sizeof(buffer), handle);
+ nread = url_fread(buffer, 1, sizeof(buffer), handle);
fwrite(buffer,1,nread,outf);
} while(nread);
diff --git a/docs/examples/ftp-wildcard.c b/docs/examples/ftp-wildcard.c
index d175ddfdc..ae0855cb8 100644
--- a/docs/examples/ftp-wildcard.c
+++ b/docs/examples/ftp-wildcard.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * FTP wildcard pattern matching
+ * </DESC>
+ */
#include <curl/curl.h>
#include <stdio.h>
diff --git a/docs/examples/ftpget.c b/docs/examples/ftpget.c
index bcb42bb30..8ec7d7336 100644
--- a/docs/examples/ftpget.c
+++ b/docs/examples/ftpget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -23,11 +23,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to get a single file from an FTP server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTP server.
+ * </DESC>
*/
struct FtpFile {
@@ -53,7 +51,7 @@ int main(void)
CURL *curl;
CURLcode res;
struct FtpFile ftpfile={
- "curl.tar.gz", /* name to store the file as if succesful */
+ "curl.tar.gz", /* name to store the file as if successful */
NULL
};
diff --git a/docs/examples/ftpgetinfo.c b/docs/examples/ftpgetinfo.c
index dfdcf78b7..baea7d8e1 100644
--- a/docs/examples/ftpgetinfo.c
+++ b/docs/examples/ftpgetinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -24,9 +24,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to check a single file's size and mtime
- * from an FTP server.
+/* <DESC>
+ * Checks a single file's size and mtime from an FTP server.
+ * </DESC>
*/
static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
diff --git a/docs/examples/ftpgetresp.c b/docs/examples/ftpgetresp.c
index dcb296adf..76c512bb3 100644
--- a/docs/examples/ftpgetresp.c
+++ b/docs/examples/ftpgetresp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -23,13 +23,11 @@
#include <curl/curl.h>
-/*
- * Similar to ftpget.c but this also stores the received response-lines
+/* <DESC>
+ * Similar to ftpget.c but also stores the received response-lines
* in a separate file using our own callback!
- *
- * This functionality was introduced in libcurl 7.9.3.
+ * </DESC>
*/
-
static size_t
write_response(void *ptr, size_t size, size_t nmemb, void *data)
{
diff --git a/docs/examples/ftpsget.c b/docs/examples/ftpsget.c
index 0cfe32024..2c1fd3e99 100644
--- a/docs/examples/ftpsget.c
+++ b/docs/examples/ftpsget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -24,11 +24,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to get a single file from an FTPS server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTPS server.
+ * </DESC>
*/
struct FtpFile {
@@ -55,7 +53,7 @@ int main(void)
CURL *curl;
CURLcode res;
struct FtpFile ftpfile={
- "yourfile.bin", /* name to store the file as if succesful */
+ "yourfile.bin", /* name to store the file as if successful */
NULL
};
diff --git a/docs/examples/ftpupload.c b/docs/examples/ftpupload.c
index e79f8d842..b4fc79f99 100644
--- a/docs/examples/ftpupload.c
+++ b/docs/examples/ftpupload.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -33,11 +33,10 @@
#include <unistd.h>
#endif
-/*
- * This example shows an FTP upload, with a rename of the file just after
- * a successful upload.
- *
- * Example based on source code provided by Erick Nuwendam. Thanks!
+/* <DESC>
+ * Performs an FTP upload and renames the file just after a successful
+ * transfer.
+ * </DESC>
*/
#define LOCAL_FILE "/tmp/uploadthis.txt"
diff --git a/docs/examples/ftpuploadresume.c b/docs/examples/ftpuploadresume.c
index 55b8986c7..1a24f7cbd 100644
--- a/docs/examples/ftpuploadresume.c
+++ b/docs/examples/ftpuploadresume.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,13 +19,9 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Upload to FTP, resuming failed transfers
- *
- * Compile for MinGW like this:
- * gcc -Wall -pedantic -std=c99 ftpuploadwithresume.c -o ftpuploadresume.exe
- * -lcurl -lmsvcr70
- *
- * Written by Philip Bock
+/* <DESC>
+ * Upload to FTP, resuming failed transfers.
+ * </DESC>
*/
#include <stdlib.h>
diff --git a/docs/examples/getinfo.c b/docs/examples/getinfo.c
index acbe1e1af..7f578df43 100644
--- a/docs/examples/getinfo.c
+++ b/docs/examples/getinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use getinfo to get content-type after completed transfer.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -27,18 +31,14 @@ int main(void)
CURL *curl;
CURLcode res;
- /* http://curl.haxx.se/libcurl/c/curl_easy_init.html */
curl = curl_easy_init();
if(curl) {
- /* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL */
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/");
- /* http://curl.haxx.se/libcurl/c/curl_easy_perform.html */
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
char *ct;
/* ask for the content-type */
- /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
if((CURLE_OK == res) && ct)
@@ -46,7 +46,6 @@ int main(void)
}
/* always cleanup */
- /* http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html */
curl_easy_cleanup(curl);
}
return 0;
diff --git a/docs/examples/getinmemory.c b/docs/examples/getinmemory.c
index 1608ec551..2cf201e96 100644
--- a/docs/examples/getinmemory.c
+++ b/docs/examples/getinmemory.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example source code to show how the callback function can be used to
- * download data into a chunk of memory instead of storing it in a file.
+/* <DESC>
+ * Shows how the write callback function can be used to download data into a
+ * chunk of memory instead of storing it in a file.
+ * </DESC>
*/
#include <stdio.h>
@@ -34,7 +36,6 @@ struct MemoryStruct {
size_t size;
};
-
static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
@@ -55,7 +56,6 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
return realsize;
}
-
int main(void)
{
CURL *curl_handle;
@@ -106,8 +106,7 @@ int main(void)
/* cleanup curl stuff */
curl_easy_cleanup(curl_handle);
- if(chunk.memory)
- free(chunk.memory);
+ free(chunk.memory);
/* we're done with libcurl, so clean it up */
curl_global_cleanup();
diff --git a/docs/examples/ghiper.c b/docs/examples/ghiper.c
index 7571ffa3d..0621d3eef 100644
--- a/docs/examples/ghiper.c
+++ b/docs/examples/ghiper.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket API usage together with with glib2
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
* download many files at once.
*
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index 84035aa2c..63614f7d4 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket API usage with libevent 2
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
download many files at once.
diff --git a/docs/examples/href_extractor.c b/docs/examples/href_extractor.c
index c11325d2e..f2c324e3c 100644
--- a/docs/examples/href_extractor.c
+++ b/docs/examples/href_extractor.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -20,13 +20,13 @@
*
***************************************************************************/
+/* <DESC>
+ * Uses the "Streaming HTML parser" to extract the href pieces in a streaming
+ * manner from a downloaded HTML.
+ * </DESC>
+ */
/*
- * This example uses the "Streaming HTML parser" to extract the href pieces in
- * a streaming manner from a downloaded HTML. Kindly donated by Michał
- * Kowalczyk.
- *
- * The parser is found at
- * http://code.google.com/p/htmlstreamparser/
+ * The HTML parser is found at http://code.google.com/p/htmlstreamparser/
*/
#include <stdio.h>
diff --git a/docs/examples/htmltidy.c b/docs/examples/htmltidy.c
index a36e331bf..c1d9508da 100644
--- a/docs/examples/htmltidy.c
+++ b/docs/examples/htmltidy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,13 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Download a document and use libtidy to parse the HTML.
- * Written by Jeff Pohlmeyer
- *
+/* <DESC>
+ * Download a document and use libtidy to parse the HTML.
+ * </DESC>
+ */
+/*
* LibTidy => http://tidy.sourceforge.net
- *
- * gcc -Wall -I/usr/local/include tidycurl.c -lcurl -ltidy -o tidycurl
- *
*/
#include <stdio.h>
diff --git a/docs/examples/htmltitle.cpp b/docs/examples/htmltitle.cpp
index ab89bb6a7..d91b505aa 100644
--- a/docs/examples/htmltitle.cpp
+++ b/docs/examples/htmltitle.cpp
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-// Get a web page, parse it with libxml.
-//
+/* <DESC>
+ * Get a web page, extract the title with libxml.
+ * </DESC>
+ */
// Written by Lars Nilsson
//
// GNU C++ compile command line suggestion (edit paths accordingly):
diff --git a/docs/examples/http-post.c b/docs/examples/http-post.c
index f1975b1ec..a213c398f 100644
--- a/docs/examples/http-post.c
+++ b/docs/examples/http-post.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * simple HTTP POST using the easy interface
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
new file mode 100644
index 000000000..8b0650734
--- /dev/null
+++ b/docs/examples/http2-download.c
@@ -0,0 +1,292 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Multiplexed HTTP/2 downloads over a single connection
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+/* This little trick will just make sure that we don't enable pipelining for
+ libcurls old enough to not have this symbol. It is _not_ defined to zero in
+ a recent libcurl header. */
+#define CURLPIPE_MULTIPLEX 0
+#endif
+
+#define NUM_HANDLES 1000
+
+void *curl_hnd[NUM_HANDLES];
+int num_transfers;
+
+/* a handle to number lookup, highly ineffective when we do many
+ transfers... */
+static int hnd2num(CURL *hnd)
+{
+ int i;
+ for(i=0; i< num_transfers; i++) {
+ if(curl_hnd[i] == hnd)
+ return i;
+ }
+ return 0; /* weird, but just a fail-safe */
+}
+
+static
+void dump(const char *text, int num, unsigned char *ptr, size_t size,
+ char nohex)
+{
+ size_t i;
+ size_t c;
+
+ unsigned int width=0x10;
+
+ if(nohex)
+ /* without the hex output, we can fit more on screen */
+ width = 0x40;
+
+ fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
+ num, text, (long)size, (long)size);
+
+ for(i=0; i<size; i+= width) {
+
+ fprintf(stderr, "%4.4lx: ", (long)i);
+
+ if(!nohex) {
+ /* hex not disabled, show it */
+ for(c = 0; c < width; c++)
+ if(i+c < size)
+ fprintf(stderr, "%02x ", ptr[i+c]);
+ else
+ fputs(" ", stderr);
+ }
+
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ /* check for 0D0A; if found, skip past and start a new line of output */
+ if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ i+=(c+2-width);
+ break;
+ }
+ fprintf(stderr, "%c",
+ (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+ /* check again for 0D0A, to avoid an extra \n if it's at width */
+ if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ i+=(c+3-width);
+ break;
+ }
+ }
+ fputc('\n', stderr); /* newline */
+ }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+ char *data, size_t size,
+ void *userp)
+{
+ const char *text;
+ int num = hnd2num(handle);
+ (void)handle; /* prevent compiler warning */
+ (void)userp;
+ switch (type) {
+ case CURLINFO_TEXT:
+ fprintf(stderr, "== %d Info: %s", num, data);
+ 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_SSL_DATA_OUT:
+ text = "=> Send SSL 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;
+ }
+
+ dump(text, num, (unsigned char *)data, size, 1);
+ return 0;
+}
+
+static void setup(CURL *hnd, int num)
+{
+ FILE *out;
+ char filename[128];
+
+ sprintf(filename, "dl-%d", num);
+
+ out = fopen(filename, "wb");
+
+ /* write to this file */
+ curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+ /* set the same URL */
+ curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
+
+ /* send it verbose for max debuggaility */
+ curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+ /* HTTP/2 please */
+ curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+ /* we use a self-signed test server, skip verification during debugging */
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+ /* wait for pipe connection to confirm */
+ curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+ curl_hnd[num] = hnd;
+}
+
+/*
+ * Simply download two files over HTTP/2, using the same physical connection!
+ */
+int main(int argc, char **argv)
+{
+ CURL *easy[NUM_HANDLES];
+ CURLM *multi_handle;
+ int i;
+ int still_running; /* keep number of running handles */
+
+ if(argc > 1)
+ /* if given a number, do that many transfers */
+ num_transfers = atoi(argv[1]);
+
+ if(!num_transfers || (num_transfers > NUM_HANDLES))
+ num_transfers = 3; /* a suitable low default */
+
+ /* init a multi stack */
+ multi_handle = curl_multi_init();
+
+ for(i=0; i<num_transfers; i++) {
+ easy[i] = curl_easy_init();
+ /* set options */
+ setup(easy[i], i);
+
+ /* add the individual transfer */
+ curl_multi_add_handle(multi_handle, easy[i]);
+ }
+
+ curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+
+ /* we start some action by calling perform right away */
+ curl_multi_perform(multi_handle, &still_running);
+
+ do {
+ struct timeval timeout;
+ int rc; /* select() return code */
+ CURLMcode mc; /* curl_multi_fdset() return code */
+
+ fd_set fdread;
+ fd_set fdwrite;
+ fd_set fdexcep;
+ int maxfd = -1;
+
+ long curl_timeo = -1;
+
+ FD_ZERO(&fdread);
+ FD_ZERO(&fdwrite);
+ FD_ZERO(&fdexcep);
+
+ /* set a suitable timeout to play around with */
+ timeout.tv_sec = 1;
+ timeout.tv_usec = 0;
+
+ curl_multi_timeout(multi_handle, &curl_timeo);
+ if(curl_timeo >= 0) {
+ timeout.tv_sec = curl_timeo / 1000;
+ if(timeout.tv_sec > 1)
+ timeout.tv_sec = 1;
+ else
+ timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ }
+
+ /* get file descriptors from the transfers */
+ mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+ if(mc != CURLM_OK)
+ {
+ fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ break;
+ }
+
+ /* On success the value of maxfd is guaranteed to be >= -1. We call
+ select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+ no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+ to sleep 100ms, which is the minimum suggested value in the
+ curl_multi_fdset() doc. */
+
+ if(maxfd == -1) {
+#ifdef _WIN32
+ Sleep(100);
+ rc = 0;
+#else
+ /* Portable sleep for platforms other than Windows. */
+ struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+ rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+ }
+ else {
+ /* Note that on some platforms 'timeout' may be modified by select().
+ If you need access to the original value save a copy beforehand. */
+ rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+ }
+
+ switch(rc) {
+ case -1:
+ /* select error */
+ break;
+ case 0:
+ default:
+ /* timeout or readable/writable sockets */
+ curl_multi_perform(multi_handle, &still_running);
+ break;
+ }
+ } while(still_running);
+
+ curl_multi_cleanup(multi_handle);
+
+ for(i=0; i<num_transfers; i++)
+ curl_easy_cleanup(easy[i]);
+
+ return 0;
+}
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
new file mode 100644
index 000000000..53c491b3a
--- /dev/null
+++ b/docs/examples/http2-serverpush.c
@@ -0,0 +1,317 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * HTTP/2 server push
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+#error "too old libcurl, can't do HTTP/2 server push!"
+#endif
+
+static
+void dump(const char *text, unsigned char *ptr, size_t size,
+ char nohex)
+{
+ size_t i;
+ size_t c;
+
+ unsigned int width=0x10;
+
+ if(nohex)
+ /* without the hex output, we can fit more on screen */
+ width = 0x40;
+
+ fprintf(stderr, "%s, %ld bytes (0x%lx)\n",
+ text, (long)size, (long)size);
+
+ for(i=0; i<size; i+= width) {
+
+ fprintf(stderr, "%4.4lx: ", (long)i);
+
+ if(!nohex) {
+ /* hex not disabled, show it */
+ for(c = 0; c < width; c++)
+ if(i+c < size)
+ fprintf(stderr, "%02x ", ptr[i+c]);
+ else
+ fputs(" ", stderr);
+ }
+
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ /* check for 0D0A; if found, skip past and start a new line of output */
+ if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ i+=(c+2-width);
+ break;
+ }
+ fprintf(stderr, "%c",
+ (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+ /* check again for 0D0A, to avoid an extra \n if it's at width */
+ if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ i+=(c+3-width);
+ break;
+ }
+ }
+ fputc('\n', stderr); /* newline */
+ }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+ char *data, size_t size,
+ void *userp)
+{
+ const char *text;
+ (void)handle; /* prevent compiler warning */
+ (void)userp;
+ switch (type) {
+ case CURLINFO_TEXT:
+ fprintf(stderr, "== Info: %s", data);
+ 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_SSL_DATA_OUT:
+ text = "=> Send SSL 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;
+ }
+
+ dump(text, (unsigned char *)data, size, 1);
+ return 0;
+}
+
+static void setup(CURL *hnd)
+{
+ FILE *out = fopen("dl", "wb");
+
+ /* write to this file */
+ curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+ /* set the same URL */
+ curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
+
+ /* send it verbose for max debuggaility */
+ curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+ /* HTTP/2 please */
+ curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+ /* we use a self-signed test server, skip verification during debugging */
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+ /* wait for pipe connection to confirm */
+ curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+}
+
+/* called when there's an incoming push */
+static int server_push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp)
+{
+ char *headp;
+ size_t i;
+ int *transfers = (int *)userp;
+ char filename[128];
+ FILE *out;
+ static unsigned int count = 0;
+
+ (void)parent; /* we have no use for this */
+
+ sprintf(filename, "push%u", count++);
+
+ /* here's a new stream, save it in a new file for each new push */
+ out = fopen(filename, "wb");
+
+ /* write to this file */
+ curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+ fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n",
+ count, (int)num_headers);
+
+ for(i=0; i<num_headers; i++) {
+ headp = curl_pushheader_bynum(headers, i);
+ fprintf(stderr, "**** header %u: %s\n", (int)i, headp);
+ }
+
+ headp = curl_pushheader_byname(headers, ":path");
+ if(headp) {
+ fprintf(stderr, "**** The PATH is %s\n", headp /* skip :path + colon */ );
+ }
+
+ (*transfers)++; /* one more */
+ return CURL_PUSH_OK;
+}
+
+
+/*
+ * Download a file over HTTP/2, take care of server push.
+ */
+int main(void)
+{
+ CURL *easy;
+ CURLM *multi_handle;
+ int still_running; /* keep number of running handles */
+ int transfers=1; /* we start with one */
+ struct CURLMsg *m;
+
+ /* init a multi stack */
+ multi_handle = curl_multi_init();
+
+ easy = curl_easy_init();
+
+ /* set options */
+ setup(easy);
+
+ /* add the easy transfer */
+ curl_multi_add_handle(multi_handle, easy);
+
+ curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+ curl_multi_setopt(multi_handle, CURLMOPT_PUSHFUNCTION, server_push_callback);
+ curl_multi_setopt(multi_handle, CURLMOPT_PUSHDATA, &transfers);
+
+ /* we start some action by calling perform right away */
+ curl_multi_perform(multi_handle, &still_running);
+
+ do {
+ struct timeval timeout;
+ int rc; /* select() return code */
+ CURLMcode mc; /* curl_multi_fdset() return code */
+
+ fd_set fdread;
+ fd_set fdwrite;
+ fd_set fdexcep;
+ int maxfd = -1;
+
+ long curl_timeo = -1;
+
+ FD_ZERO(&fdread);
+ FD_ZERO(&fdwrite);
+ FD_ZERO(&fdexcep);
+
+ /* set a suitable timeout to play around with */
+ timeout.tv_sec = 1;
+ timeout.tv_usec = 0;
+
+ curl_multi_timeout(multi_handle, &curl_timeo);
+ if(curl_timeo >= 0) {
+ timeout.tv_sec = curl_timeo / 1000;
+ if(timeout.tv_sec > 1)
+ timeout.tv_sec = 1;
+ else
+ timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ }
+
+ /* get file descriptors from the transfers */
+ mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ break;
+ }
+
+ /* On success the value of maxfd is guaranteed to be >= -1. We call
+ select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+ no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+ to sleep 100ms, which is the minimum suggested value in the
+ curl_multi_fdset() doc. */
+
+ if(maxfd == -1) {
+#ifdef _WIN32
+ Sleep(100);
+ rc = 0;
+#else
+ /* Portable sleep for platforms other than Windows. */
+ struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+ rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+ }
+ else {
+ /* Note that on some platforms 'timeout' may be modified by select().
+ If you need access to the original value save a copy beforehand. */
+ rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+ }
+
+ switch(rc) {
+ case -1:
+ /* select error */
+ break;
+ case 0:
+ default:
+ /* timeout or readable/writable sockets */
+ curl_multi_perform(multi_handle, &still_running);
+ break;
+ }
+
+ /*
+ * A little caution when doing server push is that libcurl itself has
+ * created and added one or more easy handles but we need to clean them up
+ * when we are done.
+ */
+
+ do {
+ int msgq = 0;;
+ m = curl_multi_info_read(multi_handle, &msgq);
+ if(m && (m->msg == CURLMSG_DONE)) {
+ CURL *e = m->easy_handle;
+ transfers--;
+ curl_multi_remove_handle(multi_handle, e);
+ curl_easy_cleanup(e);
+ }
+ } while(m);
+
+ } while(transfers); /* as long as we have transfers going */
+
+ curl_multi_cleanup(multi_handle);
+
+
+ return 0;
+}
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
new file mode 100644
index 000000000..2ec55059a
--- /dev/null
+++ b/docs/examples/http2-upload.c
@@ -0,0 +1,356 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Multiplexed HTTP/2 uploads over a single connection
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+/* This little trick will just make sure that we don't enable pipelining for
+ libcurls old enough to not have this symbol. It is _not_ defined to zero in
+ a recent libcurl header. */
+#define CURLPIPE_MULTIPLEX 0
+#endif
+
+#define NUM_HANDLES 1000
+
+void *curl_hnd[NUM_HANDLES];
+int num_transfers;
+
+/* a handle to number lookup, highly ineffective when we do many
+ transfers... */
+static int hnd2num(CURL *hnd)
+{
+ int i;
+ for(i=0; i< num_transfers; i++) {
+ if(curl_hnd[i] == hnd)
+ return i;
+ }
+ return 0; /* weird, but just a fail-safe */
+}
+
+static
+void dump(const char *text, int num, unsigned char *ptr, size_t size,
+ char nohex)
+{
+ size_t i;
+ size_t c;
+ unsigned int width=0x10;
+
+ if(nohex)
+ /* without the hex output, we can fit more on screen */
+ width = 0x40;
+
+ fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
+ num, text, (long)size, (long)size);
+
+ for(i=0; i<size; i+= width) {
+
+ fprintf(stderr, "%4.4lx: ", (long)i);
+
+ if(!nohex) {
+ /* hex not disabled, show it */
+ for(c = 0; c < width; c++)
+ if(i+c < size)
+ fprintf(stderr, "%02x ", ptr[i+c]);
+ else
+ fputs(" ", stderr);
+ }
+
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ /* check for 0D0A; if found, skip past and start a new line of output */
+ if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ i+=(c+2-width);
+ break;
+ }
+ fprintf(stderr, "%c",
+ (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+ /* check again for 0D0A, to avoid an extra \n if it's at width */
+ if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ i+=(c+3-width);
+ break;
+ }
+ }
+ fputc('\n', stderr); /* newline */
+ }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+ char *data, size_t size,
+ void *userp)
+{
+ char timebuf[20];
+ const char *text;
+ int num = hnd2num(handle);
+ static time_t epoch_offset;
+ static int known_offset;
+ struct timeval tv;
+ time_t secs;
+ struct tm *now;
+
+ (void)handle; /* prevent compiler warning */
+ (void)userp;
+
+ gettimeofday(&tv, NULL);
+ if(!known_offset) {
+ epoch_offset = time(NULL) - tv.tv_sec;
+ known_offset = 1;
+ }
+ secs = epoch_offset + tv.tv_sec;
+ now = localtime(&secs); /* not thread safe but we don't care */
+ snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld",
+ now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec);
+
+ switch (type) {
+ case CURLINFO_TEXT:
+ fprintf(stderr, "%s [%d] Info: %s", timebuf, num, data);
+ 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_SSL_DATA_OUT:
+ text = "=> Send SSL 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;
+ }
+
+ dump(text, num, (unsigned char *)data, size, 1);
+ return 0;
+}
+
+struct input {
+ FILE *in;
+ size_t bytes_read; /* count up */
+ CURL *hnd;
+};
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+ struct input *i = userp;
+ size_t retcode = fread(ptr, size, nmemb, i->in);
+ i->bytes_read += retcode;
+ return retcode;
+}
+
+struct input indata[NUM_HANDLES];
+
+static void setup(CURL *hnd, int num, const char *upload)
+{
+ FILE *out;
+ char url[256];
+ char filename[128];
+ struct stat file_info;
+ curl_off_t uploadsize;
+
+ sprintf(filename, "dl-%d", num);
+ out = fopen(filename, "wb");
+
+ sprintf(url, "https://localhost:8443/upload-%d", num);
+
+ /* get the file size of the local file */
+ stat(upload, &file_info);
+ uploadsize = file_info.st_size;
+
+ indata[num].in = fopen(upload, "rb");
+ indata[num].hnd = hnd;
+
+ /* write to this file */
+ curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+ /* we want to use our own read function */
+ curl_easy_setopt(hnd, CURLOPT_READFUNCTION, read_callback);
+ /* read from this file */
+ curl_easy_setopt(hnd, CURLOPT_READDATA, &indata[num]);
+ /* provide the size of the upload */
+ curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, uploadsize);
+
+ /* send in the URL to store the upload as */
+ curl_easy_setopt(hnd, CURLOPT_URL, url);
+
+ /* upload please */
+ curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
+
+ /* send it verbose for max debuggaility */
+ curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+ /* HTTP/2 please */
+ curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+ /* we use a self-signed test server, skip verification during debugging */
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+ /* wait for pipe connection to confirm */
+ curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+ curl_hnd[num] = hnd;
+}
+
+/*
+ * Upload all files over HTTP/2, using the same physical connection!
+ */
+int main(int argc, char **argv)
+{
+ CURL *easy[NUM_HANDLES];
+ CURLM *multi_handle;
+ int i;
+ int still_running; /* keep number of running handles */
+ const char *filename = "index.html";
+
+ if(argc > 1)
+ /* if given a number, do that many transfers */
+ num_transfers = atoi(argv[1]);
+
+ if(argc > 2)
+ /* if given a file name, upload this! */
+ filename = argv[2];
+
+ if(!num_transfers || (num_transfers > NUM_HANDLES))
+ num_transfers = 3; /* a suitable low default */
+
+ /* init a multi stack */
+ multi_handle = curl_multi_init();
+
+ for(i=0; i<num_transfers; i++) {
+ easy[i] = curl_easy_init();
+ /* set options */
+ setup(easy[i], i, filename);
+
+ /* add the individual transfer */
+ curl_multi_add_handle(multi_handle, easy[i]);
+ }
+
+ curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+
+ /* We do HTTP/2 so let's stick to one connection per host */
+ curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 1L);
+
+ /* we start some action by calling perform right away */
+ curl_multi_perform(multi_handle, &still_running);
+
+ do {
+ struct timeval timeout;
+ int rc; /* select() return code */
+ CURLMcode mc; /* curl_multi_fdset() return code */
+
+ fd_set fdread;
+ fd_set fdwrite;
+ fd_set fdexcep;
+ int maxfd = -1;
+
+ long curl_timeo = -1;
+
+ FD_ZERO(&fdread);
+ FD_ZERO(&fdwrite);
+ FD_ZERO(&fdexcep);
+
+ /* set a suitable timeout to play around with */
+ timeout.tv_sec = 1;
+ timeout.tv_usec = 0;
+
+ curl_multi_timeout(multi_handle, &curl_timeo);
+ if(curl_timeo >= 0) {
+ timeout.tv_sec = curl_timeo / 1000;
+ if(timeout.tv_sec > 1)
+ timeout.tv_sec = 1;
+ else
+ timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ }
+
+ /* get file descriptors from the transfers */
+ mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+ if(mc != CURLM_OK)
+ {
+ fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ break;
+ }
+
+ /* On success the value of maxfd is guaranteed to be >= -1. We call
+ select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+ no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+ to sleep 100ms, which is the minimum suggested value in the
+ curl_multi_fdset() doc. */
+
+ if(maxfd == -1) {
+#ifdef _WIN32
+ Sleep(100);
+ rc = 0;
+#else
+ /* Portable sleep for platforms other than Windows. */
+ struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+ rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+ }
+ else {
+ /* Note that on some platforms 'timeout' may be modified by select().
+ If you need access to the original value save a copy beforehand. */
+ rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+ }
+
+ switch(rc) {
+ case -1:
+ /* select error */
+ break;
+ case 0:
+ default:
+ /* timeout or readable/writable sockets */
+ curl_multi_perform(multi_handle, &still_running);
+ break;
+ }
+ } while(still_running);
+
+ curl_multi_cleanup(multi_handle);
+
+ for(i=0; i<num_transfers; i++)
+ curl_easy_cleanup(easy[i]);
+
+ return 0;
+}
diff --git a/docs/examples/httpcustomheader.c b/docs/examples/httpcustomheader.c
index 8542ead53..e742db969 100644
--- a/docs/examples/httpcustomheader.c
+++ b/docs/examples/httpcustomheader.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP request with custom modified, removed and added headers
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/httpput.c b/docs/examples/httpput.c
index 2e9dc2170..71191164f 100644
--- a/docs/examples/httpput.c
+++ b/docs/examples/httpput.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP PUT with easy interface and read callback
+ * </DESC>
+ */
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/docs/examples/https.c b/docs/examples/https.c
index bd9a33ba6..2d5909eaa 100644
--- a/docs/examples/https.c
+++ b/docs/examples/https.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Simple HTTPS GET
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-append.c b/docs/examples/imap-append.c
index fa531a8c5..fb58b4b23 100644
--- a/docs/examples/imap-append.c
+++ b/docs/examples/imap-append.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Simple IMAP APPEND use
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-ssl.c b/docs/examples/imap-ssl.c
index e42ff3922..eec9b0e31 100644
--- a/docs/examples/imap-ssl.c
+++ b/docs/examples/imap-ssl.c
@@ -60,7 +60,7 @@ int main(void)
* they have mentioned in their server certificate's commonName (or
* subjectAltName) fields, libcurl will refuse to connect. You can skip
* this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERFICATION
+#ifdef SKIP_HOSTNAME_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
diff --git a/docs/examples/multi-debugcallback.c b/docs/examples/multi-debugcallback.c
index 5fb86bea1..6769024ac 100644
--- a/docs/examples/multi-debugcallback.c
+++ b/docs/examples/multi-debugcallback.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is an example showing the multi interface and the debug callback. */
+/* <DESC>
+ * multi interface and debug callback
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
diff --git a/docs/examples/multi-double.c b/docs/examples/multi-double.c
index 0d8d0de4f..d652e7ca8 100644
--- a/docs/examples/multi-double.c
+++ b/docs/examples/multi-double.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi interface code doing two parallel HTTP transfers
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
diff --git a/docs/examples/multi-post.c b/docs/examples/multi-post.c
index f511d66fd..115dc0ceb 100644
--- a/docs/examples/multi-post.c
+++ b/docs/examples/multi-post.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,8 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is an example application source code using the multi interface
- * to do a multipart formpost without "blocking". */
+/* <DESC>
+ * using the multi interface to do a multipart formpost without blocking
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
@@ -64,7 +67,7 @@ int main(void)
curl = curl_easy_init();
multi_handle = curl_multi_init();
- /* initalize custom header list (stating that Expect: 100-continue is not
+ /* initialize custom header list (stating that Expect: 100-continue is not
wanted */
headerlist = curl_slist_append(headerlist, buf);
if(curl && multi_handle) {
diff --git a/docs/examples/multi-single.c b/docs/examples/multi-single.c
index 47e23f5a9..1df944427 100644
--- a/docs/examples/multi-single.c
+++ b/docs/examples/multi-single.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is a very simple example using the multi interface. */
+/* <DESC>
+ * using the multi interface to do a single download
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -76,12 +79,12 @@ int main(void)
if(mc != CURLM_OK)
{
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
break;
}
/* 'numfds' being zero means either a timeout or no file descriptors to
- wait for. Try timeout on first occurance, then assume no file
+ wait for. Try timeout on first occurrence, then assume no file
descriptors and no file descriptors to wait for means wait for 100
milliseconds. */
diff --git a/docs/examples/multi-uv.c b/docs/examples/multi-uv.c
index 0c0f8a2b9..3d6e6de72 100644
--- a/docs/examples/multi-uv.c
+++ b/docs/examples/multi-uv.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -20,6 +20,10 @@
*
***************************************************************************/
+/* <DESC>
+ * multi_socket API using libuv
+ * </DESC>
+ */
/* Example application code using the multi socket interface to download
multiple files at once, but instead of using curl_multi_perform and
curl_multi_wait, which uses select(), we use libuv.
diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c
index 831a07467..23d5d8aad 100644
--- a/docs/examples/multithread.c
+++ b/docs/examples/multithread.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* A multi-threaded example that uses pthreads extensively to fetch
- * X remote files at once */
+/* <DESC>
+ * A multi-threaded example that uses pthreads to fetch several files at once
+ * </DESC>
+ */
#include <stdio.h>
#include <pthread.h>
diff --git a/docs/examples/opensslthreadlock.c b/docs/examples/opensslthreadlock.c
index ad54f08ea..03ec1f29b 100644
--- a/docs/examples/opensslthreadlock.c
+++ b/docs/examples/opensslthreadlock.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,16 +19,17 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example source code to show one way to set the necessary OpenSSL locking
- * callbacks if you want to do multi-threaded transfers with HTTPS/FTPS with
- * libcurl built to use OpenSSL.
- *
+/* <DESC>
+ * one way to set the necessary OpenSSL locking callbacks if you want to do
+ * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL.
+ * </DESC>
+ */
+/*
* This is not a complete stand-alone example.
*
* Author: Jeremy Brown
*/
-
#include <stdio.h>
#include <pthread.h>
#include <openssl/err.h>
diff --git a/docs/examples/persistant.c b/docs/examples/persistant.c
index 0917dfdb8..3e6af18f2 100644
--- a/docs/examples/persistant.c
+++ b/docs/examples/persistant.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * re-using handles to do HTTP persistent connections
+ * </DESC>
+ */
#include <stdio.h>
#include <unistd.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-multi.c b/docs/examples/pop3-multi.c
index 435308623..6df09a263 100644
--- a/docs/examples/pop3-multi.c
+++ b/docs/examples/pop3-multi.c
@@ -69,7 +69,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
- /* This will retreive message 1 from the user's mailbox */
+ /* This will retrieve message 1 from the user's mailbox */
curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
/* Tell the multi stack about our easy handle */
diff --git a/docs/examples/pop3-retr.c b/docs/examples/pop3-retr.c
index e5a50f22d..b5113fa99 100644
--- a/docs/examples/pop3-retr.c
+++ b/docs/examples/pop3-retr.c
@@ -39,7 +39,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
- /* This will retreive message 1 from the user's mailbox */
+ /* This will retrieve message 1 from the user's mailbox */
curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
/* Perform the retr */
diff --git a/docs/examples/pop3-ssl.c b/docs/examples/pop3-ssl.c
index 45e0054b6..0bbec8d9d 100644
--- a/docs/examples/pop3-ssl.c
+++ b/docs/examples/pop3-ssl.c
@@ -40,7 +40,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
- /* This will retreive message 1 from the user's mailbox. Note the use of
+ /* This will retrieve message 1 from the user's mailbox. Note the use of
* pop3s:// rather than pop3:// to request a SSL based connection. */
curl_easy_setopt(curl, CURLOPT_URL, "pop3s://pop.example.com/1");
@@ -60,7 +60,7 @@ int main(void)
* they have mentioned in their server certificate's commonName (or
* subjectAltName) fields, libcurl will refuse to connect. You can skip
* this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERFICATION
+#ifdef SKIP_HOSTNAME_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
diff --git a/docs/examples/pop3-tls.c b/docs/examples/pop3-tls.c
index 812d89b8b..58278a1e2 100644
--- a/docs/examples/pop3-tls.c
+++ b/docs/examples/pop3-tls.c
@@ -40,7 +40,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
- /* This will retreive message 1 from the user's mailbox */
+ /* This will retrieve message 1 from the user's mailbox */
curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
/* In this example, we'll start with a plain text connection, and upgrade
diff --git a/docs/examples/post-callback.c b/docs/examples/post-callback.c
index 3e1cfb060..a2f0427fe 100644
--- a/docs/examples/post-callback.c
+++ b/docs/examples/post-callback.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* An example source code that issues a HTTP POST and we provide the actual
+/* <DESC>
+ * An example source code that issues a HTTP POST and we provide the actual
* data through a read callback.
+ * </DESC>
*/
#include <stdio.h>
#include <string.h>
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
index cd2bd13fb..3afac4b2f 100644
--- a/docs/examples/postinmemory.c
+++ b/docs/examples/postinmemory.c
@@ -101,8 +101,7 @@ int main(void)
/* always cleanup */
curl_easy_cleanup(curl);
- if(chunk.memory)
- free(chunk.memory);
+ free(chunk.memory);
/* we're done with libcurl, so clean it up */
curl_global_cleanup();
diff --git a/docs/examples/postit2.c b/docs/examples/postit2.c
index 67dcc1330..88ea78c86 100644
--- a/docs/examples/postit2.c
+++ b/docs/examples/postit2.c
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
CURLFORM_END);
curl = curl_easy_init();
- /* initalize custom header list (stating that Expect: 100-continue is not
+ /* initialize custom header list (stating that Expect: 100-continue is not
wanted */
headerlist = curl_slist_append(headerlist, buf);
if(curl) {
diff --git a/docs/examples/sftpget.c b/docs/examples/sftpget.c
index 8317462e9..434299dc0 100644
--- a/docs/examples/sftpget.c
+++ b/docs/examples/sftpget.c
@@ -58,7 +58,7 @@ int main(void)
CURL *curl;
CURLcode res;
struct FtpFile ftpfile={
- "yourfile.bin", /* name to store the file as if succesful */
+ "yourfile.bin", /* name to store the file as if successful */
NULL
};
diff --git a/docs/examples/smtp-mail.c b/docs/examples/smtp-mail.c
index af4d1b65b..eea90b8a8 100644
--- a/docs/examples/smtp-mail.c
+++ b/docs/examples/smtp-mail.c
@@ -24,7 +24,7 @@
#include <curl/curl.h>
/* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. For an exmaple of using the multi interface please see
+ * capabilities. For an example of using the multi interface please see
* smtp-multi.c.
*
* Note that this example requires libcurl 7.20.0 or above.
diff --git a/docs/examples/smtp-ssl.c b/docs/examples/smtp-ssl.c
index 9a68a7ff9..a774403fc 100644
--- a/docs/examples/smtp-ssl.c
+++ b/docs/examples/smtp-ssl.c
@@ -111,7 +111,7 @@ int main(void)
* they have mentioned in their server certificate's commonName (or
* subjectAltName) fields, libcurl will refuse to connect. You can skip
* this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERFICATION
+#ifdef SKIP_HOSTNAME_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
diff --git a/docs/examples/xmlstream.c b/docs/examples/xmlstream.c
index 4d67f98eb..819344502 100644
--- a/docs/examples/xmlstream.c
+++ b/docs/examples/xmlstream.c
@@ -120,7 +120,7 @@ int main(void)
XML_SetElementHandler(parser, startElement, endElement);
XML_SetCharacterDataHandler(parser, characterDataHandler);
- /* Initalize a libcurl handle. */
+ /* Initialize a libcurl handle. */
curl_global_init(CURL_GLOBAL_ALL ^ CURL_GLOBAL_SSL);
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.w3schools.com/xml/simple.xml");
diff --git a/docs/libcurl/ABI b/docs/libcurl/ABI
index ef0caa6f2..c7c914202 100644
--- a/docs/libcurl/ABI
+++ b/docs/libcurl/ABI
@@ -1,63 +1,55 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- libcurl's binary interface
-
ABI - Application Binary Interface
-----------------------------------
+==================================
- "ABI" describes the low-level interface between an application program and a
- library. Calling conventions, function arguments, return values, struct
- sizes/defines and more.
+ "ABI" describes the low-level interface between an application program and a
+ library. Calling conventions, function arguments, return values, struct
+ sizes/defines and more.
- [Wikipedia has a longer description](http://en.wikipedia.org/wiki/Application_binary_interface)
+ [Wikipedia has a longer description](https://en.wikipedia.org/wiki/Application_binary_interface)
Upgrades
--------
- In the vast majority of all cases, a typical libcurl upgrade does not break
- the ABI at all. Your application can remain using libcurl just as before,
- only with less bugs and possibly with added new features. You need to read
- the release notes, and if they mention an ABI break/soname bump, you may
- have to verify that your application still builds fine and uses libcurl as
- it now is defined to work.
+ In the vast majority of all cases, a typical libcurl upgrade does not break
+ the ABI at all. Your application can remain using libcurl just as before,
+ only with less bugs and possibly with added new features. You need to read
+ the release notes, and if they mention an ABI break/soname bump, you may have
+ to verify that your application still builds fine and uses libcurl as it now
+ is defined to work.
Version Numbers
---------------
- In libcurl land, you really can't tell by the libcurl version number if that
- libcurl is binary compatible or not with another libcurl version.
+ In libcurl land, you really can't tell by the libcurl version number if that
+ libcurl is binary compatible or not with another libcurl version.
Soname Bumps
------------
- Whenever there are changes done to the library that will cause an ABI
- breakage, that may require your application to get attention or possibly be
- changed to adhere to new things, we will bump the soname. Then the library
- will get a different output name and thus can in fact be installed in
- parallel with an older installed lib (on most systems). Thus, old
- applications built against the previous ABI version will remain working and
- using the older lib, while newer applications build and use the newer one.
+ Whenever there are changes done to the library that will cause an ABI
+ breakage, that may require your application to get attention or possibly be
+ changed to adhere to new things, we will bump the soname. Then the library
+ will get a different output name and thus can in fact be installed in
+ parallel with an older installed lib (on most systems). Thus, old
+ applications built against the previous ABI version will remain working and
+ using the older lib, while newer applications build and use the newer one.
- During the first seven years of libcurl releases, there have only been four
- ABI breakages.
+ During the first seven years of libcurl releases, there have only been four
+ ABI breakages.
- We are determined to bump the SONAME as rarely as possible. Ideally, we
- never do it again.
+ We are determined to bump the SONAME as rarely as possible. Ideally, we
+ never do it again.
Downgrades
----------
- Going to an older libcurl version from one you're currently using can be a
- tricky thing. Mostly we add features and options to newer libcurls as that
- won't break ABI or hamper existing applications. This has the implication
- that going backwards may get you in a situation where you pick a libcurl
- that doesn't support the options your application needs. Or possibly you
- even downgrade so far so you cross an ABI break border and thus a different
- soname, and then your application may need to adapt to the modified ABI.
+ Going to an older libcurl version from one you're currently using can be a
+ tricky thing. Mostly we add features and options to newer libcurls as that
+ won't break ABI or hamper existing applications. This has the implication
+ that going backwards may get you in a situation where you pick a libcurl that
+ doesn't support the options your application needs. Or possibly you even
+ downgrade so far so you cross an ABI break border and thus a different
+ soname, and then your application may need to adapt to the modified ABI.
History
-------
diff --git a/docs/libcurl/Makefile.am b/docs/libcurl/Makefile.am
index c47678b43..5456ee418 100644
--- a/docs/libcurl/Makefile.am
+++ b/docs/libcurl/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -29,18 +29,19 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \
curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3 \
curl_slist_append.3 curl_slist_free_all.3 curl_version.3 \
curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3 \
- curl_strequal.3 curl_mprintf.3 curl_global_init.3 curl_global_cleanup.3 \
- curl_multi_add_handle.3 curl_multi_cleanup.3 curl_multi_fdset.3 \
- curl_multi_info_read.3 curl_multi_init.3 curl_multi_perform.3 \
- curl_multi_remove_handle.3 curl_share_cleanup.3 curl_share_init.3 \
- curl_share_setopt.3 libcurl.3 libcurl-easy.3 libcurl-multi.3 \
- libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
+ curl_strequal.3 curl_mprintf.3 curl_global_init.3 \
+ curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3 \
+ curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3 \
+ curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3 \
+ curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3 \
+ libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3 \
libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.3 \
curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3 \
curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3 \
curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3 \
- curl_multi_socket_action.3 curl_multi_wait.3
+ curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3 \
+ libcurl-thread.3
HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html \
@@ -60,38 +61,43 @@ HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_unescape.html curl_multi_setopt.html curl_multi_socket.html \
curl_multi_timeout.html curl_formget.html curl_multi_assign.html \
curl_easy_pause.html curl_easy_recv.html curl_easy_send.html \
- curl_multi_socket_action.html curl_multi_wait.html
+ curl_multi_socket_action.html curl_multi_wait.html \
+ libcurl-symbols.html libcurl-thread.html
PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf \
curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf \
curl_easy_duphandle.pdf curl_formadd.pdf curl_formfree.pdf \
- curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
- curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
+ curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
+ curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
curl_escape.pdf curl_unescape.pdf curl_free.pdf curl_strequal.pdf \
curl_mprintf.pdf curl_global_init.pdf curl_global_cleanup.pdf \
curl_multi_add_handle.pdf curl_multi_cleanup.pdf curl_multi_fdset.pdf \
curl_multi_info_read.pdf curl_multi_init.pdf curl_multi_perform.pdf \
- curl_multi_remove_handle.pdf curl_share_cleanup.pdf curl_share_init.pdf \
- curl_share_setopt.pdf libcurl.pdf libcurl-multi.pdf libcurl-easy.pdf \
- libcurl-share.pdf libcurl-errors.pdf curl_easy_strerror.pdf \
- curl_multi_strerror.pdf curl_share_strerror.pdf \
- curl_global_init_mem.pdf libcurl-tutorial.pdf curl_easy_reset.pdf \
- curl_easy_escape.pdf curl_easy_unescape.pdf curl_multi_setopt.pdf \
- curl_multi_socket.pdf curl_multi_timeout.pdf curl_formget.pdf \
- curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf \
- curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
+ curl_multi_remove_handle.pdf curl_share_cleanup.pdf \
+ curl_share_init.pdf curl_share_setopt.pdf libcurl.pdf \
+ libcurl-multi.pdf libcurl-easy.pdf libcurl-share.pdf \
+ libcurl-errors.pdf curl_easy_strerror.pdf curl_multi_strerror.pdf \
+ curl_share_strerror.pdf curl_global_init_mem.pdf libcurl-tutorial.pdf \
+ curl_easy_reset.pdf curl_easy_escape.pdf curl_easy_unescape.pdf \
+ curl_multi_setopt.pdf curl_multi_socket.pdf curl_multi_timeout.pdf \
+ curl_formget.pdf curl_multi_assign.pdf curl_easy_pause.pdf \
+ curl_easy_recv.pdf curl_easy_send.pdf curl_multi_socket_action.pdf \
+ curl_multi_wait.pdf libcurl-symbols.pdf libcurl-thread.pdf
m4macrodir = $(datadir)/aclocal
dist_m4macro_DATA = libcurl.m4
-CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
+CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) libcurl-symbols.3
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
- symbols-in-versions symbols.pl
+ symbols-in-versions symbols.pl mksymbolsmanpage.pl
MAN2HTML= roffit --mandir=. < $< >$@
SUFFIXES = .3 .html
+libcurl-symbols.3: $(srcdir)/symbols-in-versions $(srcdir)/mksymbolsmanpage.pl
+ perl $(srcdir)/mksymbolsmanpage.pl < $(srcdir)/symbols-in-versions > $@
+
html: $(HTMLPAGES)
cd opts; make html
@@ -107,3 +113,17 @@ pdf: $(PDFPAGES)
ps2pdf $$foo.ps $@; \
rm $$foo.ps; \
echo "converted $< to $@")
+
+# Make sure each option man page is referenced in the main man page
+TESTS = check-easy check-multi
+LOG_COMPILER = $(PERL)
+# The test fails if the log file contains any text
+AM_LOG_FLAGS = -p -e 'die "$$_" if ($$_);'
+
+check-easy: $(srcdir)/curl_easy_setopt.3 $(srcdir)/opts/CURLOPT*.3
+ OPTS="$$(ls $(srcdir)/opts/CURLOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+ for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_easy_setopt.3 >/dev/null || echo Missing $$opt; done > $@
+
+check-multi: $(srcdir)/curl_multi_setopt.3 $(srcdir)/opts/CURLMOPT*.3
+ OPTS="$$(ls $(srcdir)/opts/CURLMOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+ for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_multi_setopt.3 >/dev/null || echo Missing $$opt; done > $@
diff --git a/docs/libcurl/Makefile.in b/docs/libcurl/Makefile.in
index 7430e8194..26b036cd5 100644
--- a/docs/libcurl/Makefile.in
+++ b/docs/libcurl/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -37,7 +37,17 @@
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -101,8 +111,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(dist_m4macro_DATA)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -123,7 +131,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_m4macro_DATA) \
+ $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -195,7 +205,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- distdir
+ check recheck distdir
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
@@ -215,7 +225,184 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -299,7 +486,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -352,6 +539,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -368,7 +556,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -435,18 +622,19 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \
curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3 \
curl_slist_append.3 curl_slist_free_all.3 curl_version.3 \
curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3 \
- curl_strequal.3 curl_mprintf.3 curl_global_init.3 curl_global_cleanup.3 \
- curl_multi_add_handle.3 curl_multi_cleanup.3 curl_multi_fdset.3 \
- curl_multi_info_read.3 curl_multi_init.3 curl_multi_perform.3 \
- curl_multi_remove_handle.3 curl_share_cleanup.3 curl_share_init.3 \
- curl_share_setopt.3 libcurl.3 libcurl-easy.3 libcurl-multi.3 \
- libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
+ curl_strequal.3 curl_mprintf.3 curl_global_init.3 \
+ curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3 \
+ curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3 \
+ curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3 \
+ curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3 \
+ libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3 \
libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.3 \
curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3 \
curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3 \
curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3 \
- curl_multi_socket_action.3 curl_multi_wait.3
+ curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3 \
+ libcurl-thread.3
HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html \
@@ -466,39 +654,47 @@ HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_unescape.html curl_multi_setopt.html curl_multi_socket.html \
curl_multi_timeout.html curl_formget.html curl_multi_assign.html \
curl_easy_pause.html curl_easy_recv.html curl_easy_send.html \
- curl_multi_socket_action.html curl_multi_wait.html
+ curl_multi_socket_action.html curl_multi_wait.html \
+ libcurl-symbols.html libcurl-thread.html
PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf \
curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf \
curl_easy_duphandle.pdf curl_formadd.pdf curl_formfree.pdf \
- curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
- curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
+ curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
+ curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
curl_escape.pdf curl_unescape.pdf curl_free.pdf curl_strequal.pdf \
curl_mprintf.pdf curl_global_init.pdf curl_global_cleanup.pdf \
curl_multi_add_handle.pdf curl_multi_cleanup.pdf curl_multi_fdset.pdf \
curl_multi_info_read.pdf curl_multi_init.pdf curl_multi_perform.pdf \
- curl_multi_remove_handle.pdf curl_share_cleanup.pdf curl_share_init.pdf \
- curl_share_setopt.pdf libcurl.pdf libcurl-multi.pdf libcurl-easy.pdf \
- libcurl-share.pdf libcurl-errors.pdf curl_easy_strerror.pdf \
- curl_multi_strerror.pdf curl_share_strerror.pdf \
- curl_global_init_mem.pdf libcurl-tutorial.pdf curl_easy_reset.pdf \
- curl_easy_escape.pdf curl_easy_unescape.pdf curl_multi_setopt.pdf \
- curl_multi_socket.pdf curl_multi_timeout.pdf curl_formget.pdf \
- curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf \
- curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
+ curl_multi_remove_handle.pdf curl_share_cleanup.pdf \
+ curl_share_init.pdf curl_share_setopt.pdf libcurl.pdf \
+ libcurl-multi.pdf libcurl-easy.pdf libcurl-share.pdf \
+ libcurl-errors.pdf curl_easy_strerror.pdf curl_multi_strerror.pdf \
+ curl_share_strerror.pdf curl_global_init_mem.pdf libcurl-tutorial.pdf \
+ curl_easy_reset.pdf curl_easy_escape.pdf curl_easy_unescape.pdf \
+ curl_multi_setopt.pdf curl_multi_socket.pdf curl_multi_timeout.pdf \
+ curl_formget.pdf curl_multi_assign.pdf curl_easy_pause.pdf \
+ curl_easy_recv.pdf curl_easy_send.pdf curl_multi_socket_action.pdf \
+ curl_multi_wait.pdf libcurl-symbols.pdf libcurl-thread.pdf
m4macrodir = $(datadir)/aclocal
dist_m4macro_DATA = libcurl.m4
-CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
+CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) libcurl-symbols.3
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
- symbols-in-versions symbols.pl
+ symbols-in-versions symbols.pl mksymbolsmanpage.pl
MAN2HTML = roffit --mandir=. < $< >$@
SUFFIXES = .3 .html
+
+# Make sure each option man page is referenced in the main man page
+TESTS = check-easy check-multi
+LOG_COMPILER = $(PERL)
+# The test fails if the log file contains any text
+AM_LOG_FLAGS = -p -e 'die "$$_" if ($$_);'
all: all-recursive
.SUFFIXES:
-.SUFFIXES: .3 .html .pdf
+.SUFFIXES: .3 .html .log .pdf .test .test$(EXEEXT) .trs
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -511,7 +707,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/libcurl/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign docs/libcurl/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -699,6 +894,176 @@ cscopelist-am: $(am__tagged_files)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+check-easy.log: check-easy
+ @p='check-easy'; \
+ b='check-easy'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+check-multi.log: check-multi
+ @p='check-multi'; \
+ b='check-multi'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -755,6 +1120,7 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-recursive
all-am: Makefile $(MANS) $(DATA)
installdirs: installdirs-recursive
@@ -782,6 +1148,9 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -857,23 +1226,29 @@ uninstall-am: uninstall-dist_m4macroDATA uninstall-man
uninstall-man: uninstall-man3
-.MAKE: $(am__recursive_targets) install-am install-strip
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
- check-am clean clean-generic clean-libtool cscopelist-am ctags \
- ctags-am distclean distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-dist_m4macroDATA install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-man3 \
- 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-generic mostlyclean-libtool pdf pdf-am \
- ps ps-am tags tags-am uninstall uninstall-am \
- uninstall-dist_m4macroDATA uninstall-man uninstall-man3
+ check-TESTS check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags ctags-am distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dist_m4macroDATA install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-man3 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-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am uninstall-dist_m4macroDATA \
+ uninstall-man uninstall-man3
+.PRECIOUS: Makefile
+
+
+libcurl-symbols.3: $(srcdir)/symbols-in-versions $(srcdir)/mksymbolsmanpage.pl
+ perl $(srcdir)/mksymbolsmanpage.pl < $(srcdir)/symbols-in-versions > $@
html: $(HTMLPAGES)
cd opts; make html
@@ -891,6 +1266,14 @@ pdf: $(PDFPAGES)
rm $$foo.ps; \
echo "converted $< to $@")
+check-easy: $(srcdir)/curl_easy_setopt.3 $(srcdir)/opts/CURLOPT*.3
+ OPTS="$$(ls $(srcdir)/opts/CURLOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+ for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_easy_setopt.3 >/dev/null || echo Missing $$opt; done > $@
+
+check-multi: $(srcdir)/curl_multi_setopt.3 $(srcdir)/opts/CURLMOPT*.3
+ OPTS="$$(ls $(srcdir)/opts/CURLMOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+ for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_multi_setopt.3 >/dev/null || echo Missing $$opt; done > $@
+
# 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/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index 403bfd35a..e8cd55095 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -63,5 +63,6 @@ if(curl) {
}
.fi
.SH "SEE ALSO"
-.BR curl_easy_init "(3), "
-
+.BR curl_easy_init "(3), " curl_easy_duphandle "(3), "
+.BR curl_easy_reset "(3), "
+.BR curl_multi_cleanup "(3), " curl_multi_remove_handle "(3) "
diff --git a/docs/libcurl/curl_easy_cleanup.html b/docs/libcurl/curl_easy_cleanup.html
index 752461e1d..5255119ec 100644
--- a/docs/libcurl/curl_easy_cleanup.html
+++ b/docs/libcurl/curl_easy_cleanup.html
@@ -4,15 +4,20 @@
<title>curl_easy_cleanup man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -55,18 +60,17 @@ p.roffit {
<p class="level0">Any use of the <span Class="bold">handle</span> after this function has been called and have returned, is illegal. <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> kills the handle and all memory associated with it!
<p class="level0">For libcurl versions before 7.17,: after you've called this function, you can safely remove all the strings you've previously told libcurl to use, as it won't use them anymore now. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">None <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <span Class="manpage"> </span>
-<p class="level0"><p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>, <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/curl_easy_cleanup.pdf b/docs/libcurl/curl_easy_cleanup.pdf
index 7e22eed66..1ec0302fc 100644
--- a/docs/libcurl/curl_easy_cleanup.pdf
+++ b/docs/libcurl/curl_easy_cleanup.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index 080723a1b..34cba58c4 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -47,4 +47,6 @@ in a synchronous way, the input handle may not be in use when cloned.
If this function returns NULL, something went wrong and no valid handle was
returned.
.SH "SEE ALSO"
-.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_global_init "(3)"
+.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_easy_reset "(3),"
+.BR curl_global_init "(3)"
+
diff --git a/docs/libcurl/curl_easy_duphandle.html b/docs/libcurl/curl_easy_duphandle.html
index 19b1f6ff6..34c5ec83b 100644
--- a/docs/libcurl/curl_easy_duphandle.html
+++ b/docs/libcurl/curl_easy_duphandle.html
@@ -4,15 +4,20 @@
<title>curl_easy_duphandle man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -55,6 +60,7 @@ p.roffit {
<p class="level0">The new handle will <span Class="bold">not</span> inherit any state information, no connections, no SSL sessions and no cookies.
<p class="level0"><span Class="bold">Note</span> that even in multi-threaded programs, this function must be called in a synchronous way, the input handle may not be in use when cloned. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">If this function returns NULL, something went wrong and no valid handle was returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>,
+<p class="level0"><p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/curl_easy_duphandle.pdf b/docs/libcurl/curl_easy_duphandle.pdf
index b0fadf1c0..c0c0b62c1 100644
--- a/docs/libcurl/curl_easy_duphandle.pdf
+++ b/docs/libcurl/curl_easy_duphandle.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index 7c8c658d2..da2b38221 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.3
@@ -29,13 +29,13 @@ curl_easy_escape - URL encodes the given string
.BI "char *curl_easy_escape( CURL *" curl ", char *" string ", int "length " );"
.ad
.SH DESCRIPTION
-This function converts the given input \fBstring\fP to an URL encoded string
+This function converts the given input \fIstring\fP to a URL encoded string
and returns that as a new allocated string. All input characters that are not
a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped"
version (%NN where NN is a two-digit hexadecimal number).
-If the \fBlength\fP argument is set to 0 (zero), \fIcurl_easy_escape(3)\fP
-uses strlen() on the input \fBurl\fP to find out the size.
+If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on
+the input \fIstring\fP to find out the size.
You must \fIcurl_free(3)\fP the returned string when you're done with it.
.SH AVAILABILITY
diff --git a/docs/libcurl/curl_easy_escape.html b/docs/libcurl/curl_easy_escape.html
index 1852342e9..88929411e 100644
--- a/docs/libcurl/curl_easy_escape.html
+++ b/docs/libcurl/curl_easy_escape.html
@@ -4,15 +4,20 @@
<title>curl_easy_escape man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -50,21 +55,21 @@ p.roffit {
<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span>
<p class="level0"><span Class="bold">char *curl_easy_escape( CURL * curl , char * string , int length );</span>
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function converts the given input <span Class="bold">string</span> to an URL encoded string and returns that as a new allocated string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number).
-<p class="level0">If the <span Class="bold">length</span> argument is set to 0 (zero), <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> uses strlen() on the input <span Class="bold">url</span> to find out the size.
+<p class="level0">This function converts the given input <span Class="emphasis">string</span> to a URL encoded string and returns that as a new allocated string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number).
+<p class="level0">If <span Class="emphasis">length</span> is set to 0 (zero), <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> uses strlen() on the input <span Class="emphasis">string</span> to find out the size.
<p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.15.4 and replaces the old <a Class="emphasis" href="./curl_escape.html">curl_escape</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; char *output = curl_easy_escape(curl, "data to convert", 15);
- &nbsp; if(output) {
- &nbsp; printf("Encoded: %sn", output);
- &nbsp; curl_free(output);
- &nbsp; }
- }}
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; char *output = curl_easy_escape(curl, "data to convert", 15);
+&nbsp; if(output) {
+&nbsp; printf("Encoded: %sn", output);
+&nbsp; curl_free(output);
+&nbsp; }
+}}
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a></span> <p class="roffit">
diff --git a/docs/libcurl/curl_easy_escape.pdf b/docs/libcurl/curl_easy_escape.pdf
index d6ca4c26c..a642be88b 100644
--- a/docs/libcurl/curl_easy_escape.pdf
+++ b/docs/libcurl/curl_easy_escape.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index 0f0fd2e41..d48ca04c9 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -236,6 +236,26 @@ option may not be available for all SSL backends; unsupported SSL backends
will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported;
this does not mean that no SSL backend was used. (Added in 7.34.0)
+.nf
+struct curl_tlssessioninfo {
+ curl_sslbackend backend;
+ void *internals;
+};
+.fi
+
+The \fIinternals\fP struct member will point to a TLS library specific pointer
+with the following underlying types:
+.RS
+.IP OpenSSL
+SSL_CTX *
+.IP GnuTLS
+gnutls_session_t
+.IP NSS
+PRFileDesc *
+.IP gskit
+gsk_handle
+.RE
+
.IP CURLINFO_CONDITION_UNMET
Pass a pointer to a long to receive the number 1 if the condition provided in
the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
diff --git a/docs/libcurl/curl_easy_getinfo.html b/docs/libcurl/curl_easy_getinfo.html
index af26a2f83..3113bff41 100644
--- a/docs/libcurl/curl_easy_getinfo.html
+++ b/docs/libcurl/curl_easy_getinfo.html
@@ -4,15 +4,20 @@
<title>curl_easy_getinfo man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -133,6 +138,25 @@ p.roffit {
<p class="level0"><a name="CURLINFOTLSSESSION"></a><span class="nroffip">CURLINFO_TLS_SESSION</span>
<p class="level1">Pass a pointer to a 'struct curl_tlssessioninfo *'. The pointer will be initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an enum indicating the SSL library used for the handshake and the respective internal TLS session structure of this underlying SSL library.
<p class="level1">This may then be used to extract certificate information in a format convenient for further processing, such as manual validation. NOTE: this option may not be available for all SSL backends; unsupported SSL backends will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported; this does not mean that no SSL backend was used. (Added in 7.34.0)
+<p class="level1"><pre class="level1">
+struct curl_tlssessioninfo {
+&nbsp; curl_sslbackend backend;
+&nbsp; void *internals;
+};
+</pre>
+
+<p class="level1">
+<p class="level1">The <span Class="emphasis">internals</span> struct member will point to a TLS library specific pointer with the following underlying types:
+<p class="level2">
+<p class="level1"><a name="OpenSSL"></a><span class="nroffip">OpenSSL</span>
+<p class="level2">SSL_CTX *
+<p class="level1"><a name="GnuTLS"></a><span class="nroffip">GnuTLS</span>
+<p class="level2">gnutls_session_t
+<p class="level1"><a name="NSS"></a><span class="nroffip">NSS</span>
+<p class="level2">PRFileDesc *
+<p class="level1"><a name="gskit"></a><span class="nroffip">gskit</span>
+<p class="level2">gsk_handle
+<p class="level1">
<p class="level1">
<p class="level0"><a name="CURLINFOCONDITIONUNMET"></a><span class="nroffip">CURLINFO_CONDITION_UNMET</span>
<p class="level1">Pass a pointer to a long to receive the number 1 if the condition provided in the previous request didn't match (see <span Class="emphasis">CURLOPT_TIMECONDITION(3)</span>). Alas, if this returns a 1 you know that the reason you didn't get data in return is because it didn't fulfill the condition. The long ths argument points to will get a zero stored if the condition instead was met. (Added in 7.19.4)
@@ -147,18 +171,19 @@ p.roffit {
<p class="level1">Applications wishing to resume an RTSP session on another connection should retrieve this info before closing the active connection.
<p class="level0"><a name="CURLINFORTSPCSEQRECV"></a><span class="nroffip">CURLINFO_RTSP_CSEQ_RECV</span>
<p class="level1">Pass a pointer to a long to receive the most recently received CSeq from the server. If your application encounters a <span Class="emphasis">CURLE_RTSP_CSEQ_ERROR</span> then you may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value. <a name="TIMES"></a><h2 class="nroffsh">TIMES</h2>
-<p class="level0"><pre>
-<p class="level0">An overview of the six time values available from curl_easy_getinfo()
- <p class="level0">curl_easy_perform()
- &nbsp; |
- &nbsp; |--NAMELOOKUP
- &nbsp; |--|--CONNECT
- &nbsp; |--|--|--APPCONNECT
- &nbsp; |--|--|--|--PRETRANSFER
- &nbsp; |--|--|--|--|--STARTTRANSFER
- &nbsp; |--|--|--|--|--|--TOTAL
- &nbsp; |--|--|--|--|--|--REDIRECT
- </pre>
+<p class="level0"><pre class="level0">
+An overview of the six time values available from curl_easy_getinfo()
+&nbsp;
+curl_easy_perform()
+&nbsp; |
+&nbsp; |--NAMELOOKUP
+&nbsp; |--|--CONNECT
+&nbsp; |--|--|--APPCONNECT
+&nbsp; |--|--|--|--PRETRANSFER
+&nbsp; |--|--|--|--|--STARTTRANSFER
+&nbsp; |--|--|--|--|--|--TOTAL
+&nbsp; |--|--|--|--|--|--REDIRECT
+</pre>
<p class="level0">
<p class="level0"><a name="NAMELOOKUP"></a><span class="nroffip">NAMELOOKUP</span>
diff --git a/docs/libcurl/curl_easy_getinfo.pdf b/docs/libcurl/curl_easy_getinfo.pdf
index 9801b97f0..009c5890e 100644
--- a/docs/libcurl/curl_easy_getinfo.pdf
+++ b/docs/libcurl/curl_easy_getinfo.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_init.html b/docs/libcurl/curl_easy_init.html
index 28ec0356e..6dd0aead0 100644
--- a/docs/libcurl/curl_easy_init.html
+++ b/docs/libcurl/curl_easy_init.html
@@ -4,15 +4,20 @@
<title>curl_easy_init man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -53,15 +58,15 @@ p.roffit {
<p class="level0">If you did not already call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> does it automatically. This may be lethal in multi-threaded cases, since <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> is not thread-safe, and it may result in resource problems because there is no corresponding cleanup.
<p class="level0">You are strongly advised to not allow this automatic behaviour, by calling <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> yourself properly. See the description in <span Class="bold">libcurl</span>(3) of global environment requirements for details of how to use this function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">If this function returns NULL, something went wrong and you cannot use the other curl functions. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_perform.html">curl_easy_perform</a>, <p class="roffit">
diff --git a/docs/libcurl/curl_easy_init.pdf b/docs/libcurl/curl_easy_init.pdf
index faa85c129..c74dfa73c 100644
--- a/docs/libcurl/curl_easy_init.pdf
+++ b/docs/libcurl/curl_easy_init.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_pause.html b/docs/libcurl/curl_easy_pause.html
index bb646e58e..b8dbe40bd 100644
--- a/docs/libcurl/curl_easy_pause.html
+++ b/docs/libcurl/curl_easy_pause.html
@@ -4,15 +4,20 @@
<title>curl_easy_pause man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_easy_pause.pdf b/docs/libcurl/curl_easy_pause.pdf
index 1ce558fac..a11498713 100644
--- a/docs/libcurl/curl_easy_pause.pdf
+++ b/docs/libcurl/curl_easy_pause.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index e40c1e444..fc8c59e57 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -66,7 +66,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
-}}
+}
.fi
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/curl_easy_perform.html b/docs/libcurl/curl_easy_perform.html
index c5b90b2b6..d76edd3d6 100644
--- a/docs/libcurl/curl_easy_perform.html
+++ b/docs/libcurl/curl_easy_perform.html
@@ -4,15 +4,20 @@
<title>curl_easy_perform man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -56,15 +61,15 @@ p.roffit {
<p class="level0">You must never call this function simultaneously from two places using the same <span Class="bold">easy_handle</span>. Let the function return first before invoking it another time. If you want parallel transfers, you must use several curl easy_handles.
<p class="level0">While the <span Class="bold">easy_handle</span> is added to a multi handle, it cannot be used by <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">CURLE_OK (0) means everything was ok, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines - see <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a>. If the <span Class="bold">CURLOPT_ERRORBUFFER(3)</span> was set with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> there will be a readable error message in the error buffer when non-zero is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }}
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <span Class="manpage"> </span>
diff --git a/docs/libcurl/curl_easy_perform.pdf b/docs/libcurl/curl_easy_perform.pdf
index 2f47acbff..490486b2b 100644
--- a/docs/libcurl/curl_easy_perform.pdf
+++ b/docs/libcurl/curl_easy_perform.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index c661f4b32..d425fe2b4 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -42,8 +42,9 @@ buffer. The variable \fBn\fP points to will receive the number of received
bytes.
To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
-calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_recv(3)\fP does not
-work on connections that were created without this option.
+calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP. Note that
+\fIcurl_easy_recv(3)\fP does not work on connections that were created without
+this option.
You must ensure that the socket has data to read before calling
\fIcurl_easy_recv(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP -
diff --git a/docs/libcurl/curl_easy_recv.html b/docs/libcurl/curl_easy_recv.html
index 1eb253438..e38a7e882 100644
--- a/docs/libcurl/curl_easy_recv.html
+++ b/docs/libcurl/curl_easy_recv.html
@@ -4,15 +4,20 @@
<title>curl_easy_recv man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -52,7 +57,7 @@ p.roffit {
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This function receives raw data from the established connection. You may use it together with <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up.
<p class="level0"><span Class="bold">buffer</span> is a pointer to your buffer that will get the received data. <span Class="bold">buflen</span> is the maximum amount of data you can get in that buffer. The variable <span Class="bold">n</span> points to will receive the number of received bytes.
-<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> does not work on connections that were created without this option.
+<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. Note that <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> does not work on connections that were created without this option.
<p class="level0">You must ensure that the socket has data to read before calling <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it has any data you can read. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">On success, returns <span Class="bold">CURLE_OK</span>, stores the received data into <span Class="bold">buffer</span>, and the number of bytes it actually read into <span Class="bold">*n</span>.
diff --git a/docs/libcurl/curl_easy_recv.pdf b/docs/libcurl/curl_easy_recv.pdf
index afdd743be..e445f9a80 100644
--- a/docs/libcurl/curl_easy_recv.pdf
+++ b/docs/libcurl/curl_easy_recv.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_reset.html b/docs/libcurl/curl_easy_reset.html
index 6a290fb86..033f1e289 100644
--- a/docs/libcurl/curl_easy_reset.html
+++ b/docs/libcurl/curl_easy_reset.html
@@ -4,15 +4,20 @@
<title>curl_easy_reset man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_easy_reset.pdf b/docs/libcurl/curl_easy_reset.pdf
index 58ce522d1..6defb7b4d 100644
--- a/docs/libcurl/curl_easy_reset.pdf
+++ b/docs/libcurl/curl_easy_reset.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index 28e88663e..6f5a6eaf7 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -40,8 +40,9 @@ connection set-up.
The variable \fBn\fP points to will receive the number of sent bytes.
To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
-calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_send(3)\fP will not
-work on connections that were created without this option.
+calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform()\fP. Note that
+\fIcurl_easy_send(3)\fP will not work on connections that were created without
+this option.
You must ensure that the socket is writable before calling
\fIcurl_easy_send(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP -
diff --git a/docs/libcurl/curl_easy_send.html b/docs/libcurl/curl_easy_send.html
index 4d52db58e..6f2f498c2 100644
--- a/docs/libcurl/curl_easy_send.html
+++ b/docs/libcurl/curl_easy_send.html
@@ -4,15 +4,20 @@
<title>curl_easy_send man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -52,7 +57,7 @@ p.roffit {
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This function sends arbitrary data over the established connection. You may use it together with <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up.
<p class="level0"><span Class="bold">buffer</span> is a pointer to the data of length <span Class="bold">buflen</span> that you want sent. The variable <span Class="bold">n</span> points to will receive the number of sent bytes.
-<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> will not work on connections that were created without this option.
+<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <span Class="emphasis">curl_multi_perform()</span>. Note that <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> will not work on connections that were created without this option.
<p class="level0">You must ensure that the socket is writable before calling <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it can be written to. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">On success, returns <span Class="bold">CURLE_OK</span> and stores the number of bytes actually sent into <span Class="bold">*n</span>. Note that this may very well be less than the amount you wanted to send.
diff --git a/docs/libcurl/curl_easy_send.pdf b/docs/libcurl/curl_easy_send.pdf
index 32e30a17a..a9474480d 100644
--- a/docs/libcurl/curl_easy_send.pdf
+++ b/docs/libcurl/curl_easy_send.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index ecfa38f39..a9a6230f2 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -50,6 +50,8 @@ really \fICURLOPT_POSTFIELDS(3)\fP, but the alternative that copies the string
\fICURLOPT_COPYPOSTFIELDS(3)\fP has some usage characteristics you need to
read up on.
+The order in which the options are set does not matter.
+
Before version 7.17.0, strings were not copied. Instead the user was forced
keep them available until libcurl no longer needed them.
@@ -145,6 +147,8 @@ Fail on HTTP 4xx errors. \fICURLOPT_FAILONERROR(3)\fP
.SH NETWORK OPTIONS
.IP CURLOPT_URL
URL to work on. See \fICURLOPT_URL(3)\fP
+.IP CURLOPT_PATH_AS_IS
+Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(3)\fP
.IP CURLOPT_PROTOCOLS
Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
.IP CURLOPT_REDIR_PROTOCOLS
@@ -163,6 +167,10 @@ Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_NEC
Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
+.IP CURLOPT_PROXY_SERVICE_NAME
+Proxy service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
+.IP CURLOPT_SERVICE_NAME
+SPNEGO service name. \fICURLOPT_SERVICE_NAME(3)\fP
.IP CURLOPT_INTERFACE
Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
.IP CURLOPT_LOCALPORT
@@ -214,6 +222,8 @@ HTTP server authentication methods. See \fICURLOPT_HTTPAUTH(3)\fP
TLS authentication user name. See \fICURLOPT_TLSAUTH_USERNAME(3)\fP
.IP CURLOPT_TLSAUTH_PASSWORD
TLS authentication password. See \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
+.IP CURLOPT_TLSAUTH_TYPE
+TLS authentication methods. See \fICURLOPT_TLSAUTH_TYPE(3)\fP
.IP CURLOPT_PROXYAUTH
HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
.IP CURLOPT_SASL_IR
@@ -283,6 +293,8 @@ Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP
.IP CURLOPT_EXPECT_100_TIMEOUT_MS
100-continue timeout. See \fICURLOPT_EXPECT_100_TIMEOUT_MS(3)\fP
+.IP CURLOPT_PIPEWAIT
+Wait on connection to pipeline on it. See \fICURLOPT_PIPEWAIT(3)\fP
.SH SMTP OPTIONS
.IP CURLOPT_MAIL_FROM
Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
@@ -411,6 +423,8 @@ Bind name resolves to this interface. See \fICURLOPT_DNS_INTERFACE(3)\fP
Bind name resolves to this IP4 address. See \fICURLOPT_DNS_LOCAL_IP4(3)\fP
.IP CURLOPT_DNS_LOCAL_IP6
Bind name resolves to this IP6 address. See \fICURLOPT_DNS_LOCAL_IP6(3)\fP
+.IP CURLOPT_DNS_SERVERS
+Preferred DNS servers. See \fICURLOPT_DNS_SERVERS(3)\fP
.IP CURLOPT_ACCEPTTIMEOUT_MS
Timeout for waiting for the server's connect back to be accepted. See \fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP
.SH SSL and SECURITY OPTIONS
@@ -432,10 +446,16 @@ Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
.IP CURLOPT_SSLENGINE_DEFAULT
Default SSL engine. See \fICURLOPT_SSLENGINE_DEFAULT(3)\fP
+.IP CURLOPT_SSL_FALSESTART
+Enable TLS False Start. See \fICURLOPT_SSL_FALSESTART(3)\fP
.IP CURLOPT_SSLVERSION
SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
+.IP CURLOPT_SSL_VERIFYHOST
+Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP
.IP CURLOPT_SSL_VERIFYPEER
Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP
+.IP CURLOPT_SSL_VERIFYSTATUS
+Verify the SSL certificate's status. See \fICURLOPT_SSL_VERIFYSTATUS(3)\fP
.IP CURLOPT_CAINFO
CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
.IP CURLOPT_ISSUERCERT
@@ -444,8 +464,6 @@ Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
Path to CA cert bundle. See \fICURLOPT_CAPATH(3)\fP
.IP CURLOPT_CRLFILE
Certificate Revocation List. See \fICURLOPT_CRLFILE(3)\fP
-.IP CURLOPT_SSL_VERIFYHOST
-Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP
.IP CURLOPT_CERTINFO
Extract certificate info. See \fICURLOPT_CERTINFO(3)\fP
.IP CURLOPT_PINNEDPUBLICKEY
diff --git a/docs/libcurl/curl_easy_setopt.html b/docs/libcurl/curl_easy_setopt.html
index 43e0b437b..890097c30 100644
--- a/docs/libcurl/curl_easy_setopt.html
+++ b/docs/libcurl/curl_easy_setopt.html
@@ -4,15 +4,20 @@
<title>curl_easy_setopt man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_easy_setopt - set options for a curl easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0"><a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> is used to tell libcurl how to behave. By setting the appropriate options, the application can change libcurl's behavior. All options are set with an <span Class="emphasis">option</span> followed by a <span Class="emphasis">parameter</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span>, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly! You can only set one option in each function call. A typical application uses many <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> calls in the setup phase.
<p class="level0">Options set with this function call are valid for all forthcoming transfers performed using this <span Class="emphasis">handle</span>. The options are not in any way reset between transfers, so if you want subsequent transfers with different options, you must change them between the transfers. You can optionally reset all options back to internal default with <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a>.
<p class="level0">Strings passed to libcurl as 'char *' arguments, are copied by the library; thus the string storage associated to the pointer argument may be overwritten after <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> returns. The only exception to this rule is really <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span>, but the alternative that copies the string <span Class="emphasis">CURLOPT_COPYPOSTFIELDS(3)</span> has some usage characteristics you need to read up on.
+<p class="level0">The order in which the options are set does not matter.
<p class="level0">Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them.
<p class="level0">The <span Class="emphasis">handle</span> is the return code from a <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> or <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a> call. <a name="BEHAVIOR"></a><h2 class="nroffsh">BEHAVIOR OPTIONS</h2>
<p class="level0">
@@ -144,6 +150,8 @@ p.roffit {
<p class="level0">
<p class="level0"><a name="CURLOPTURL"></a><span class="nroffip">CURLOPT_URL</span>
<p class="level1">URL to work on. See <span Class="emphasis">CURLOPT_URL(3)</span>
+<p class="level0"><a name="CURLOPTPATHASIS"></a><span class="nroffip">CURLOPT_PATH_AS_IS</span>
+<p class="level1">Disable squashing /../ and /./ sequences in the path. See <span Class="emphasis">CURLOPT_PATH_AS_IS(3)</span>
<p class="level0"><a name="CURLOPTPROTOCOLS"></a><span class="nroffip">CURLOPT_PROTOCOLS</span>
<p class="level1">Allowed protocols. See <span Class="emphasis">CURLOPT_PROTOCOLS(3)</span>
<p class="level0"><a name="CURLOPTREDIRPROTOCOLS"></a><span class="nroffip">CURLOPT_REDIR_PROTOCOLS</span>
@@ -162,6 +170,10 @@ p.roffit {
<p class="level1">Socks5 GSSAPI service name. <span Class="emphasis">CURLOPT_SOCKS5_GSSAPI_SERVICE(3)</span>
<p class="level0"><a name="CURLOPTSOCKS5GSSAPINEC"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_NEC</span>
<p class="level1">Socks5 GSSAPI NEC mode. See <span Class="emphasis">CURLOPT_SOCKS5_GSSAPI_NEC(3)</span>
+<p class="level0"><a name="CURLOPTPROXYSERVICENAME"></a><span class="nroffip">CURLOPT_PROXY_SERVICE_NAME</span>
+<p class="level1">Proxy service name. <span Class="emphasis">CURLOPT_PROXY_SERVICE_NAME(3)</span>
+<p class="level0"><a name="CURLOPTSERVICENAME"></a><span class="nroffip">CURLOPT_SERVICE_NAME</span>
+<p class="level1">SPNEGO service name. <span Class="emphasis">CURLOPT_SERVICE_NAME(3)</span>
<p class="level0"><a name="CURLOPTINTERFACE"></a><span class="nroffip">CURLOPT_INTERFACE</span>
<p class="level1">Bind connection locally to this. See <span Class="emphasis">CURLOPT_INTERFACE(3)</span>
<p class="level0"><a name="CURLOPTLOCALPORT"></a><span class="nroffip">CURLOPT_LOCALPORT</span>
@@ -213,6 +225,8 @@ p.roffit {
<p class="level1">TLS authentication user name. See <span Class="emphasis">CURLOPT_TLSAUTH_USERNAME(3)</span>
<p class="level0"><a name="CURLOPTTLSAUTHPASSWORD"></a><span class="nroffip">CURLOPT_TLSAUTH_PASSWORD</span>
<p class="level1">TLS authentication password. See <span Class="emphasis">CURLOPT_TLSAUTH_PASSWORD(3)</span>
+<p class="level0"><a name="CURLOPTTLSAUTHTYPE"></a><span class="nroffip">CURLOPT_TLSAUTH_TYPE</span>
+<p class="level1">TLS authentication methods. See <span Class="emphasis">CURLOPT_TLSAUTH_TYPE(3)</span>
<p class="level0"><a name="CURLOPTPROXYAUTH"></a><span class="nroffip">CURLOPT_PROXYAUTH</span>
<p class="level1">HTTP proxy authentication methods. See <span Class="emphasis">CURLOPT_PROXYAUTH(3)</span>
<p class="level0"><a name="CURLOPTSASLIR"></a><span class="nroffip">CURLOPT_SASL_IR</span>
@@ -281,7 +295,9 @@ p.roffit {
<p class="level0"><a name="CURLOPTHTTPTRANSFERDECODING"></a><span class="nroffip">CURLOPT_HTTP_TRANSFER_DECODING</span>
<p class="level1">Disable Transfer decoding. See <span Class="emphasis">CURLOPT_HTTP_TRANSFER_DECODING(3)</span>
<p class="level0"><a name="CURLOPTEXPECT100TIMEOUTMS"></a><span class="nroffip">CURLOPT_EXPECT_100_TIMEOUT_MS</span>
-<p class="level1">100-continue timeout. See <span Class="emphasis">CURLOPT_EXPECT_100_TIMEOUT_MS(3)</span> <a name="SMTP"></a><h2 class="nroffsh">SMTP OPTIONS</h2>
+<p class="level1">100-continue timeout. See <span Class="emphasis">CURLOPT_EXPECT_100_TIMEOUT_MS(3)</span>
+<p class="level0"><a name="CURLOPTPIPEWAIT"></a><span class="nroffip">CURLOPT_PIPEWAIT</span>
+<p class="level1">Wait on connection to pipeline on it. See <span Class="emphasis">CURLOPT_PIPEWAIT(3)</span> <a name="SMTP"></a><h2 class="nroffsh">SMTP OPTIONS</h2>
<p class="level0">
<p class="level0"><a name="CURLOPTMAILFROM"></a><span class="nroffip">CURLOPT_MAIL_FROM</span>
<p class="level1">Address of the sender. See <span Class="emphasis">CURLOPT_MAIL_FROM(3)</span>
@@ -410,6 +426,8 @@ p.roffit {
<p class="level1">Bind name resolves to this IP4 address. See <span Class="emphasis">CURLOPT_DNS_LOCAL_IP4(3)</span>
<p class="level0"><a name="CURLOPTDNSLOCALIP6"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP6</span>
<p class="level1">Bind name resolves to this IP6 address. See <span Class="emphasis">CURLOPT_DNS_LOCAL_IP6(3)</span>
+<p class="level0"><a name="CURLOPTDNSSERVERS"></a><span class="nroffip">CURLOPT_DNS_SERVERS</span>
+<p class="level1">Preferred DNS servers. See <span Class="emphasis">CURLOPT_DNS_SERVERS(3)</span>
<p class="level0"><a name="CURLOPTACCEPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_ACCEPTTIMEOUT_MS</span>
<p class="level1">Timeout for waiting for the server's connect back to be accepted. See <span Class="emphasis">CURLOPT_ACCEPTTIMEOUT_MS(3)</span> <a name="SSL"></a><h2 class="nroffsh">SSL and SECURITY OPTIONS</h2>
<p class="level0">
@@ -431,10 +449,16 @@ p.roffit {
<p class="level1">Use identifier with SSL engine. See <span Class="emphasis">CURLOPT_SSLENGINE(3)</span>
<p class="level0"><a name="CURLOPTSSLENGINEDEFAULT"></a><span class="nroffip">CURLOPT_SSLENGINE_DEFAULT</span>
<p class="level1">Default SSL engine. See <span Class="emphasis">CURLOPT_SSLENGINE_DEFAULT(3)</span>
+<p class="level0"><a name="CURLOPTSSLFALSESTART"></a><span class="nroffip">CURLOPT_SSL_FALSESTART</span>
+<p class="level1">Enable TLS False Start. See <span Class="emphasis">CURLOPT_SSL_FALSESTART(3)</span>
<p class="level0"><a name="CURLOPTSSLVERSION"></a><span class="nroffip">CURLOPT_SSLVERSION</span>
<p class="level1">SSL version to use. See <span Class="emphasis">CURLOPT_SSLVERSION(3)</span>
+<p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span>
+<p class="level1">Verify the host name in the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYHOST(3)</span>
<p class="level0"><a name="CURLOPTSSLVERIFYPEER"></a><span class="nroffip">CURLOPT_SSL_VERIFYPEER</span>
<p class="level1">Verify the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYPEER(3)</span>
+<p class="level0"><a name="CURLOPTSSLVERIFYSTATUS"></a><span class="nroffip">CURLOPT_SSL_VERIFYSTATUS</span>
+<p class="level1">Verify the SSL certificate's status. See <span Class="emphasis">CURLOPT_SSL_VERIFYSTATUS(3)</span>
<p class="level0"><a name="CURLOPTCAINFO"></a><span class="nroffip">CURLOPT_CAINFO</span>
<p class="level1">CA cert bundle. See <span Class="emphasis">CURLOPT_CAINFO(3)</span>
<p class="level0"><a name="CURLOPTISSUERCERT"></a><span class="nroffip">CURLOPT_ISSUERCERT</span>
@@ -443,8 +467,6 @@ p.roffit {
<p class="level1">Path to CA cert bundle. See <span Class="emphasis">CURLOPT_CAPATH(3)</span>
<p class="level0"><a name="CURLOPTCRLFILE"></a><span class="nroffip">CURLOPT_CRLFILE</span>
<p class="level1">Certificate Revocation List. See <span Class="emphasis">CURLOPT_CRLFILE(3)</span>
-<p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span>
-<p class="level1">Verify the host name in the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYHOST(3)</span>
<p class="level0"><a name="CURLOPTCERTINFO"></a><span class="nroffip">CURLOPT_CERTINFO</span>
<p class="level1">Extract certificate info. See <span Class="emphasis">CURLOPT_CERTINFO(3)</span>
<p class="level0"><a name="CURLOPTPINNEDPUBLICKEY"></a><span class="nroffip">CURLOPT_PINNEDPUBLICKEY</span>
@@ -492,15 +514,15 @@ p.roffit {
<p class="level1">TELNET options. See <span Class="emphasis">CURLOPT_TELNETOPTIONS(3)</span> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0"><span Class="emphasis">CURLE_OK</span> (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a> man page for the full list with descriptions.
<p class="level0">If you try to set an option that libcurl doesn't know about, perhaps because the library is too old to support it or the option was removed in a recent version, this function will return <span Class="emphasis">CURLE_UNKNOWN_OPTION</span>. If support for the option was disabled at compile-time, it will return <span Class="emphasis">CURLE_NOT_BUILT_IN</span>. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }}
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}}
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/curl_easy_setopt.pdf b/docs/libcurl/curl_easy_setopt.pdf
index 4f2c948c0..9e2eff067 100644
--- a/docs/libcurl/curl_easy_setopt.pdf
+++ b/docs/libcurl/curl_easy_setopt.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_strerror.html b/docs/libcurl/curl_easy_strerror.html
index e279cb6c1..0cb4e9900 100644
--- a/docs/libcurl/curl_easy_strerror.html
+++ b/docs/libcurl/curl_easy_strerror.html
@@ -4,15 +4,20 @@
<title>curl_easy_strerror man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_easy_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">const char *curl_easy_strerror(CURLcode errornum); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">The <a Class="emphasis" href="./curl_easy_strerror.html">curl_easy_strerror</a> function returns a string describing the CURLcode error code passed in the argument <span Class="emphasis">errornum</span>.
<p class="level0">Typically applications also appreciate <span Class="emphasis">CURLOPT_ERRORBUFFER(3)</span> for more specific error descriptions generated at run-time. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/curl_easy_strerror.pdf b/docs/libcurl/curl_easy_strerror.pdf
index 5997bebd2..633eb3236 100644
--- a/docs/libcurl/curl_easy_strerror.pdf
+++ b/docs/libcurl/curl_easy_strerror.pdf
Binary files differ
diff --git a/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index 357ad23cf..23ce9c3c2 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -48,4 +48,4 @@ Added in 7.15.4 and replaces the old \fIcurl_unescape(3)\fP function.
.SH RETURN VALUE
A pointer to a zero terminated string or NULL if it failed.
.SH "SEE ALSO"
-.BR curl_easy_escape "(3), " curl_free "(3)," RFC 2396
+.BR curl_easy_escape "(3), " curl_free "(3)," RFC 3986
diff --git a/docs/libcurl/curl_easy_unescape.html b/docs/libcurl/curl_easy_unescape.html
index a2538ad4e..686ecc314 100644
--- a/docs/libcurl/curl_easy_unescape.html
+++ b/docs/libcurl/curl_easy_unescape.html
@@ -4,15 +4,20 @@
<title>curl_easy_unescape man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -56,6 +61,6 @@ p.roffit {
<p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.15.4 and replaces the old <a Class="emphasis" href="./curl_unescape.html">curl_unescape</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a></span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/curl_easy_unescape.pdf b/docs/libcurl/curl_easy_unescape.pdf
index e7880c2c5..b04a49414 100644
--- a/docs/libcurl/curl_easy_unescape.pdf
+++ b/docs/libcurl/curl_easy_unescape.pdf
Binary files differ
diff --git a/docs/libcurl/curl_escape.html b/docs/libcurl/curl_escape.html
index 2178839dd..c838c522a 100644
--- a/docs/libcurl/curl_escape.html
+++ b/docs/libcurl/curl_escape.html
@@ -4,15 +4,20 @@
<title>curl_escape man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_escape.pdf b/docs/libcurl/curl_escape.pdf
index 3c9fea2c3..271e5bc06 100644
--- a/docs/libcurl/curl_escape.pdf
+++ b/docs/libcurl/curl_escape.pdf
Binary files differ
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index 3e48149ef..cdae51be2 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -103,6 +103,9 @@ given file match one of the internally known file extensions. For
providing multiple \fBCURLFORM_FILE\fP arguments each followed by the filename
(and each \fICURLFORM_FILE\fP is allowed to have a
\fICURLFORM_CONTENTTYPE\fP).
+
+The given upload file has to exist in its full in the file system already when
+the upload starts, as libcurl needs to read the correct file size beforehand.
.IP CURLFORM_CONTENTTYPE
is used in combination with \fICURLFORM_FILE\fP. Followed by a pointer to a
string which provides the content-type for this part, possibly instead of an
diff --git a/docs/libcurl/curl_formadd.html b/docs/libcurl/curl_formadd.html
index dbf8a8041..d0b9e2986 100644
--- a/docs/libcurl/curl_formadd.html
+++ b/docs/libcurl/curl_formadd.html
@@ -4,15 +4,20 @@
<title>curl_formadd man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -72,6 +77,7 @@ p.roffit {
<p class="level1">followed by a filename, causes that file to be read and its contents used as data in this part. This part does <span Class="emphasis">not</span> automatically become a file upload part simply because its data was read from a file.
<p class="level0"><a name="CURLFORMFILE"></a><span class="nroffip">CURLFORM_FILE</span>
<p class="level1">followed by a filename, makes this part a file upload part. It sets the <span Class="emphasis">filename</span> field to the basename of the provided filename, it reads the contents of the file and passes them as data and sets the content-type if the given file match one of the internally known file extensions. For <a class="bold" href="#CURLFORMFILE">CURLFORM_FILE</a> the user may send one or more files in one part by providing multiple <a class="bold" href="#CURLFORMFILE">CURLFORM_FILE</a> arguments each followed by the filename (and each <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a> is allowed to have a <a class="emphasis" href="#CURLFORMCONTENTTYPE">CURLFORM_CONTENTTYPE</a>).
+<p class="level1">The given upload file has to exist in its full in the file system already when the upload starts, as libcurl needs to read the correct file size beforehand.
<p class="level0"><a name="CURLFORMCONTENTTYPE"></a><span class="nroffip">CURLFORM_CONTENTTYPE</span>
<p class="level1">is used in combination with <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a>. Followed by a pointer to a string which provides the content-type for this part, possibly instead of an internally chosen one.
<p class="level0"><a name="CURLFORMFILENAME"></a><span class="nroffip">CURLFORM_FILENAME</span>
@@ -91,73 +97,86 @@ p.roffit {
<p class="level1">When you've passed the HttpPost pointer to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> (using the <span Class="emphasis">CURLOPT_HTTPPOST(3)</span> option), you must not free the list until after you've called <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> for the curl handle.
<p class="level1">See example below. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">0 means everything was ok, non-zero means an error occurred corresponding to a CURL_FORMADD_* constant defined in <span Class="emphasis">&lt;curl/curl.h&gt;</span> <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0"><p class="level0">&nbsp;struct curl_httppost* post = NULL;
- &nbsp;struct curl_httppost* last = NULL;
- &nbsp;char namebuffer[] = "name buffer";
- &nbsp;long namelength = strlen(namebuffer);
- &nbsp;char buffer[] = "test buffer";
- &nbsp;char htmlbuffer[] = "&lt;HTML&gt;test buffer&lt;/HTML&gt;";
- &nbsp;long htmlbufferlength = strlen(htmlbuffer);
- &nbsp;struct curl_forms forms[3];
- &nbsp;char file1[] = "my-face.jpg";
- &nbsp;char file2[] = "your-face.jpg";
- &nbsp;/* add null character into htmlbuffer, to demonstrate that
- &nbsp; transfers of buffers containing null characters actually work
- &nbsp;*/
- &nbsp;htmlbuffer[8] = '\0';
- <p class="level0">&nbsp;/* Add simple name/content section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
- &nbsp; CURLFORM_COPYCONTENTS, "content", CURLFORM_END);
- <p class="level0">&nbsp;/* Add simple name/content/contenttype section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode",
- &nbsp; CURLFORM_COPYCONTENTS, "&lt;HTML&gt;&lt;/HTML&gt;",
- &nbsp; CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
- <p class="level0">&nbsp;/* Add name/ptrcontent section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
- &nbsp; CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
- <p class="level0">&nbsp;/* Add ptrname/ptrcontent section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer,
- &nbsp; CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH,
- &nbsp; namelength, CURLFORM_END);
- <p class="level0">&nbsp;/* Add name/ptrcontent/contenttype section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
- &nbsp; CURLFORM_PTRCONTENTS, htmlbuffer,
- &nbsp; CURLFORM_CONTENTSLENGTH, htmlbufferlength,
- &nbsp; CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
- <p class="level0">&nbsp;/* Add simple file section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
- &nbsp; CURLFORM_FILE, "my-face.jpg", CURLFORM_END);
- <p class="level0">&nbsp;/* Add file/contenttype section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
- &nbsp; CURLFORM_FILE, "my-face.jpg",
- &nbsp; CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
- <p class="level0">&nbsp;/* Add two file section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
- &nbsp; CURLFORM_FILE, "my-face.jpg",
- &nbsp; CURLFORM_FILE, "your-face.jpg", CURLFORM_END);
- <p class="level0">&nbsp;/* Add two file section using CURLFORM_ARRAY */
- &nbsp;forms[0].option = CURLFORM_FILE;
- &nbsp;forms[0].value = file1;
- &nbsp;forms[1].option = CURLFORM_FILE;
- &nbsp;forms[1].value = file2;
- &nbsp;forms[2].option = CURLFORM_END;
- <p class="level0">&nbsp;/* Add a buffer to upload */
- &nbsp;curl_formadd(&post, &last,
- &nbsp; CURLFORM_COPYNAME, "name",
- &nbsp; CURLFORM_BUFFER, "data",
- &nbsp; CURLFORM_BUFFERPTR, record,
- &nbsp; CURLFORM_BUFFERLENGTH, record_length,
- &nbsp; CURLFORM_END);
- <p class="level0">&nbsp;/* no option needed for the end marker */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
- &nbsp; CURLFORM_ARRAY, forms, CURLFORM_END);
- &nbsp;/* Add the content of a file as a normal post text value */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent",
- &nbsp; CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END);
- &nbsp;/* Set the form info */
- &nbsp;curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
- <p class="level0"></pre>
+<p class="level0"><pre class="level0">
+&nbsp;
+&nbsp;struct curl_httppost* post = NULL;
+&nbsp;struct curl_httppost* last = NULL;
+&nbsp;char namebuffer[] = "name buffer";
+&nbsp;long namelength = strlen(namebuffer);
+&nbsp;char buffer[] = "test buffer";
+&nbsp;char htmlbuffer[] = "&lt;HTML&gt;test buffer&lt;/HTML&gt;";
+&nbsp;long htmlbufferlength = strlen(htmlbuffer);
+&nbsp;struct curl_forms forms[3];
+&nbsp;char file1[] = "my-face.jpg";
+&nbsp;char file2[] = "your-face.jpg";
+&nbsp;/* add null character into htmlbuffer, to demonstrate that
+&nbsp; transfers of buffers containing null characters actually work
+&nbsp;*/
+&nbsp;htmlbuffer[8] = '\0';
+&nbsp;
+&nbsp;/* Add simple name/content section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
+&nbsp; CURLFORM_COPYCONTENTS, "content", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add simple name/content/contenttype section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode",
+&nbsp; CURLFORM_COPYCONTENTS, "&lt;HTML&gt;&lt;/HTML&gt;",
+&nbsp; CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add name/ptrcontent section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
+&nbsp; CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
+&nbsp;
+&nbsp;/* Add ptrname/ptrcontent section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer,
+&nbsp; CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH,
+&nbsp; namelength, CURLFORM_END);
+&nbsp;
+&nbsp;/* Add name/ptrcontent/contenttype section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
+&nbsp; CURLFORM_PTRCONTENTS, htmlbuffer,
+&nbsp; CURLFORM_CONTENTSLENGTH, htmlbufferlength,
+&nbsp; CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add simple file section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
+&nbsp; CURLFORM_FILE, "my-face.jpg", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add file/contenttype section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
+&nbsp; CURLFORM_FILE, "my-face.jpg",
+&nbsp; CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add two file section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
+&nbsp; CURLFORM_FILE, "my-face.jpg",
+&nbsp; CURLFORM_FILE, "your-face.jpg", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add two file section using CURLFORM_ARRAY */
+&nbsp;forms[0].option = CURLFORM_FILE;
+&nbsp;forms[0].value = file1;
+&nbsp;forms[1].option = CURLFORM_FILE;
+&nbsp;forms[1].value = file2;
+&nbsp;forms[2].option = CURLFORM_END;
+&nbsp;
+&nbsp;/* Add a buffer to upload */
+&nbsp;curl_formadd(&post, &last,
+&nbsp; CURLFORM_COPYNAME, "name",
+&nbsp; CURLFORM_BUFFER, "data",
+&nbsp; CURLFORM_BUFFERPTR, record,
+&nbsp; CURLFORM_BUFFERLENGTH, record_length,
+&nbsp; CURLFORM_END);
+&nbsp;
+&nbsp;/* no option needed for the end marker */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
+&nbsp; CURLFORM_ARRAY, forms, CURLFORM_END);
+&nbsp;/* Add the content of a file as a normal post text value */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent",
+&nbsp; CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END);
+&nbsp;/* Set the form info */
+&nbsp;curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
+&nbsp;
+</pre>
<a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_formfree.html">curl_formfree</a>, <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/curl_formadd.pdf b/docs/libcurl/curl_formadd.pdf
index 50f2a7c52..27bdeda80 100644
--- a/docs/libcurl/curl_formadd.pdf
+++ b/docs/libcurl/curl_formadd.pdf
Binary files differ
diff --git a/docs/libcurl/curl_formfree.html b/docs/libcurl/curl_formfree.html
index 620220e39..4ee26bb7c 100644
--- a/docs/libcurl/curl_formfree.html
+++ b/docs/libcurl/curl_formfree.html
@@ -4,15 +4,20 @@
<title>curl_formfree man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_formfree.pdf b/docs/libcurl/curl_formfree.pdf
index 3182daa3b..b713cc634 100644
--- a/docs/libcurl/curl_formfree.pdf
+++ b/docs/libcurl/curl_formfree.pdf
Binary files differ
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index b52622136..5781bce12 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -26,7 +26,7 @@ curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.nf
.B #include <curl/curl.h>
-void curl_formget(struct curl_httppost * form, void *userp,
+int curl_formget(struct curl_httppost * form, void *userp,
curl_formget_callback append );
.SH DESCRIPTION
curl_formget() is used to serialize data previously built/appended with
diff --git a/docs/libcurl/curl_formget.html b/docs/libcurl/curl_formget.html
index 29c08687a..c4e40aa91 100644
--- a/docs/libcurl/curl_formget.html
+++ b/docs/libcurl/curl_formget.html
@@ -4,15 +4,20 @@
<title>curl_formget man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,33 +52,36 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_formget - serialize a previously built multipart/formdata HTTP POST chain <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span>
-<p class="level0">void curl_formget(struct curl_httppost * form, void *userp,
- &nbsp; curl_formget_callback append );
- </pre>
+<p class="level0"><pre class="level0">
+<span Class="bold">#include &lt;curl/curl.h&gt;</span>
+&nbsp;
+int curl_formget(struct curl_httppost * form, void *userp,
+&nbsp; curl_formget_callback append );
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">curl_formget() is used to serialize data previously built/appended with <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. Accepts a void pointer as second argument named <span Class="emphasis">userp</span> which will be passed as the first argument to the curl_formget_callback function.
<p class="level0"><span Class="bold">typedef size_t (*curl_formget_callback)(void * userp, const char * buf,</span> <span Class="bold"> size_t len );</span>
<p class="level0">The curl_formget_callback will be executed for each part of the HTTP POST chain. The character buffer passed to the callback must not be freed. The callback should return the buffer length passed to it on success.
<p class="level0">If the <span Class="bold">CURLFORM_STREAM</span> option is used in the formpost, it will prevent <a Class="emphasis" href="./curl_formget.html">curl_formget</a> from working until you've performed the actual HTTP request as only then will libcurl get the actual read callback to use! <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">0 means everything was ok, non-zero means an error occurred <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0"><p class="level0">&nbsp;size_t print_httppost_callback(void *arg, const char *buf, size_t len)
- &nbsp;{
- &nbsp; fwrite(buf, len, 1, stdout);
- &nbsp; (*(size_t *) arg) += len;
- &nbsp; return len;
- &nbsp;}
- <p class="level0">&nbsp;size_t print_httppost(struct curl_httppost *post)
- &nbsp;{
- &nbsp; size_t total_size = 0;
- &nbsp; if(curl_formget(post, &total_size, print_httppost_callback)) {
- &nbsp; return (size_t) -1;
- &nbsp; }
- &nbsp; return total_size;
- &nbsp;}
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;
+&nbsp;size_t print_httppost_callback(void *arg, const char *buf, size_t len)
+&nbsp;{
+&nbsp; fwrite(buf, len, 1, stdout);
+&nbsp; (*(size_t *) arg) += len;
+&nbsp; return len;
+&nbsp;}
+&nbsp;
+&nbsp;size_t print_httppost(struct curl_httppost *post)
+&nbsp;{
+&nbsp; size_t total_size = 0;
+&nbsp; if(curl_formget(post, &total_size, print_httppost_callback)) {
+&nbsp; return (size_t) -1;
+&nbsp; }
+&nbsp; return total_size;
+&nbsp;}
+</pre>
<a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">This function was added in libcurl 7.15.5 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_formadd.html">curl_formadd</a>, <p class="roffit">
diff --git a/docs/libcurl/curl_formget.pdf b/docs/libcurl/curl_formget.pdf
index 6b50dc588..62e679b7c 100644
--- a/docs/libcurl/curl_formget.pdf
+++ b/docs/libcurl/curl_formget.pdf
Binary files differ
diff --git a/docs/libcurl/curl_free.html b/docs/libcurl/curl_free.html
index 87fd07113..e5eaa6690 100644
--- a/docs/libcurl/curl_free.html
+++ b/docs/libcurl/curl_free.html
@@ -4,15 +4,20 @@
<title>curl_free man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_free.pdf b/docs/libcurl/curl_free.pdf
index 20e226cc5..8df5481d6 100644
--- a/docs/libcurl/curl_free.pdf
+++ b/docs/libcurl/curl_free.pdf
Binary files differ
diff --git a/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index ff31ac7c7..2e7d7aa7f 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -91,7 +91,7 @@ Sat, 11 Sep 2004 21:32:11 +0200
This parser was written to handle date formats specified in RFC 822 (including
the update in RFC 1123) using time zone name or time zone delta and RFC 850
(obsoleted by RFC 1036) and ANSI C's asctime() format. These formats are the
-only ones RFC2616 says HTTP applications may use.
+only ones RFC 7231 says HTTP applications may use.
.SH RETURN VALUE
This function returns -1 when it fails to parse the date string. Otherwise it
returns the number of seconds as described.
diff --git a/docs/libcurl/curl_getdate.html b/docs/libcurl/curl_getdate.html
index 53cd9bb51..1391898a8 100644
--- a/docs/libcurl/curl_getdate.html
+++ b/docs/libcurl/curl_getdate.html
@@ -4,15 +4,20 @@
<title>curl_getdate man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -58,33 +63,33 @@ p.roffit {
<p class="level0"><span Class="bold">day of the week items</span> Specifies a day of the week. Days of the week may be spelled out in full (using english): `Sunday', `Monday', etc or they may be abbreviated to their first three letters. This is usually not info that adds anything.
<p class="level0"><span Class="bold">pure numbers</span> If a decimal number of the form YYYYMMDD appears, then YYYY is read as the year, MM as the month number and DD as the day of the month, for the specified calendar date.
<p class="level0"><a name="EXAMPLES"></a><h2 class="nroffsh">EXAMPLES</h2>
-<p class="level0"><pre>
-<p class="level0">Sun, 06 Nov 1994 08:49:37 GMT
- Sunday, 06-Nov-94 08:49:37 GMT
- Sun Nov 6 08:49:37 1994
- 06 Nov 1994 08:49:37 GMT
- 06-Nov-94 08:49:37 GMT
- Nov 6 08:49:37 1994
- 06 Nov 1994 08:49:37
- 06-Nov-94 08:49:37
- 1994 Nov 6 08:49:37
- GMT 08:49:37 06-Nov-94 Sunday
- 94 6 Nov 08:49:37
- 1994 Nov 6
- 06-Nov-94
- Sun Nov 6 94
- 1994.Nov.6
- Sun/Nov/6/94/GMT
- Sun, 06 Nov 1994 08:49:37 CET
- 06 Nov 1994 08:49:37 EST
- Sun, 12 Sep 2004 15:05:58 -0700
- Sat, 11 Sep 2004 21:32:11 +0200
- 20040912 15:05:58 -0700
- 20040911 +0200
- </pre>
+<p class="level0"><pre class="level0">
+Sun, 06 Nov 1994 08:49:37 GMT
+Sunday, 06-Nov-94 08:49:37 GMT
+Sun Nov 6 08:49:37 1994
+06 Nov 1994 08:49:37 GMT
+06-Nov-94 08:49:37 GMT
+Nov 6 08:49:37 1994
+06 Nov 1994 08:49:37
+06-Nov-94 08:49:37
+1994 Nov 6 08:49:37
+GMT 08:49:37 06-Nov-94 Sunday
+94 6 Nov 08:49:37
+1994 Nov 6
+06-Nov-94
+Sun Nov 6 94
+1994.Nov.6
+Sun/Nov/6/94/GMT
+Sun, 06 Nov 1994 08:49:37 CET
+06 Nov 1994 08:49:37 EST
+Sun, 12 Sep 2004 15:05:58 -0700
+Sat, 11 Sep 2004 21:32:11 +0200
+20040912 15:05:58 -0700
+20040911 +0200
+</pre>
<p class="level0"><a name="STANDARDS"></a><h2 class="nroffsh">STANDARDS</h2>
-<p class="level0">This parser was written to handle date formats specified in <a href="http://www.ietf.org/rfc/rfc822.txt">RFC 822</a> (including the update in <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a>) using time zone name or time zone delta and RFC 850 (obsoleted by <a href="http://www.ietf.org/rfc/rfc1036.txt">RFC 1036</a>) and ANSI C's asctime() format. These formats are the only ones <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> says HTTP applications may use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This parser was written to handle date formats specified in <a href="http://www.ietf.org/rfc/rfc822.txt">RFC 822</a> (including the update in <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a>) using time zone name or time zone delta and RFC 850 (obsoleted by <a href="http://www.ietf.org/rfc/rfc1036.txt">RFC 1036</a>) and ANSI C's asctime() format. These formats are the only ones <a href="http://www.ietf.org/rfc/rfc7231.txt">RFC 7231</a> says HTTP applications may use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">This function returns -1 when it fails to parse the date string. Otherwise it returns the number of seconds as described.
<p class="level0">If the year is larger than 2037 on systems with 32 bit time_t, this function will return 0x7fffffff (since that is the largest possible signed 32 bit number).
<p class="level0">Having a 64 bit time_t is not a guarantee that dates beyond 03:14:07 UTC, January 19, 2038 will work fine. On systems with a 64 bit time_t but with a crippled mktime(), <a Class="emphasis" href="./curl_getdate.html">curl_getdate</a> will return -1 in this case. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
diff --git a/docs/libcurl/curl_getdate.pdf b/docs/libcurl/curl_getdate.pdf
index c004c5a13..36c7c7abd 100644
--- a/docs/libcurl/curl_getdate.pdf
+++ b/docs/libcurl/curl_getdate.pdf
Binary files differ
diff --git a/docs/libcurl/curl_getenv.html b/docs/libcurl/curl_getenv.html
index 0cb0c3824..d73a0afc3 100644
--- a/docs/libcurl/curl_getenv.html
+++ b/docs/libcurl/curl_getenv.html
@@ -4,15 +4,20 @@
<title>curl_getenv man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_getenv.pdf b/docs/libcurl/curl_getenv.pdf
index fe807fa9f..16beec2e1 100644
--- a/docs/libcurl/curl_getenv.pdf
+++ b/docs/libcurl/curl_getenv.pdf
Binary files differ
diff --git a/docs/libcurl/curl_global_cleanup.html b/docs/libcurl/curl_global_cleanup.html
index f46b0091f..1f798d850 100644
--- a/docs/libcurl/curl_global_cleanup.html
+++ b/docs/libcurl/curl_global_cleanup.html
@@ -4,15 +4,20 @@
<title>curl_global_cleanup man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_global_cleanup.pdf b/docs/libcurl/curl_global_cleanup.pdf
index 2fcac63ae..1de52a547 100644
--- a/docs/libcurl/curl_global_cleanup.pdf
+++ b/docs/libcurl/curl_global_cleanup.pdf
Binary files differ
diff --git a/docs/libcurl/curl_global_init.html b/docs/libcurl/curl_global_init.html
index 1552321d5..7a8ca60ed 100644
--- a/docs/libcurl/curl_global_init.html
+++ b/docs/libcurl/curl_global_init.html
@@ -4,15 +4,20 @@
<title>curl_global_init man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_global_init.pdf b/docs/libcurl/curl_global_init.pdf
index f10df0d1c..6d234fd2e 100644
--- a/docs/libcurl/curl_global_init.pdf
+++ b/docs/libcurl/curl_global_init.pdf
Binary files differ
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index 9cddef7c3..a21e63d8b 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.3
@@ -36,9 +36,10 @@ This function works exactly as \fIcurl_global_init(3)\fP with one addition: it
allows the application to set callbacks to replace the otherwise used internal
memory functions.
-This man page only adds documentation for the callbacks, see the
-\fIcurl_global_init(3)\fP man page for all the rest. When you use this
-function, all callback arguments must be set to valid function pointers.
+When you use this function, all callback arguments must be set to valid
+function pointers. \fBIf you are using libcurl from multiple threads or with
+the threaded resolver (the default in Windows) the callback replacement
+functions must be thread safe.\fP
The prototypes for the given callbacks should match these:
.IP "void *malloc_callback(size_t size);"
@@ -51,6 +52,9 @@ To replace realloc()
To replace strdup()
.IP "void *calloc_callback(size_t nmemb, size_t size);"
To replace calloc()
+.RE
+This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
+to that man page for documentation.
.SH "CAUTION"
Manipulating these gives considerable powers to the application to severely
screw things up for libcurl. Take care!
diff --git a/docs/libcurl/curl_global_init_mem.html b/docs/libcurl/curl_global_init_mem.html
index 883277cfe..b8c4bcd26 100644
--- a/docs/libcurl/curl_global_init_mem.html
+++ b/docs/libcurl/curl_global_init_mem.html
@@ -4,15 +4,20 @@
<title>curl_global_init_mem man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,8 +52,8 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_global_init_mem - Global libcurl initialisation with memory callbacks <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> <pre>
-<p class="level0"><span Class="bold">CURLcode curl_global_init_mem(long flags,</span>
+<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> <pre class="level0">
+<span Class="bold">CURLcode curl_global_init_mem(long flags,</span>
<span Class="bold"> curl_malloc_callback m,</span>
<span Class="bold"> curl_free_callback f,</span>
<span Class="bold"> curl_realloc_callback r,</span>
@@ -57,7 +62,7 @@ p.roffit {
</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This function works exactly as <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> with one addition: it allows the application to set callbacks to replace the otherwise used internal memory functions.
-<p class="level0">This man page only adds documentation for the callbacks, see the <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> man page for all the rest. When you use this function, all callback arguments must be set to valid function pointers.
+<p class="level0">When you use this function, all callback arguments must be set to valid function pointers. <span class="bold">If you are using libcurl from multiple threads or with the threaded resolver (the default in Windows) the callback replacement functions must be thread safe.</span>
<p class="level0">The prototypes for the given callbacks should match these:
<p class="level0"><a name="void"></a><span class="nroffip">void *malloc_callback(size_t size);</span>
<p class="level1">To replace malloc()
@@ -68,7 +73,8 @@ p.roffit {
<p class="level0"><a name="char"></a><span class="nroffip">char *strdup_callback(const char *str);</span>
<p class="level1">To replace strdup()
<p class="level0"><a name="void"></a><span class="nroffip">void *calloc_callback(size_t nmemb, size_t size);</span>
-<p class="level1">To replace calloc() <a name="CAUTION"></a><h2 class="nroffsh">CAUTION</h2>
+<p class="level1">To replace calloc()
+<p class="level0">This function is otherwise the same as <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, please refer to that man page for documentation. <a name="CAUTION"></a><h2 class="nroffsh">CAUTION</h2>
<p class="level0">Manipulating these gives considerable powers to the application to severely screw things up for libcurl. Take care! <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_global_cleanup.html">curl_global_cleanup</a>, <span Class="manpage"> </span>
<p class="level0"><p class="roffit">
diff --git a/docs/libcurl/curl_global_init_mem.pdf b/docs/libcurl/curl_global_init_mem.pdf
index fb9b1643b..1d98c6837 100644
--- a/docs/libcurl/curl_global_init_mem.pdf
+++ b/docs/libcurl/curl_global_init_mem.pdf
Binary files differ
diff --git a/docs/libcurl/curl_mprintf.html b/docs/libcurl/curl_mprintf.html
index 9bc97908b..6db77f3ea 100644
--- a/docs/libcurl/curl_mprintf.html
+++ b/docs/libcurl/curl_mprintf.html
@@ -4,15 +4,20 @@
<title>curl_printf man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -63,7 +68,7 @@ p.roffit {
<p class="level1"><span Class="bold">curl_maprintf()</span> Like printf() but returns the output string as a malloc()ed string. The returned string must be free()ed by the receiver.
<p class="level1"><span Class="bold">curl_mvaprintf()</span> Like curl_maprintf() but takes a va_list pointer argument instead of a variable amount of arguments.
<p class="level0">
-<p class="level0">To easily use all these cloned functions instead of the normal ones, #define _MPRINTF_REPLACE before you include the &lt;curl/mprintf.h&gt; file. Then all the normal names like printf, fprintf, sprintf etc will use the curl-functions instead. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">To easily use all these cloned functions instead of the normal ones, &#35;define _MPRINTF_REPLACE before you include the &lt;curl/mprintf.h&gt; file. Then all the normal names like printf, fprintf, sprintf etc will use the curl-functions instead. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">These function will be removed from the public libcurl API in a near future. They will instead be made "available" by source code access only, and then as curlx_-prefixed functions. See lib/README.curlx for further details. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">The <span Class="bold">curl_maprintf</span> and <span Class="bold">curl_mvaprintf</span> functions return a pointer to a newly allocated string, or NULL if it failed.
<p class="level0">All other functions return the number of characters they actually outputted. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
diff --git a/docs/libcurl/curl_mprintf.pdf b/docs/libcurl/curl_mprintf.pdf
index 37c754ab3..ac74bc42e 100644
--- a/docs/libcurl/curl_mprintf.pdf
+++ b/docs/libcurl/curl_mprintf.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_add_handle.html b/docs/libcurl/curl_multi_add_handle.html
index a0f2ae2cd..2929a1cfd 100644
--- a/docs/libcurl/curl_multi_add_handle.html
+++ b/docs/libcurl/curl_multi_add_handle.html
@@ -4,15 +4,20 @@
<title>curl_multi_add_handle man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_add_handle - add an easy handle to a multi session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Adds a standard easy handle to the multi stack. This function call will make this <span Class="emphasis">multi_handle</span> control the specified <span Class="emphasis">easy_handle</span>.
diff --git a/docs/libcurl/curl_multi_add_handle.pdf b/docs/libcurl/curl_multi_add_handle.pdf
index c5fa51ba4..f9ec56671 100644
--- a/docs/libcurl/curl_multi_add_handle.pdf
+++ b/docs/libcurl/curl_multi_add_handle.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_assign.html b/docs/libcurl/curl_multi_assign.html
index 64a7da43f..ade4a7f74 100644
--- a/docs/libcurl/curl_multi_assign.html
+++ b/docs/libcurl/curl_multi_assign.html
@@ -4,15 +4,20 @@
<title>curl_multi_assign man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_assign - set data to associate with an internal socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd, &nbsp; void *sockptr); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This function creates an association in the multi handle between the given socket and a private pointer of the application. This is designed for <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> uses.
<p class="level0">When set, the <span Class="emphasis">sockptr</span> pointer will be passed to all future socket callbacks for the specific <span Class="emphasis">sockfd</span> socket.
diff --git a/docs/libcurl/curl_multi_assign.pdf b/docs/libcurl/curl_multi_assign.pdf
index 4ec8b3e95..a3f1e269e 100644
--- a/docs/libcurl/curl_multi_assign.pdf
+++ b/docs/libcurl/curl_multi_assign.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_cleanup.html b/docs/libcurl/curl_multi_cleanup.html
index b0a52bfba..95aa4f905 100644
--- a/docs/libcurl/curl_multi_cleanup.html
+++ b/docs/libcurl/curl_multi_cleanup.html
@@ -4,15 +4,20 @@
<title>curl_multi_cleanup man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_multi_cleanup.pdf b/docs/libcurl/curl_multi_cleanup.pdf
index 6db40f0e4..8204aee89 100644
--- a/docs/libcurl/curl_multi_cleanup.pdf
+++ b/docs/libcurl/curl_multi_cleanup.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_fdset.html b/docs/libcurl/curl_multi_fdset.html
index 64678bd6b..3a48bbc7a 100644
--- a/docs/libcurl/curl_multi_fdset.html
+++ b/docs/libcurl/curl_multi_fdset.html
@@ -4,15 +4,20 @@
<title>curl_multi_fdset man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,15 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_fdset - extracts file descriptor information from a multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_fdset(CURLM *multi_handle,
- &nbsp; fd_set *read_fd_set,
- &nbsp; fd_set *write_fd_set,
- &nbsp; fd_set *exc_fd_set,
- &nbsp; int *max_fd);
- <p class="level0"></pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_fdset(CURLM *multi_handle,
+&nbsp; fd_set *read_fd_set,
+&nbsp; fd_set *write_fd_set,
+&nbsp; fd_set *exc_fd_set,
+&nbsp; int *max_fd);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This function extracts file descriptor information from a given multi_handle. libcurl returns its fd_set sets. The application can use these to select() on, but be sure to FD_ZERO them before calling this function as <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> only adds its own descriptors, it doesn't zero or otherwise remove any others. The <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> function should be called as soon as one of them is ready to be read from or written to.
<p class="level0">If the <span Class="emphasis">read_fd_set</span> argument is not a null pointer, it points to an object of type fd_set that on returns specifies the file descriptors to be checked for being ready to read.
diff --git a/docs/libcurl/curl_multi_fdset.pdf b/docs/libcurl/curl_multi_fdset.pdf
index 9333266f1..5b83a0e43 100644
--- a/docs/libcurl/curl_multi_fdset.pdf
+++ b/docs/libcurl/curl_multi_fdset.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index 875176486..03be341b2 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -49,8 +49,8 @@ calling \fIcurl_multi_cleanup(3)\fP, \fIcurl_multi_remove_handle(3)\fP or
\fIcurl_easy_cleanup(3)\fP.
The 'CURLMsg' struct is very simple and only contains very basic information.
-If more involved information is wanted, the particular "easy handle" in
-present in that struct and can thus be used in subsequent regular
+If more involved information is wanted, the particular "easy handle" is
+present in that struct and can be used in subsequent regular
\fIcurl_easy_getinfo(3)\fP calls (or similar):
.nf
@@ -68,6 +68,24 @@ is done, and then \fBresult\fP contains the return code for the easy handle
that just completed.
At this point, there are no other \fBmsg\fP types defined.
+.SH EXAMPLE
+.nf
+struct CURLMsg *m;
+
+/* call curl_multi_perform or curl_multi_socket_action first, then loop
+ through and check if there are any transfers that have completed */
+
+do {
+ int msgq = 0;
+ m = curl_multi_info_read(multi_handle, &msgq);
+ if(m && (m->msg == CURLMSG_DONE)) {
+ CURL *e = m->easy_handle;
+ transfers--;
+ curl_multi_remove_handle(multi_handle, e);
+ curl_easy_cleanup(e);
+ }
+} while(m);
+.fi
.SH "RETURN VALUE"
A pointer to a filled-in struct, or NULL if it failed or ran out of
structs. It also writes the number of messages left in the queue (after this
diff --git a/docs/libcurl/curl_multi_info_read.html b/docs/libcurl/curl_multi_info_read.html
index 816f55b52..f83ed9ea9 100644
--- a/docs/libcurl/curl_multi_info_read.html
+++ b/docs/libcurl/curl_multi_info_read.html
@@ -4,15 +4,20 @@
<title>curl_multi_info_read man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,27 +52,46 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_info_read - read multi stack informationals <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMsg *curl_multi_info_read( CURLM *multi_handle, &nbsp; int *msgs_in_queue);
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Ask the multi handle if there are any messages/informationals from the individual transfers. Messages may include informationals such as an error code from the transfer or just the fact that a transfer is completed. More details on these should be written down as well.
<p class="level0">Repeated calls to this function will return a new struct each time, until a NULL is returned as a signal that there is no more to get at this point. The integer pointed to with <span Class="emphasis">msgs_in_queue</span> will contain the number of remaining messages after this function was called.
<p class="level0">When you fetch a message using this function, it is removed from the internal queue so calling this function again will not return the same message again. It will instead return new messages at each new invoke until the queue is emptied.
<p class="level0"><span Class="bold">WARNING:</span> The data the returned pointer points to will not survive calling <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> or <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>.
-<p class="level0">The 'CURLMsg' struct is very simple and only contains very basic information. If more involved information is wanted, the particular "easy handle" in present in that struct and can thus be used in subsequent regular <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> calls (or similar):
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct CURLMsg {
- &nbsp; CURLMSG msg; /* what this message means */
- &nbsp; CURL *easy_handle; /* the handle it concerns */
- &nbsp; union {
- &nbsp; void *whatever; /* message-specific data */
- &nbsp; CURLcode result; /* return code for transfer */
- &nbsp; } data;
- &nbsp;};
- </pre>
+<p class="level0">The 'CURLMsg' struct is very simple and only contains very basic information. If more involved information is wanted, the particular "easy handle" is present in that struct and can be used in subsequent regular <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> calls (or similar):
+<p class="level0"><pre class="level0">
+&nbsp;struct CURLMsg {
+&nbsp; CURLMSG msg; /* what this message means */
+&nbsp; CURL *easy_handle; /* the handle it concerns */
+&nbsp; union {
+&nbsp; void *whatever; /* message-specific data */
+&nbsp; CURLcode result; /* return code for transfer */
+&nbsp; } data;
+&nbsp;};
+</pre>
<p class="level0">When <span Class="bold">msg</span> is <span Class="emphasis">CURLMSG_DONE</span>, the message identifies a transfer that is done, and then <span Class="bold">result</span> contains the return code for the easy handle that just completed.
-<p class="level0">At this point, there are no other <span Class="bold">msg</span> types defined. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">At this point, there are no other <span Class="bold">msg</span> types defined. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+struct CURLMsg *m;
+&nbsp;
+/* call curl_multi_perform or curl_multi_socket_action first, then loop
+&nbsp; through and check if there are any transfers that have completed */
+&nbsp;
+do {
+&nbsp; int msgq = 0;
+&nbsp; m = curl_multi_info_read(multi_handle, &msgq);
+&nbsp; if(m && (m-&gt;msg == CURLMSG_DONE)) {
+&nbsp; CURL *e = m-&gt;easy_handle;
+&nbsp; transfers--;
+&nbsp; curl_multi_remove_handle(multi_handle, e);
+&nbsp; curl_easy_cleanup(e);
+&nbsp; }
+} while(m);
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">A pointer to a filled-in struct, or NULL if it failed or ran out of structs. It also writes the number of messages left in the queue (after this read) in the integer the second argument points to. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/curl_multi_info_read.pdf b/docs/libcurl/curl_multi_info_read.pdf
index 569c045dc..9fe52da72 100644
--- a/docs/libcurl/curl_multi_info_read.pdf
+++ b/docs/libcurl/curl_multi_info_read.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_init.html b/docs/libcurl/curl_multi_init.html
index 9fe752d56..fbad8e4f7 100644
--- a/docs/libcurl/curl_multi_init.html
+++ b/docs/libcurl/curl_multi_init.html
@@ -4,15 +4,20 @@
<title>curl_multi_init man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_multi_init.pdf b/docs/libcurl/curl_multi_init.pdf
index 68ed8731b..168a740c3 100644
--- a/docs/libcurl/curl_multi_init.pdf
+++ b/docs/libcurl/curl_multi_init.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index e0e5b02d8..3ec1fadec 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -49,6 +49,55 @@ added handle fails very quickly, it may never be counted as a running_handle.
When \fIrunning_handles\fP is set to zero (0) on the return of this function,
there is no longer any transfers in progress.
+.SH EXAMPLE
+.nf
+#ifdef _WIN32
+#define SHORT_SLEEP Sleep(100)
+#else
+#define SHORT_SLEEP usleep(100000)
+#endif
+
+fd_set fdread;
+fd_set fdwrite;
+fd_set fdexcep;
+int maxfd = -1;
+
+long curl_timeo;
+
+curl_multi_timeout(multi_handle, &curl_timeo);
+if(curl_timeo < 0)
+ curl_timeo = 1000;
+
+timeout.tv_sec = curl_timeo / 1000;
+timeout.tv_usec = (curl_timeo % 1000) * 1000;
+
+FD_ZERO(&fdread);
+FD_ZERO(&fdwrite);
+FD_ZERO(&fdexcep);
+
+/* get file descriptors from the transfers */
+mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+if(maxfd == -1) {
+ SHORT_SLEEP;
+ rc = 0;
+}
+else
+ rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+
+switch(rc) {
+case -1:
+ /* select error */
+ break;
+case 0:
+default:
+ /* timeout or readable/writable sockets */
+ curl_multi_perform(multi_handle, &still_running);
+ break;
+}
+
+/* if there are still transfers, loop! */
+.fi
.SH "RETURN VALUE"
CURLMcode type, general libcurl multi interface error code.
diff --git a/docs/libcurl/curl_multi_perform.html b/docs/libcurl/curl_multi_perform.html
index 27c3cbb39..bf68abdaf 100644
--- a/docs/libcurl/curl_multi_perform.html
+++ b/docs/libcurl/curl_multi_perform.html
@@ -4,15 +4,20 @@
<title>curl_multi_perform man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,63 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_perform - reads/writes available data from each easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This function handles transfers on all the added handles that need attention in an non-blocking fashion.
<p class="level0">When an application has found out there's data available for the multi_handle or a timeout has elapsed, the application should call this function to read/write whatever there is to read or write right now etc. <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> returns as soon as the reads/writes are done. This function does not require that there actually is any data available for reading or that data can be written, it can be called just in case. It will write the number of handles that still transfer data in the second argument's integer-pointer.
<p class="level0">If the amount of <span Class="emphasis">running_handles</span> is changed from the previous call (or is less than the amount of easy handles you've added to the multi handle), you know that there is one or more transfers less "running". You can then call <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to get information about each individual completed transfer, and that returned info includes CURLcode and more. If an added handle fails very quickly, it may never be counted as a running_handle.
-<p class="level0">When <span Class="emphasis">running_handles</span> is set to zero (0) on the return of this function, there is no longer any transfers in progress. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">When <span Class="emphasis">running_handles</span> is set to zero (0) on the return of this function, there is no longer any transfers in progress. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+&#35;ifdef _WIN32
+&#35;define SHORT_SLEEP Sleep(100)
+&#35;else
+&#35;define SHORT_SLEEP usleep(100000)
+&#35;endif
+&nbsp;
+fd_set fdread;
+fd_set fdwrite;
+fd_set fdexcep;
+int maxfd = -1;
+&nbsp;
+long curl_timeo;
+&nbsp;
+curl_multi_timeout(multi_handle, &curl_timeo);
+if(curl_timeo &lt; 0)
+&nbsp; curl_timeo = 1000;
+&nbsp;
+timeout.tv_sec = curl_timeo / 1000;
+timeout.tv_usec = (curl_timeo % 1000) * 1000;
+&nbsp;
+FD_ZERO(&fdread);
+FD_ZERO(&fdwrite);
+FD_ZERO(&fdexcep);
+&nbsp;
+/* get file descriptors from the transfers */
+mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+&nbsp;
+if(maxfd == -1) {
+&nbsp; SHORT_SLEEP;
+&nbsp; rc = 0;
+}
+else
+&nbsp; rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+&nbsp;
+switch(rc) {
+case -1:
+&nbsp; /* select error */
+&nbsp; break;
+case 0:
+default:
+&nbsp; /* timeout or readable/writable sockets */
+&nbsp; curl_multi_perform(multi_handle, &still_running);
+&nbsp; break;
+}
+&nbsp;
+/* if there are still transfers, loop! */
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">CURLMcode type, general libcurl multi interface error code.
<p class="level0">Before version 7.20.0: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". Do note that <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> will return <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span> only when it wants to be called again <span Class="bold">immediately</span>. When things are fine and there is nothing immediate it wants done, it'll return <span Class="emphasis">CURLM_OK</span> and you need to wait for "action" and then call this function again.
<p class="level0">This function only returns errors etc regarding the whole multi stack. Problems still might have occurred on individual transfers even when this function returns <span Class="emphasis">CURLM_OK</span>. Use <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to figure out how individual transfers did. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
diff --git a/docs/libcurl/curl_multi_perform.pdf b/docs/libcurl/curl_multi_perform.pdf
index eeb7ea3d2..d3803f640 100644
--- a/docs/libcurl/curl_multi_perform.pdf
+++ b/docs/libcurl/curl_multi_perform.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index 1c2165b63..c819fc9e2 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.3
@@ -28,7 +28,7 @@ curl_multi_remove_handle - remove an easy handle from a multi session
CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
.ad
.SH DESCRIPTION
-Removes a given \fIeasy_handle\fI from the \fImulti_handle\fI. This will make
+Removes a given \fIeasy_handle\fP from the \fImulti_handle\fP. This will make
the specified easy handle be removed from this multi handle's control.
When the easy handle has been removed from a multi stack, it is again
diff --git a/docs/libcurl/curl_multi_remove_handle.html b/docs/libcurl/curl_multi_remove_handle.html
index aff0d601e..df13ac78a 100644
--- a/docs/libcurl/curl_multi_remove_handle.html
+++ b/docs/libcurl/curl_multi_remove_handle.html
@@ -4,15 +4,20 @@
<title>curl_multi_remove_handle man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,10 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_remove_handle - remove an easy handle from a multi session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Removes a given <span class="emphasis">easy_handle<span class="emphasis"> from the <span class="emphasis">multi_handle<span class="emphasis">. This will make the specified easy handle be removed from this multi handle's control.
+<p class="level0">Removes a given <span Class="emphasis">easy_handle</span> from the <span Class="emphasis">multi_handle</span>. This will make the specified easy handle be removed from this multi handle's control.
<p class="level0">When the easy handle has been removed from a multi stack, it is again perfectly legal to invoke <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on this easy handle.
<p class="level0">Removing an easy handle while being used is perfectly legal and will effectively halt the transfer in progress involving that easy handle. All other easy handles and transfers will remain unaffected. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">CURLMcode type, general libcurl multi interface error code. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
diff --git a/docs/libcurl/curl_multi_remove_handle.pdf b/docs/libcurl/curl_multi_remove_handle.pdf
index 8aeff5f7d..36bafde80 100644
--- a/docs/libcurl/curl_multi_remove_handle.pdf
+++ b/docs/libcurl/curl_multi_remove_handle.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index 4cd40756e..956519323 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -37,30 +37,36 @@ expects. Read this manual carefully as bad input values may cause libcurl to
behave badly! You can only set one option in each function call.
.SH OPTIONS
-.IP CURLMOPT_SOCKETFUNCTION
-See \fICURLMOPT_SOCKETFUNCTION(3)\fP
-.IP CURLMOPT_SOCKETDATA
-See \fICURLMOPT_SOCKETDATA(3)\fP
-.IP CURLMOPT_PIPELINING
-See \fICURLMOPT_PIPELINING(3)\fP
-.IP CURLMOPT_TIMERFUNCTION
-See \fICURLMOPT_TIMERFUNCTION(3)\fP
-.IP CURLMOPT_TIMERDATA
-See \fICURLMOPT_TIMERDATA(3)\fP
+.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
+See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
+.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
+See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
.IP CURLMOPT_MAX_HOST_CONNECTIONS
See \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP
.IP CURLMOPT_MAX_PIPELINE_LENGTH
See \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP
-.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
-See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
-.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
-See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
+.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
+See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
+.IP CURLMOPT_MAXCONNECTS
+See \fICURLMOPT_MAXCONNECTS(3)\fP
+.IP CURLMOPT_PIPELINING
+See \fICURLMOPT_PIPELINING(3)\fP
.IP CURLMOPT_PIPELINING_SITE_BL
See \fICURLMOPT_PIPELINING_SITE_BL(3)\fP
.IP CURLMOPT_PIPELINING_SERVER_BL
See \fICURLMOPT_PIPELINING_SERVER_BL(3)\fP
-.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
-See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
+.IP CURLMOPT_PUSHFUNCTION
+See \fICURLMOPT_PUSHFUNCTION(3)\fP
+.IP CURLMOPT_PUSHDATA
+See \fICURLMOPT_PUSHDATA(3)\fP
+.IP CURLMOPT_SOCKETFUNCTION
+See \fICURLMOPT_SOCKETFUNCTION(3)\fP
+.IP CURLMOPT_SOCKETDATA
+See \fICURLMOPT_SOCKETDATA(3)\fP
+.IP CURLMOPT_TIMERFUNCTION
+See \fICURLMOPT_TIMERFUNCTION(3)\fP
+.IP CURLMOPT_TIMERDATA
+See \fICURLMOPT_TIMERDATA(3)\fP
.SH RETURNS
The standard CURLMcode for multi interface error codes. Note that it returns a
CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
diff --git a/docs/libcurl/curl_multi_setopt.html b/docs/libcurl/curl_multi_setopt.html
index 55d4208c7..3edcf2409 100644
--- a/docs/libcurl/curl_multi_setopt.html
+++ b/docs/libcurl/curl_multi_setopt.html
@@ -4,15 +4,20 @@
<title>curl_multi_setopt man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,35 +52,41 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_setopt - set options for a curl multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0"><a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> is used to tell a libcurl multi handle how to behave. By using the appropriate options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>, you can change libcurl's behaviour when using that multi handle. All options are set with the <span Class="emphasis">option</span> followed by the parameter <span Class="emphasis">param</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span> type, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly! You can only set one option in each function call.
<p class="level0"><a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
<p class="level0">
-<p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETFUNCTION(3)</span>
-<p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETDATA(3)</span>
-<p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING(3)</span>
-<p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERFUNCTION(3)</span>
-<p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERDATA(3)</span>
+<p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)</span>
+<p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)</span>
<p class="level0"><a name="CURLMOPTMAXHOSTCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_HOST_CONNECTIONS</span>
<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_HOST_CONNECTIONS(3)</span>
<p class="level0"><a name="CURLMOPTMAXPIPELINELENGTH"></a><span class="nroffip">CURLMOPT_MAX_PIPELINE_LENGTH</span>
<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_PIPELINE_LENGTH(3)</span>
-<p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)</span>
-<p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)</span>
+<p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_TOTAL_CONNECTIONS(3)</span>
+<p class="level0"><a name="CURLMOPTMAXCONNECTS"></a><span class="nroffip">CURLMOPT_MAXCONNECTS</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAXCONNECTS(3)</span>
+<p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING(3)</span>
<p class="level0"><a name="CURLMOPTPIPELININGSITEBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SITE_BL</span>
<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING_SITE_BL(3)</span>
<p class="level0"><a name="CURLMOPTPIPELININGSERVERBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SERVER_BL</span>
<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING_SERVER_BL(3)</span>
-<p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span>
-<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_TOTAL_CONNECTIONS(3)</span> <a name="RETURNS"></a><h2 class="nroffsh">RETURNS</h2>
+<p class="level0"><a name="CURLMOPTPUSHFUNCTION"></a><span class="nroffip">CURLMOPT_PUSHFUNCTION</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_PUSHFUNCTION(3)</span>
+<p class="level0"><a name="CURLMOPTPUSHDATA"></a><span class="nroffip">CURLMOPT_PUSHDATA</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_PUSHDATA(3)</span>
+<p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETFUNCTION(3)</span>
+<p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETDATA(3)</span>
+<p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERFUNCTION(3)</span>
+<p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span>
+<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERDATA(3)</span> <a name="RETURNS"></a><h2 class="nroffsh">RETURNS</h2>
<p class="level0">The standard CURLMcode for multi interface error codes. Note that it returns a CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl doesn't know of. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_socket.html">curl_multi_socket</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <p class="roffit">
diff --git a/docs/libcurl/curl_multi_setopt.pdf b/docs/libcurl/curl_multi_setopt.pdf
index 3f45250ba..3e2ccaf74 100644
--- a/docs/libcurl/curl_multi_setopt.pdf
+++ b/docs/libcurl/curl_multi_setopt.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_socket.html b/docs/libcurl/curl_multi_socket.html
index 3cc80c727..1b73518f5 100644
--- a/docs/libcurl/curl_multi_socket.html
+++ b/docs/libcurl/curl_multi_socket.html
@@ -4,15 +4,20 @@
<title>curl_multi_socket man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_socket - reads/writes available data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
- &nbsp; int *running_handles);
- <p class="level0">CURLMcode curl_multi_socket_all(CURLM *multi_handle,
- &nbsp; int *running_handles);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
+&nbsp; int *running_handles);
+&nbsp;
+CURLMcode curl_multi_socket_all(CURLM *multi_handle,
+&nbsp; int *running_handles);
+</pre>
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">These functions are deprecated. Do not use! See <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> instead!
@@ -63,13 +69,15 @@ p.roffit {
<p class="level0">Usage of <a Class="emphasis" href="./curl_multi_socket.html">curl_multi_socket</a> is deprecated, whereas the function is equivalent to <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with <span Class="bold">ev_bitmask</span> set to 0.
<p class="level0">Force libcurl to (re-)check all its internal sockets and transfers instead of just a single one by calling <a Class="bold" href="./curl_multi_socket_all.html">curl_multi_socket_all</a>. Note that there should not be any reason to use this function! <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
<p class="level0">
-<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
-<p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy, /* easy handle */
- &nbsp; curl_socket_t s, /* socket */
- &nbsp; int action, /* see values below */
- &nbsp; void *userp, /* private callback pointer */
- &nbsp; void *socketp); /* private socket pointer */
- <p class="level0"></pre>
+<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre class="level0">
+&nbsp;
+&nbsp; int curl_socket_callback(CURL *easy, /* easy handle */
+&nbsp; curl_socket_t s, /* socket */
+&nbsp; int action, /* see values below */
+&nbsp; void *userp, /* private callback pointer */
+&nbsp; void *socketp); /* private socket pointer */
+&nbsp;
+</pre>
<p class="level0">The callback MUST return 0.
<p class="level0">The <span Class="emphasis">easy</span> argument is a pointer to the easy handle that deals with this particular socket. Note that a single handle may work with several sockets simultaneously.
diff --git a/docs/libcurl/curl_multi_socket.pdf b/docs/libcurl/curl_multi_socket.pdf
index a40cb23e4..6fbf18734 100644
--- a/docs/libcurl/curl_multi_socket.pdf
+++ b/docs/libcurl/curl_multi_socket.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_socket_action.html b/docs/libcurl/curl_multi_socket_action.html
index 319754b82..5d01486bb 100644
--- a/docs/libcurl/curl_multi_socket_action.html
+++ b/docs/libcurl/curl_multi_socket_action.html
@@ -4,15 +4,20 @@
<title>curl_multi_socket_action man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,13 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_socket_action - reads/writes available data given an action <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_socket_action(CURLM * multi_handle,
- &nbsp; curl_socket_t sockfd, int ev_bitmask,
- &nbsp; int *running_handles);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_socket_action(CURLM * multi_handle,
+&nbsp; curl_socket_t sockfd, int ev_bitmask,
+&nbsp; int *running_handles);
+</pre>
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">When the application has detected action on a socket handled by libcurl, it should call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with the <span Class="bold">sockfd</span> argument set to the socket with the action. When the events on a socket are known, they can be passed as an events bitmask <span Class="bold">ev_bitmask</span> by first setting <span Class="bold">ev_bitmask</span> to 0, and then adding using bitwise OR (|) any combination of events to be chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and libcurl will test the descriptor internally. It is also permissible to pass CURL_SOCKET_TIMEOUT to the <span Class="bold">sockfd</span> parameter in order to initiate the whole process or when a timeout occurs.
@@ -60,16 +66,18 @@ p.roffit {
<p class="level0">The <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> functions inform the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION option to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They update the status with changes since the previous time the callback was called.
<p class="level0">Get the timeout time by setting the <span Class="emphasis">CURLMOPT_TIMERFUNCTION</span> option with <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. Your application will then get called with information on how long to wait for socket actions at most before doing the timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT. You can also use the <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> function to poll the value at any given time, but for an event-based system using the callback is far better than relying on polling the timeout value. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
<p class="level0">
-<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
-<p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy, /* easy handle */
- &nbsp; curl_socket_t s, /* socket */
- &nbsp; int action, /* see values below */
- &nbsp; void *userp, /* private callback pointer */
- &nbsp; void *socketp); /* private socket pointer,
- &nbsp; <span Class="bold">NULL</span> if not
- &nbsp; previously assigned with
- &nbsp; <a Class="bold" href="./curl_multi_assign.html">curl_multi_assign</a> */
- <p class="level0"></pre>
+<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre class="level0">
+&nbsp;
+&nbsp; int curl_socket_callback(CURL *easy, /* easy handle */
+&nbsp; curl_socket_t s, /* socket */
+&nbsp; int action, /* see values below */
+&nbsp; void *userp, /* private callback pointer */
+&nbsp; void *socketp); /* private socket pointer,
+&nbsp; <span Class="bold">NULL</span> if not
+&nbsp; previously assigned with
+&nbsp; <a Class="bold" href="./curl_multi_assign.html">curl_multi_assign</a> */
+&nbsp;
+</pre>
<p class="level0">The callback MUST return 0.
<p class="level0">The <span Class="emphasis">easy</span> argument is a pointer to the easy handle that deals with this particular socket. Note that a single handle may work with several sockets simultaneously.
diff --git a/docs/libcurl/curl_multi_socket_action.pdf b/docs/libcurl/curl_multi_socket_action.pdf
index a49223831..6ef1a4875 100644
--- a/docs/libcurl/curl_multi_socket_action.pdf
+++ b/docs/libcurl/curl_multi_socket_action.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_strerror.html b/docs/libcurl/curl_multi_strerror.html
index 34b20a9a0..58f11935e 100644
--- a/docs/libcurl/curl_multi_strerror.html
+++ b/docs/libcurl/curl_multi_strerror.html
@@ -4,15 +4,20 @@
<title>curl_multi_strerror man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,8 +52,8 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span>
+<p class="level0"><pre class="level0">
+<span Class="bold">#include &lt;curl/curl.h&gt;</span>
<span Class="bold">const char *curl_multi_strerror(CURLMcode errornum );</span>
</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
diff --git a/docs/libcurl/curl_multi_strerror.pdf b/docs/libcurl/curl_multi_strerror.pdf
index a9c4d8910..41c7ec019 100644
--- a/docs/libcurl/curl_multi_strerror.pdf
+++ b/docs/libcurl/curl_multi_strerror.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index e18b935cc..f0c907966 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -49,6 +49,22 @@ SHOULD instead use \fIcurl_multi_setopt(3)\fP and its
Note: if libcurl returns a -1 timeout here, it just means that libcurl
currently has no stored timeout value. You must not wait too long (more than a
few seconds perhaps) before you call curl_multi_perform() again.
+.SH EXAMPLE
+.nf
+struct timeval timeout;
+long timeo;
+
+curl_multi_timeout(multi_handle, &timeo);
+if(timeo < 0)
+ /* no set timeout, use a default */
+ timeo = 980;
+
+timeout.tv_sec = timeo / 1000;
+timeout.tv_usec = (timeo % 1000) * 1000;
+
+/* wait for activities no longer than the set timeout */
+select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+.fi
.SH "RETURN VALUE"
The standard CURLMcode for multi interface error codes.
.SH "TYPICAL USAGE"
diff --git a/docs/libcurl/curl_multi_timeout.html b/docs/libcurl/curl_multi_timeout.html
index 952a6ff8c..84161c830 100644
--- a/docs/libcurl/curl_multi_timeout.html
+++ b/docs/libcurl/curl_multi_timeout.html
@@ -4,15 +4,20 @@
<title>curl_multi_timeout man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,31 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_timeout - how long to wait for action before proceeding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">
<p class="level0">An application using the libcurl multi interface should call <a Class="bold" href="./curl_multi_timeout.html">curl_multi_timeout</a> to figure out how long it should wait for socket actions - at most - before proceeding.
<p class="level0">Proceeding means either doing the socket-style timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT, or call <a Class="bold" href="./curl_multi_perform.html">curl_multi_perform</a> if you're using the simpler and older multi interface approach.
<p class="level0">The timeout value returned in the long <span Class="bold">timeout</span> points to, is in number of milliseconds at this very moment. If 0, it means you should proceed immediately without waiting for anything. If it returns -1, there's no timeout at all set.
<p class="level0">An application that uses the multi_socket API SHOULD NOT use this function, but SHOULD instead use <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> and its </span>CURLMOPT_TIMERFUNCTION</span> option for proper and desired behavior.
-<p class="level0">Note: if libcurl returns a -1 timeout here, it just means that libcurl currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call curl_multi_perform() again. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Note: if libcurl returns a -1 timeout here, it just means that libcurl currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call curl_multi_perform() again. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+struct timeval timeout;
+long timeo;
+&nbsp;
+curl_multi_timeout(multi_handle, &timeo);
+if(timeo &lt; 0)
+&nbsp; /* no set timeout, use a default */
+&nbsp; timeo = 980;
+&nbsp;
+timeout.tv_sec = timeo / 1000;
+timeout.tv_usec = (timeo % 1000) * 1000;
+&nbsp;
+/* wait for activities no longer than the set timeout */
+select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">The standard CURLMcode for multi interface error codes. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
<p class="level0">Call <a Class="bold" href="./curl_multi_timeout.html">curl_multi_timeout</a>, then wait for action on the sockets. You figure out which sockets to wait for by calling <a Class="bold" href="./curl_multi_fdset.html">curl_multi_fdset</a> or by a previous call to <a Class="bold" href="./curl_multi_socket.html">curl_multi_socket</a>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
diff --git a/docs/libcurl/curl_multi_timeout.pdf b/docs/libcurl/curl_multi_timeout.pdf
index b5d550164..bd5b983a3 100644
--- a/docs/libcurl/curl_multi_timeout.pdf
+++ b/docs/libcurl/curl_multi_timeout.pdf
Binary files differ
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index a76fba360..45c2e8c95 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -44,7 +44,7 @@ The calling application may pass additional curl_waitfd structures which are
similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
On completion, if \fInumfds\fP is non-NULL, it will be populated with the
-total number of file descriptors on which interesting events occured. This
+total number of file descriptors on which interesting events occurred. This
number can include both libcurl internal descriptors as well as descriptors
provided in \fIextra_fds\fP.
diff --git a/docs/libcurl/curl_multi_wait.html b/docs/libcurl/curl_multi_wait.html
index fa10dee72..9e85816b1 100644
--- a/docs/libcurl/curl_multi_wait.html
+++ b/docs/libcurl/curl_multi_wait.html
@@ -4,15 +4,20 @@
<title>curl_multi_wait man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,27 +52,28 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_multi_wait - polls on all easy handles in a multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_wait(CURLM *multi_handle,
- &nbsp; struct curl_waitfd extra_fds[],
- &nbsp; unsigned int extra_nfds,
- &nbsp; int timeout_ms,
- &nbsp; int *numfds);
- <p class="level0"></pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_wait(CURLM *multi_handle,
+&nbsp; struct curl_waitfd extra_fds[],
+&nbsp; unsigned int extra_nfds,
+&nbsp; int timeout_ms,
+&nbsp; int *numfds);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0"><a Class="emphasis" href="./curl_multi_wait.html">curl_multi_wait</a> polls all file descriptors used by the curl easy handles contained in the given multi handle set. It will block until activity is detected on at least one of the handles or <span Class="emphasis">timeout_ms</span> has passed. Alternatively, if the multi handle has a pending internal timeout that has a shorter expiry time than <span Class="emphasis">timeout_ms</span>, that shorter time will be used instead to make sure timeout accuracy is reasonably kept.
<p class="level0">The calling application may pass additional curl_waitfd structures which are similar to <span Class="emphasis">poll(2)</span>'s pollfd structure to be waited on in the same call.
-<p class="level0">On completion, if <span Class="emphasis">numfds</span> is non-NULL, it will be populated with the total number of file descriptors on which interesting events occured. This number can include both libcurl internal descriptors as well as descriptors provided in <span Class="emphasis">extra_fds</span>.
+<p class="level0">On completion, if <span Class="emphasis">numfds</span> is non-NULL, it will be populated with the total number of file descriptors on which interesting events occurred. This number can include both libcurl internal descriptors as well as descriptors provided in <span Class="emphasis">extra_fds</span>.
<p class="level0">If no extra file descriptors are provided and libcurl has no file descriptor to offer to wait for, this function will return immediately.
<p class="level0">This function is encouraged to be used instead of select(3) when using the multi interface to allow applications to easier circumvent the common problem with 1024 maximum file descriptors. <a name="curlwaitfd"></a><h2 class="nroffsh">curl_waitfd</h2>
-<p class="level0"><pre>
-<p class="level0">struct curl_waitfd {
- &nbsp; curl_socket_t fd;
- &nbsp; short events;
- &nbsp; short revents;
- };
- </pre>
+<p class="level0"><pre class="level0">
+struct curl_waitfd {
+&nbsp; curl_socket_t fd;
+&nbsp; short events;
+&nbsp; short revents;
+};
+</pre>
<p class="level0">
<p class="level0"><a name="CURLWAITPOLLIN"></a><span class="nroffip">CURL_WAIT_POLLIN</span>
diff --git a/docs/libcurl/curl_multi_wait.pdf b/docs/libcurl/curl_multi_wait.pdf
index 1c65e52af..3fe2fd007 100644
--- a/docs/libcurl/curl_multi_wait.pdf
+++ b/docs/libcurl/curl_multi_wait.pdf
Binary files differ
diff --git a/docs/libcurl/curl_share_cleanup.html b/docs/libcurl/curl_share_cleanup.html
index 55d71742d..5c8d071e8 100644
--- a/docs/libcurl/curl_share_cleanup.html
+++ b/docs/libcurl/curl_share_cleanup.html
@@ -4,15 +4,20 @@
<title>curl_share_cleanup man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_share_cleanup.pdf b/docs/libcurl/curl_share_cleanup.pdf
index 8aa84336f..ce11d4bca 100644
--- a/docs/libcurl/curl_share_cleanup.pdf
+++ b/docs/libcurl/curl_share_cleanup.pdf
Binary files differ
diff --git a/docs/libcurl/curl_share_init.html b/docs/libcurl/curl_share_init.html
index aa7f54cef..d1018149b 100644
--- a/docs/libcurl/curl_share_init.html
+++ b/docs/libcurl/curl_share_init.html
@@ -4,15 +4,20 @@
<title>curl_share_init man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_share_init.pdf b/docs/libcurl/curl_share_init.pdf
index 026cc7170..c922db596 100644
--- a/docs/libcurl/curl_share_init.pdf
+++ b/docs/libcurl/curl_share_init.pdf
Binary files differ
diff --git a/docs/libcurl/curl_share_setopt.html b/docs/libcurl/curl_share_setopt.html
index 9b36241c4..b410010bc 100644
--- a/docs/libcurl/curl_share_setopt.html
+++ b/docs/libcurl/curl_share_setopt.html
@@ -4,15 +4,20 @@
<title>curl_share_setopt man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_share_setopt.pdf b/docs/libcurl/curl_share_setopt.pdf
index dfa711b3b..a6798b69e 100644
--- a/docs/libcurl/curl_share_setopt.pdf
+++ b/docs/libcurl/curl_share_setopt.pdf
Binary files differ
diff --git a/docs/libcurl/curl_share_strerror.html b/docs/libcurl/curl_share_strerror.html
index 7dc54235a..4d0245e50 100644
--- a/docs/libcurl/curl_share_strerror.html
+++ b/docs/libcurl/curl_share_strerror.html
@@ -4,15 +4,20 @@
<title>curl_share_strerror man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,8 +52,8 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">curl_share_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span>
+<p class="level0"><pre class="level0">
+<span Class="bold">#include &lt;curl/curl.h&gt;</span>
<span Class="bold">const char *curl_share_strerror(CURLSHcode errornum );</span>
</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
diff --git a/docs/libcurl/curl_share_strerror.pdf b/docs/libcurl/curl_share_strerror.pdf
index 99d3c2e44..536ea8a80 100644
--- a/docs/libcurl/curl_share_strerror.pdf
+++ b/docs/libcurl/curl_share_strerror.pdf
Binary files differ
diff --git a/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index 529560e8a..1a0a65796 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -46,6 +46,10 @@ pointer is returned.
struct curl_slist *slist=NULL;
slist = curl_slist_append(slist, "pragma:");
+
+ if (slist == NULL)
+ return -1;
+
curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
curl_easy_perform(handle);
diff --git a/docs/libcurl/curl_slist_append.html b/docs/libcurl/curl_slist_append.html
index 413477709..3d7b0575c 100644
--- a/docs/libcurl/curl_slist_append.html
+++ b/docs/libcurl/curl_slist_append.html
@@ -4,15 +4,20 @@
<title>curl_slist_append man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -53,14 +58,21 @@ p.roffit {
<p class="level0">curl_slist_append() appends a specified string to a linked list of strings. The existing <span Class="emphasis">list</span> should be passed as the first argument while the new list is returned from this function. The specified <span Class="emphasis">string</span> has been appended when this function returns. curl_slist_append() copies the string.
<p class="level0">The list should be freed again (after usage) with <a Class="bold" href="./curl_slist_free_all.html">curl_slist_free_all</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">A null pointer is returned if anything went wrong, otherwise the new list pointer is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">&nbsp;CURL handle;
- &nbsp;struct curl_slist *slist=NULL;
- <p class="level0">&nbsp;slist = curl_slist_append(slist, "pragma:");
- &nbsp;curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
- <p class="level0">&nbsp;curl_easy_perform(handle);
- <p class="level0">&nbsp;curl_slist_free_all(slist); /* free the list again */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;CURL handle;
+&nbsp;struct curl_slist *slist=NULL;
+&nbsp;
+&nbsp;slist = curl_slist_append(slist, "pragma:");
+&nbsp;
+&nbsp;if (slist == NULL)
+&nbsp; return -1;
+&nbsp;
+&nbsp;curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
+&nbsp;
+&nbsp;curl_easy_perform(handle);
+&nbsp;
+&nbsp;curl_slist_free_all(slist); /* free the list again */
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./curl_slist_free_all.html">curl_slist_free_all</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/curl_slist_append.pdf b/docs/libcurl/curl_slist_append.pdf
index 740f9a294..fc2963868 100644
--- a/docs/libcurl/curl_slist_append.pdf
+++ b/docs/libcurl/curl_slist_append.pdf
Binary files differ
diff --git a/docs/libcurl/curl_slist_free_all.html b/docs/libcurl/curl_slist_free_all.html
index f2f4084f1..d6fc3ffaa 100644
--- a/docs/libcurl/curl_slist_free_all.html
+++ b/docs/libcurl/curl_slist_free_all.html
@@ -4,15 +4,20 @@
<title>curl_slist_free_all man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_slist_free_all.pdf b/docs/libcurl/curl_slist_free_all.pdf
index f7cf88bca..469e9bb91 100644
--- a/docs/libcurl/curl_slist_free_all.pdf
+++ b/docs/libcurl/curl_slist_free_all.pdf
@@ -62,12 +62,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:46+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:17:46+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:03+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:03+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6013794a-cf2b-11ef-0000-224f381b10d2'/>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:7592967e-78d5-11f0-0000-224f381b10d2'/>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -76,9 +76,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091746+01'00')
-/ModDate(D:20150108091746+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081103+02'00')
+/ModDate(D:20150812081103+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 14
@@ -98,7 +98,7 @@ xref
0000001254 00000 n
trailer
<< /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<DB6875C734A7401EEB3BB1ED327E3A46><DB6875C734A7401EEB3BB1ED327E3A46>]
+/ID [<D9B4DC6DEE3C38505572D5178C4C423B><D9B4DC6DEE3C38505572D5178C4C423B>]
>>
startxref
2831
diff --git a/docs/libcurl/curl_strequal.html b/docs/libcurl/curl_strequal.html
index c4f6b550e..86f9a363b 100644
--- a/docs/libcurl/curl_strequal.html
+++ b/docs/libcurl/curl_strequal.html
@@ -4,15 +4,20 @@
<title>curl_strequal man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_strequal.pdf b/docs/libcurl/curl_strequal.pdf
index 9618b8e40..4a9e5ed85 100644
--- a/docs/libcurl/curl_strequal.pdf
+++ b/docs/libcurl/curl_strequal.pdf
Binary files differ
diff --git a/docs/libcurl/curl_unescape.html b/docs/libcurl/curl_unescape.html
index e8180b28a..f1e4ff0d1 100644
--- a/docs/libcurl/curl_unescape.html
+++ b/docs/libcurl/curl_unescape.html
@@ -4,15 +4,20 @@
<title>curl_unescape man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_unescape.pdf b/docs/libcurl/curl_unescape.pdf
index d3f74c13c..648ff3f01 100644
--- a/docs/libcurl/curl_unescape.pdf
+++ b/docs/libcurl/curl_unescape.pdf
Binary files differ
diff --git a/docs/libcurl/curl_version.html b/docs/libcurl/curl_version.html
index ab308d04b..354bf9298 100644
--- a/docs/libcurl/curl_version.html
+++ b/docs/libcurl/curl_version.html
@@ -4,15 +4,20 @@
<title>curl_version man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/curl_version.pdf b/docs/libcurl/curl_version.pdf
index 81f0d9c45..e57c8cca8 100644
--- a/docs/libcurl/curl_version.pdf
+++ b/docs/libcurl/curl_version.pdf
Binary files differ
diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index 1b8f9c119..e9d5ab704 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -57,7 +57,7 @@ typedef struct {
char *ssl_version; /* human readable string */
long ssl_version_num; /* not used, always zero */
const char *libz_version; /* human readable string */
- const char **protocols; /* list of protocols */
+ const char * const *protocols; /* protocols */
/* when 'age' is 1 or higher, the members below also exist: */
const char *ares; /* human readable string */
diff --git a/docs/libcurl/curl_version_info.html b/docs/libcurl/curl_version_info.html
index 793fc2ac7..4c39887ea 100644
--- a/docs/libcurl/curl_version_info.html
+++ b/docs/libcurl/curl_version_info.html
@@ -4,15 +4,20 @@
<title>curl_version_info man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -54,29 +59,35 @@ p.roffit {
<p class="level0">&nbsp; data = curl_version_info(CURLVERSION_NOW);
<p class="level0">Applications should use this information to judge if things are possible to do or not, instead of using compile-time checks, as dynamic/DLL libraries can be changed independent of applications.
<p class="level0">The curl_version_info_data struct looks like this
-<p class="level0"><pre>
-<p class="level0">typedef struct {
- &nbsp; CURLversion age; /* see description below */
- <p class="level0">&nbsp; /* when 'age' is 0 or higher, the members below also exist: */
- &nbsp; const char *version; /* human readable string */
- &nbsp; unsigned int version_num; /* numeric representation */
- &nbsp; const char *host; /* human readable string */
- &nbsp; int features; /* bitmask, see below */
- &nbsp; char *ssl_version; /* human readable string */
- &nbsp; long ssl_version_num; /* not used, always zero */
- &nbsp; const char *libz_version; /* human readable string */
- &nbsp; const char **protocols; /* list of protocols */
- <p class="level0">&nbsp; /* when 'age' is 1 or higher, the members below also exist: */
- &nbsp; const char *ares; /* human readable string */
- &nbsp; int ares_num; /* number */
- <p class="level0">&nbsp; /* when 'age' is 2 or higher, the member below also exists: */
- &nbsp; const char *libidn; /* human readable string */
- <p class="level0">&nbsp; /* when 'age' is 3 or higher (7.16.1 or later), the members below also
- &nbsp; exist */
- &nbsp; int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */
- <p class="level0">&nbsp; const char *libssh_version; /* human readable string */
- <p class="level0">} curl_version_info_data;
- </pre>
+<p class="level0"><pre class="level0">
+typedef struct {
+&nbsp; CURLversion age; /* see description below */
+&nbsp;
+&nbsp; /* when 'age' is 0 or higher, the members below also exist: */
+&nbsp; const char *version; /* human readable string */
+&nbsp; unsigned int version_num; /* numeric representation */
+&nbsp; const char *host; /* human readable string */
+&nbsp; int features; /* bitmask, see below */
+&nbsp; char *ssl_version; /* human readable string */
+&nbsp; long ssl_version_num; /* not used, always zero */
+&nbsp; const char *libz_version; /* human readable string */
+&nbsp; const char * const *protocols; /* protocols */
+&nbsp;
+&nbsp; /* when 'age' is 1 or higher, the members below also exist: */
+&nbsp; const char *ares; /* human readable string */
+&nbsp; int ares_num; /* number */
+&nbsp;
+&nbsp; /* when 'age' is 2 or higher, the member below also exists: */
+&nbsp; const char *libidn; /* human readable string */
+&nbsp;
+&nbsp; /* when 'age' is 3 or higher (7.16.1 or later), the members below also
+&nbsp; exist */
+&nbsp; int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */
+&nbsp;
+&nbsp; const char *libssh_version; /* human readable string */
+&nbsp;
+} curl_version_info_data;
+</pre>
<p class="level0">
<p class="level0"><span Class="emphasis">age</span> describes what the age of this struct is. The number depends on how new the libcurl you're using is. You are however guaranteed to get a struct that you have a matching struct for in the header, as you tell libcurl your "age" with the input argument.
diff --git a/docs/libcurl/curl_version_info.pdf b/docs/libcurl/curl_version_info.pdf
index 2f9b24fe0..832e238b2 100644
--- a/docs/libcurl/curl_version_info.pdf
+++ b/docs/libcurl/curl_version_info.pdf
Binary files differ
diff --git a/docs/libcurl/index.html b/docs/libcurl/index.html
index ca773135b..f46cc85f7 100644
--- a/docs/libcurl/index.html
+++ b/docs/libcurl/index.html
@@ -17,6 +17,7 @@
<br><a href="libcurl-share.html">libcurl-share</a>
<br><a href="libcurl-errors.html">libcurl-errors</a>
<br><a href="libcurl-tutorial.html">libcurl-tutorial</a>
+<br><a href="libcurl-thread.html">libcurl-thread</a>
<H2>Library Functions (A-Z)</H2>
<a href="curl_easy_cleanup.html">curl_easy_cleanup</A>
diff --git a/docs/libcurl/libcurl-easy.html b/docs/libcurl/libcurl-easy.html
index fb1de25df..20b4600d7 100644
--- a/docs/libcurl/libcurl-easy.html
+++ b/docs/libcurl/libcurl-easy.html
@@ -4,15 +4,20 @@
<title>libcurl man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/libcurl-easy.pdf b/docs/libcurl/libcurl-easy.pdf
index 1539974df..2e0ad80fc 100644
--- a/docs/libcurl/libcurl-easy.pdf
+++ b/docs/libcurl/libcurl-easy.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index 07091b5e5..3828996f8 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -74,7 +74,7 @@ After having sent the FTP password to the server, libcurl expects a proper
reply. This error code indicates that an unexpected code was returned.
.IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
During an active FTP session while waiting for the server to connect, the
-\fICURLOPT_ACCEPTTIMOUT_MS(3)\fP (or the internal default) timeout expired.
+\fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP (or the internal default) timeout expired.
.IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
libcurl failed to get a sensible result back from the server as a response to
either a PASV or a EPSV command. The server is flawed.
diff --git a/docs/libcurl/libcurl-errors.html b/docs/libcurl/libcurl-errors.html
index 8c9f47b6e..e6cb9ea23 100644
--- a/docs/libcurl/libcurl-errors.html
+++ b/docs/libcurl/libcurl-errors.html
@@ -4,15 +4,20 @@
<title>libcurl-errors man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -75,7 +80,7 @@ p.roffit {
<p class="level0"><a name="CURLEFTPWEIRDPASSREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASS_REPLY (11)</span>
<p class="level1">After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned.
<p class="level0"><a name="CURLEFTPACCEPTTIMEOUT"></a><span class="nroffip">CURLE_FTP_ACCEPT_TIMEOUT (12)</span>
-<p class="level1">During an active FTP session while waiting for the server to connect, the <span Class="emphasis">CURLOPT_ACCEPTTIMOUT_MS(3)</span> (or the internal default) timeout expired.
+<p class="level1">During an active FTP session while waiting for the server to connect, the <span Class="emphasis">CURLOPT_ACCEPTTIMEOUT_MS(3)</span> (or the internal default) timeout expired.
<p class="level0"><a name="CURLEFTPWEIRDPASVREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASV_REPLY (13)</span>
<p class="level1">libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed.
<p class="level0"><a name="CURLEFTPWEIRD227FORMAT"></a><span class="nroffip">CURLE_FTP_WEIRD_227_FORMAT (14)</span>
diff --git a/docs/libcurl/libcurl-errors.pdf b/docs/libcurl/libcurl-errors.pdf
index 351c1b8cd..08d2554d6 100644
--- a/docs/libcurl/libcurl-errors.pdf
+++ b/docs/libcurl/libcurl-errors.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index 770d4a561..b745b7234 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -51,28 +51,27 @@ To use the multi interface, you must first create a 'multi handle' with
\fIcurl_multi_init(3)\fP. This handle is then used as input to all further
curl_multi_* functions.
-With a multi handle and the multi interface you can do any amount of
-simultaneous transfers in parallel. Each single transfer is built up around an
-easy handle. You must create the easy handles you need, and setup the
-appropriate options for each easy handle, as outlined in the \fIlibcurl(3)\fP
-man page, using \fIcurl_easy_setopt(3)\fP.
+With a multi handle and the multi interface you can do several simultaneous
+transfers in parallel. Each single transfer is built up around an easy
+handle. You create all the easy handles you need, and setup the appropriate
+options for each easy handle using \fIcurl_easy_setopt(3)\fP.
There are two flavours of the multi interface, the select() oriented one and
-the event based one we called multi_socket. You will benefit from reading
-through the description of both versions to full understand how they work and
+the event based one we call multi_socket. You will benefit from reading
+through the description of both versions to fully understand how they work and
differentiate. We start out with the select() oriented version.
-When an easy handle is setup for a transfer, then instead of using
+When an easy handle is setup and ready for transfer, then instead of using
\fIcurl_easy_perform(3)\fP like when using the easy interface for transfers,
you should add the easy handle to the multi handle with
-\fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a
-\'multi stack\' because of the fact that it may hold a large amount of easy
-handles.
+\fIcurl_multi_add_handle(3)\fP. You can add more easy handles to a multi
+handle at any point, even if other transfers are already running.
Should you change your mind, the easy handle is again removed from the multi
stack using \fIcurl_multi_remove_handle(3)\fP. Once removed from the multi
handle, you can again use other easy interface functions like
-\fIcurl_easy_perform(3)\fP on the handle or whatever you think is necessary.
+\fIcurl_easy_perform(3)\fP on the handle or whatever you think is
+necessary. You can remove handles at any point in time during transfers.
Adding the easy handle to the multi handle does not start the transfer.
Remember that one of the main ideas with this interface is to let your
@@ -84,16 +83,16 @@ current transfers in the multi stack that are ready to transfer anything. It
may be all, it may be none. When there's nothing more to do for now, it
returns back to the calling application.
-Your application can acquire knowledge from libcurl when it would like to get
-invoked to transfer data, so that you don't have to busy-loop and call that
-\fIcurl_multi_perform(3)\fP like crazy. \fIcurl_multi_fdset(3)\fP offers an
-interface using which you can extract fd_sets from libcurl to use in select()
-or poll() calls in order to get to know when the transfers in the multi stack
-might need attention. This also makes it very easy for your program to wait
-for input on your own private file descriptors at the same time or perhaps
-timeout every now and then, should you want that. \fIcurl_multi_timeout(3)\fP
-also helps you with providing a suitable timeout period for your select()
-call.
+Your application extracts info from libcurl about when it would like to get
+invoked to transfer data or do other work. The most convenient way is to use
+\fIcurl_multi_wait(3)\fP that will help you wait until the application should
+call libcurl again. The older API to accomplish the same thing is
+\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
+select() or poll() calls in order to get to know when the transfers in the
+multi stack might need attention. Both these APIs allow for your program to
+wait for input on your own private file descriptors at the same time
+\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
+period for your select() calls.
\fIcurl_multi_perform(3)\fP stores the number of still running transfers in
one of its input arguments, and by reading that you can figure out when all
@@ -114,9 +113,9 @@ the multi stack. You need to first remove the easy handle with
\fIcurl_easy_cleanup(3)\fP, or possibly set new options to it and add it again
with \fIcurl_multi_add_handle(3)\fP to start another transfer.
-When all transfers in the multi stack are done, cleanup the multi handle with
+When all transfers in the multi stack are done, close the multi handle with
\fIcurl_multi_cleanup(3)\fP. Be careful and please note that you \fBMUST\fP
-invoke separate \fIcurl_easy_cleanup(3)\fP calls on every single easy handle
+invoke separate \fIcurl_easy_cleanup(3)\fP calls for every single easy handle
to clean them up properly.
If you want to re-use an easy handle that was added to the multi handle for
@@ -136,7 +135,7 @@ normal multi interface. Then you also set two callbacks with the
CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to
\fIcurl_multi_setopt(3)\fP. They are two callback functions that libcurl will
call with information about what sockets to wait for, and for what activity,
-and what the curret timeout time is - if that expires libcurl should be
+and what the current timeout time is - if that expires libcurl should be
notified.
The multi_socket API is designed to inform your application about which
diff --git a/docs/libcurl/libcurl-multi.html b/docs/libcurl/libcurl-multi.html
index a16f3e6a3..6aad3b83a 100644
--- a/docs/libcurl/libcurl-multi.html
+++ b/docs/libcurl/libcurl-multi.html
@@ -4,15 +4,20 @@
<title>libcurl-multi man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -55,20 +60,20 @@ p.roffit {
<p class="level0">3. Enable the application to wait for action on its own file descriptors and curl's file descriptors simultaneous easily.
<p class="level0">4. Enable event-based handling and scaling transfers up to and beyond thousands of parallel connections. <a name="ONE"></a><h2 class="nroffsh">ONE MULTI HANDLE MANY EASY HANDLES</h2>
<p class="level0">To use the multi interface, you must first create a 'multi handle' with <a Class="emphasis" href="./curl_multi_init.html">curl_multi_init</a>. This handle is then used as input to all further curl_multi_* functions.
-<p class="level0">With a multi handle and the multi interface you can do any amount of simultaneous transfers in parallel. Each single transfer is built up around an easy handle. You must create the easy handles you need, and setup the appropriate options for each easy handle, as outlined in the <a Class="emphasis" href="./libcurl.html">libcurl</a> man page, using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>.
-<p class="level0">There are two flavours of the multi interface, the select() oriented one and the event based one we called multi_socket. You will benefit from reading through the description of both versions to full understand how they work and differentiate. We start out with the select() oriented version.
-<p class="level0">When an easy handle is setup for a transfer, then instead of using <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> like when using the easy interface for transfers, you should add the easy handle to the multi handle with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>. The multi handle is sometimes referred to as a &acute;multi stack&acute; because of the fact that it may hold a large amount of easy handles.
-<p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>. Once removed from the multi handle, you can again use other easy interface functions like <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on the handle or whatever you think is necessary.
+<p class="level0">With a multi handle and the multi interface you can do several simultaneous transfers in parallel. Each single transfer is built up around an easy handle. You create all the easy handles you need, and setup the appropriate options for each easy handle using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>.
+<p class="level0">There are two flavours of the multi interface, the select() oriented one and the event based one we call multi_socket. You will benefit from reading through the description of both versions to fully understand how they work and differentiate. We start out with the select() oriented version.
+<p class="level0">When an easy handle is setup and ready for transfer, then instead of using <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> like when using the easy interface for transfers, you should add the easy handle to the multi handle with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>. You can add more easy handles to a multi handle at any point, even if other transfers are already running.
+<p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>. Once removed from the multi handle, you can again use other easy interface functions like <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on the handle or whatever you think is necessary. You can remove handles at any point in time during transfers.
<p class="level0">Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your application drive. You drive the transfers by invoking <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. libcurl will then transfer data if there is anything available to transfer. It'll use the callbacks and everything else you have setup in the individual easy handles. It'll transfer data on all current transfers in the multi stack that are ready to transfer anything. It may be all, it may be none. When there's nothing more to do for now, it returns back to the calling application.
-<p class="level0">Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> like crazy. <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> also helps you with providing a suitable timeout period for your select() call.
+<p class="level0">Your application extracts info from libcurl about when it would like to get invoked to transfer data or do other work. The most convenient way is to use <a Class="emphasis" href="./curl_multi_wait.html">curl_multi_wait</a> that will help you wait until the application should call libcurl again. The older API to accomplish the same thing is <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> that extracts fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. Both these APIs allow for your program to wait for input on your own private file descriptors at the same time <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> also helps you with providing a suitable timeout period for your select() calls.
<p class="level0"><a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean successful. One or more of the transfers may have failed. Tracking when this number changes, you know when one or more transfers are done.
<p class="level0">To get information about completed transfers, to figure out success or not and similar, <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> should be called. It can return a message about a current or previous transfer. Repeated invokes of the function get more messages until the message queue is empty. The information you receive there includes an easy handle pointer which you may use to identify which easy handle the information regards.
<p class="level0">When a single transfer is completed, the easy handle is still left added to the multi stack. You need to first remove the easy handle with <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> and then close it with <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, or possibly set new options to it and add it again with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a> to start another transfer.
-<p class="level0">When all transfers in the multi stack are done, cleanup the multi handle with <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> calls on every single easy handle to clean them up properly.
+<p class="level0">When all transfers in the multi stack are done, close the multi handle with <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> calls for every single easy handle to clean them up properly.
<p class="level0">If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). <a name="MULTISOCKET"></a><h2 class="nroffsh">MULTI_SOCKET</h2>
<p class="level0"><a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function offers a way for applications to not only avoid being forced to use select(), but it also offers a much more high-performance API that will make a significant difference for applications using large numbers of simultaneous connections.
<p class="level0"><a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> is then used instead of <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>.
-<p class="level0">When using this API, you add easy handles to the multi handle just as with the normal multi interface. Then you also set two callbacks with the CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They are two callback functions that libcurl will call with information about what sockets to wait for, and for what activity, and what the curret timeout time is - if that expires libcurl should be notified.
+<p class="level0">When using this API, you add easy handles to the multi handle just as with the normal multi interface. Then you also set two callbacks with the CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They are two callback functions that libcurl will call with information about what sockets to wait for, and for what activity, and what the current timeout time is - if that expires libcurl should be notified.
<p class="level0">The multi_socket API is designed to inform your application about which sockets libcurl is currently using and for what activities (read and/or write) on those sockets your application is expected to wait for.
<p class="level0">Your application must make sure to receive all sockets informed about in the CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given activity on them. When a socket has the given activity, you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> specifying which socket and action there are.
<p class="level0">The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that timeout expires, your application should call the <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function saying it was due to a timeout.
@@ -76,14 +81,14 @@ p.roffit {
<p class="level0">When you've added your initial set of handles, you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with CURL_SOCKET_TIMEOUT set in the sockfd argument, and you'll get callbacks call that sets you up and you then continue to call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> accordingly when you get activity on the sockets you've been asked to wait on, or if the timeout timer expires.
<p class="level0">You can poll <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to see if any transfer has completed, as it then has a message saying so. <a name="BLOCKING"></a><h2 class="nroffsh">BLOCKING</h2>
<p class="level0">A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions:
-<p class="level0"><pre>
-<p class="level0">&nbsp;- Name resolves unless the c-ares or threaded-resolver backends are used
- &nbsp;- NSS SSL connections
- &nbsp;- HTTP proxy CONNECT operations
- &nbsp;- SOCKS proxy handshakes
- &nbsp;- file:// transfers
- &nbsp;- TELNET transfers
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;- Name resolves unless the c-ares or threaded-resolver backends are used
+&nbsp;- NSS SSL connections
+&nbsp;- HTTP proxy CONNECT operations
+&nbsp;- SOCKS proxy handshakes
+&nbsp;- file:// transfers
+&nbsp;- TELNET transfers
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./libcurl-easy.html">libcurl-easy</a>, <a Class="manpage" href="./libcurl.html">libcurl</a>, <p class="roffit">
diff --git a/docs/libcurl/libcurl-multi.pdf b/docs/libcurl/libcurl-multi.pdf
index ac6bb1f06..2acd7efde 100644
--- a/docs/libcurl/libcurl-multi.pdf
+++ b/docs/libcurl/libcurl-multi.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl-share.html b/docs/libcurl/libcurl-share.html
index 6aa66c8e9..448d8bb35 100644
--- a/docs/libcurl/libcurl-share.html
+++ b/docs/libcurl/libcurl-share.html
@@ -4,15 +4,20 @@
<title>libcurl-share man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/docs/libcurl/libcurl-share.pdf b/docs/libcurl/libcurl-share.pdf
index f7bde5414..5544639de 100644
--- a/docs/libcurl/libcurl-share.pdf
+++ b/docs/libcurl/libcurl-share.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl-symbols.3 b/docs/libcurl/libcurl-symbols.3
new file mode 100644
index 000000000..b7097e5d8
--- /dev/null
+++ b/docs/libcurl/libcurl-symbols.3
@@ -0,0 +1,1616 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.TH libcurl-symbols 3 "Aug 12, 2015" "libcurl 7.41.0" "libcurl symbols"
+.SH NAME
+libcurl-symbols \- libcurl symbol version information
+.SH "libcurl symbols"
+This man page details version information for public symbols provided in the
+libcurl header files. This lists the first version in which the symbol was
+introduced and for some symbols two additional information pieces:
+
+The first version in which the symbol is marked "deprecated" - meaning that
+since that version no new code should be written to use the symbol as it is
+marked for getting removed in a future.
+
+The last version that featured the specific symbol. Using the symbol in source
+code will make it no longer compile error-free after that specified version.
+
+This man page is automatically generated from the symbols-in-versions file.
+.IP CURLAUTH_ANY
+Introduced in 7.10.6
+.IP CURLAUTH_ANYSAFE
+Introduced in 7.10.6
+.IP CURLAUTH_BASIC
+Introduced in 7.10.6
+.IP CURLAUTH_DIGEST
+Introduced in 7.10.6
+.IP CURLAUTH_DIGEST_IE
+Introduced in 7.19.3
+.IP CURLAUTH_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURLAUTH_NEGOTIATE
+Introduced in 7.38.0
+.IP CURLAUTH_NONE
+Introduced in 7.10.6
+.IP CURLAUTH_NTLM
+Introduced in 7.10.6
+.IP CURLAUTH_NTLM_WB
+Introduced in 7.22.0
+.IP CURLAUTH_ONLY
+Introduced in 7.21.3
+.IP CURLCLOSEPOLICY_CALLBACK
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_LEAST_RECENTLY_USED
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_LEAST_TRAFFIC
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_NONE
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_OLDEST
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_SLOWEST
+Introduced in 7.7
+.IP CURLE_ABORTED_BY_CALLBACK
+Introduced in 7.1
+.IP CURLE_AGAIN
+Introduced in 7.18.2
+.IP CURLE_ALREADY_COMPLETE
+Introduced in 7.7.2
+.IP CURLE_BAD_CALLING_ORDER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_BAD_CONTENT_ENCODING
+Introduced in 7.10
+.IP CURLE_BAD_DOWNLOAD_RESUME
+Introduced in 7.10
+.IP CURLE_BAD_FUNCTION_ARGUMENT
+Introduced in 7.1
+.IP CURLE_BAD_PASSWORD_ENTERED
+Introduced in 7.4.2
+Deprecated since 7.17.0
+.IP CURLE_CHUNK_FAILED
+Introduced in 7.21.0
+.IP CURLE_CONV_FAILED
+Introduced in 7.15.4
+.IP CURLE_CONV_REQD
+Introduced in 7.15.4
+.IP CURLE_COULDNT_CONNECT
+Introduced in 7.1
+.IP CURLE_COULDNT_RESOLVE_HOST
+Introduced in 7.1
+.IP CURLE_COULDNT_RESOLVE_PROXY
+Introduced in 7.1
+.IP CURLE_FAILED_INIT
+Introduced in 7.1
+.IP CURLE_FILESIZE_EXCEEDED
+Introduced in 7.10.8
+.IP CURLE_FILE_COULDNT_READ_FILE
+Introduced in 7.1
+.IP CURLE_FTP_ACCEPT_FAILED
+Introduced in 7.24.0
+.IP CURLE_FTP_ACCEPT_TIMEOUT
+Introduced in 7.24.0
+.IP CURLE_FTP_ACCESS_DENIED
+Introduced in 7.1
+.IP CURLE_FTP_BAD_DOWNLOAD_RESUME
+Introduced in 7.1
+Deprecated since 7.1
+.IP CURLE_FTP_BAD_FILE_LIST
+Introduced in 7.21.0
+.IP CURLE_FTP_CANT_GET_HOST
+Introduced in 7.1
+.IP CURLE_FTP_CANT_RECONNECT
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_GET_SIZE
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_RETR_FILE
+Introduced in 7.1
+.IP CURLE_FTP_COULDNT_SET_ASCII
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_SET_BINARY
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_SET_TYPE
+Introduced in 7.17.0
+.IP CURLE_FTP_COULDNT_STOR_FILE
+Introduced in 7.1
+.IP CURLE_FTP_COULDNT_USE_REST
+Introduced in 7.1
+.IP CURLE_FTP_PARTIAL_FILE
+Introduced in 7.1
+Deprecated since 7.1
+.IP CURLE_FTP_PORT_FAILED
+Introduced in 7.1
+.IP CURLE_FTP_PRET_FAILED
+Introduced in 7.20.0
+.IP CURLE_FTP_QUOTE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_SSL_FAILED
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLE_FTP_USER_PASSWORD_INCORRECT
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_WEIRD_227_FORMAT
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_PASS_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_PASV_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_SERVER_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_USER_REPLY
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_WRITE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FUNCTION_NOT_FOUND
+Introduced in 7.1
+.IP CURLE_GOT_NOTHING
+Introduced in 7.9.1
+.IP CURLE_HTTP2
+Introduced in 7.38.0
+.IP CURLE_HTTP_NOT_FOUND
+Introduced in 7.1
+.IP CURLE_HTTP_PORT_FAILED
+Introduced in 7.3
+Deprecated since 7.12.0
+.IP CURLE_HTTP_POST_ERROR
+Introduced in 7.1
+.IP CURLE_HTTP_RANGE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_HTTP_RETURNED_ERROR
+Introduced in 7.10.3
+.IP CURLE_INTERFACE_FAILED
+Introduced in 7.12.0
+.IP CURLE_LDAP_CANNOT_BIND
+Introduced in 7.1
+.IP CURLE_LDAP_INVALID_URL
+Introduced in 7.10.8
+.IP CURLE_LDAP_SEARCH_FAILED
+Introduced in 7.1
+.IP CURLE_LIBRARY_NOT_FOUND
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_LOGIN_DENIED
+Introduced in 7.13.1
+.IP CURLE_MALFORMAT_USER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_NOT_BUILT_IN
+Introduced in 7.21.5
+.IP CURLE_NO_CONNECTION_AVAILABLE
+Introduced in 7.30.0
+.IP CURLE_OK
+Introduced in 7.1
+.IP CURLE_OPERATION_TIMEDOUT
+Introduced in 7.10.2
+.IP CURLE_OPERATION_TIMEOUTED
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_OUT_OF_MEMORY
+Introduced in 7.1
+.IP CURLE_PARTIAL_FILE
+Introduced in 7.1
+.IP CURLE_PEER_FAILED_VERIFICATION
+Introduced in 7.17.1
+.IP CURLE_QUOTE_ERROR
+Introduced in 7.17.0
+.IP CURLE_RANGE_ERROR
+Introduced in 7.17.0
+.IP CURLE_READ_ERROR
+Introduced in 7.1
+.IP CURLE_RECV_ERROR
+Introduced in 7.10
+.IP CURLE_REMOTE_ACCESS_DENIED
+Introduced in 7.17.0
+.IP CURLE_REMOTE_DISK_FULL
+Introduced in 7.17.0
+.IP CURLE_REMOTE_FILE_EXISTS
+Introduced in 7.17.0
+.IP CURLE_REMOTE_FILE_NOT_FOUND
+Introduced in 7.16.1
+.IP CURLE_RTSP_CSEQ_ERROR
+Introduced in 7.20.0
+.IP CURLE_RTSP_SESSION_ERROR
+Introduced in 7.20.0
+.IP CURLE_SEND_ERROR
+Introduced in 7.10
+.IP CURLE_SEND_FAIL_REWIND
+Introduced in 7.12.3
+.IP CURLE_SHARE_IN_USE
+Introduced in 7.9.6
+Deprecated since 7.17.0
+.IP CURLE_SSH
+Introduced in 7.16.1
+.IP CURLE_SSL_CACERT
+Introduced in 7.10
+.IP CURLE_SSL_CACERT_BADFILE
+Introduced in 7.16.0
+.IP CURLE_SSL_CERTPROBLEM
+Introduced in 7.10
+.IP CURLE_SSL_CIPHER
+Introduced in 7.10
+.IP CURLE_SSL_CONNECT_ERROR
+Introduced in 7.1
+.IP CURLE_SSL_CRL_BADFILE
+Introduced in 7.19.0
+.IP CURLE_SSL_ENGINE_INITFAILED
+Introduced in 7.12.3
+.IP CURLE_SSL_ENGINE_NOTFOUND
+Introduced in 7.9.3
+.IP CURLE_SSL_ENGINE_SETFAILED
+Introduced in 7.9.3
+.IP CURLE_SSL_INVALIDCERTSTATUS
+Introduced in 7.41.0
+.IP CURLE_SSL_ISSUER_ERROR
+Introduced in 7.19.0
+.IP CURLE_SSL_PEER_CERTIFICATE
+Introduced in 7.8
+Deprecated since 7.17.1
+.IP CURLE_SSL_PINNEDPUBKEYNOTMATCH
+Introduced in 7.39.0
+.IP CURLE_SSL_SHUTDOWN_FAILED
+Introduced in 7.16.1
+.IP CURLE_TELNET_OPTION_SYNTAX
+Introduced in 7.7
+.IP CURLE_TFTP_DISKFULL
+Introduced in 7.15.0
+Deprecated since 7.17.0
+.IP CURLE_TFTP_EXISTS
+Introduced in 7.15.0
+Deprecated since 7.17.0
+.IP CURLE_TFTP_ILLEGAL
+Introduced in 7.15.0
+.IP CURLE_TFTP_NOSUCHUSER
+Introduced in 7.15.0
+.IP CURLE_TFTP_NOTFOUND
+Introduced in 7.15.0
+.IP CURLE_TFTP_PERM
+Introduced in 7.15.0
+.IP CURLE_TFTP_UNKNOWNID
+Introduced in 7.15.0
+.IP CURLE_TOO_MANY_REDIRECTS
+Introduced in 7.5
+.IP CURLE_UNKNOWN_OPTION
+Introduced in 7.21.5
+.IP CURLE_UNKNOWN_TELNET_OPTION
+Introduced in 7.7
+.IP CURLE_UNSUPPORTED_PROTOCOL
+Introduced in 7.1
+.IP CURLE_UPLOAD_FAILED
+Introduced in 7.16.3
+.IP CURLE_URL_MALFORMAT
+Introduced in 7.1
+.IP CURLE_URL_MALFORMAT_USER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_USE_SSL_FAILED
+Introduced in 7.17.0
+.IP CURLE_WRITE_ERROR
+Introduced in 7.1
+.IP CURLFILETYPE_DEVICE_BLOCK
+Introduced in 7.21.0
+.IP CURLFILETYPE_DEVICE_CHAR
+Introduced in 7.21.0
+.IP CURLFILETYPE_DIRECTORY
+Introduced in 7.21.0
+.IP CURLFILETYPE_DOOR
+Introduced in 7.21.0
+.IP CURLFILETYPE_FILE
+Introduced in 7.21.0
+.IP CURLFILETYPE_NAMEDPIPE
+Introduced in 7.21.0
+.IP CURLFILETYPE_SOCKET
+Introduced in 7.21.0
+.IP CURLFILETYPE_SYMLINK
+Introduced in 7.21.0
+.IP CURLFILETYPE_UNKNOWN
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_FILENAME
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_FILETYPE
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_GID
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_HLINKCOUNT
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_PERM
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_SIZE
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_TIME
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_UID
+Introduced in 7.21.0
+.IP CURLFORM_ARRAY
+Introduced in 7.9.1
+.IP CURLFORM_ARRAY_END
+Introduced in 7.9.1
+Deprecated since 7.9.5
+Last used in 7.9.5
+.IP CURLFORM_ARRAY_START
+Introduced in 7.9.1
+Deprecated since 7.9.5
+Last used in 7.9.5
+.IP CURLFORM_BUFFER
+Introduced in 7.9.8
+.IP CURLFORM_BUFFERLENGTH
+Introduced in 7.9.8
+.IP CURLFORM_BUFFERPTR
+Introduced in 7.9.8
+.IP CURLFORM_CONTENTHEADER
+Introduced in 7.9.3
+.IP CURLFORM_CONTENTSLENGTH
+Introduced in 7.9
+.IP CURLFORM_CONTENTTYPE
+Introduced in 7.9
+.IP CURLFORM_COPYCONTENTS
+Introduced in 7.9
+.IP CURLFORM_COPYNAME
+Introduced in 7.9
+.IP CURLFORM_END
+Introduced in 7.9
+.IP CURLFORM_FILE
+Introduced in 7.9
+.IP CURLFORM_FILECONTENT
+Introduced in 7.9.1
+.IP CURLFORM_FILENAME
+Introduced in 7.9.6
+.IP CURLFORM_NAMELENGTH
+Introduced in 7.9
+.IP CURLFORM_NOTHING
+Introduced in 7.9
+.IP CURLFORM_PTRCONTENTS
+Introduced in 7.9
+.IP CURLFORM_PTRNAME
+Introduced in 7.9
+.IP CURLFORM_STREAM
+Introduced in 7.18.2
+.IP CURLFTPAUTH_DEFAULT
+Introduced in 7.12.2
+.IP CURLFTPAUTH_SSL
+Introduced in 7.12.2
+.IP CURLFTPAUTH_TLS
+Introduced in 7.12.2
+.IP CURLFTPMETHOD_DEFAULT
+Introduced in 7.15.3
+.IP CURLFTPMETHOD_MULTICWD
+Introduced in 7.15.3
+.IP CURLFTPMETHOD_NOCWD
+Introduced in 7.15.3
+.IP CURLFTPMETHOD_SINGLECWD
+Introduced in 7.15.3
+.IP CURLFTPSSL_ALL
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTPSSL_CCC_ACTIVE
+Introduced in 7.16.2
+.IP CURLFTPSSL_CCC_NONE
+Introduced in 7.16.2
+.IP CURLFTPSSL_CCC_PASSIVE
+Introduced in 7.16.1
+.IP CURLFTPSSL_CONTROL
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTPSSL_NONE
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTPSSL_TRY
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTP_CREATE_DIR
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_NONE
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_RETRY
+Introduced in 7.19.4
+.IP CURLGSSAPI_DELEGATION_FLAG
+Introduced in 7.22.0
+.IP CURLGSSAPI_DELEGATION_NONE
+Introduced in 7.22.0
+.IP CURLGSSAPI_DELEGATION_POLICY_FLAG
+Introduced in 7.22.0
+.IP CURLHEADER_SEPARATE
+Introduced in 7.37.0
+.IP CURLHEADER_UNIFIED
+Introduced in 7.37.0
+.IP CURLINFO_APPCONNECT_TIME
+Introduced in 7.19.0
+.IP CURLINFO_CERTINFO
+Introduced in 7.19.1
+.IP CURLINFO_CONDITION_UNMET
+Introduced in 7.19.4
+.IP CURLINFO_CONNECT_TIME
+Introduced in 7.4.1
+.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
+Introduced in 7.6.1
+.IP CURLINFO_CONTENT_LENGTH_UPLOAD
+Introduced in 7.6.1
+.IP CURLINFO_CONTENT_TYPE
+Introduced in 7.9.4
+.IP CURLINFO_COOKIELIST
+Introduced in 7.14.1
+.IP CURLINFO_DATA_IN
+Introduced in 7.9.6
+.IP CURLINFO_DATA_OUT
+Introduced in 7.9.6
+.IP CURLINFO_DOUBLE
+Introduced in 7.4.1
+.IP CURLINFO_EFFECTIVE_URL
+Introduced in 7.4
+.IP CURLINFO_END
+Introduced in 7.9.6
+.IP CURLINFO_FILETIME
+Introduced in 7.5
+.IP CURLINFO_FTP_ENTRY_PATH
+Introduced in 7.15.4
+.IP CURLINFO_HEADER_IN
+Introduced in 7.9.6
+.IP CURLINFO_HEADER_OUT
+Introduced in 7.9.6
+.IP CURLINFO_HEADER_SIZE
+Introduced in 7.4.1
+.IP CURLINFO_HTTPAUTH_AVAIL
+Introduced in 7.10.8
+.IP CURLINFO_HTTP_CODE
+Introduced in 7.4.1
+Deprecated since 7.10.8
+.IP CURLINFO_HTTP_CONNECTCODE
+Introduced in 7.10.7
+.IP CURLINFO_LASTONE
+Introduced in 7.4.1
+.IP CURLINFO_LASTSOCKET
+Introduced in 7.15.2
+.IP CURLINFO_LOCAL_IP
+Introduced in 7.21.0
+.IP CURLINFO_LOCAL_PORT
+Introduced in 7.21.0
+.IP CURLINFO_LONG
+Introduced in 7.4.1
+.IP CURLINFO_MASK
+Introduced in 7.4.1
+.IP CURLINFO_NAMELOOKUP_TIME
+Introduced in 7.4.1
+.IP CURLINFO_NONE
+Introduced in 7.4.1
+.IP CURLINFO_NUM_CONNECTS
+Introduced in 7.12.3
+.IP CURLINFO_OS_ERRNO
+Introduced in 7.12.2
+.IP CURLINFO_PRETRANSFER_TIME
+Introduced in 7.4.1
+.IP CURLINFO_PRIMARY_IP
+Introduced in 7.19.0
+.IP CURLINFO_PRIMARY_PORT
+Introduced in 7.21.0
+.IP CURLINFO_PRIVATE
+Introduced in 7.10.3
+.IP CURLINFO_PROXYAUTH_AVAIL
+Introduced in 7.10.8
+.IP CURLINFO_REDIRECT_COUNT
+Introduced in 7.9.7
+.IP CURLINFO_REDIRECT_TIME
+Introduced in 7.9.7
+.IP CURLINFO_REDIRECT_URL
+Introduced in 7.18.2
+.IP CURLINFO_REQUEST_SIZE
+Introduced in 7.4.1
+.IP CURLINFO_RESPONSE_CODE
+Introduced in 7.10.8
+.IP CURLINFO_RTSP_CLIENT_CSEQ
+Introduced in 7.20.0
+.IP CURLINFO_RTSP_CSEQ_RECV
+Introduced in 7.20.0
+.IP CURLINFO_RTSP_SERVER_CSEQ
+Introduced in 7.20.0
+.IP CURLINFO_RTSP_SESSION_ID
+Introduced in 7.20.0
+.IP CURLINFO_SIZE_DOWNLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SIZE_UPLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SLIST
+Introduced in 7.12.3
+.IP CURLINFO_SPEED_DOWNLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SPEED_UPLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SSL_DATA_IN
+Introduced in 7.12.1
+.IP CURLINFO_SSL_DATA_OUT
+Introduced in 7.12.1
+.IP CURLINFO_SSL_ENGINES
+Introduced in 7.12.3
+.IP CURLINFO_SSL_VERIFYRESULT
+Introduced in 7.5
+.IP CURLINFO_STARTTRANSFER_TIME
+Introduced in 7.9.2
+.IP CURLINFO_STRING
+Introduced in 7.4.1
+.IP CURLINFO_TEXT
+Introduced in 7.9.6
+.IP CURLINFO_TLS_SESSION
+Introduced in 7.34.0
+.IP CURLINFO_TOTAL_TIME
+Introduced in 7.4.1
+.IP CURLINFO_TYPEMASK
+Introduced in 7.4.1
+.IP CURLIOCMD_NOP
+Introduced in 7.12.3
+.IP CURLIOCMD_RESTARTREAD
+Introduced in 7.12.3
+.IP CURLIOE_FAILRESTART
+Introduced in 7.12.3
+.IP CURLIOE_OK
+Introduced in 7.12.3
+.IP CURLIOE_UNKNOWNCMD
+Introduced in 7.12.3
+.IP CURLKHMATCH_MISMATCH
+Introduced in 7.19.6
+.IP CURLKHMATCH_MISSING
+Introduced in 7.19.6
+.IP CURLKHMATCH_OK
+Introduced in 7.19.6
+.IP CURLKHSTAT_DEFER
+Introduced in 7.19.6
+.IP CURLKHSTAT_FINE
+Introduced in 7.19.6
+.IP CURLKHSTAT_FINE_ADD_TO_FILE
+Introduced in 7.19.6
+.IP CURLKHSTAT_REJECT
+Introduced in 7.19.6
+.IP CURLKHTYPE_DSS
+Introduced in 7.19.6
+.IP CURLKHTYPE_RSA
+Introduced in 7.19.6
+.IP CURLKHTYPE_RSA1
+Introduced in 7.19.6
+.IP CURLKHTYPE_UNKNOWN
+Introduced in 7.19.6
+.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
+Introduced in 7.30.0
+.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
+Introduced in 7.30.0
+.IP CURLMOPT_MAXCONNECTS
+Introduced in 7.16.3
+.IP CURLMOPT_MAX_HOST_CONNECTIONS
+Introduced in 7.30.0
+.IP CURLMOPT_MAX_PIPELINE_LENGTH
+Introduced in 7.30.0
+.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
+Introduced in 7.30.0
+.IP CURLMOPT_PIPELINING
+Introduced in 7.16.0
+.IP CURLMOPT_PIPELINING_SERVER_BL
+Introduced in 7.30.0
+.IP CURLMOPT_PIPELINING_SITE_BL
+Introduced in 7.30.0
+.IP CURLMOPT_PUSHDATA
+Introduced in 7.44.0
+.IP CURLMOPT_PUSHFUNCTION
+Introduced in 7.44.0
+.IP CURLMOPT_SOCKETDATA
+Introduced in 7.15.4
+.IP CURLMOPT_SOCKETFUNCTION
+Introduced in 7.15.4
+.IP CURLMOPT_TIMERDATA
+Introduced in 7.16.0
+.IP CURLMOPT_TIMERFUNCTION
+Introduced in 7.16.0
+.IP CURLMSG_DONE
+Introduced in 7.9.6
+.IP CURLMSG_NONE
+Introduced in 7.9.6
+.IP CURLM_ADDED_ALREADY
+Introduced in 7.32.1
+.IP CURLM_BAD_EASY_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_SOCKET
+Introduced in 7.15.4
+.IP CURLM_CALL_MULTI_PERFORM
+Introduced in 7.9.6
+.IP CURLM_CALL_MULTI_SOCKET
+Introduced in 7.15.5
+.IP CURLM_INTERNAL_ERROR
+Introduced in 7.9.6
+.IP CURLM_OK
+Introduced in 7.9.6
+.IP CURLM_OUT_OF_MEMORY
+Introduced in 7.9.6
+.IP CURLM_UNKNOWN_OPTION
+Introduced in 7.15.4
+.IP CURLOPTTYPE_FUNCTIONPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_LONG
+Introduced in 7.1
+.IP CURLOPTTYPE_OBJECTPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_OFF_T
+Introduced in 7.11.0
+.IP CURLOPT_ACCEPTTIMEOUT_MS
+Introduced in 7.24.0
+.IP CURLOPT_ACCEPT_ENCODING
+Introduced in 7.21.6
+.IP CURLOPT_ADDRESS_SCOPE
+Introduced in 7.19.0
+.IP CURLOPT_APPEND
+Introduced in 7.17.0
+.IP CURLOPT_AUTOREFERER
+Introduced in 7.1
+.IP CURLOPT_BUFFERSIZE
+Introduced in 7.10
+.IP CURLOPT_CAINFO
+Introduced in 7.4.2
+.IP CURLOPT_CAPATH
+Introduced in 7.9.8
+.IP CURLOPT_CERTINFO
+Introduced in 7.19.1
+.IP CURLOPT_CHUNK_BGN_FUNCTION
+Introduced in 7.21.0
+.IP CURLOPT_CHUNK_DATA
+Introduced in 7.21.0
+.IP CURLOPT_CHUNK_END_FUNCTION
+Introduced in 7.21.0
+.IP CURLOPT_CLOSEFUNCTION
+Introduced in 7.7
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_CLOSEPOLICY
+Introduced in 7.7
+Deprecated since 7.16.1
+.IP CURLOPT_CLOSESOCKETDATA
+Introduced in 7.21.7
+.IP CURLOPT_CLOSESOCKETFUNCTION
+Introduced in 7.21.7
+.IP CURLOPT_CONNECTTIMEOUT
+Introduced in 7.7
+.IP CURLOPT_CONNECTTIMEOUT_MS
+Introduced in 7.16.2
+.IP CURLOPT_CONNECT_ONLY
+Introduced in 7.15.2
+.IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
+Introduced in 7.15.4
+.IP CURLOPT_CONV_FROM_UTF8_FUNCTION
+Introduced in 7.15.4
+.IP CURLOPT_CONV_TO_NETWORK_FUNCTION
+Introduced in 7.15.4
+.IP CURLOPT_COOKIE
+Introduced in 7.1
+.IP CURLOPT_COOKIEFILE
+Introduced in 7.1
+.IP CURLOPT_COOKIEJAR
+Introduced in 7.9
+.IP CURLOPT_COOKIELIST
+Introduced in 7.14.1
+.IP CURLOPT_COOKIESESSION
+Introduced in 7.9.7
+.IP CURLOPT_COPYPOSTFIELDS
+Introduced in 7.17.1
+.IP CURLOPT_CRLF
+Introduced in 7.1
+.IP CURLOPT_CRLFILE
+Introduced in 7.19.0
+.IP CURLOPT_CUSTOMREQUEST
+Introduced in 7.1
+.IP CURLOPT_DEBUGDATA
+Introduced in 7.9.6
+.IP CURLOPT_DEBUGFUNCTION
+Introduced in 7.9.6
+.IP CURLOPT_DIRLISTONLY
+Introduced in 7.17.0
+.IP CURLOPT_DNS_CACHE_TIMEOUT
+Introduced in 7.9.3
+.IP CURLOPT_DNS_INTERFACE
+Introduced in 7.33.0
+.IP CURLOPT_DNS_LOCAL_IP4
+Introduced in 7.33.0
+.IP CURLOPT_DNS_LOCAL_IP6
+Introduced in 7.33.0
+.IP CURLOPT_DNS_SERVERS
+Introduced in 7.24.0
+.IP CURLOPT_DNS_USE_GLOBAL_CACHE
+Introduced in 7.9.3
+Deprecated since 7.11.1
+.IP CURLOPT_EGDSOCKET
+Introduced in 7.7
+.IP CURLOPT_ENCODING
+Introduced in 7.10
+.IP CURLOPT_ERRORBUFFER
+Introduced in 7.1
+.IP CURLOPT_EXPECT_100_TIMEOUT_MS
+Introduced in 7.36.0
+.IP CURLOPT_FAILONERROR
+Introduced in 7.1
+.IP CURLOPT_FILE
+Introduced in 7.1
+Deprecated since 7.9.7
+.IP CURLOPT_FILETIME
+Introduced in 7.5
+.IP CURLOPT_FNMATCH_DATA
+Introduced in 7.21.0
+.IP CURLOPT_FNMATCH_FUNCTION
+Introduced in 7.21.0
+.IP CURLOPT_FOLLOWLOCATION
+Introduced in 7.1
+.IP CURLOPT_FORBID_REUSE
+Introduced in 7.7
+.IP CURLOPT_FRESH_CONNECT
+Introduced in 7.7
+.IP CURLOPT_FTPAPPEND
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPASCII
+Introduced in 7.1
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_FTPLISTONLY
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPPORT
+Introduced in 7.1
+.IP CURLOPT_FTPSSLAUTH
+Introduced in 7.12.2
+.IP CURLOPT_FTP_ACCOUNT
+Introduced in 7.13.0
+.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
+Introduced in 7.15.5
+.IP CURLOPT_FTP_CREATE_MISSING_DIRS
+Introduced in 7.10.7
+.IP CURLOPT_FTP_FILEMETHOD
+Introduced in 7.15.1
+.IP CURLOPT_FTP_RESPONSE_TIMEOUT
+Introduced in 7.10.8
+.IP CURLOPT_FTP_SKIP_PASV_IP
+Introduced in 7.15.0
+.IP CURLOPT_FTP_SSL
+Introduced in 7.11.0
+Deprecated since 7.16.4
+.IP CURLOPT_FTP_SSL_CCC
+Introduced in 7.16.1
+.IP CURLOPT_FTP_USE_EPRT
+Introduced in 7.10.5
+.IP CURLOPT_FTP_USE_EPSV
+Introduced in 7.9.2
+.IP CURLOPT_FTP_USE_PRET
+Introduced in 7.20.0
+.IP CURLOPT_GSSAPI_DELEGATION
+Introduced in 7.22.0
+.IP CURLOPT_HEADER
+Introduced in 7.1
+.IP CURLOPT_HEADERDATA
+Introduced in 7.10
+.IP CURLOPT_HEADERFUNCTION
+Introduced in 7.7.2
+.IP CURLOPT_HEADEROPT
+Introduced in 7.37.0
+.IP CURLOPT_HTTP200ALIASES
+Introduced in 7.10.3
+.IP CURLOPT_HTTPAUTH
+Introduced in 7.10.6
+.IP CURLOPT_HTTPGET
+Introduced in 7.8.1
+.IP CURLOPT_HTTPHEADER
+Introduced in 7.1
+.IP CURLOPT_HTTPPOST
+Introduced in 7.1
+.IP CURLOPT_HTTPPROXYTUNNEL
+Introduced in 7.3
+.IP CURLOPT_HTTPREQUEST
+Introduced in 7.1
+.IP CURLOPT_HTTP_CONTENT_DECODING
+Introduced in 7.16.2
+.IP CURLOPT_HTTP_TRANSFER_DECODING
+Introduced in 7.16.2
+.IP CURLOPT_HTTP_VERSION
+Introduced in 7.9.1
+.IP CURLOPT_IGNORE_CONTENT_LENGTH
+Introduced in 7.14.1
+.IP CURLOPT_INFILE
+Introduced in 7.1
+Deprecated since 7.9.7
+.IP CURLOPT_INFILESIZE
+Introduced in 7.1
+.IP CURLOPT_INFILESIZE_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_INTERFACE
+Introduced in 7.3
+.IP CURLOPT_INTERLEAVEDATA
+Introduced in 7.20.0
+.IP CURLOPT_INTERLEAVEFUNCTION
+Introduced in 7.20.0
+.IP CURLOPT_IOCTLDATA
+Introduced in 7.12.3
+.IP CURLOPT_IOCTLFUNCTION
+Introduced in 7.12.3
+.IP CURLOPT_IPRESOLVE
+Introduced in 7.10.8
+.IP CURLOPT_ISSUERCERT
+Introduced in 7.19.0
+.IP CURLOPT_KEYPASSWD
+Introduced in 7.17.0
+.IP CURLOPT_KRB4LEVEL
+Introduced in 7.3
+Deprecated since 7.17.0
+.IP CURLOPT_KRBLEVEL
+Introduced in 7.16.4
+.IP CURLOPT_LOCALPORT
+Introduced in 7.15.2
+.IP CURLOPT_LOCALPORTRANGE
+Introduced in 7.15.2
+.IP CURLOPT_LOGIN_OPTIONS
+Introduced in 7.34.0
+.IP CURLOPT_LOW_SPEED_LIMIT
+Introduced in 7.1
+.IP CURLOPT_LOW_SPEED_TIME
+Introduced in 7.1
+.IP CURLOPT_MAIL_AUTH
+Introduced in 7.25.0
+.IP CURLOPT_MAIL_FROM
+Introduced in 7.20.0
+.IP CURLOPT_MAIL_RCPT
+Introduced in 7.20.0
+.IP CURLOPT_MAXCONNECTS
+Introduced in 7.7
+.IP CURLOPT_MAXFILESIZE
+Introduced in 7.10.8
+.IP CURLOPT_MAXFILESIZE_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_MAXREDIRS
+Introduced in 7.5
+.IP CURLOPT_MAX_RECV_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MAX_SEND_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MUTE
+Introduced in 7.1
+Deprecated since 7.8
+Last used in 7.8
+.IP CURLOPT_NETRC
+Introduced in 7.1
+.IP CURLOPT_NETRC_FILE
+Introduced in 7.11.0
+.IP CURLOPT_NEW_DIRECTORY_PERMS
+Introduced in 7.16.4
+.IP CURLOPT_NEW_FILE_PERMS
+Introduced in 7.16.4
+.IP CURLOPT_NOBODY
+Introduced in 7.1
+.IP CURLOPT_NOPROGRESS
+Introduced in 7.1
+.IP CURLOPT_NOPROXY
+Introduced in 7.19.4
+.IP CURLOPT_NOSIGNAL
+Introduced in 7.10
+.IP CURLOPT_NOTHING
+Introduced in 7.1.1
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_OPENSOCKETDATA
+Introduced in 7.17.1
+.IP CURLOPT_OPENSOCKETFUNCTION
+Introduced in 7.17.1
+.IP CURLOPT_PASSWDDATA
+Introduced in 7.4.2
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_PASSWDFUNCTION
+Introduced in 7.4.2
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_PASSWORD
+Introduced in 7.19.1
+.IP CURLOPT_PASV_HOST
+Introduced in 7.12.1
+Deprecated since 7.16.0
+Last used in 7.16.0
+.IP CURLOPT_PATH_AS_IS
+Introduced in 7.42.0
+.IP CURLOPT_PINNEDPUBLICKEY
+Introduced in 7.39.0
+.IP CURLOPT_PIPEWAIT
+Introduced in 7.43.0
+.IP CURLOPT_PORT
+Introduced in 7.1
+.IP CURLOPT_POST
+Introduced in 7.1
+.IP CURLOPT_POST301
+Introduced in 7.17.1
+Deprecated since 7.19.1
+.IP CURLOPT_POSTFIELDS
+Introduced in 7.1
+.IP CURLOPT_POSTFIELDSIZE
+Introduced in 7.2
+.IP CURLOPT_POSTFIELDSIZE_LARGE
+Introduced in 7.11.1
+.IP CURLOPT_POSTQUOTE
+Introduced in 7.1
+.IP CURLOPT_POSTREDIR
+Introduced in 7.19.1
+.IP CURLOPT_PREQUOTE
+Introduced in 7.9.5
+.IP CURLOPT_PRIVATE
+Introduced in 7.10.3
+.IP CURLOPT_PROGRESSDATA
+Introduced in 7.1
+.IP CURLOPT_PROGRESSFUNCTION
+Introduced in 7.1
+Deprecated since 7.32.0
+.IP CURLOPT_PROTOCOLS
+Introduced in 7.19.4
+.IP CURLOPT_PROXY
+Introduced in 7.1
+.IP CURLOPT_PROXYAUTH
+Introduced in 7.10.7
+.IP CURLOPT_PROXYHEADER
+Introduced in 7.37.0
+.IP CURLOPT_PROXYPASSWORD
+Introduced in 7.19.1
+.IP CURLOPT_PROXYPORT
+Introduced in 7.1
+.IP CURLOPT_PROXYTYPE
+Introduced in 7.10
+.IP CURLOPT_PROXYUSERNAME
+Introduced in 7.19.1
+.IP CURLOPT_PROXYUSERPWD
+Introduced in 7.1
+.IP CURLOPT_PROXY_SERVICE_NAME
+Introduced in 7.43.0
+.IP CURLOPT_PROXY_TRANSFER_MODE
+Introduced in 7.18.0
+.IP CURLOPT_PUT
+Introduced in 7.1
+.IP CURLOPT_QUOTE
+Introduced in 7.1
+.IP CURLOPT_RANDOM_FILE
+Introduced in 7.7
+.IP CURLOPT_RANGE
+Introduced in 7.1
+.IP CURLOPT_READDATA
+Introduced in 7.9.7
+.IP CURLOPT_READFUNCTION
+Introduced in 7.1
+.IP CURLOPT_REDIR_PROTOCOLS
+Introduced in 7.19.4
+.IP CURLOPT_REFERER
+Introduced in 7.1
+.IP CURLOPT_RESOLVE
+Introduced in 7.21.3
+.IP CURLOPT_RESUME_FROM
+Introduced in 7.1
+.IP CURLOPT_RESUME_FROM_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_RTSPHEADER
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_CLIENT_CSEQ
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_REQUEST
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_SERVER_CSEQ
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_SESSION_ID
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_STREAM_URI
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_TRANSPORT
+Introduced in 7.20.0
+.IP CURLOPT_SASL_IR
+Introduced in 7.31.0
+.IP CURLOPT_SEEKDATA
+Introduced in 7.18.0
+.IP CURLOPT_SEEKFUNCTION
+Introduced in 7.18.0
+.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
+Introduced in 7.20.0
+.IP CURLOPT_SERVICE_NAME
+Introduced in 7.43.0
+.IP CURLOPT_SHARE
+Introduced in 7.10
+.IP CURLOPT_SOCKOPTDATA
+Introduced in 7.16.0
+.IP CURLOPT_SOCKOPTFUNCTION
+Introduced in 7.16.0
+.IP CURLOPT_SOCKS5_GSSAPI_NEC
+Introduced in 7.19.4
+.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
+Introduced in 7.19.4
+.IP CURLOPT_SOURCE_HOST
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PATH
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PORT
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_POSTQUOTE
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PREQUOTE
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_QUOTE
+Introduced in 7.13.0
+.IP CURLOPT_SOURCE_URL
+Introduced in 7.13.0
+.IP CURLOPT_SOURCE_USERPWD
+Introduced in 7.12.1
+.IP CURLOPT_SSH_AUTH_TYPES
+Introduced in 7.16.1
+.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
+Introduced in 7.17.1
+.IP CURLOPT_SSH_KEYDATA
+Introduced in 7.19.6
+.IP CURLOPT_SSH_KEYFUNCTION
+Introduced in 7.19.6
+.IP CURLOPT_SSH_KNOWNHOSTS
+Introduced in 7.19.6
+.IP CURLOPT_SSH_PRIVATE_KEYFILE
+Introduced in 7.16.1
+.IP CURLOPT_SSH_PUBLIC_KEYFILE
+Introduced in 7.16.1
+.IP CURLOPT_SSLCERT
+Introduced in 7.1
+.IP CURLOPT_SSLCERTPASSWD
+Introduced in 7.1.1
+Deprecated since 7.17.0
+.IP CURLOPT_SSLCERTTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE_DEFAULT
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEY
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEYPASSWD
+Introduced in 7.9.3
+Deprecated since 7.17.0
+.IP CURLOPT_SSLKEYTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLVERSION
+Introduced in 7.1
+.IP CURLOPT_SSL_CIPHER_LIST
+Introduced in 7.9
+.IP CURLOPT_SSL_CTX_DATA
+Introduced in 7.10.6
+.IP CURLOPT_SSL_CTX_FUNCTION
+Introduced in 7.10.6
+.IP CURLOPT_SSL_ENABLE_ALPN
+Introduced in 7.36.0
+.IP CURLOPT_SSL_ENABLE_NPN
+Introduced in 7.36.0
+.IP CURLOPT_SSL_FALSESTART
+Introduced in 7.42.0
+.IP CURLOPT_SSL_OPTIONS
+Introduced in 7.25.0
+.IP CURLOPT_SSL_SESSIONID_CACHE
+Introduced in 7.16.0
+.IP CURLOPT_SSL_VERIFYHOST
+Introduced in 7.8.1
+.IP CURLOPT_SSL_VERIFYPEER
+Introduced in 7.4.2
+.IP CURLOPT_SSL_VERIFYSTATUS
+Introduced in 7.41.0
+.IP CURLOPT_STDERR
+Introduced in 7.1
+.IP CURLOPT_TCP_KEEPALIVE
+Introduced in 7.25.0
+.IP CURLOPT_TCP_KEEPIDLE
+Introduced in 7.25.0
+.IP CURLOPT_TCP_KEEPINTVL
+Introduced in 7.25.0
+.IP CURLOPT_TCP_NODELAY
+Introduced in 7.11.2
+.IP CURLOPT_TELNETOPTIONS
+Introduced in 7.7
+.IP CURLOPT_TFTP_BLKSIZE
+Introduced in 7.19.4
+.IP CURLOPT_TIMECONDITION
+Introduced in 7.1
+.IP CURLOPT_TIMEOUT
+Introduced in 7.1
+.IP CURLOPT_TIMEOUT_MS
+Introduced in 7.16.2
+.IP CURLOPT_TIMEVALUE
+Introduced in 7.1
+.IP CURLOPT_TLSAUTH_PASSWORD
+Introduced in 7.21.4
+.IP CURLOPT_TLSAUTH_TYPE
+Introduced in 7.21.4
+.IP CURLOPT_TLSAUTH_USERNAME
+Introduced in 7.21.4
+.IP CURLOPT_TRANSFERTEXT
+Introduced in 7.1.1
+.IP CURLOPT_TRANSFER_ENCODING
+Introduced in 7.21.6
+.IP CURLOPT_UNIX_SOCKET_PATH
+Introduced in 7.40.0
+.IP CURLOPT_UNRESTRICTED_AUTH
+Introduced in 7.10.4
+.IP CURLOPT_UPLOAD
+Introduced in 7.1
+.IP CURLOPT_URL
+Introduced in 7.1
+.IP CURLOPT_USERAGENT
+Introduced in 7.1
+.IP CURLOPT_USERNAME
+Introduced in 7.19.1
+.IP CURLOPT_USERPWD
+Introduced in 7.1
+.IP CURLOPT_USE_SSL
+Introduced in 7.17.0
+.IP CURLOPT_VERBOSE
+Introduced in 7.1
+.IP CURLOPT_WILDCARDMATCH
+Introduced in 7.21.0
+.IP CURLOPT_WRITEDATA
+Introduced in 7.9.7
+.IP CURLOPT_WRITEFUNCTION
+Introduced in 7.1
+.IP CURLOPT_WRITEHEADER
+Introduced in 7.1
+.IP CURLOPT_WRITEINFO
+Introduced in 7.1
+.IP CURLOPT_XFERINFODATA
+Introduced in 7.32.0
+.IP CURLOPT_XFERINFOFUNCTION
+Introduced in 7.32.0
+.IP CURLOPT_XOAUTH2_BEARER
+Introduced in 7.33.0
+.IP CURLPAUSE_ALL
+Introduced in 7.18.0
+.IP CURLPAUSE_CONT
+Introduced in 7.18.0
+.IP CURLPAUSE_RECV
+Introduced in 7.18.0
+.IP CURLPAUSE_RECV_CONT
+Introduced in 7.18.0
+.IP CURLPAUSE_SEND
+Introduced in 7.18.0
+.IP CURLPAUSE_SEND_CONT
+Introduced in 7.18.0
+.IP CURLPIPE_HTTP1
+Introduced in 7.43.0
+.IP CURLPIPE_MULTIPLEX
+Introduced in 7.43.0
+.IP CURLPIPE_NOTHING
+Introduced in 7.43.0
+.IP CURLPROTO_ALL
+Introduced in 7.19.4
+.IP CURLPROTO_DICT
+Introduced in 7.19.4
+.IP CURLPROTO_FILE
+Introduced in 7.19.4
+.IP CURLPROTO_FTP
+Introduced in 7.19.4
+.IP CURLPROTO_FTPS
+Introduced in 7.19.4
+.IP CURLPROTO_GOPHER
+Introduced in 7.21.2
+.IP CURLPROTO_HTTP
+Introduced in 7.19.4
+.IP CURLPROTO_HTTPS
+Introduced in 7.19.4
+.IP CURLPROTO_IMAP
+Introduced in 7.20.0
+.IP CURLPROTO_IMAPS
+Introduced in 7.20.0
+.IP CURLPROTO_LDAP
+Introduced in 7.19.4
+.IP CURLPROTO_LDAPS
+Introduced in 7.19.4
+.IP CURLPROTO_POP3
+Introduced in 7.20.0
+.IP CURLPROTO_POP3S
+Introduced in 7.20.0
+.IP CURLPROTO_RTMP
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPE
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPS
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPT
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPTE
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPTS
+Introduced in 7.21.0
+.IP CURLPROTO_RTSP
+Introduced in 7.20.0
+.IP CURLPROTO_SCP
+Introduced in 7.19.4
+.IP CURLPROTO_SFTP
+Introduced in 7.19.4
+.IP CURLPROTO_SMB
+Introduced in 7.40.0
+.IP CURLPROTO_SMBS
+Introduced in 7.40.0
+.IP CURLPROTO_SMTP
+Introduced in 7.20.0
+.IP CURLPROTO_SMTPS
+Introduced in 7.20.0
+.IP CURLPROTO_TELNET
+Introduced in 7.19.4
+.IP CURLPROTO_TFTP
+Introduced in 7.19.4
+.IP CURLPROXY_HTTP
+Introduced in 7.10
+.IP CURLPROXY_HTTP_1_0
+Introduced in 7.19.4
+.IP CURLPROXY_SOCKS4
+Introduced in 7.10
+.IP CURLPROXY_SOCKS4A
+Introduced in 7.18.0
+.IP CURLPROXY_SOCKS5
+Introduced in 7.10
+.IP CURLPROXY_SOCKS5_HOSTNAME
+Introduced in 7.18.0
+.IP CURLSHE_BAD_OPTION
+Introduced in 7.10.3
+.IP CURLSHE_INVALID
+Introduced in 7.10.3
+.IP CURLSHE_IN_USE
+Introduced in 7.10.3
+.IP CURLSHE_NOMEM
+Introduced in 7.12.0
+.IP CURLSHE_NOT_BUILT_IN
+Introduced in 7.23.0
+.IP CURLSHE_OK
+Introduced in 7.10.3
+.IP CURLSHOPT_LOCKFUNC
+Introduced in 7.10.3
+.IP CURLSHOPT_NONE
+Introduced in 7.10.3
+.IP CURLSHOPT_SHARE
+Introduced in 7.10.3
+.IP CURLSHOPT_UNLOCKFUNC
+Introduced in 7.10.3
+.IP CURLSHOPT_UNSHARE
+Introduced in 7.10.3
+.IP CURLSHOPT_USERDATA
+Introduced in 7.10.3
+.IP CURLSOCKTYPE_ACCEPT
+Introduced in 7.28.0
+.IP CURLSOCKTYPE_IPCXN
+Introduced in 7.16.0
+.IP CURLSSH_AUTH_AGENT
+Introduced in 7.28.0
+.IP CURLSSH_AUTH_ANY
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_DEFAULT
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_HOST
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_KEYBOARD
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_NONE
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_PASSWORD
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_PUBLICKEY
+Introduced in 7.16.1
+.IP CURLSSLBACKEND_AXTLS
+Introduced in 7.38.0
+.IP CURLSSLBACKEND_CYASSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_DARWINSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_GNUTLS
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_GSKIT
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_NONE
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_NSS
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_OPENSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_POLARSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_QSOSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_SCHANNEL
+Introduced in 7.34.0
+.IP CURLSSLOPT_ALLOW_BEAST
+Introduced in 7.25.0
+.IP CURLSSLOPT_NO_REVOKE
+Introduced in 7.44.0
+.IP CURLUSESSL_ALL
+Introduced in 7.17.0
+.IP CURLUSESSL_CONTROL
+Introduced in 7.17.0
+.IP CURLUSESSL_NONE
+Introduced in 7.17.0
+.IP CURLUSESSL_TRY
+Introduced in 7.17.0
+.IP CURLVERSION_FIRST
+Introduced in 7.10
+.IP CURLVERSION_FOURTH
+Introduced in 7.16.1
+.IP CURLVERSION_NOW
+Introduced in 7.10
+.IP CURLVERSION_SECOND
+Introduced in 7.11.1
+.IP CURLVERSION_THIRD
+Introduced in 7.12.0
+.IP CURL_CHUNK_BGN_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_BGN_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CHUNK_BGN_FUNC_SKIP
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CSELECT_ERR
+Introduced in 7.16.3
+.IP CURL_CSELECT_IN
+Introduced in 7.16.3
+.IP CURL_CSELECT_OUT
+Introduced in 7.16.3
+.IP CURL_EASY_NONE
+Introduced in 7.14.0
+.IP CURL_EASY_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_ERROR_SIZE
+Introduced in 7.1
+.IP CURL_FNMATCHFUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_MATCH
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_NOMATCH
+Introduced in 7.21.0
+.IP CURL_FORMADD_DISABLED
+Introduced in 7.12.1
+.IP CURL_FORMADD_ILLEGAL_ARRAY
+Introduced in 7.9.8
+.IP CURL_FORMADD_INCOMPLETE
+Introduced in 7.9.8
+.IP CURL_FORMADD_MEMORY
+Introduced in 7.9.8
+.IP CURL_FORMADD_NULL
+Introduced in 7.9.8
+.IP CURL_FORMADD_OK
+Introduced in 7.9.8
+.IP CURL_FORMADD_OPTION_TWICE
+Introduced in 7.9.8
+.IP CURL_FORMADD_UNKNOWN_OPTION
+Introduced in 7.9.8
+.IP CURL_GLOBAL_ACK_EINTR
+Introduced in 7.30.0
+.IP CURL_GLOBAL_ALL
+Introduced in 7.8
+.IP CURL_GLOBAL_DEFAULT
+Introduced in 7.8
+.IP CURL_GLOBAL_NOTHING
+Introduced in 7.8
+.IP CURL_GLOBAL_SSL
+Introduced in 7.8
+.IP CURL_GLOBAL_WIN32
+Introduced in 7.8.1
+.IP CURL_HTTP_VERSION_1_0
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_1_1
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_2_0
+Introduced in 7.33.0
+.IP CURL_HTTP_VERSION_2
+Introduced in 7.43.0
+.IP CURL_HTTP_VERSION_NONE
+Introduced in 7.9.1
+.IP CURL_IPRESOLVE_V4
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_V6
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_WHATEVER
+Introduced in 7.10.8
+.IP CURL_LOCK_ACCESS_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SHARED
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SINGLE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_CONNECT
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_COOKIE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_DNS
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_SHARE
+Introduced in 7.10.4
+.IP CURL_LOCK_DATA_SSL_SESSION
+Introduced in 7.10.3
+.IP CURL_LOCK_TYPE_CONNECT
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_COOKIE
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_DNS
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_NONE
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_SSL_SESSION
+Introduced in 7.10
+.IP CURL_MAX_HTTP_HEADER
+Introduced in 7.19.7
+.IP CURL_MAX_WRITE_SIZE
+Introduced in 7.9.7
+.IP CURL_NETRC_IGNORED
+Introduced in 7.9.8
+.IP CURL_NETRC_OPTIONAL
+Introduced in 7.9.8
+.IP CURL_NETRC_REQUIRED
+Introduced in 7.9.8
+.IP CURL_POLL_IN
+Introduced in 7.14.0
+.IP CURL_POLL_INOUT
+Introduced in 7.14.0
+.IP CURL_POLL_NONE
+Introduced in 7.14.0
+.IP CURL_POLL_OUT
+Introduced in 7.14.0
+.IP CURL_POLL_REMOVE
+Introduced in 7.14.0
+.IP CURL_PROGRESS_BAR
+Introduced in 7.1.1
+.IP CURL_PROGRESS_STATS
+Introduced in 7.1.1
+.IP CURL_PUSH_DENY
+Introduced in 7.44.0
+.IP CURL_PUSH_OK
+Introduced in 7.44.0
+.IP CURL_READFUNC_ABORT
+Introduced in 7.12.1
+.IP CURL_READFUNC_PAUSE
+Introduced in 7.18.0
+.IP CURL_REDIR_GET_ALL
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_301
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_302
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_303
+Introduced in 7.25.1
+.IP CURL_REDIR_POST_ALL
+Introduced in 7.19.1
+.IP CURL_RTSPREQ_ANNOUNCE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_DESCRIBE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_GET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_NONE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_OPTIONS
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PAUSE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PLAY
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECEIVE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECORD
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SETUP
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_TEARDOWN
+Introduced in 7.20.0
+.IP CURL_SEEKFUNC_CANTSEEK
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_FAIL
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_OK
+Introduced in 7.19.5
+.IP CURL_SOCKET_BAD
+Introduced in 7.14.0
+.IP CURL_SOCKET_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_SOCKOPT_ALREADY_CONNECTED
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_ERROR
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_OK
+Introduced in 7.21.5
+.IP CURL_SSLVERSION_DEFAULT
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_SSL
+Introduced in
+.IP CURL_SSLVERSION_SSL
+Introduced in
+.IP CURL_SSLVERSION_TLS
+Introduced in
+.IP CURL_SSLVERSION_TLS
+Introduced in
+.IP CURL_SSLVERSION_TLS
+Introduced in
+.IP CURL_SSLVERSION_TLS
+Introduced in
+.IP CURL_TIMECOND_IFMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_IFUNMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_LASTMOD
+Introduced in 7.9.7
+.IP CURL_TIMECOND_NONE
+Introduced in 7.9.7
+.IP CURL_TLSAUTH_NONE
+Introduced in 7.21.4
+.IP CURL_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_VERSION_ASYNCHDNS
+Introduced in 7.10.7
+.IP CURL_VERSION_CONV
+Introduced in 7.15.4
+.IP CURL_VERSION_CURLDEBUG
+Introduced in 7.19.6
+.IP CURL_VERSION_DEBUG
+Introduced in 7.10.6
+.IP CURL_VERSION_GSSAPI
+Introduced in 7.38.0
+.IP CURL_VERSION_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURL_VERSION_HTTP2
+Introduced in 7.33.0
+.IP CURL_VERSION_IDN
+Introduced in 7.12.0
+.IP CURL_VERSION_IPV6
+Introduced in 7.10
+.IP CURL_VERSION_KERBEROS4
+Introduced in 7.10
+Deprecated since 7.33.0
+.IP CURL_VERSION_KERBEROS5
+Introduced in 7.40.0
+.IP CURL_VERSION_LARGEFILE
+Introduced in 7.11.1
+.IP CURL_VERSION_LIBZ
+Introduced in 7.10
+.IP CURL_VERSION_NTLM
+Introduced in 7.10.6
+.IP CURL_VERSION_NTLM_WB
+Introduced in 7.22.0
+.IP CURL_VERSION_SPNEGO
+Introduced in 7.10.8
+.IP CURL_VERSION_SSL
+Introduced in 7.10
+.IP CURL_VERSION_SSPI
+Introduced in 7.13.2
+.IP CURL_VERSION_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_VERSION_UNIX_SOCKETS
+Introduced in 7.40.0
+.IP CURL_WAIT_POLLIN
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLOUT
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLPRI
+Introduced in 7.28.0
+.IP CURL_WRITEFUNC_PAUSE
+Introduced in 7.18.0
diff --git a/docs/libcurl/libcurl-symbols.html b/docs/libcurl/libcurl-symbols.html
new file mode 100644
index 000000000..1dba7e76a
--- /dev/null
+++ b/docs/libcurl/libcurl-symbols.html
@@ -0,0 +1,1578 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>libcurl-symbols man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">libcurl-symbols - libcurl symbol version information <a name="libcurl"></a><h2 class="nroffsh">libcurl symbols</h2>
+<p class="level0">This man page details version information for public symbols provided in the libcurl header files. This lists the first version in which the symbol was introduced and for some symbols two additional information pieces:
+<p class="level0">The first version in which the symbol is marked "deprecated" - meaning that since that version no new code should be written to use the symbol as it is marked for getting removed in a future.
+<p class="level0">The last version that featured the specific symbol. Using the symbol in source code will make it no longer compile error-free after that specified version.
+<p class="level0">This man page is automatically generated from the symbols-in-versions file.
+<p class="level0"><a name="CURLAUTHANY"></a><span class="nroffip">CURLAUTH_ANY</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLAUTHANYSAFE"></a><span class="nroffip">CURLAUTH_ANYSAFE</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLAUTHBASIC"></a><span class="nroffip">CURLAUTH_BASIC</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLAUTHDIGEST"></a><span class="nroffip">CURLAUTH_DIGEST</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLAUTHDIGESTIE"></a><span class="nroffip">CURLAUTH_DIGEST_IE</span>
+<p class="level1">Introduced in 7.19.3
+<p class="level0"><a name="CURLAUTHGSSNEGOTIATE"></a><span class="nroffip">CURLAUTH_GSSNEGOTIATE</span>
+<p class="level1">Introduced in 7.10.6 Deprecated since 7.38.0
+<p class="level0"><a name="CURLAUTHNEGOTIATE"></a><span class="nroffip">CURLAUTH_NEGOTIATE</span>
+<p class="level1">Introduced in 7.38.0
+<p class="level0"><a name="CURLAUTHNONE"></a><span class="nroffip">CURLAUTH_NONE</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLAUTHNTLM"></a><span class="nroffip">CURLAUTH_NTLM</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLAUTHNTLMWB"></a><span class="nroffip">CURLAUTH_NTLM_WB</span>
+<p class="level1">Introduced in 7.22.0
+<p class="level0"><a name="CURLAUTHONLY"></a><span class="nroffip">CURLAUTH_ONLY</span>
+<p class="level1">Introduced in 7.21.3
+<p class="level0"><a name="CURLCLOSEPOLICYCALLBACK"></a><span class="nroffip">CURLCLOSEPOLICY_CALLBACK</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLCLOSEPOLICYLEASTRECENTLYUSED"></a><span class="nroffip">CURLCLOSEPOLICY_LEAST_RECENTLY_USED</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLCLOSEPOLICYLEASTTRAFFIC"></a><span class="nroffip">CURLCLOSEPOLICY_LEAST_TRAFFIC</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLCLOSEPOLICYNONE"></a><span class="nroffip">CURLCLOSEPOLICY_NONE</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLCLOSEPOLICYOLDEST"></a><span class="nroffip">CURLCLOSEPOLICY_OLDEST</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLCLOSEPOLICYSLOWEST"></a><span class="nroffip">CURLCLOSEPOLICY_SLOWEST</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLEABORTEDBYCALLBACK"></a><span class="nroffip">CURLE_ABORTED_BY_CALLBACK</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEAGAIN"></a><span class="nroffip">CURLE_AGAIN</span>
+<p class="level1">Introduced in 7.18.2
+<p class="level0"><a name="CURLEALREADYCOMPLETE"></a><span class="nroffip">CURLE_ALREADY_COMPLETE</span>
+<p class="level1">Introduced in 7.7.2
+<p class="level0"><a name="CURLEBADCALLINGORDER"></a><span class="nroffip">CURLE_BAD_CALLING_ORDER</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEBADCONTENTENCODING"></a><span class="nroffip">CURLE_BAD_CONTENT_ENCODING</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLEBADDOWNLOADRESUME"></a><span class="nroffip">CURLE_BAD_DOWNLOAD_RESUME</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLEBADFUNCTIONARGUMENT"></a><span class="nroffip">CURLE_BAD_FUNCTION_ARGUMENT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEBADPASSWORDENTERED"></a><span class="nroffip">CURLE_BAD_PASSWORD_ENTERED</span>
+<p class="level1">Introduced in 7.4.2 Deprecated since 7.17.0
+<p class="level0"><a name="CURLECHUNKFAILED"></a><span class="nroffip">CURLE_CHUNK_FAILED</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLECONVFAILED"></a><span class="nroffip">CURLE_CONV_FAILED</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLECONVREQD"></a><span class="nroffip">CURLE_CONV_REQD</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLECOULDNTCONNECT"></a><span class="nroffip">CURLE_COULDNT_CONNECT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLECOULDNTRESOLVEHOST"></a><span class="nroffip">CURLE_COULDNT_RESOLVE_HOST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLECOULDNTRESOLVEPROXY"></a><span class="nroffip">CURLE_COULDNT_RESOLVE_PROXY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFAILEDINIT"></a><span class="nroffip">CURLE_FAILED_INIT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFILESIZEEXCEEDED"></a><span class="nroffip">CURLE_FILESIZE_EXCEEDED</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLEFILECOULDNTREADFILE"></a><span class="nroffip">CURLE_FILE_COULDNT_READ_FILE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPACCEPTFAILED"></a><span class="nroffip">CURLE_FTP_ACCEPT_FAILED</span>
+<p class="level1">Introduced in 7.24.0
+<p class="level0"><a name="CURLEFTPACCEPTTIMEOUT"></a><span class="nroffip">CURLE_FTP_ACCEPT_TIMEOUT</span>
+<p class="level1">Introduced in 7.24.0
+<p class="level0"><a name="CURLEFTPACCESSDENIED"></a><span class="nroffip">CURLE_FTP_ACCESS_DENIED</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPBADDOWNLOADRESUME"></a><span class="nroffip">CURLE_FTP_BAD_DOWNLOAD_RESUME</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.1
+<p class="level0"><a name="CURLEFTPBADFILELIST"></a><span class="nroffip">CURLE_FTP_BAD_FILE_LIST</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLEFTPCANTGETHOST"></a><span class="nroffip">CURLE_FTP_CANT_GET_HOST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPCANTRECONNECT"></a><span class="nroffip">CURLE_FTP_CANT_RECONNECT</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPCOULDNTGETSIZE"></a><span class="nroffip">CURLE_FTP_COULDNT_GET_SIZE</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPCOULDNTRETRFILE"></a><span class="nroffip">CURLE_FTP_COULDNT_RETR_FILE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPCOULDNTSETASCII"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_ASCII</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPCOULDNTSETBINARY"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_BINARY</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPCOULDNTSETTYPE"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_TYPE</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLEFTPCOULDNTSTORFILE"></a><span class="nroffip">CURLE_FTP_COULDNT_STOR_FILE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPCOULDNTUSEREST"></a><span class="nroffip">CURLE_FTP_COULDNT_USE_REST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPPARTIALFILE"></a><span class="nroffip">CURLE_FTP_PARTIAL_FILE</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.1
+<p class="level0"><a name="CURLEFTPPORTFAILED"></a><span class="nroffip">CURLE_FTP_PORT_FAILED</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPPRETFAILED"></a><span class="nroffip">CURLE_FTP_PRET_FAILED</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLEFTPQUOTEERROR"></a><span class="nroffip">CURLE_FTP_QUOTE_ERROR</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPSSLFAILED"></a><span class="nroffip">CURLE_FTP_SSL_FAILED</span>
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPUSERPASSWORDINCORRECT"></a><span class="nroffip">CURLE_FTP_USER_PASSWORD_INCORRECT</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPWEIRD227FORMAT"></a><span class="nroffip">CURLE_FTP_WEIRD_227_FORMAT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPWEIRDPASSREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASS_REPLY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPWEIRDPASVREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASV_REPLY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPWEIRDSERVERREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_SERVER_REPLY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEFTPWEIRDUSERREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_USER_REPLY</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFTPWRITEERROR"></a><span class="nroffip">CURLE_FTP_WRITE_ERROR</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEFUNCTIONNOTFOUND"></a><span class="nroffip">CURLE_FUNCTION_NOT_FOUND</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEGOTNOTHING"></a><span class="nroffip">CURLE_GOT_NOTHING</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLEHTTP2"></a><span class="nroffip">CURLE_HTTP2</span>
+<p class="level1">Introduced in 7.38.0
+<p class="level0"><a name="CURLEHTTPNOTFOUND"></a><span class="nroffip">CURLE_HTTP_NOT_FOUND</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEHTTPPORTFAILED"></a><span class="nroffip">CURLE_HTTP_PORT_FAILED</span>
+<p class="level1">Introduced in 7.3 Deprecated since 7.12.0
+<p class="level0"><a name="CURLEHTTPPOSTERROR"></a><span class="nroffip">CURLE_HTTP_POST_ERROR</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEHTTPRANGEERROR"></a><span class="nroffip">CURLE_HTTP_RANGE_ERROR</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEHTTPRETURNEDERROR"></a><span class="nroffip">CURLE_HTTP_RETURNED_ERROR</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLEINTERFACEFAILED"></a><span class="nroffip">CURLE_INTERFACE_FAILED</span>
+<p class="level1">Introduced in 7.12.0
+<p class="level0"><a name="CURLELDAPCANNOTBIND"></a><span class="nroffip">CURLE_LDAP_CANNOT_BIND</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLELDAPINVALIDURL"></a><span class="nroffip">CURLE_LDAP_INVALID_URL</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLELDAPSEARCHFAILED"></a><span class="nroffip">CURLE_LDAP_SEARCH_FAILED</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLELIBRARYNOTFOUND"></a><span class="nroffip">CURLE_LIBRARY_NOT_FOUND</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLELOGINDENIED"></a><span class="nroffip">CURLE_LOGIN_DENIED</span>
+<p class="level1">Introduced in 7.13.1
+<p class="level0"><a name="CURLEMALFORMATUSER"></a><span class="nroffip">CURLE_MALFORMAT_USER</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLENOTBUILTIN"></a><span class="nroffip">CURLE_NOT_BUILT_IN</span>
+<p class="level1">Introduced in 7.21.5
+<p class="level0"><a name="CURLENOCONNECTIONAVAILABLE"></a><span class="nroffip">CURLE_NO_CONNECTION_AVAILABLE</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLEOK"></a><span class="nroffip">CURLE_OK</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEOPERATIONTIMEDOUT"></a><span class="nroffip">CURLE_OPERATION_TIMEDOUT</span>
+<p class="level1">Introduced in 7.10.2
+<p class="level0"><a name="CURLEOPERATIONTIMEOUTED"></a><span class="nroffip">CURLE_OPERATION_TIMEOUTED</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEOUTOFMEMORY"></a><span class="nroffip">CURLE_OUT_OF_MEMORY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEPARTIALFILE"></a><span class="nroffip">CURLE_PARTIAL_FILE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEPEERFAILEDVERIFICATION"></a><span class="nroffip">CURLE_PEER_FAILED_VERIFICATION</span>
+<p class="level1">Introduced in 7.17.1
+<p class="level0"><a name="CURLEQUOTEERROR"></a><span class="nroffip">CURLE_QUOTE_ERROR</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLERANGEERROR"></a><span class="nroffip">CURLE_RANGE_ERROR</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLEREADERROR"></a><span class="nroffip">CURLE_READ_ERROR</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLERECVERROR"></a><span class="nroffip">CURLE_RECV_ERROR</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLEREMOTEACCESSDENIED"></a><span class="nroffip">CURLE_REMOTE_ACCESS_DENIED</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLEREMOTEDISKFULL"></a><span class="nroffip">CURLE_REMOTE_DISK_FULL</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLEREMOTEFILEEXISTS"></a><span class="nroffip">CURLE_REMOTE_FILE_EXISTS</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLEREMOTEFILENOTFOUND"></a><span class="nroffip">CURLE_REMOTE_FILE_NOT_FOUND</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLERTSPCSEQERROR"></a><span class="nroffip">CURLE_RTSP_CSEQ_ERROR</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLERTSPSESSIONERROR"></a><span class="nroffip">CURLE_RTSP_SESSION_ERROR</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLESENDERROR"></a><span class="nroffip">CURLE_SEND_ERROR</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLESENDFAILREWIND"></a><span class="nroffip">CURLE_SEND_FAIL_REWIND</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLESHAREINUSE"></a><span class="nroffip">CURLE_SHARE_IN_USE</span>
+<p class="level1">Introduced in 7.9.6 Deprecated since 7.17.0
+<p class="level0"><a name="CURLESSH"></a><span class="nroffip">CURLE_SSH</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLESSLCACERT"></a><span class="nroffip">CURLE_SSL_CACERT</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLESSLCACERTBADFILE"></a><span class="nroffip">CURLE_SSL_CACERT_BADFILE</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLESSLCERTPROBLEM"></a><span class="nroffip">CURLE_SSL_CERTPROBLEM</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLESSLCIPHER"></a><span class="nroffip">CURLE_SSL_CIPHER</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLESSLCONNECTERROR"></a><span class="nroffip">CURLE_SSL_CONNECT_ERROR</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLESSLCRLBADFILE"></a><span class="nroffip">CURLE_SSL_CRL_BADFILE</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLESSLENGINEINITFAILED"></a><span class="nroffip">CURLE_SSL_ENGINE_INITFAILED</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLESSLENGINENOTFOUND"></a><span class="nroffip">CURLE_SSL_ENGINE_NOTFOUND</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLESSLENGINESETFAILED"></a><span class="nroffip">CURLE_SSL_ENGINE_SETFAILED</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLESSLINVALIDCERTSTATUS"></a><span class="nroffip">CURLE_SSL_INVALIDCERTSTATUS</span>
+<p class="level1">Introduced in 7.41.0
+<p class="level0"><a name="CURLESSLISSUERERROR"></a><span class="nroffip">CURLE_SSL_ISSUER_ERROR</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLESSLPEERCERTIFICATE"></a><span class="nroffip">CURLE_SSL_PEER_CERTIFICATE</span>
+<p class="level1">Introduced in 7.8 Deprecated since 7.17.1
+<p class="level0"><a name="CURLESSLPINNEDPUBKEYNOTMATCH"></a><span class="nroffip">CURLE_SSL_PINNEDPUBKEYNOTMATCH</span>
+<p class="level1">Introduced in 7.39.0
+<p class="level0"><a name="CURLESSLSHUTDOWNFAILED"></a><span class="nroffip">CURLE_SSL_SHUTDOWN_FAILED</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLETELNETOPTIONSYNTAX"></a><span class="nroffip">CURLE_TELNET_OPTION_SYNTAX</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLETFTPDISKFULL"></a><span class="nroffip">CURLE_TFTP_DISKFULL</span>
+<p class="level1">Introduced in 7.15.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLETFTPEXISTS"></a><span class="nroffip">CURLE_TFTP_EXISTS</span>
+<p class="level1">Introduced in 7.15.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLETFTPILLEGAL"></a><span class="nroffip">CURLE_TFTP_ILLEGAL</span>
+<p class="level1">Introduced in 7.15.0
+<p class="level0"><a name="CURLETFTPNOSUCHUSER"></a><span class="nroffip">CURLE_TFTP_NOSUCHUSER</span>
+<p class="level1">Introduced in 7.15.0
+<p class="level0"><a name="CURLETFTPNOTFOUND"></a><span class="nroffip">CURLE_TFTP_NOTFOUND</span>
+<p class="level1">Introduced in 7.15.0
+<p class="level0"><a name="CURLETFTPPERM"></a><span class="nroffip">CURLE_TFTP_PERM</span>
+<p class="level1">Introduced in 7.15.0
+<p class="level0"><a name="CURLETFTPUNKNOWNID"></a><span class="nroffip">CURLE_TFTP_UNKNOWNID</span>
+<p class="level1">Introduced in 7.15.0
+<p class="level0"><a name="CURLETOOMANYREDIRECTS"></a><span class="nroffip">CURLE_TOO_MANY_REDIRECTS</span>
+<p class="level1">Introduced in 7.5
+<p class="level0"><a name="CURLEUNKNOWNOPTION"></a><span class="nroffip">CURLE_UNKNOWN_OPTION</span>
+<p class="level1">Introduced in 7.21.5
+<p class="level0"><a name="CURLEUNKNOWNTELNETOPTION"></a><span class="nroffip">CURLE_UNKNOWN_TELNET_OPTION</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLEUNSUPPORTEDPROTOCOL"></a><span class="nroffip">CURLE_UNSUPPORTED_PROTOCOL</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEUPLOADFAILED"></a><span class="nroffip">CURLE_UPLOAD_FAILED</span>
+<p class="level1">Introduced in 7.16.3
+<p class="level0"><a name="CURLEURLMALFORMAT"></a><span class="nroffip">CURLE_URL_MALFORMAT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLEURLMALFORMATUSER"></a><span class="nroffip">CURLE_URL_MALFORMAT_USER</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLEUSESSLFAILED"></a><span class="nroffip">CURLE_USE_SSL_FAILED</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLEWRITEERROR"></a><span class="nroffip">CURLE_WRITE_ERROR</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLFILETYPEDEVICEBLOCK"></a><span class="nroffip">CURLFILETYPE_DEVICE_BLOCK</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPEDEVICECHAR"></a><span class="nroffip">CURLFILETYPE_DEVICE_CHAR</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPEDIRECTORY"></a><span class="nroffip">CURLFILETYPE_DIRECTORY</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPEDOOR"></a><span class="nroffip">CURLFILETYPE_DOOR</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPEFILE"></a><span class="nroffip">CURLFILETYPE_FILE</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPENAMEDPIPE"></a><span class="nroffip">CURLFILETYPE_NAMEDPIPE</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPESOCKET"></a><span class="nroffip">CURLFILETYPE_SOCKET</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPESYMLINK"></a><span class="nroffip">CURLFILETYPE_SYMLINK</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFILETYPEUNKNOWN"></a><span class="nroffip">CURLFILETYPE_UNKNOWN</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNFILENAME"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_FILENAME</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNFILETYPE"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_FILETYPE</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNGID"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_GID</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNHLINKCOUNT"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_HLINKCOUNT</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNPERM"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_PERM</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNSIZE"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_SIZE</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNTIME"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_TIME</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFINFOFLAGKNOWNUID"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_UID</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFORMARRAY"></a><span class="nroffip">CURLFORM_ARRAY</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLFORMARRAYEND"></a><span class="nroffip">CURLFORM_ARRAY_END</span>
+<p class="level1">Introduced in 7.9.1 Deprecated since 7.9.5 Last used in 7.9.5
+<p class="level0"><a name="CURLFORMARRAYSTART"></a><span class="nroffip">CURLFORM_ARRAY_START</span>
+<p class="level1">Introduced in 7.9.1 Deprecated since 7.9.5 Last used in 7.9.5
+<p class="level0"><a name="CURLFORMBUFFER"></a><span class="nroffip">CURLFORM_BUFFER</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMBUFFERLENGTH"></a><span class="nroffip">CURLFORM_BUFFERLENGTH</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMBUFFERPTR"></a><span class="nroffip">CURLFORM_BUFFERPTR</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMCONTENTHEADER"></a><span class="nroffip">CURLFORM_CONTENTHEADER</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLFORMCONTENTSLENGTH"></a><span class="nroffip">CURLFORM_CONTENTSLENGTH</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMCONTENTTYPE"></a><span class="nroffip">CURLFORM_CONTENTTYPE</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMCOPYCONTENTS"></a><span class="nroffip">CURLFORM_COPYCONTENTS</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMCOPYNAME"></a><span class="nroffip">CURLFORM_COPYNAME</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMEND"></a><span class="nroffip">CURLFORM_END</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMFILE"></a><span class="nroffip">CURLFORM_FILE</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMFILECONTENT"></a><span class="nroffip">CURLFORM_FILECONTENT</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLFORMFILENAME"></a><span class="nroffip">CURLFORM_FILENAME</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLFORMNAMELENGTH"></a><span class="nroffip">CURLFORM_NAMELENGTH</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMNOTHING"></a><span class="nroffip">CURLFORM_NOTHING</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMPTRCONTENTS"></a><span class="nroffip">CURLFORM_PTRCONTENTS</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMPTRNAME"></a><span class="nroffip">CURLFORM_PTRNAME</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLFORMSTREAM"></a><span class="nroffip">CURLFORM_STREAM</span>
+<p class="level1">Introduced in 7.18.2
+<p class="level0"><a name="CURLFTPAUTHDEFAULT"></a><span class="nroffip">CURLFTPAUTH_DEFAULT</span>
+<p class="level1">Introduced in 7.12.2
+<p class="level0"><a name="CURLFTPAUTHSSL"></a><span class="nroffip">CURLFTPAUTH_SSL</span>
+<p class="level1">Introduced in 7.12.2
+<p class="level0"><a name="CURLFTPAUTHTLS"></a><span class="nroffip">CURLFTPAUTH_TLS</span>
+<p class="level1">Introduced in 7.12.2
+<p class="level0"><a name="CURLFTPMETHODDEFAULT"></a><span class="nroffip">CURLFTPMETHOD_DEFAULT</span>
+<p class="level1">Introduced in 7.15.3
+<p class="level0"><a name="CURLFTPMETHODMULTICWD"></a><span class="nroffip">CURLFTPMETHOD_MULTICWD</span>
+<p class="level1">Introduced in 7.15.3
+<p class="level0"><a name="CURLFTPMETHODNOCWD"></a><span class="nroffip">CURLFTPMETHOD_NOCWD</span>
+<p class="level1">Introduced in 7.15.3
+<p class="level0"><a name="CURLFTPMETHODSINGLECWD"></a><span class="nroffip">CURLFTPMETHOD_SINGLECWD</span>
+<p class="level1">Introduced in 7.15.3
+<p class="level0"><a name="CURLFTPSSLALL"></a><span class="nroffip">CURLFTPSSL_ALL</span>
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLFTPSSLCCCACTIVE"></a><span class="nroffip">CURLFTPSSL_CCC_ACTIVE</span>
+<p class="level1">Introduced in 7.16.2
+<p class="level0"><a name="CURLFTPSSLCCCNONE"></a><span class="nroffip">CURLFTPSSL_CCC_NONE</span>
+<p class="level1">Introduced in 7.16.2
+<p class="level0"><a name="CURLFTPSSLCCCPASSIVE"></a><span class="nroffip">CURLFTPSSL_CCC_PASSIVE</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLFTPSSLCONTROL"></a><span class="nroffip">CURLFTPSSL_CONTROL</span>
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLFTPSSLNONE"></a><span class="nroffip">CURLFTPSSL_NONE</span>
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLFTPSSLTRY"></a><span class="nroffip">CURLFTPSSL_TRY</span>
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0
+<p class="level0"><a name="CURLFTPCREATEDIR"></a><span class="nroffip">CURLFTP_CREATE_DIR</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLFTPCREATEDIRNONE"></a><span class="nroffip">CURLFTP_CREATE_DIR_NONE</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLFTPCREATEDIRRETRY"></a><span class="nroffip">CURLFTP_CREATE_DIR_RETRY</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLGSSAPIDELEGATIONFLAG"></a><span class="nroffip">CURLGSSAPI_DELEGATION_FLAG</span>
+<p class="level1">Introduced in 7.22.0
+<p class="level0"><a name="CURLGSSAPIDELEGATIONNONE"></a><span class="nroffip">CURLGSSAPI_DELEGATION_NONE</span>
+<p class="level1">Introduced in 7.22.0
+<p class="level0"><a name="CURLGSSAPIDELEGATIONPOLICYFLAG"></a><span class="nroffip">CURLGSSAPI_DELEGATION_POLICY_FLAG</span>
+<p class="level1">Introduced in 7.22.0
+<p class="level0"><a name="CURLHEADERSEPARATE"></a><span class="nroffip">CURLHEADER_SEPARATE</span>
+<p class="level1">Introduced in 7.37.0
+<p class="level0"><a name="CURLHEADERUNIFIED"></a><span class="nroffip">CURLHEADER_UNIFIED</span>
+<p class="level1">Introduced in 7.37.0
+<p class="level0"><a name="CURLINFOAPPCONNECTTIME"></a><span class="nroffip">CURLINFO_APPCONNECT_TIME</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLINFOCERTINFO"></a><span class="nroffip">CURLINFO_CERTINFO</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLINFOCONDITIONUNMET"></a><span class="nroffip">CURLINFO_CONDITION_UNMET</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLINFOCONNECTTIME"></a><span class="nroffip">CURLINFO_CONNECT_TIME</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOCONTENTLENGTHDOWNLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_DOWNLOAD</span>
+<p class="level1">Introduced in 7.6.1
+<p class="level0"><a name="CURLINFOCONTENTLENGTHUPLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_UPLOAD</span>
+<p class="level1">Introduced in 7.6.1
+<p class="level0"><a name="CURLINFOCONTENTTYPE"></a><span class="nroffip">CURLINFO_CONTENT_TYPE</span>
+<p class="level1">Introduced in 7.9.4
+<p class="level0"><a name="CURLINFOCOOKIELIST"></a><span class="nroffip">CURLINFO_COOKIELIST</span>
+<p class="level1">Introduced in 7.14.1
+<p class="level0"><a name="CURLINFODATAIN"></a><span class="nroffip">CURLINFO_DATA_IN</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLINFODATAOUT"></a><span class="nroffip">CURLINFO_DATA_OUT</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLINFODOUBLE"></a><span class="nroffip">CURLINFO_DOUBLE</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOEFFECTIVEURL"></a><span class="nroffip">CURLINFO_EFFECTIVE_URL</span>
+<p class="level1">Introduced in 7.4
+<p class="level0"><a name="CURLINFOEND"></a><span class="nroffip">CURLINFO_END</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLINFOFILETIME"></a><span class="nroffip">CURLINFO_FILETIME</span>
+<p class="level1">Introduced in 7.5
+<p class="level0"><a name="CURLINFOFTPENTRYPATH"></a><span class="nroffip">CURLINFO_FTP_ENTRY_PATH</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLINFOHEADERIN"></a><span class="nroffip">CURLINFO_HEADER_IN</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLINFOHEADEROUT"></a><span class="nroffip">CURLINFO_HEADER_OUT</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLINFOHEADERSIZE"></a><span class="nroffip">CURLINFO_HEADER_SIZE</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOHTTPAUTHAVAIL"></a><span class="nroffip">CURLINFO_HTTPAUTH_AVAIL</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLINFOHTTPCODE"></a><span class="nroffip">CURLINFO_HTTP_CODE</span>
+<p class="level1">Introduced in 7.4.1 Deprecated since 7.10.8
+<p class="level0"><a name="CURLINFOHTTPCONNECTCODE"></a><span class="nroffip">CURLINFO_HTTP_CONNECTCODE</span>
+<p class="level1">Introduced in 7.10.7
+<p class="level0"><a name="CURLINFOLASTONE"></a><span class="nroffip">CURLINFO_LASTONE</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOLASTSOCKET"></a><span class="nroffip">CURLINFO_LASTSOCKET</span>
+<p class="level1">Introduced in 7.15.2
+<p class="level0"><a name="CURLINFOLOCALIP"></a><span class="nroffip">CURLINFO_LOCAL_IP</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLINFOLOCALPORT"></a><span class="nroffip">CURLINFO_LOCAL_PORT</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLINFOLONG"></a><span class="nroffip">CURLINFO_LONG</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOMASK"></a><span class="nroffip">CURLINFO_MASK</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFONAMELOOKUPTIME"></a><span class="nroffip">CURLINFO_NAMELOOKUP_TIME</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFONONE"></a><span class="nroffip">CURLINFO_NONE</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFONUMCONNECTS"></a><span class="nroffip">CURLINFO_NUM_CONNECTS</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLINFOOSERRNO"></a><span class="nroffip">CURLINFO_OS_ERRNO</span>
+<p class="level1">Introduced in 7.12.2
+<p class="level0"><a name="CURLINFOPRETRANSFERTIME"></a><span class="nroffip">CURLINFO_PRETRANSFER_TIME</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOPRIMARYIP"></a><span class="nroffip">CURLINFO_PRIMARY_IP</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLINFOPRIMARYPORT"></a><span class="nroffip">CURLINFO_PRIMARY_PORT</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLINFOPRIVATE"></a><span class="nroffip">CURLINFO_PRIVATE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLINFOPROXYAUTHAVAIL"></a><span class="nroffip">CURLINFO_PROXYAUTH_AVAIL</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLINFOREDIRECTCOUNT"></a><span class="nroffip">CURLINFO_REDIRECT_COUNT</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLINFOREDIRECTTIME"></a><span class="nroffip">CURLINFO_REDIRECT_TIME</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLINFOREDIRECTURL"></a><span class="nroffip">CURLINFO_REDIRECT_URL</span>
+<p class="level1">Introduced in 7.18.2
+<p class="level0"><a name="CURLINFOREQUESTSIZE"></a><span class="nroffip">CURLINFO_REQUEST_SIZE</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFORESPONSECODE"></a><span class="nroffip">CURLINFO_RESPONSE_CODE</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLINFORTSPCLIENTCSEQ"></a><span class="nroffip">CURLINFO_RTSP_CLIENT_CSEQ</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLINFORTSPCSEQRECV"></a><span class="nroffip">CURLINFO_RTSP_CSEQ_RECV</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLINFORTSPSERVERCSEQ"></a><span class="nroffip">CURLINFO_RTSP_SERVER_CSEQ</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLINFORTSPSESSIONID"></a><span class="nroffip">CURLINFO_RTSP_SESSION_ID</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLINFOSIZEDOWNLOAD"></a><span class="nroffip">CURLINFO_SIZE_DOWNLOAD</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOSIZEUPLOAD"></a><span class="nroffip">CURLINFO_SIZE_UPLOAD</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOSLIST"></a><span class="nroffip">CURLINFO_SLIST</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLINFOSPEEDDOWNLOAD"></a><span class="nroffip">CURLINFO_SPEED_DOWNLOAD</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOSPEEDUPLOAD"></a><span class="nroffip">CURLINFO_SPEED_UPLOAD</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOSSLDATAIN"></a><span class="nroffip">CURLINFO_SSL_DATA_IN</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLINFOSSLDATAOUT"></a><span class="nroffip">CURLINFO_SSL_DATA_OUT</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLINFOSSLENGINES"></a><span class="nroffip">CURLINFO_SSL_ENGINES</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLINFOSSLVERIFYRESULT"></a><span class="nroffip">CURLINFO_SSL_VERIFYRESULT</span>
+<p class="level1">Introduced in 7.5
+<p class="level0"><a name="CURLINFOSTARTTRANSFERTIME"></a><span class="nroffip">CURLINFO_STARTTRANSFER_TIME</span>
+<p class="level1">Introduced in 7.9.2
+<p class="level0"><a name="CURLINFOSTRING"></a><span class="nroffip">CURLINFO_STRING</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOTEXT"></a><span class="nroffip">CURLINFO_TEXT</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLINFOTLSSESSION"></a><span class="nroffip">CURLINFO_TLS_SESSION</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLINFOTOTALTIME"></a><span class="nroffip">CURLINFO_TOTAL_TIME</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLINFOTYPEMASK"></a><span class="nroffip">CURLINFO_TYPEMASK</span>
+<p class="level1">Introduced in 7.4.1
+<p class="level0"><a name="CURLIOCMDNOP"></a><span class="nroffip">CURLIOCMD_NOP</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLIOCMDRESTARTREAD"></a><span class="nroffip">CURLIOCMD_RESTARTREAD</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLIOEFAILRESTART"></a><span class="nroffip">CURLIOE_FAILRESTART</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLIOEOK"></a><span class="nroffip">CURLIOE_OK</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLIOEUNKNOWNCMD"></a><span class="nroffip">CURLIOE_UNKNOWNCMD</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLKHMATCHMISMATCH"></a><span class="nroffip">CURLKHMATCH_MISMATCH</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHMATCHMISSING"></a><span class="nroffip">CURLKHMATCH_MISSING</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHMATCHOK"></a><span class="nroffip">CURLKHMATCH_OK</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHSTATDEFER"></a><span class="nroffip">CURLKHSTAT_DEFER</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHSTATFINE"></a><span class="nroffip">CURLKHSTAT_FINE</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHSTATFINEADDTOFILE"></a><span class="nroffip">CURLKHSTAT_FINE_ADD_TO_FILE</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHSTATREJECT"></a><span class="nroffip">CURLKHSTAT_REJECT</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHTYPEDSS"></a><span class="nroffip">CURLKHTYPE_DSS</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHTYPERSA"></a><span class="nroffip">CURLKHTYPE_RSA</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHTYPERSA1"></a><span class="nroffip">CURLKHTYPE_RSA1</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLKHTYPEUNKNOWN"></a><span class="nroffip">CURLKHTYPE_UNKNOWN</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTMAXCONNECTS"></a><span class="nroffip">CURLMOPT_MAXCONNECTS</span>
+<p class="level1">Introduced in 7.16.3
+<p class="level0"><a name="CURLMOPTMAXHOSTCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_HOST_CONNECTIONS</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTMAXPIPELINELENGTH"></a><span class="nroffip">CURLMOPT_MAX_PIPELINE_LENGTH</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLMOPTPIPELININGSERVERBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SERVER_BL</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTPIPELININGSITEBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SITE_BL</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLMOPTPUSHDATA"></a><span class="nroffip">CURLMOPT_PUSHDATA</span>
+<p class="level1">Introduced in 7.44.0
+<p class="level0"><a name="CURLMOPTPUSHFUNCTION"></a><span class="nroffip">CURLMOPT_PUSHFUNCTION</span>
+<p class="level1">Introduced in 7.44.0
+<p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLMSGDONE"></a><span class="nroffip">CURLMSG_DONE</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMSGNONE"></a><span class="nroffip">CURLMSG_NONE</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMADDEDALREADY"></a><span class="nroffip">CURLM_ADDED_ALREADY</span>
+<p class="level1">Introduced in 7.32.1
+<p class="level0"><a name="CURLMBADEASYHANDLE"></a><span class="nroffip">CURLM_BAD_EASY_HANDLE</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMBADHANDLE"></a><span class="nroffip">CURLM_BAD_HANDLE</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMBADSOCKET"></a><span class="nroffip">CURLM_BAD_SOCKET</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLMCALLMULTIPERFORM"></a><span class="nroffip">CURLM_CALL_MULTI_PERFORM</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMCALLMULTISOCKET"></a><span class="nroffip">CURLM_CALL_MULTI_SOCKET</span>
+<p class="level1">Introduced in 7.15.5
+<p class="level0"><a name="CURLMINTERNALERROR"></a><span class="nroffip">CURLM_INTERNAL_ERROR</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMOK"></a><span class="nroffip">CURLM_OK</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMOUTOFMEMORY"></a><span class="nroffip">CURLM_OUT_OF_MEMORY</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLMUNKNOWNOPTION"></a><span class="nroffip">CURLM_UNKNOWN_OPTION</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLOPTTYPEFUNCTIONPOINT"></a><span class="nroffip">CURLOPTTYPE_FUNCTIONPOINT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTYPELONG"></a><span class="nroffip">CURLOPTTYPE_LONG</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTYPEOBJECTPOINT"></a><span class="nroffip">CURLOPTTYPE_OBJECTPOINT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTYPEOFFT"></a><span class="nroffip">CURLOPTTYPE_OFF_T</span>
+<p class="level1">Introduced in 7.11.0
+<p class="level0"><a name="CURLOPTACCEPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_ACCEPTTIMEOUT_MS</span>
+<p class="level1">Introduced in 7.24.0
+<p class="level0"><a name="CURLOPTACCEPTENCODING"></a><span class="nroffip">CURLOPT_ACCEPT_ENCODING</span>
+<p class="level1">Introduced in 7.21.6
+<p class="level0"><a name="CURLOPTADDRESSSCOPE"></a><span class="nroffip">CURLOPT_ADDRESS_SCOPE</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLOPTAPPEND"></a><span class="nroffip">CURLOPT_APPEND</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLOPTAUTOREFERER"></a><span class="nroffip">CURLOPT_AUTOREFERER</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTBUFFERSIZE"></a><span class="nroffip">CURLOPT_BUFFERSIZE</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLOPTCAINFO"></a><span class="nroffip">CURLOPT_CAINFO</span>
+<p class="level1">Introduced in 7.4.2
+<p class="level0"><a name="CURLOPTCAPATH"></a><span class="nroffip">CURLOPT_CAPATH</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLOPTCERTINFO"></a><span class="nroffip">CURLOPT_CERTINFO</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLOPTCHUNKBGNFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_BGN_FUNCTION</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLOPTCHUNKDATA"></a><span class="nroffip">CURLOPT_CHUNK_DATA</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLOPTCHUNKENDFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_END_FUNCTION</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLOPTCLOSEFUNCTION"></a><span class="nroffip">CURLOPT_CLOSEFUNCTION</span>
+<p class="level1">Introduced in 7.7 Deprecated since 7.11.1 Last used in 7.11.1
+<p class="level0"><a name="CURLOPTCLOSEPOLICY"></a><span class="nroffip">CURLOPT_CLOSEPOLICY</span>
+<p class="level1">Introduced in 7.7 Deprecated since 7.16.1
+<p class="level0"><a name="CURLOPTCLOSESOCKETDATA"></a><span class="nroffip">CURLOPT_CLOSESOCKETDATA</span>
+<p class="level1">Introduced in 7.21.7
+<p class="level0"><a name="CURLOPTCLOSESOCKETFUNCTION"></a><span class="nroffip">CURLOPT_CLOSESOCKETFUNCTION</span>
+<p class="level1">Introduced in 7.21.7
+<p class="level0"><a name="CURLOPTCONNECTTIMEOUT"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTCONNECTTIMEOUTMS"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT_MS</span>
+<p class="level1">Introduced in 7.16.2
+<p class="level0"><a name="CURLOPTCONNECTONLY"></a><span class="nroffip">CURLOPT_CONNECT_ONLY</span>
+<p class="level1">Introduced in 7.15.2
+<p class="level0"><a name="CURLOPTCONVFROMNETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLOPTCONVFROMUTF8FUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_UTF8_FUNCTION</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLOPTCONVTONETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_TO_NETWORK_FUNCTION</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLOPTCOOKIE"></a><span class="nroffip">CURLOPT_COOKIE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTCOOKIEFILE"></a><span class="nroffip">CURLOPT_COOKIEFILE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTCOOKIEJAR"></a><span class="nroffip">CURLOPT_COOKIEJAR</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLOPTCOOKIELIST"></a><span class="nroffip">CURLOPT_COOKIELIST</span>
+<p class="level1">Introduced in 7.14.1
+<p class="level0"><a name="CURLOPTCOOKIESESSION"></a><span class="nroffip">CURLOPT_COOKIESESSION</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLOPTCOPYPOSTFIELDS"></a><span class="nroffip">CURLOPT_COPYPOSTFIELDS</span>
+<p class="level1">Introduced in 7.17.1
+<p class="level0"><a name="CURLOPTCRLF"></a><span class="nroffip">CURLOPT_CRLF</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTCRLFILE"></a><span class="nroffip">CURLOPT_CRLFILE</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLOPTCUSTOMREQUEST"></a><span class="nroffip">CURLOPT_CUSTOMREQUEST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTDEBUGDATA"></a><span class="nroffip">CURLOPT_DEBUGDATA</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLOPTDEBUGFUNCTION"></a><span class="nroffip">CURLOPT_DEBUGFUNCTION</span>
+<p class="level1">Introduced in 7.9.6
+<p class="level0"><a name="CURLOPTDIRLISTONLY"></a><span class="nroffip">CURLOPT_DIRLISTONLY</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLOPTDNSCACHETIMEOUT"></a><span class="nroffip">CURLOPT_DNS_CACHE_TIMEOUT</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLOPTDNSINTERFACE"></a><span class="nroffip">CURLOPT_DNS_INTERFACE</span>
+<p class="level1">Introduced in 7.33.0
+<p class="level0"><a name="CURLOPTDNSLOCALIP4"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP4</span>
+<p class="level1">Introduced in 7.33.0
+<p class="level0"><a name="CURLOPTDNSLOCALIP6"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP6</span>
+<p class="level1">Introduced in 7.33.0
+<p class="level0"><a name="CURLOPTDNSSERVERS"></a><span class="nroffip">CURLOPT_DNS_SERVERS</span>
+<p class="level1">Introduced in 7.24.0
+<p class="level0"><a name="CURLOPTDNSUSEGLOBALCACHE"></a><span class="nroffip">CURLOPT_DNS_USE_GLOBAL_CACHE</span>
+<p class="level1">Introduced in 7.9.3 Deprecated since 7.11.1
+<p class="level0"><a name="CURLOPTEGDSOCKET"></a><span class="nroffip">CURLOPT_EGDSOCKET</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTENCODING"></a><span class="nroffip">CURLOPT_ENCODING</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLOPTERRORBUFFER"></a><span class="nroffip">CURLOPT_ERRORBUFFER</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTEXPECT100TIMEOUTMS"></a><span class="nroffip">CURLOPT_EXPECT_100_TIMEOUT_MS</span>
+<p class="level1">Introduced in 7.36.0
+<p class="level0"><a name="CURLOPTFAILONERROR"></a><span class="nroffip">CURLOPT_FAILONERROR</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTFILE"></a><span class="nroffip">CURLOPT_FILE</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.9.7
+<p class="level0"><a name="CURLOPTFILETIME"></a><span class="nroffip">CURLOPT_FILETIME</span>
+<p class="level1">Introduced in 7.5
+<p class="level0"><a name="CURLOPTFNMATCHDATA"></a><span class="nroffip">CURLOPT_FNMATCH_DATA</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLOPTFNMATCHFUNCTION"></a><span class="nroffip">CURLOPT_FNMATCH_FUNCTION</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLOPTFOLLOWLOCATION"></a><span class="nroffip">CURLOPT_FOLLOWLOCATION</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTFORBIDREUSE"></a><span class="nroffip">CURLOPT_FORBID_REUSE</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTFRESHCONNECT"></a><span class="nroffip">CURLOPT_FRESH_CONNECT</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTFTPAPPEND"></a><span class="nroffip">CURLOPT_FTPAPPEND</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.16.4
+<p class="level0"><a name="CURLOPTFTPASCII"></a><span class="nroffip">CURLOPT_FTPASCII</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.11.1 Last used in 7.11.1
+<p class="level0"><a name="CURLOPTFTPLISTONLY"></a><span class="nroffip">CURLOPT_FTPLISTONLY</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.16.4
+<p class="level0"><a name="CURLOPTFTPPORT"></a><span class="nroffip">CURLOPT_FTPPORT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTFTPSSLAUTH"></a><span class="nroffip">CURLOPT_FTPSSLAUTH</span>
+<p class="level1">Introduced in 7.12.2
+<p class="level0"><a name="CURLOPTFTPACCOUNT"></a><span class="nroffip">CURLOPT_FTP_ACCOUNT</span>
+<p class="level1">Introduced in 7.13.0
+<p class="level0"><a name="CURLOPTFTPALTERNATIVETOUSER"></a><span class="nroffip">CURLOPT_FTP_ALTERNATIVE_TO_USER</span>
+<p class="level1">Introduced in 7.15.5
+<p class="level0"><a name="CURLOPTFTPCREATEMISSINGDIRS"></a><span class="nroffip">CURLOPT_FTP_CREATE_MISSING_DIRS</span>
+<p class="level1">Introduced in 7.10.7
+<p class="level0"><a name="CURLOPTFTPFILEMETHOD"></a><span class="nroffip">CURLOPT_FTP_FILEMETHOD</span>
+<p class="level1">Introduced in 7.15.1
+<p class="level0"><a name="CURLOPTFTPRESPONSETIMEOUT"></a><span class="nroffip">CURLOPT_FTP_RESPONSE_TIMEOUT</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLOPTFTPSKIPPASVIP"></a><span class="nroffip">CURLOPT_FTP_SKIP_PASV_IP</span>
+<p class="level1">Introduced in 7.15.0
+<p class="level0"><a name="CURLOPTFTPSSL"></a><span class="nroffip">CURLOPT_FTP_SSL</span>
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.16.4
+<p class="level0"><a name="CURLOPTFTPSSLCCC"></a><span class="nroffip">CURLOPT_FTP_SSL_CCC</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLOPTFTPUSEEPRT"></a><span class="nroffip">CURLOPT_FTP_USE_EPRT</span>
+<p class="level1">Introduced in 7.10.5
+<p class="level0"><a name="CURLOPTFTPUSEEPSV"></a><span class="nroffip">CURLOPT_FTP_USE_EPSV</span>
+<p class="level1">Introduced in 7.9.2
+<p class="level0"><a name="CURLOPTFTPUSEPRET"></a><span class="nroffip">CURLOPT_FTP_USE_PRET</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTGSSAPIDELEGATION"></a><span class="nroffip">CURLOPT_GSSAPI_DELEGATION</span>
+<p class="level1">Introduced in 7.22.0
+<p class="level0"><a name="CURLOPTHEADER"></a><span class="nroffip">CURLOPT_HEADER</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTHEADERDATA"></a><span class="nroffip">CURLOPT_HEADERDATA</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLOPTHEADERFUNCTION"></a><span class="nroffip">CURLOPT_HEADERFUNCTION</span>
+<p class="level1">Introduced in 7.7.2
+<p class="level0"><a name="CURLOPTHEADEROPT"></a><span class="nroffip">CURLOPT_HEADEROPT</span>
+<p class="level1">Introduced in 7.37.0
+<p class="level0"><a name="CURLOPTHTTP200ALIASES"></a><span class="nroffip">CURLOPT_HTTP200ALIASES</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLOPTHTTPAUTH"></a><span class="nroffip">CURLOPT_HTTPAUTH</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLOPTHTTPGET"></a><span class="nroffip">CURLOPT_HTTPGET</span>
+<p class="level1">Introduced in 7.8.1
+<p class="level0"><a name="CURLOPTHTTPHEADER"></a><span class="nroffip">CURLOPT_HTTPHEADER</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTHTTPPOST"></a><span class="nroffip">CURLOPT_HTTPPOST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTHTTPPROXYTUNNEL"></a><span class="nroffip">CURLOPT_HTTPPROXYTUNNEL</span>
+<p class="level1">Introduced in 7.3
+<p class="level0"><a name="CURLOPTHTTPREQUEST"></a><span class="nroffip">CURLOPT_HTTPREQUEST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTHTTPCONTENTDECODING"></a><span class="nroffip">CURLOPT_HTTP_CONTENT_DECODING</span>
+<p class="level1">Introduced in 7.16.2
+<p class="level0"><a name="CURLOPTHTTPTRANSFERDECODING"></a><span class="nroffip">CURLOPT_HTTP_TRANSFER_DECODING</span>
+<p class="level1">Introduced in 7.16.2
+<p class="level0"><a name="CURLOPTHTTPVERSION"></a><span class="nroffip">CURLOPT_HTTP_VERSION</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLOPTIGNORECONTENTLENGTH"></a><span class="nroffip">CURLOPT_IGNORE_CONTENT_LENGTH</span>
+<p class="level1">Introduced in 7.14.1
+<p class="level0"><a name="CURLOPTINFILE"></a><span class="nroffip">CURLOPT_INFILE</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.9.7
+<p class="level0"><a name="CURLOPTINFILESIZE"></a><span class="nroffip">CURLOPT_INFILESIZE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTINFILESIZELARGE"></a><span class="nroffip">CURLOPT_INFILESIZE_LARGE</span>
+<p class="level1">Introduced in 7.11.0
+<p class="level0"><a name="CURLOPTINTERFACE"></a><span class="nroffip">CURLOPT_INTERFACE</span>
+<p class="level1">Introduced in 7.3
+<p class="level0"><a name="CURLOPTINTERLEAVEDATA"></a><span class="nroffip">CURLOPT_INTERLEAVEDATA</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTINTERLEAVEFUNCTION"></a><span class="nroffip">CURLOPT_INTERLEAVEFUNCTION</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTIOCTLDATA"></a><span class="nroffip">CURLOPT_IOCTLDATA</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLOPTIOCTLFUNCTION"></a><span class="nroffip">CURLOPT_IOCTLFUNCTION</span>
+<p class="level1">Introduced in 7.12.3
+<p class="level0"><a name="CURLOPTIPRESOLVE"></a><span class="nroffip">CURLOPT_IPRESOLVE</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLOPTISSUERCERT"></a><span class="nroffip">CURLOPT_ISSUERCERT</span>
+<p class="level1">Introduced in 7.19.0
+<p class="level0"><a name="CURLOPTKEYPASSWD"></a><span class="nroffip">CURLOPT_KEYPASSWD</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLOPTKRB4LEVEL"></a><span class="nroffip">CURLOPT_KRB4LEVEL</span>
+<p class="level1">Introduced in 7.3 Deprecated since 7.17.0
+<p class="level0"><a name="CURLOPTKRBLEVEL"></a><span class="nroffip">CURLOPT_KRBLEVEL</span>
+<p class="level1">Introduced in 7.16.4
+<p class="level0"><a name="CURLOPTLOCALPORT"></a><span class="nroffip">CURLOPT_LOCALPORT</span>
+<p class="level1">Introduced in 7.15.2
+<p class="level0"><a name="CURLOPTLOCALPORTRANGE"></a><span class="nroffip">CURLOPT_LOCALPORTRANGE</span>
+<p class="level1">Introduced in 7.15.2
+<p class="level0"><a name="CURLOPTLOGINOPTIONS"></a><span class="nroffip">CURLOPT_LOGIN_OPTIONS</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLOPTLOWSPEEDLIMIT"></a><span class="nroffip">CURLOPT_LOW_SPEED_LIMIT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTLOWSPEEDTIME"></a><span class="nroffip">CURLOPT_LOW_SPEED_TIME</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTMAILAUTH"></a><span class="nroffip">CURLOPT_MAIL_AUTH</span>
+<p class="level1">Introduced in 7.25.0
+<p class="level0"><a name="CURLOPTMAILFROM"></a><span class="nroffip">CURLOPT_MAIL_FROM</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTMAILRCPT"></a><span class="nroffip">CURLOPT_MAIL_RCPT</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTMAXCONNECTS"></a><span class="nroffip">CURLOPT_MAXCONNECTS</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTMAXFILESIZE"></a><span class="nroffip">CURLOPT_MAXFILESIZE</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLOPTMAXFILESIZELARGE"></a><span class="nroffip">CURLOPT_MAXFILESIZE_LARGE</span>
+<p class="level1">Introduced in 7.11.0
+<p class="level0"><a name="CURLOPTMAXREDIRS"></a><span class="nroffip">CURLOPT_MAXREDIRS</span>
+<p class="level1">Introduced in 7.5
+<p class="level0"><a name="CURLOPTMAXRECVSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_RECV_SPEED_LARGE</span>
+<p class="level1">Introduced in 7.15.5
+<p class="level0"><a name="CURLOPTMAXSENDSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_SEND_SPEED_LARGE</span>
+<p class="level1">Introduced in 7.15.5
+<p class="level0"><a name="CURLOPTMUTE"></a><span class="nroffip">CURLOPT_MUTE</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.8 Last used in 7.8
+<p class="level0"><a name="CURLOPTNETRC"></a><span class="nroffip">CURLOPT_NETRC</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTNETRCFILE"></a><span class="nroffip">CURLOPT_NETRC_FILE</span>
+<p class="level1">Introduced in 7.11.0
+<p class="level0"><a name="CURLOPTNEWDIRECTORYPERMS"></a><span class="nroffip">CURLOPT_NEW_DIRECTORY_PERMS</span>
+<p class="level1">Introduced in 7.16.4
+<p class="level0"><a name="CURLOPTNEWFILEPERMS"></a><span class="nroffip">CURLOPT_NEW_FILE_PERMS</span>
+<p class="level1">Introduced in 7.16.4
+<p class="level0"><a name="CURLOPTNOBODY"></a><span class="nroffip">CURLOPT_NOBODY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTNOPROGRESS"></a><span class="nroffip">CURLOPT_NOPROGRESS</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTNOPROXY"></a><span class="nroffip">CURLOPT_NOPROXY</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLOPTNOSIGNAL"></a><span class="nroffip">CURLOPT_NOSIGNAL</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLOPTNOTHING"></a><span class="nroffip">CURLOPT_NOTHING</span>
+<p class="level1">Introduced in 7.1.1 Deprecated since 7.11.1 Last used in 7.11.1
+<p class="level0"><a name="CURLOPTOPENSOCKETDATA"></a><span class="nroffip">CURLOPT_OPENSOCKETDATA</span>
+<p class="level1">Introduced in 7.17.1
+<p class="level0"><a name="CURLOPTOPENSOCKETFUNCTION"></a><span class="nroffip">CURLOPT_OPENSOCKETFUNCTION</span>
+<p class="level1">Introduced in 7.17.1
+<p class="level0"><a name="CURLOPTPASSWDDATA"></a><span class="nroffip">CURLOPT_PASSWDDATA</span>
+<p class="level1">Introduced in 7.4.2 Deprecated since 7.11.1 Last used in 7.11.1
+<p class="level0"><a name="CURLOPTPASSWDFUNCTION"></a><span class="nroffip">CURLOPT_PASSWDFUNCTION</span>
+<p class="level1">Introduced in 7.4.2 Deprecated since 7.11.1 Last used in 7.11.1
+<p class="level0"><a name="CURLOPTPASSWORD"></a><span class="nroffip">CURLOPT_PASSWORD</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLOPTPASVHOST"></a><span class="nroffip">CURLOPT_PASV_HOST</span>
+<p class="level1">Introduced in 7.12.1 Deprecated since 7.16.0 Last used in 7.16.0
+<p class="level0"><a name="CURLOPTPATHASIS"></a><span class="nroffip">CURLOPT_PATH_AS_IS</span>
+<p class="level1">Introduced in 7.42.0
+<p class="level0"><a name="CURLOPTPINNEDPUBLICKEY"></a><span class="nroffip">CURLOPT_PINNEDPUBLICKEY</span>
+<p class="level1">Introduced in 7.39.0
+<p class="level0"><a name="CURLOPTPIPEWAIT"></a><span class="nroffip">CURLOPT_PIPEWAIT</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLOPTPORT"></a><span class="nroffip">CURLOPT_PORT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPOST"></a><span class="nroffip">CURLOPT_POST</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPOST301"></a><span class="nroffip">CURLOPT_POST301</span>
+<p class="level1">Introduced in 7.17.1 Deprecated since 7.19.1
+<p class="level0"><a name="CURLOPTPOSTFIELDS"></a><span class="nroffip">CURLOPT_POSTFIELDS</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPOSTFIELDSIZE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE</span>
+<p class="level1">Introduced in 7.2
+<p class="level0"><a name="CURLOPTPOSTFIELDSIZELARGE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE_LARGE</span>
+<p class="level1">Introduced in 7.11.1
+<p class="level0"><a name="CURLOPTPOSTQUOTE"></a><span class="nroffip">CURLOPT_POSTQUOTE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPOSTREDIR"></a><span class="nroffip">CURLOPT_POSTREDIR</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLOPTPREQUOTE"></a><span class="nroffip">CURLOPT_PREQUOTE</span>
+<p class="level1">Introduced in 7.9.5
+<p class="level0"><a name="CURLOPTPRIVATE"></a><span class="nroffip">CURLOPT_PRIVATE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLOPTPROGRESSDATA"></a><span class="nroffip">CURLOPT_PROGRESSDATA</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPROGRESSFUNCTION"></a><span class="nroffip">CURLOPT_PROGRESSFUNCTION</span>
+<p class="level1">Introduced in 7.1 Deprecated since 7.32.0
+<p class="level0"><a name="CURLOPTPROTOCOLS"></a><span class="nroffip">CURLOPT_PROTOCOLS</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLOPTPROXY"></a><span class="nroffip">CURLOPT_PROXY</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPROXYAUTH"></a><span class="nroffip">CURLOPT_PROXYAUTH</span>
+<p class="level1">Introduced in 7.10.7
+<p class="level0"><a name="CURLOPTPROXYHEADER"></a><span class="nroffip">CURLOPT_PROXYHEADER</span>
+<p class="level1">Introduced in 7.37.0
+<p class="level0"><a name="CURLOPTPROXYPASSWORD"></a><span class="nroffip">CURLOPT_PROXYPASSWORD</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLOPTPROXYPORT"></a><span class="nroffip">CURLOPT_PROXYPORT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPROXYTYPE"></a><span class="nroffip">CURLOPT_PROXYTYPE</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLOPTPROXYUSERNAME"></a><span class="nroffip">CURLOPT_PROXYUSERNAME</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLOPTPROXYUSERPWD"></a><span class="nroffip">CURLOPT_PROXYUSERPWD</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTPROXYSERVICENAME"></a><span class="nroffip">CURLOPT_PROXY_SERVICE_NAME</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLOPTPROXYTRANSFERMODE"></a><span class="nroffip">CURLOPT_PROXY_TRANSFER_MODE</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLOPTPUT"></a><span class="nroffip">CURLOPT_PUT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTQUOTE"></a><span class="nroffip">CURLOPT_QUOTE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTRANDOMFILE"></a><span class="nroffip">CURLOPT_RANDOM_FILE</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTRANGE"></a><span class="nroffip">CURLOPT_RANGE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTREADDATA"></a><span class="nroffip">CURLOPT_READDATA</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLOPTREADFUNCTION"></a><span class="nroffip">CURLOPT_READFUNCTION</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTREDIRPROTOCOLS"></a><span class="nroffip">CURLOPT_REDIR_PROTOCOLS</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLOPTREFERER"></a><span class="nroffip">CURLOPT_REFERER</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTRESOLVE"></a><span class="nroffip">CURLOPT_RESOLVE</span>
+<p class="level1">Introduced in 7.21.3
+<p class="level0"><a name="CURLOPTRESUMEFROM"></a><span class="nroffip">CURLOPT_RESUME_FROM</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTRESUMEFROMLARGE"></a><span class="nroffip">CURLOPT_RESUME_FROM_LARGE</span>
+<p class="level1">Introduced in 7.11.0
+<p class="level0"><a name="CURLOPTRTSPHEADER"></a><span class="nroffip">CURLOPT_RTSPHEADER</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTRTSPCLIENTCSEQ"></a><span class="nroffip">CURLOPT_RTSP_CLIENT_CSEQ</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTRTSPREQUEST"></a><span class="nroffip">CURLOPT_RTSP_REQUEST</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTRTSPSERVERCSEQ"></a><span class="nroffip">CURLOPT_RTSP_SERVER_CSEQ</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTRTSPSESSIONID"></a><span class="nroffip">CURLOPT_RTSP_SESSION_ID</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTRTSPSTREAMURI"></a><span class="nroffip">CURLOPT_RTSP_STREAM_URI</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTRTSPTRANSPORT"></a><span class="nroffip">CURLOPT_RTSP_TRANSPORT</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTSASLIR"></a><span class="nroffip">CURLOPT_SASL_IR</span>
+<p class="level1">Introduced in 7.31.0
+<p class="level0"><a name="CURLOPTSEEKDATA"></a><span class="nroffip">CURLOPT_SEEKDATA</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLOPTSEEKFUNCTION"></a><span class="nroffip">CURLOPT_SEEKFUNCTION</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLOPTSERVERRESPONSETIMEOUT"></a><span class="nroffip">CURLOPT_SERVER_RESPONSE_TIMEOUT</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLOPTSERVICENAME"></a><span class="nroffip">CURLOPT_SERVICE_NAME</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLOPTSHARE"></a><span class="nroffip">CURLOPT_SHARE</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLOPTSOCKOPTDATA"></a><span class="nroffip">CURLOPT_SOCKOPTDATA</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLOPTSOCKOPTFUNCTION"></a><span class="nroffip">CURLOPT_SOCKOPTFUNCTION</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLOPTSOCKS5GSSAPINEC"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_NEC</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLOPTSOCKS5GSSAPISERVICE"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_SERVICE</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLOPTSOURCEHOST"></a><span class="nroffip">CURLOPT_SOURCE_HOST</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLOPTSOURCEPATH"></a><span class="nroffip">CURLOPT_SOURCE_PATH</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLOPTSOURCEPORT"></a><span class="nroffip">CURLOPT_SOURCE_PORT</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLOPTSOURCEPOSTQUOTE"></a><span class="nroffip">CURLOPT_SOURCE_POSTQUOTE</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLOPTSOURCEPREQUOTE"></a><span class="nroffip">CURLOPT_SOURCE_PREQUOTE</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLOPTSOURCEQUOTE"></a><span class="nroffip">CURLOPT_SOURCE_QUOTE</span>
+<p class="level1">Introduced in 7.13.0
+<p class="level0"><a name="CURLOPTSOURCEURL"></a><span class="nroffip">CURLOPT_SOURCE_URL</span>
+<p class="level1">Introduced in 7.13.0
+<p class="level0"><a name="CURLOPTSOURCEUSERPWD"></a><span class="nroffip">CURLOPT_SOURCE_USERPWD</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLOPTSSHAUTHTYPES"></a><span class="nroffip">CURLOPT_SSH_AUTH_TYPES</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLOPTSSHHOSTPUBLICKEYMD5"></a><span class="nroffip">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</span>
+<p class="level1">Introduced in 7.17.1
+<p class="level0"><a name="CURLOPTSSHKEYDATA"></a><span class="nroffip">CURLOPT_SSH_KEYDATA</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLOPTSSHKEYFUNCTION"></a><span class="nroffip">CURLOPT_SSH_KEYFUNCTION</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLOPTSSHKNOWNHOSTS"></a><span class="nroffip">CURLOPT_SSH_KNOWNHOSTS</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLOPTSSHPRIVATEKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PRIVATE_KEYFILE</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLOPTSSHPUBLICKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PUBLIC_KEYFILE</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLOPTSSLCERT"></a><span class="nroffip">CURLOPT_SSLCERT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTSSLCERTPASSWD"></a><span class="nroffip">CURLOPT_SSLCERTPASSWD</span>
+<p class="level1">Introduced in 7.1.1 Deprecated since 7.17.0
+<p class="level0"><a name="CURLOPTSSLCERTTYPE"></a><span class="nroffip">CURLOPT_SSLCERTTYPE</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLOPTSSLENGINE"></a><span class="nroffip">CURLOPT_SSLENGINE</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLOPTSSLENGINEDEFAULT"></a><span class="nroffip">CURLOPT_SSLENGINE_DEFAULT</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLOPTSSLKEY"></a><span class="nroffip">CURLOPT_SSLKEY</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLOPTSSLKEYPASSWD"></a><span class="nroffip">CURLOPT_SSLKEYPASSWD</span>
+<p class="level1">Introduced in 7.9.3 Deprecated since 7.17.0
+<p class="level0"><a name="CURLOPTSSLKEYTYPE"></a><span class="nroffip">CURLOPT_SSLKEYTYPE</span>
+<p class="level1">Introduced in 7.9.3
+<p class="level0"><a name="CURLOPTSSLVERSION"></a><span class="nroffip">CURLOPT_SSLVERSION</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTSSLCIPHERLIST"></a><span class="nroffip">CURLOPT_SSL_CIPHER_LIST</span>
+<p class="level1">Introduced in 7.9
+<p class="level0"><a name="CURLOPTSSLCTXDATA"></a><span class="nroffip">CURLOPT_SSL_CTX_DATA</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLOPTSSLCTXFUNCTION"></a><span class="nroffip">CURLOPT_SSL_CTX_FUNCTION</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLOPTSSLENABLEALPN"></a><span class="nroffip">CURLOPT_SSL_ENABLE_ALPN</span>
+<p class="level1">Introduced in 7.36.0
+<p class="level0"><a name="CURLOPTSSLENABLENPN"></a><span class="nroffip">CURLOPT_SSL_ENABLE_NPN</span>
+<p class="level1">Introduced in 7.36.0
+<p class="level0"><a name="CURLOPTSSLFALSESTART"></a><span class="nroffip">CURLOPT_SSL_FALSESTART</span>
+<p class="level1">Introduced in 7.42.0
+<p class="level0"><a name="CURLOPTSSLOPTIONS"></a><span class="nroffip">CURLOPT_SSL_OPTIONS</span>
+<p class="level1">Introduced in 7.25.0
+<p class="level0"><a name="CURLOPTSSLSESSIONIDCACHE"></a><span class="nroffip">CURLOPT_SSL_SESSIONID_CACHE</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span>
+<p class="level1">Introduced in 7.8.1
+<p class="level0"><a name="CURLOPTSSLVERIFYPEER"></a><span class="nroffip">CURLOPT_SSL_VERIFYPEER</span>
+<p class="level1">Introduced in 7.4.2
+<p class="level0"><a name="CURLOPTSSLVERIFYSTATUS"></a><span class="nroffip">CURLOPT_SSL_VERIFYSTATUS</span>
+<p class="level1">Introduced in 7.41.0
+<p class="level0"><a name="CURLOPTSTDERR"></a><span class="nroffip">CURLOPT_STDERR</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTCPKEEPALIVE"></a><span class="nroffip">CURLOPT_TCP_KEEPALIVE</span>
+<p class="level1">Introduced in 7.25.0
+<p class="level0"><a name="CURLOPTTCPKEEPIDLE"></a><span class="nroffip">CURLOPT_TCP_KEEPIDLE</span>
+<p class="level1">Introduced in 7.25.0
+<p class="level0"><a name="CURLOPTTCPKEEPINTVL"></a><span class="nroffip">CURLOPT_TCP_KEEPINTVL</span>
+<p class="level1">Introduced in 7.25.0
+<p class="level0"><a name="CURLOPTTCPNODELAY"></a><span class="nroffip">CURLOPT_TCP_NODELAY</span>
+<p class="level1">Introduced in 7.11.2
+<p class="level0"><a name="CURLOPTTELNETOPTIONS"></a><span class="nroffip">CURLOPT_TELNETOPTIONS</span>
+<p class="level1">Introduced in 7.7
+<p class="level0"><a name="CURLOPTTFTPBLKSIZE"></a><span class="nroffip">CURLOPT_TFTP_BLKSIZE</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLOPTTIMECONDITION"></a><span class="nroffip">CURLOPT_TIMECONDITION</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTIMEOUT"></a><span class="nroffip">CURLOPT_TIMEOUT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_TIMEOUT_MS</span>
+<p class="level1">Introduced in 7.16.2
+<p class="level0"><a name="CURLOPTTIMEVALUE"></a><span class="nroffip">CURLOPT_TIMEVALUE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTTLSAUTHPASSWORD"></a><span class="nroffip">CURLOPT_TLSAUTH_PASSWORD</span>
+<p class="level1">Introduced in 7.21.4
+<p class="level0"><a name="CURLOPTTLSAUTHTYPE"></a><span class="nroffip">CURLOPT_TLSAUTH_TYPE</span>
+<p class="level1">Introduced in 7.21.4
+<p class="level0"><a name="CURLOPTTLSAUTHUSERNAME"></a><span class="nroffip">CURLOPT_TLSAUTH_USERNAME</span>
+<p class="level1">Introduced in 7.21.4
+<p class="level0"><a name="CURLOPTTRANSFERTEXT"></a><span class="nroffip">CURLOPT_TRANSFERTEXT</span>
+<p class="level1">Introduced in 7.1.1
+<p class="level0"><a name="CURLOPTTRANSFERENCODING"></a><span class="nroffip">CURLOPT_TRANSFER_ENCODING</span>
+<p class="level1">Introduced in 7.21.6
+<p class="level0"><a name="CURLOPTUNIXSOCKETPATH"></a><span class="nroffip">CURLOPT_UNIX_SOCKET_PATH</span>
+<p class="level1">Introduced in 7.40.0
+<p class="level0"><a name="CURLOPTUNRESTRICTEDAUTH"></a><span class="nroffip">CURLOPT_UNRESTRICTED_AUTH</span>
+<p class="level1">Introduced in 7.10.4
+<p class="level0"><a name="CURLOPTUPLOAD"></a><span class="nroffip">CURLOPT_UPLOAD</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTURL"></a><span class="nroffip">CURLOPT_URL</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTUSERAGENT"></a><span class="nroffip">CURLOPT_USERAGENT</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTUSERNAME"></a><span class="nroffip">CURLOPT_USERNAME</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLOPTUSERPWD"></a><span class="nroffip">CURLOPT_USERPWD</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTUSESSL"></a><span class="nroffip">CURLOPT_USE_SSL</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLOPTVERBOSE"></a><span class="nroffip">CURLOPT_VERBOSE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTWILDCARDMATCH"></a><span class="nroffip">CURLOPT_WILDCARDMATCH</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLOPTWRITEDATA"></a><span class="nroffip">CURLOPT_WRITEDATA</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLOPTWRITEFUNCTION"></a><span class="nroffip">CURLOPT_WRITEFUNCTION</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTWRITEHEADER"></a><span class="nroffip">CURLOPT_WRITEHEADER</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTWRITEINFO"></a><span class="nroffip">CURLOPT_WRITEINFO</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLOPTXFERINFODATA"></a><span class="nroffip">CURLOPT_XFERINFODATA</span>
+<p class="level1">Introduced in 7.32.0
+<p class="level0"><a name="CURLOPTXFERINFOFUNCTION"></a><span class="nroffip">CURLOPT_XFERINFOFUNCTION</span>
+<p class="level1">Introduced in 7.32.0
+<p class="level0"><a name="CURLOPTXOAUTH2BEARER"></a><span class="nroffip">CURLOPT_XOAUTH2_BEARER</span>
+<p class="level1">Introduced in 7.33.0
+<p class="level0"><a name="CURLPAUSEALL"></a><span class="nroffip">CURLPAUSE_ALL</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPAUSECONT"></a><span class="nroffip">CURLPAUSE_CONT</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPAUSERECV"></a><span class="nroffip">CURLPAUSE_RECV</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPAUSERECVCONT"></a><span class="nroffip">CURLPAUSE_RECV_CONT</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPAUSESEND"></a><span class="nroffip">CURLPAUSE_SEND</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPAUSESENDCONT"></a><span class="nroffip">CURLPAUSE_SEND_CONT</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPIPEHTTP1"></a><span class="nroffip">CURLPIPE_HTTP1</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLPIPEMULTIPLEX"></a><span class="nroffip">CURLPIPE_MULTIPLEX</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLPIPENOTHING"></a><span class="nroffip">CURLPIPE_NOTHING</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLPROTOALL"></a><span class="nroffip">CURLPROTO_ALL</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTODICT"></a><span class="nroffip">CURLPROTO_DICT</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOFILE"></a><span class="nroffip">CURLPROTO_FILE</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOFTP"></a><span class="nroffip">CURLPROTO_FTP</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOFTPS"></a><span class="nroffip">CURLPROTO_FTPS</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOGOPHER"></a><span class="nroffip">CURLPROTO_GOPHER</span>
+<p class="level1">Introduced in 7.21.2
+<p class="level0"><a name="CURLPROTOHTTP"></a><span class="nroffip">CURLPROTO_HTTP</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOHTTPS"></a><span class="nroffip">CURLPROTO_HTTPS</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOIMAP"></a><span class="nroffip">CURLPROTO_IMAP</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTOIMAPS"></a><span class="nroffip">CURLPROTO_IMAPS</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTOLDAP"></a><span class="nroffip">CURLPROTO_LDAP</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOLDAPS"></a><span class="nroffip">CURLPROTO_LDAPS</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOPOP3"></a><span class="nroffip">CURLPROTO_POP3</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTOPOP3S"></a><span class="nroffip">CURLPROTO_POP3S</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTORTMP"></a><span class="nroffip">CURLPROTO_RTMP</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLPROTORTMPE"></a><span class="nroffip">CURLPROTO_RTMPE</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLPROTORTMPS"></a><span class="nroffip">CURLPROTO_RTMPS</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLPROTORTMPT"></a><span class="nroffip">CURLPROTO_RTMPT</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLPROTORTMPTE"></a><span class="nroffip">CURLPROTO_RTMPTE</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLPROTORTMPTS"></a><span class="nroffip">CURLPROTO_RTMPTS</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLPROTORTSP"></a><span class="nroffip">CURLPROTO_RTSP</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTOSCP"></a><span class="nroffip">CURLPROTO_SCP</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOSFTP"></a><span class="nroffip">CURLPROTO_SFTP</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOSMB"></a><span class="nroffip">CURLPROTO_SMB</span>
+<p class="level1">Introduced in 7.40.0
+<p class="level0"><a name="CURLPROTOSMBS"></a><span class="nroffip">CURLPROTO_SMBS</span>
+<p class="level1">Introduced in 7.40.0
+<p class="level0"><a name="CURLPROTOSMTP"></a><span class="nroffip">CURLPROTO_SMTP</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTOSMTPS"></a><span class="nroffip">CURLPROTO_SMTPS</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLPROTOTELNET"></a><span class="nroffip">CURLPROTO_TELNET</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROTOTFTP"></a><span class="nroffip">CURLPROTO_TFTP</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROXYHTTP"></a><span class="nroffip">CURLPROXY_HTTP</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLPROXYHTTP10"></a><span class="nroffip">CURLPROXY_HTTP_1_0</span>
+<p class="level1">Introduced in 7.19.4
+<p class="level0"><a name="CURLPROXYSOCKS4"></a><span class="nroffip">CURLPROXY_SOCKS4</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLPROXYSOCKS4A"></a><span class="nroffip">CURLPROXY_SOCKS4A</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLPROXYSOCKS5"></a><span class="nroffip">CURLPROXY_SOCKS5</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLPROXYSOCKS5HOSTNAME"></a><span class="nroffip">CURLPROXY_SOCKS5_HOSTNAME</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLSHEBADOPTION"></a><span class="nroffip">CURLSHE_BAD_OPTION</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHEINVALID"></a><span class="nroffip">CURLSHE_INVALID</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHEINUSE"></a><span class="nroffip">CURLSHE_IN_USE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHENOMEM"></a><span class="nroffip">CURLSHE_NOMEM</span>
+<p class="level1">Introduced in 7.12.0
+<p class="level0"><a name="CURLSHENOTBUILTIN"></a><span class="nroffip">CURLSHE_NOT_BUILT_IN</span>
+<p class="level1">Introduced in 7.23.0
+<p class="level0"><a name="CURLSHEOK"></a><span class="nroffip">CURLSHE_OK</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHOPTLOCKFUNC"></a><span class="nroffip">CURLSHOPT_LOCKFUNC</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHOPTNONE"></a><span class="nroffip">CURLSHOPT_NONE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHOPTSHARE"></a><span class="nroffip">CURLSHOPT_SHARE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHOPTUNLOCKFUNC"></a><span class="nroffip">CURLSHOPT_UNLOCKFUNC</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHOPTUNSHARE"></a><span class="nroffip">CURLSHOPT_UNSHARE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSHOPTUSERDATA"></a><span class="nroffip">CURLSHOPT_USERDATA</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLSOCKTYPEACCEPT"></a><span class="nroffip">CURLSOCKTYPE_ACCEPT</span>
+<p class="level1">Introduced in 7.28.0
+<p class="level0"><a name="CURLSOCKTYPEIPCXN"></a><span class="nroffip">CURLSOCKTYPE_IPCXN</span>
+<p class="level1">Introduced in 7.16.0
+<p class="level0"><a name="CURLSSHAUTHAGENT"></a><span class="nroffip">CURLSSH_AUTH_AGENT</span>
+<p class="level1">Introduced in 7.28.0
+<p class="level0"><a name="CURLSSHAUTHANY"></a><span class="nroffip">CURLSSH_AUTH_ANY</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSHAUTHDEFAULT"></a><span class="nroffip">CURLSSH_AUTH_DEFAULT</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSHAUTHHOST"></a><span class="nroffip">CURLSSH_AUTH_HOST</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSHAUTHKEYBOARD"></a><span class="nroffip">CURLSSH_AUTH_KEYBOARD</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSHAUTHNONE"></a><span class="nroffip">CURLSSH_AUTH_NONE</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSHAUTHPASSWORD"></a><span class="nroffip">CURLSSH_AUTH_PASSWORD</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSHAUTHPUBLICKEY"></a><span class="nroffip">CURLSSH_AUTH_PUBLICKEY</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLSSLBACKENDAXTLS"></a><span class="nroffip">CURLSSLBACKEND_AXTLS</span>
+<p class="level1">Introduced in 7.38.0
+<p class="level0"><a name="CURLSSLBACKENDCYASSL"></a><span class="nroffip">CURLSSLBACKEND_CYASSL</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDDARWINSSL"></a><span class="nroffip">CURLSSLBACKEND_DARWINSSL</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDGNUTLS"></a><span class="nroffip">CURLSSLBACKEND_GNUTLS</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDGSKIT"></a><span class="nroffip">CURLSSLBACKEND_GSKIT</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDNONE"></a><span class="nroffip">CURLSSLBACKEND_NONE</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDNSS"></a><span class="nroffip">CURLSSLBACKEND_NSS</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDOPENSSL"></a><span class="nroffip">CURLSSLBACKEND_OPENSSL</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDPOLARSSL"></a><span class="nroffip">CURLSSLBACKEND_POLARSSL</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDQSOSSL"></a><span class="nroffip">CURLSSLBACKEND_QSOSSL</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLBACKENDSCHANNEL"></a><span class="nroffip">CURLSSLBACKEND_SCHANNEL</span>
+<p class="level1">Introduced in 7.34.0
+<p class="level0"><a name="CURLSSLOPTALLOWBEAST"></a><span class="nroffip">CURLSSLOPT_ALLOW_BEAST</span>
+<p class="level1">Introduced in 7.25.0
+<p class="level0"><a name="CURLSSLOPTNOREVOKE"></a><span class="nroffip">CURLSSLOPT_NO_REVOKE</span>
+<p class="level1">Introduced in 7.44.0
+<p class="level0"><a name="CURLUSESSLALL"></a><span class="nroffip">CURLUSESSL_ALL</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLUSESSLCONTROL"></a><span class="nroffip">CURLUSESSL_CONTROL</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLUSESSLNONE"></a><span class="nroffip">CURLUSESSL_NONE</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLUSESSLTRY"></a><span class="nroffip">CURLUSESSL_TRY</span>
+<p class="level1">Introduced in 7.17.0
+<p class="level0"><a name="CURLVERSIONFIRST"></a><span class="nroffip">CURLVERSION_FIRST</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLVERSIONFOURTH"></a><span class="nroffip">CURLVERSION_FOURTH</span>
+<p class="level1">Introduced in 7.16.1
+<p class="level0"><a name="CURLVERSIONNOW"></a><span class="nroffip">CURLVERSION_NOW</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLVERSIONSECOND"></a><span class="nroffip">CURLVERSION_SECOND</span>
+<p class="level1">Introduced in 7.11.1
+<p class="level0"><a name="CURLVERSIONTHIRD"></a><span class="nroffip">CURLVERSION_THIRD</span>
+<p class="level1">Introduced in 7.12.0
+<p class="level0"><a name="CURLCHUNKBGNFUNCFAIL"></a><span class="nroffip">CURL_CHUNK_BGN_FUNC_FAIL</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLCHUNKBGNFUNCOK"></a><span class="nroffip">CURL_CHUNK_BGN_FUNC_OK</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLCHUNKBGNFUNCSKIP"></a><span class="nroffip">CURL_CHUNK_BGN_FUNC_SKIP</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLCHUNKENDFUNCFAIL"></a><span class="nroffip">CURL_CHUNK_END_FUNC_FAIL</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLCHUNKENDFUNCOK"></a><span class="nroffip">CURL_CHUNK_END_FUNC_OK</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLCSELECTERR"></a><span class="nroffip">CURL_CSELECT_ERR</span>
+<p class="level1">Introduced in 7.16.3
+<p class="level0"><a name="CURLCSELECTIN"></a><span class="nroffip">CURL_CSELECT_IN</span>
+<p class="level1">Introduced in 7.16.3
+<p class="level0"><a name="CURLCSELECTOUT"></a><span class="nroffip">CURL_CSELECT_OUT</span>
+<p class="level1">Introduced in 7.16.3
+<p class="level0"><a name="CURLEASYNONE"></a><span class="nroffip">CURL_EASY_NONE</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLEASYTIMEOUT"></a><span class="nroffip">CURL_EASY_TIMEOUT</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLERRORSIZE"></a><span class="nroffip">CURL_ERROR_SIZE</span>
+<p class="level1">Introduced in 7.1
+<p class="level0"><a name="CURLFNMATCHFUNCFAIL"></a><span class="nroffip">CURL_FNMATCHFUNC_FAIL</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFNMATCHFUNCMATCH"></a><span class="nroffip">CURL_FNMATCHFUNC_MATCH</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFNMATCHFUNCNOMATCH"></a><span class="nroffip">CURL_FNMATCHFUNC_NOMATCH</span>
+<p class="level1">Introduced in 7.21.0
+<p class="level0"><a name="CURLFORMADDDISABLED"></a><span class="nroffip">CURL_FORMADD_DISABLED</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLFORMADDILLEGALARRAY"></a><span class="nroffip">CURL_FORMADD_ILLEGAL_ARRAY</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMADDINCOMPLETE"></a><span class="nroffip">CURL_FORMADD_INCOMPLETE</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMADDMEMORY"></a><span class="nroffip">CURL_FORMADD_MEMORY</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMADDNULL"></a><span class="nroffip">CURL_FORMADD_NULL</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMADDOK"></a><span class="nroffip">CURL_FORMADD_OK</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMADDOPTIONTWICE"></a><span class="nroffip">CURL_FORMADD_OPTION_TWICE</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLFORMADDUNKNOWNOPTION"></a><span class="nroffip">CURL_FORMADD_UNKNOWN_OPTION</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLGLOBALACKEINTR"></a><span class="nroffip">CURL_GLOBAL_ACK_EINTR</span>
+<p class="level1">Introduced in 7.30.0
+<p class="level0"><a name="CURLGLOBALALL"></a><span class="nroffip">CURL_GLOBAL_ALL</span>
+<p class="level1">Introduced in 7.8
+<p class="level0"><a name="CURLGLOBALDEFAULT"></a><span class="nroffip">CURL_GLOBAL_DEFAULT</span>
+<p class="level1">Introduced in 7.8
+<p class="level0"><a name="CURLGLOBALNOTHING"></a><span class="nroffip">CURL_GLOBAL_NOTHING</span>
+<p class="level1">Introduced in 7.8
+<p class="level0"><a name="CURLGLOBALSSL"></a><span class="nroffip">CURL_GLOBAL_SSL</span>
+<p class="level1">Introduced in 7.8
+<p class="level0"><a name="CURLGLOBALWIN32"></a><span class="nroffip">CURL_GLOBAL_WIN32</span>
+<p class="level1">Introduced in 7.8.1
+<p class="level0"><a name="CURLHTTPVERSION10"></a><span class="nroffip">CURL_HTTP_VERSION_1_0</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLHTTPVERSION11"></a><span class="nroffip">CURL_HTTP_VERSION_1_1</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLHTTPVERSION20"></a><span class="nroffip">CURL_HTTP_VERSION_2_0</span>
+<p class="level1">Introduced in 7.33.0
+<p class="level0"><a name="CURLHTTPVERSION2"></a><span class="nroffip">CURL_HTTP_VERSION_2</span>
+<p class="level1">Introduced in 7.43.0
+<p class="level0"><a name="CURLHTTPVERSIONNONE"></a><span class="nroffip">CURL_HTTP_VERSION_NONE</span>
+<p class="level1">Introduced in 7.9.1
+<p class="level0"><a name="CURLIPRESOLVEV4"></a><span class="nroffip">CURL_IPRESOLVE_V4</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLIPRESOLVEV6"></a><span class="nroffip">CURL_IPRESOLVE_V6</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLIPRESOLVEWHATEVER"></a><span class="nroffip">CURL_IPRESOLVE_WHATEVER</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLLOCKACCESSNONE"></a><span class="nroffip">CURL_LOCK_ACCESS_NONE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKACCESSSHARED"></a><span class="nroffip">CURL_LOCK_ACCESS_SHARED</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKACCESSSINGLE"></a><span class="nroffip">CURL_LOCK_ACCESS_SINGLE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKDATACONNECT"></a><span class="nroffip">CURL_LOCK_DATA_CONNECT</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKDATACOOKIE"></a><span class="nroffip">CURL_LOCK_DATA_COOKIE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKDATADNS"></a><span class="nroffip">CURL_LOCK_DATA_DNS</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKDATANONE"></a><span class="nroffip">CURL_LOCK_DATA_NONE</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKDATASHARE"></a><span class="nroffip">CURL_LOCK_DATA_SHARE</span>
+<p class="level1">Introduced in 7.10.4
+<p class="level0"><a name="CURLLOCKDATASSLSESSION"></a><span class="nroffip">CURL_LOCK_DATA_SSL_SESSION</span>
+<p class="level1">Introduced in 7.10.3
+<p class="level0"><a name="CURLLOCKTYPECONNECT"></a><span class="nroffip">CURL_LOCK_TYPE_CONNECT</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLLOCKTYPECOOKIE"></a><span class="nroffip">CURL_LOCK_TYPE_COOKIE</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLLOCKTYPEDNS"></a><span class="nroffip">CURL_LOCK_TYPE_DNS</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLLOCKTYPENONE"></a><span class="nroffip">CURL_LOCK_TYPE_NONE</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLLOCKTYPESSLSESSION"></a><span class="nroffip">CURL_LOCK_TYPE_SSL_SESSION</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLMAXHTTPHEADER"></a><span class="nroffip">CURL_MAX_HTTP_HEADER</span>
+<p class="level1">Introduced in 7.19.7
+<p class="level0"><a name="CURLMAXWRITESIZE"></a><span class="nroffip">CURL_MAX_WRITE_SIZE</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLNETRCIGNORED"></a><span class="nroffip">CURL_NETRC_IGNORED</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLNETRCOPTIONAL"></a><span class="nroffip">CURL_NETRC_OPTIONAL</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLNETRCREQUIRED"></a><span class="nroffip">CURL_NETRC_REQUIRED</span>
+<p class="level1">Introduced in 7.9.8
+<p class="level0"><a name="CURLPOLLIN"></a><span class="nroffip">CURL_POLL_IN</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLPOLLINOUT"></a><span class="nroffip">CURL_POLL_INOUT</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLPOLLNONE"></a><span class="nroffip">CURL_POLL_NONE</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLPOLLOUT"></a><span class="nroffip">CURL_POLL_OUT</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLPOLLREMOVE"></a><span class="nroffip">CURL_POLL_REMOVE</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLPROGRESSBAR"></a><span class="nroffip">CURL_PROGRESS_BAR</span>
+<p class="level1">Introduced in 7.1.1
+<p class="level0"><a name="CURLPROGRESSSTATS"></a><span class="nroffip">CURL_PROGRESS_STATS</span>
+<p class="level1">Introduced in 7.1.1
+<p class="level0"><a name="CURLPUSHDENY"></a><span class="nroffip">CURL_PUSH_DENY</span>
+<p class="level1">Introduced in 7.44.0
+<p class="level0"><a name="CURLPUSHOK"></a><span class="nroffip">CURL_PUSH_OK</span>
+<p class="level1">Introduced in 7.44.0
+<p class="level0"><a name="CURLREADFUNCABORT"></a><span class="nroffip">CURL_READFUNC_ABORT</span>
+<p class="level1">Introduced in 7.12.1
+<p class="level0"><a name="CURLREADFUNCPAUSE"></a><span class="nroffip">CURL_READFUNC_PAUSE</span>
+<p class="level1">Introduced in 7.18.0
+<p class="level0"><a name="CURLREDIRGETALL"></a><span class="nroffip">CURL_REDIR_GET_ALL</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLREDIRPOST301"></a><span class="nroffip">CURL_REDIR_POST_301</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLREDIRPOST302"></a><span class="nroffip">CURL_REDIR_POST_302</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLREDIRPOST303"></a><span class="nroffip">CURL_REDIR_POST_303</span>
+<p class="level1">Introduced in 7.25.1
+<p class="level0"><a name="CURLREDIRPOSTALL"></a><span class="nroffip">CURL_REDIR_POST_ALL</span>
+<p class="level1">Introduced in 7.19.1
+<p class="level0"><a name="CURLRTSPREQANNOUNCE"></a><span class="nroffip">CURL_RTSPREQ_ANNOUNCE</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQDESCRIBE"></a><span class="nroffip">CURL_RTSPREQ_DESCRIBE</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQGETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_GET_PARAMETER</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQNONE"></a><span class="nroffip">CURL_RTSPREQ_NONE</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQOPTIONS"></a><span class="nroffip">CURL_RTSPREQ_OPTIONS</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQPAUSE"></a><span class="nroffip">CURL_RTSPREQ_PAUSE</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQPLAY"></a><span class="nroffip">CURL_RTSPREQ_PLAY</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQRECEIVE"></a><span class="nroffip">CURL_RTSPREQ_RECEIVE</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQRECORD"></a><span class="nroffip">CURL_RTSPREQ_RECORD</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQSETUP"></a><span class="nroffip">CURL_RTSPREQ_SETUP</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQSETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_SET_PARAMETER</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLRTSPREQTEARDOWN"></a><span class="nroffip">CURL_RTSPREQ_TEARDOWN</span>
+<p class="level1">Introduced in 7.20.0
+<p class="level0"><a name="CURLSEEKFUNCCANTSEEK"></a><span class="nroffip">CURL_SEEKFUNC_CANTSEEK</span>
+<p class="level1">Introduced in 7.19.5
+<p class="level0"><a name="CURLSEEKFUNCFAIL"></a><span class="nroffip">CURL_SEEKFUNC_FAIL</span>
+<p class="level1">Introduced in 7.19.5
+<p class="level0"><a name="CURLSEEKFUNCOK"></a><span class="nroffip">CURL_SEEKFUNC_OK</span>
+<p class="level1">Introduced in 7.19.5
+<p class="level0"><a name="CURLSOCKETBAD"></a><span class="nroffip">CURL_SOCKET_BAD</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLSOCKETTIMEOUT"></a><span class="nroffip">CURL_SOCKET_TIMEOUT</span>
+<p class="level1">Introduced in 7.14.0
+<p class="level0"><a name="CURLSOCKOPTALREADYCONNECTED"></a><span class="nroffip">CURL_SOCKOPT_ALREADY_CONNECTED</span>
+<p class="level1">Introduced in 7.21.5
+<p class="level0"><a name="CURLSOCKOPTERROR"></a><span class="nroffip">CURL_SOCKOPT_ERROR</span>
+<p class="level1">Introduced in 7.21.5
+<p class="level0"><a name="CURLSOCKOPTOK"></a><span class="nroffip">CURL_SOCKOPT_OK</span>
+<p class="level1">Introduced in 7.21.5
+<p class="level0"><a name="CURLSSLVERSIONDEFAULT"></a><span class="nroffip">CURL_SSLVERSION_DEFAULT</span>
+<p class="level1">Introduced in 7.9.2
+<p class="level0"><a name="CURLSSLVERSIONSSL"></a><span class="nroffip">CURL_SSLVERSION_SSL</span>
+<p class="level1">Introduced in
+<p class="level0"><a name="CURLSSLVERSIONSSL"></a><span class="nroffip">CURL_SSLVERSION_SSL</span>
+<p class="level1">Introduced in
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span>
+<p class="level1">Introduced in
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span>
+<p class="level1">Introduced in
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span>
+<p class="level1">Introduced in
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span>
+<p class="level1">Introduced in
+<p class="level0"><a name="CURLTIMECONDIFMODSINCE"></a><span class="nroffip">CURL_TIMECOND_IFMODSINCE</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLTIMECONDIFUNMODSINCE"></a><span class="nroffip">CURL_TIMECOND_IFUNMODSINCE</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLTIMECONDLASTMOD"></a><span class="nroffip">CURL_TIMECOND_LASTMOD</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLTIMECONDNONE"></a><span class="nroffip">CURL_TIMECOND_NONE</span>
+<p class="level1">Introduced in 7.9.7
+<p class="level0"><a name="CURLTLSAUTHNONE"></a><span class="nroffip">CURL_TLSAUTH_NONE</span>
+<p class="level1">Introduced in 7.21.4
+<p class="level0"><a name="CURLTLSAUTHSRP"></a><span class="nroffip">CURL_TLSAUTH_SRP</span>
+<p class="level1">Introduced in 7.21.4
+<p class="level0"><a name="CURLVERSIONASYNCHDNS"></a><span class="nroffip">CURL_VERSION_ASYNCHDNS</span>
+<p class="level1">Introduced in 7.10.7
+<p class="level0"><a name="CURLVERSIONCONV"></a><span class="nroffip">CURL_VERSION_CONV</span>
+<p class="level1">Introduced in 7.15.4
+<p class="level0"><a name="CURLVERSIONCURLDEBUG"></a><span class="nroffip">CURL_VERSION_CURLDEBUG</span>
+<p class="level1">Introduced in 7.19.6
+<p class="level0"><a name="CURLVERSIONDEBUG"></a><span class="nroffip">CURL_VERSION_DEBUG</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLVERSIONGSSAPI"></a><span class="nroffip">CURL_VERSION_GSSAPI</span>
+<p class="level1">Introduced in 7.38.0
+<p class="level0"><a name="CURLVERSIONGSSNEGOTIATE"></a><span class="nroffip">CURL_VERSION_GSSNEGOTIATE</span>
+<p class="level1">Introduced in 7.10.6 Deprecated since 7.38.0
+<p class="level0"><a name="CURLVERSIONHTTP2"></a><span class="nroffip">CURL_VERSION_HTTP2</span>
+<p class="level1">Introduced in 7.33.0
+<p class="level0"><a name="CURLVERSIONIDN"></a><span class="nroffip">CURL_VERSION_IDN</span>
+<p class="level1">Introduced in 7.12.0
+<p class="level0"><a name="CURLVERSIONIPV6"></a><span class="nroffip">CURL_VERSION_IPV6</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLVERSIONKERBEROS4"></a><span class="nroffip">CURL_VERSION_KERBEROS4</span>
+<p class="level1">Introduced in 7.10 Deprecated since 7.33.0
+<p class="level0"><a name="CURLVERSIONKERBEROS5"></a><span class="nroffip">CURL_VERSION_KERBEROS5</span>
+<p class="level1">Introduced in 7.40.0
+<p class="level0"><a name="CURLVERSIONLARGEFILE"></a><span class="nroffip">CURL_VERSION_LARGEFILE</span>
+<p class="level1">Introduced in 7.11.1
+<p class="level0"><a name="CURLVERSIONLIBZ"></a><span class="nroffip">CURL_VERSION_LIBZ</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLVERSIONNTLM"></a><span class="nroffip">CURL_VERSION_NTLM</span>
+<p class="level1">Introduced in 7.10.6
+<p class="level0"><a name="CURLVERSIONNTLMWB"></a><span class="nroffip">CURL_VERSION_NTLM_WB</span>
+<p class="level1">Introduced in 7.22.0
+<p class="level0"><a name="CURLVERSIONSPNEGO"></a><span class="nroffip">CURL_VERSION_SPNEGO</span>
+<p class="level1">Introduced in 7.10.8
+<p class="level0"><a name="CURLVERSIONSSL"></a><span class="nroffip">CURL_VERSION_SSL</span>
+<p class="level1">Introduced in 7.10
+<p class="level0"><a name="CURLVERSIONSSPI"></a><span class="nroffip">CURL_VERSION_SSPI</span>
+<p class="level1">Introduced in 7.13.2
+<p class="level0"><a name="CURLVERSIONTLSAUTHSRP"></a><span class="nroffip">CURL_VERSION_TLSAUTH_SRP</span>
+<p class="level1">Introduced in 7.21.4
+<p class="level0"><a name="CURLVERSIONUNIXSOCKETS"></a><span class="nroffip">CURL_VERSION_UNIX_SOCKETS</span>
+<p class="level1">Introduced in 7.40.0
+<p class="level0"><a name="CURLWAITPOLLIN"></a><span class="nroffip">CURL_WAIT_POLLIN</span>
+<p class="level1">Introduced in 7.28.0
+<p class="level0"><a name="CURLWAITPOLLOUT"></a><span class="nroffip">CURL_WAIT_POLLOUT</span>
+<p class="level1">Introduced in 7.28.0
+<p class="level0"><a name="CURLWAITPOLLPRI"></a><span class="nroffip">CURL_WAIT_POLLPRI</span>
+<p class="level1">Introduced in 7.28.0
+<p class="level0"><a name="CURLWRITEFUNCPAUSE"></a><span class="nroffip">CURL_WRITEFUNC_PAUSE</span>
+<p class="level1">Introduced in 7.18.0 <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/libcurl-symbols.pdf b/docs/libcurl/libcurl-symbols.pdf
new file mode 100644
index 000000000..c353e1f57
--- /dev/null
+++ b/docs/libcurl/libcurl-symbols.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
new file mode 100644
index 000000000..fd5b0e423
--- /dev/null
+++ b/docs/libcurl/libcurl-thread.3
@@ -0,0 +1,95 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH libcurl-thread 3 "13 Jul 2015" "libcurl" "libcurl thread safety"
+.SH NAME
+libcurl-thread \- libcurl thread safety
+.SH "Multi-threading with libcurl"
+libcurl is thread safe but has no internal thread synchronization. You may have
+to provide your own locking should you meet any of the thread safety exceptions
+below.
+
+\fBHandles.\fP You must \fBnever\fP share the same handle in multiple threads.
+You can pass the handles around among threads, but you must never use a single
+handle from more than one thread at any given time.
+
+\fBShared objects.\fP You can share certain data between multiple handles by
+using the share interface but you must provide your own locking and set
+\fIcurl_share_setopt(3)\fP CURLSHOPT_LOCKFUNC and CURLSHOPT_UNLOCKFUNC.
+.SH TLS
+If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
+then of course using the underlying SSL library multi-threaded and those libs
+might have their own requirements on this issue. You may need to provide one
+or two functions to allow it to function properly:
+.IP OpenSSL
+http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
+
+http://curl.haxx.se/libcurl/c/opensslthreadlock.html
+.IP GnuTLS
+http://gnutls.org/manual/html_node/Thread-safety.html
+.IP NSS
+thread-safe already without anything required.
+.IP PolarSSL
+Required actions unknown.
+.IP yassl
+Required actions unknown.
+.IP axTLS
+Required actions unknown.
+.IP Secure-Transport
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP WinSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP wolfSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.SH "Other areas of caution"
+.IP Signals
+Signals are used for timing out name resolves (during DNS lookup) - when built
+without using either the c-ares or threaded resolver backends. When using
+multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP option to 1L for
+all handles. Everything will or might work fine except that timeouts are not
+honored during the DNS lookup - which you can work around by building libcurl
+with c-ares support. c-ares is a library that provides asynchronous name
+resolves. On some platforms, libcurl simply will not function properly
+multi-threaded unless this option is set.
+.IP "Name resolving"
+\fBgethostby* functions and other system calls.\fP These functions, provided
+by your operating system, must be thread safe. It is very important that
+libcurl can find and use thread safe versions of these and other system calls,
+as otherwise it can't function fully thread safe. Some operating systems are
+known to have faulty thread implementations. We have previously received
+problem reports on *BSD (at least in the past, they may be working fine these
+days). Some operating systems that are known to have solid and working thread
+support are Linux, Solaris and Windows.
+.IP "curl_global_* functions"
+These functions are not thread safe. If you are using libcurl with multiple
+threads it is especially important that before use you call
+\fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to explicitly
+initialize the library and its dependents, rather than rely on the "lazy"
+fail-safe initialization that takes place the first time
+\fIcurl_easy_init(3)\fP is called. For an in-depth explanation refer to
+\fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
+.IP "Memory functions"
+These functions, provided either by your operating system or your own
+replacements, must be thread safe. You can use \fIcurl_global_init_mem(3)\fP
+to set your own replacement memory functions.
+.IP Non-safe functions
+\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
diff --git a/docs/libcurl/libcurl-thread.html b/docs/libcurl/libcurl-thread.html
new file mode 100644
index 000000000..9690babf3
--- /dev/null
+++ b/docs/libcurl/libcurl-thread.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>libcurl-thread man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">libcurl-thread - libcurl thread safety <a name="Multi-threading"></a><h2 class="nroffsh">Multi-threading with libcurl</h2>
+<p class="level0">libcurl is thread safe but has no internal thread synchronization. You may have to provide your own locking should you meet any of the thread safety exceptions below.
+<p class="level0"><span Class="bold">Handles.</span> You must <span Class="bold">never</span> share the same handle in multiple threads. You can pass the handles around among threads, but you must never use a single handle from more than one thread at any given time.
+<p class="level0"><span Class="bold">Shared objects.</span> You can share certain data between multiple handles by using the share interface but you must provide your own locking and set <a Class="emphasis" href="./curl_share_setopt.html">curl_share_setopt</a> CURLSHOPT_LOCKFUNC and CURLSHOPT_UNLOCKFUNC. <a name="TLS"></a><h2 class="nroffsh">TLS</h2>
+<p class="level0">If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are then of course using the underlying SSL library multi-threaded and those libs might have their own requirements on this issue. You may need to provide one or two functions to allow it to function properly:
+<p class="level0"><a name="OpenSSL"></a><span class="nroffip">OpenSSL</span>
+<p class="level1"><a href="http://www.openssl.org/docs/crypto/threads.html">http://www.openssl.org/docs/crypto/threads.html</a>&#35;DESCRIPTION
+<p class="level1"><a href="http://curl.haxx.se/libcurl/c/opensslthreadlock.html">http://curl.haxx.se/libcurl/c/opensslthreadlock.html</a>
+<p class="level0"><a name="GnuTLS"></a><span class="nroffip">GnuTLS</span>
+<p class="level1"><a href="http://gnutls.org/manual/html_node/Thread-safety.html">http://gnutls.org/manual/html_node/Thread-safety.html</a>
+<p class="level0"><a name="NSS"></a><span class="nroffip">NSS</span>
+<p class="level1">thread-safe already without anything required.
+<p class="level0"><a name="PolarSSL"></a><span class="nroffip">PolarSSL</span>
+<p class="level1">Required actions unknown.
+<p class="level0"><a name="yassl"></a><span class="nroffip">yassl</span>
+<p class="level1">Required actions unknown.
+<p class="level0"><a name="axTLS"></a><span class="nroffip">axTLS</span>
+<p class="level1">Required actions unknown.
+<p class="level0"><a name="Secure-Transport"></a><span class="nroffip">Secure-Transport</span>
+<p class="level1">The engine is used by libcurl in a way that is fully thread-safe.
+<p class="level0"><a name="WinSSL"></a><span class="nroffip">WinSSL</span>
+<p class="level1">The engine is used by libcurl in a way that is fully thread-safe.
+<p class="level0"><a name="wolfSSL"></a><span class="nroffip">wolfSSL</span>
+<p class="level1">The engine is used by libcurl in a way that is fully thread-safe. <a name="Other"></a><h2 class="nroffsh">Other areas of caution</h2>
+<p class="level0">
+<p class="level0"><a name="Signals"></a><span class="nroffip">Signals</span>
+<p class="level1">Signals are used for timing out name resolves (during DNS lookup) - when built without using either the c-ares or threaded resolver backends. When using multiple threads you should set the <span Class="emphasis">CURLOPT_NOSIGNAL(3)</span> option to 1L for all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not function properly multi-threaded unless this option is set.
+<p class="level0"><a name="Name"></a><span class="nroffip">Name resolving</span>
+<p class="level1"><span Class="bold">gethostby* functions and other system calls.</span> These functions, provided by your operating system, must be thread safe. It is very important that libcurl can find and use thread safe versions of these and other system calls, as otherwise it can't function fully thread safe. Some operating systems are known to have faulty thread implementations. We have previously received problem reports on *BSD (at least in the past, they may be working fine these days). Some operating systems that are known to have solid and working thread support are Linux, Solaris and Windows.
+<p class="level0"><a name="curlglobal"></a><span class="nroffip">curl_global_* functions</span>
+<p class="level1">These functions are not thread safe. If you are using libcurl with multiple threads it is especially important that before use you call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> or <a Class="emphasis" href="./curl_global_init_mem.html">curl_global_init_mem</a> to explicitly initialize the library and its dependents, rather than rely on the "lazy" fail-safe initialization that takes place the first time <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> is called. For an in-depth explanation refer to <a Class="emphasis" href="./libcurl.html">libcurl</a> section <span Class="bold">GLOBAL CONSTANTS</span>.
+<p class="level0"><a name="Memory"></a><span class="nroffip">Memory functions</span>
+<p class="level1">These functions, provided either by your operating system or your own replacements, must be thread safe. You can use <a Class="emphasis" href="./curl_global_init_mem.html">curl_global_init_mem</a> to set your own replacement memory functions.
+<p class="level0"><a name="Non-safe"></a><span class="nroffip">Non-safe functions</span>
+<p class="level1"><span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span> is not thread-safe. <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/libcurl-thread.pdf b/docs/libcurl/libcurl-thread.pdf
new file mode 100644
index 000000000..8656f21cc
--- /dev/null
+++ b/docs/libcurl/libcurl-thread.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 11b019011..558652c21 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -256,58 +256,8 @@ complication for you. Given simply the URL to a file, libcurl will take care
of all the details needed to get the file moved from one machine to another.
.SH "Multi-threading Issues"
-The first basic rule is that you must \fBnever\fP simultaneously share a
-libcurl handle (be it easy or multi or whatever) between multiple
-threads. Only use one handle in one thread at any time. You can pass the
-handles around among threads, but you must never use a single handle from more
-than one thread at any given time.
-
-libcurl is completely thread safe, except for two issues: signals and SSL/TLS
-handlers. Signals are used for timing out name resolves (during DNS lookup) -
-when built without using either the c-ares or threaded resolver backends.
-
-If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
-then of course using the underlying SSL library multi-threaded and those libs
-might have their own requirements on this issue. Basically, you need to
-provide one or two functions to allow it to function properly. For all
-details, see this:
-
-OpenSSL
-
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
-
-GnuTLS
-
- http://gnutls.org/manual/html_node/Thread-safety.html
-
-NSS
-
- is claimed to be thread-safe already without anything required.
-
-PolarSSL
-
- Required actions unknown.
-
-yassl
-
- Required actions unknown.
-
-axTLS
-
- Required actions unknown.
-
-Secure Transport
-
- The engine is fully thread-safe, and no additional steps are required.
-
-When using multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP
-option to 1 for all handles. Everything will or might work fine except that
-timeouts are not honored during the DNS lookup - which you can work around by
-building libcurl with c-ares support. c-ares is a library that provides
-asynchronous name resolves. On some platforms, libcurl simply will not
-function properly multi-threaded unless this option is set.
-
-Also, note that \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
.SH "When It Doesn't Work"
There will always be times when the transfer fails for some reason. You might
@@ -1005,7 +955,7 @@ or understand incoming cookies and they will just be ignored. However, when
the parser is enabled the cookies will be understood and the cookies will be
kept in memory and used properly in subsequent requests when the same handle
is used. Many times this is enough, and you may not have to save the cookies
-to disk at all. Note that the file you specify to \ICURLOPT_COOKIEFILE(3)\fP
+to disk at all. Note that the file you specify to \fICURLOPT_COOKIEFILE(3)\fP
doesn't have to exist to enable the parser, so a common way to just enable the
parser and not read any cookies is to use the name of a file you know doesn't
exist.
diff --git a/docs/libcurl/libcurl-tutorial.html b/docs/libcurl/libcurl-tutorial.html
index 43bfc249f..70e34aaa9 100644
--- a/docs/libcurl/libcurl-tutorial.html
+++ b/docs/libcurl/libcurl-tutorial.html
@@ -4,15 +4,20 @@
<title>libcurl-tutorial man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -96,9 +101,9 @@ p.roffit {
<p class="level0">If you at any point would like to blank all previously set options for a single easy handle, you can call <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a> and you can also make a clone of an easy handle (with all its set options) using <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>.
<p class="level0">Many of the options you set in libcurl are "strings", pointers to data terminated with a zero byte. When you set strings with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>, libcurl makes its own copy so that they don't need to be kept around in your application after being set[4].
<p class="level0">One of the most basic properties to set in the handle is the URL. You set your preferred URL to transfer with <span Class="emphasis">CURLOPT_URL(3)</span> in a manner similar to:
-<p class="level0"><pre>
-<p class="level0">&nbsp;curl_easy_setopt(handle, CURLOPT_URL, "<a href="http://domain.com/">http://domain.com/</a>");
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;curl_easy_setopt(handle, CURLOPT_URL, "<a href="http://domain.com/">http://domain.com/</a>");
+</pre>
<p class="level0">
<p class="level0">Let's assume for a while that you want to receive data as the URL identifies a remote resource you want to get here. Since you write a sort of application that needs this transfer, I assume that you would like to get the data passed to you directly instead of simply getting it passed to stdout. So, you write your own function that matches this prototype:
@@ -119,25 +124,7 @@ p.roffit {
<p class="level0">If you then want to transfer another file, the handle is ready to be used again. Mind you, it is even preferred that you re-use an existing handle if you intend to make another transfer. libcurl will then attempt to re-use the previous connection.
<p class="level0">For some protocols, downloading a file can involve a complicated process of logging in, setting the transfer mode, changing the current directory and finally transferring the file data. libcurl takes care of all that complication for you. Given simply the URL to a file, libcurl will take care of all the details needed to get the file moved from one machine to another.
<p class="level0"><a name="Multi-threading"></a><h2 class="nroffsh">Multi-threading Issues</h2>
-<p class="level0">The first basic rule is that you must <span Class="bold">never</span> simultaneously share a libcurl handle (be it easy or multi or whatever) between multiple threads. Only use one handle in one thread at any time. You can pass the handles around among threads, but you must never use a single handle from more than one thread at any given time.
-<p class="level0">libcurl is completely thread safe, except for two issues: signals and SSL/TLS handlers. Signals are used for timing out name resolves (during DNS lookup) - when built without using either the c-ares or threaded resolver backends.
-<p class="level0">If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are then of course using the underlying SSL library multi-threaded and those libs might have their own requirements on this issue. Basically, you need to provide one or two functions to allow it to function properly. For all details, see this:
-<p class="level0">OpenSSL
-<p class="level0">&nbsp;<a href="http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION">http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION</a>
-<p class="level0">GnuTLS
-<p class="level0">&nbsp;<a href="http://gnutls.org/manual/html_node/Thread-safety.html">http://gnutls.org/manual/html_node/Thread-safety.html</a>
-<p class="level0">NSS
-<p class="level0">&nbsp;is claimed to be thread-safe already without anything required.
-<p class="level0">PolarSSL
-<p class="level0">&nbsp;Required actions unknown.
-<p class="level0">yassl
-<p class="level0">&nbsp;Required actions unknown.
-<p class="level0">axTLS
-<p class="level0">&nbsp;Required actions unknown.
-<p class="level0">Secure Transport
-<p class="level0">&nbsp;The engine is fully thread-safe, and no additional steps are required.
-<p class="level0">When using multiple threads you should set the <span Class="emphasis">CURLOPT_NOSIGNAL(3)</span> option to 1 for all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not function properly multi-threaded unless this option is set.
-<p class="level0">Also, note that <span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span> is not thread-safe.
+<p class="level0">libcurl is thread safe but there are a few exceptions. Refer to <a Class="emphasis" href="./libcurl-thread.html">libcurl-thread</a> for more information.
<p class="level0"><a name="When"></a><h2 class="nroffsh">When It Doesn't Work</h2>
<p class="level0">There will always be times when the transfer fails for some reason. You might have set the wrong libcurl option or misunderstood what the libcurl option actually does, or the remote server might return non-standard replies that confuse the library which then confuses your program.
<p class="level0">There's one golden rule when these things occur: set the <span Class="emphasis">CURLOPT_VERBOSE(3)</span> option to 1. It'll cause the library to spew out the entire protocol details it sends, some internal info and some received protocol data as well (especially when using FTP). If you're using HTTP, adding the headers in the received output to study is also a clever way to get a better understanding why the server behaves the way it does. Include headers in the normal body output with <span Class="emphasis">CURLOPT_HEADER(3)</span> set 1.
@@ -155,10 +142,10 @@ p.roffit {
<p class="level0">Tell libcurl that we want to upload:
<p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L);
<p class="level0">A few protocols won't behave properly when uploads are done without any prior knowledge of the expected file size. So, set the upload file size using the <span Class="emphasis">CURLOPT_INFILESIZE_LARGE(3)</span> for all known file sizes like this[1]:
-<p class="level0"><pre>
-<p class="level0">&nbsp;/* in this example, file_size must be an curl_off_t variable */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;/* in this example, file_size must be an curl_off_t variable */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
+</pre>
<p class="level0">
<p class="level0">When you call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> this time, it'll perform all the necessary operations and when it has invoked the upload it'll call your supplied callback to get the data to upload. The program should return as much data as possible in every invoke, as that is likely to make the upload perform as fast as possible. The callback should return the number of bytes it wrote in the buffer. Returning 0 will signal the end of the upload.
@@ -174,11 +161,11 @@ p.roffit {
<p class="level0">There's a long time Unix "standard" way of storing FTP user names and passwords, namely in the $HOME/.netrc file. The file should be made private so that only the user may read it (see also the "Security Considerations" chapter), as it might contain the password in plain text. libcurl has the ability to use this file to figure out what set of user name and password to use for a particular host. As an extension to the normal functionality, libcurl also supports this file for non-FTP protocols such as HTTP. To make curl use this file, use the <span Class="emphasis">CURLOPT_NETRC(3)</span> option:
<p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
<p class="level0">And a very basic example of how such a .netrc file may look like:
-<p class="level0"><pre>
-<p class="level0">&nbsp;machine myhost.mydomain.com
- &nbsp;login userlogin
- &nbsp;password secretword
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;machine myhost.mydomain.com
+&nbsp;login userlogin
+&nbsp;password secretword
+</pre>
<p class="level0">
<p class="level0">All these examples have been cases where the password has been optional, or at least you could leave it out and have libcurl attempt to do its job without it. There are times when the password isn't optional, like when you're using an SSL private key for secure transfers.
@@ -197,65 +184,77 @@ p.roffit {
<p class="level0"><a name="HTTP"></a><h2 class="nroffsh">HTTP POSTing</h2>
<p class="level0">We get many questions regarding how to issue HTTP POSTs with libcurl the proper way. This chapter will thus include examples using both different versions of HTTP POST that libcurl supports.
<p class="level0">The first version is the simple POST, the most common version, that most HTML pages using the &lt;form&gt; tag uses. We provide a pointer to the data and tell libcurl to post it all to the remote site:
-<p class="level0"><pre>
-<p class="level0">&nbsp; char *data="name=daniel&project=curl";
- &nbsp; curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
- &nbsp; curl_easy_setopt(easyhandle, CURLOPT_URL, "<a href="http://posthere.com/">http://posthere.com/</a>");
- <p class="level0">&nbsp; curl_easy_perform(easyhandle); /* post away! */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; char *data="name=daniel&project=curl";
+&nbsp; curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
+&nbsp; curl_easy_setopt(easyhandle, CURLOPT_URL, "<a href="http://posthere.com/">http://posthere.com/</a>");
+&nbsp;
+&nbsp; curl_easy_perform(easyhandle); /* post away! */
+</pre>
<p class="level0">
<p class="level0">Simple enough, huh? Since you set the POST options with the <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span>, this automatically switches the handle to use POST in the upcoming request.
<p class="level0">Ok, so what if you want to post binary data that also requires you to set the Content-Type: header of the post? Well, binary posts prevent libcurl from being able to do strlen() on the data to figure out the size, so therefore we must tell libcurl the size of the post data. Setting headers in libcurl requests are done in a generic way, by building a list of our own headers and then passing that list to libcurl.
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct curl_slist *headers=NULL;
- &nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
- <p class="level0">&nbsp;/* post binary data */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
- <p class="level0">&nbsp;/* set the size of the postfields data */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
- <p class="level0">&nbsp;/* pass our list of custom made headers */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
- <p class="level0">&nbsp;curl_easy_perform(easyhandle); /* post away! */
- <p class="level0">&nbsp;curl_slist_free_all(headers); /* free the header list */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;struct curl_slist *headers=NULL;
+&nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
+&nbsp;
+&nbsp;/* post binary data */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
+&nbsp;
+&nbsp;/* set the size of the postfields data */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
+&nbsp;
+&nbsp;/* pass our list of custom made headers */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* post away! */
+&nbsp;
+&nbsp;curl_slist_free_all(headers); /* free the header list */
+</pre>
<p class="level0">
<p class="level0">While the simple examples above cover the majority of all cases where HTTP POST operations are required, they don't do multi-part formposts. Multi-part formposts were introduced as a better way to post (possibly large) binary data and were first documented in the <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a> (updated in RFC2388). They're called multi-part because they're built by a chain of parts, each part being a single unit of data. Each part has its own name and contents. You can in fact create and post a multi-part formpost with the regular libcurl POST support described above, but that would require that you build a formpost yourself and provide to libcurl. To make that easier, libcurl provides <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. Using this function, you add parts to the form. When you're done adding parts, you post the whole form.
<p class="level0">The following example sets two simple text parts with plain textual contents, and then a file with binary contents and uploads the whole thing.
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct curl_httppost *post=NULL;
- &nbsp;struct curl_httppost *last=NULL;
- &nbsp;curl_formadd(&post, &last,
- &nbsp; CURLFORM_COPYNAME, "name",
- &nbsp; CURLFORM_COPYCONTENTS, "daniel", CURLFORM_END);
- &nbsp;curl_formadd(&post, &last,
- &nbsp; CURLFORM_COPYNAME, "project",
- &nbsp; CURLFORM_COPYCONTENTS, "curl", CURLFORM_END);
- &nbsp;curl_formadd(&post, &last,
- &nbsp; CURLFORM_COPYNAME, "logotype-image",
- &nbsp; CURLFORM_FILECONTENT, "curl.png", CURLFORM_END);
- <p class="level0">&nbsp;/* Set the form info */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPPOST, post);
- <p class="level0">&nbsp;curl_easy_perform(easyhandle); /* post away! */
- <p class="level0">&nbsp;/* free the post data again */
- &nbsp;curl_formfree(post);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;struct curl_httppost *post=NULL;
+&nbsp;struct curl_httppost *last=NULL;
+&nbsp;curl_formadd(&post, &last,
+&nbsp; CURLFORM_COPYNAME, "name",
+&nbsp; CURLFORM_COPYCONTENTS, "daniel", CURLFORM_END);
+&nbsp;curl_formadd(&post, &last,
+&nbsp; CURLFORM_COPYNAME, "project",
+&nbsp; CURLFORM_COPYCONTENTS, "curl", CURLFORM_END);
+&nbsp;curl_formadd(&post, &last,
+&nbsp; CURLFORM_COPYNAME, "logotype-image",
+&nbsp; CURLFORM_FILECONTENT, "curl.png", CURLFORM_END);
+&nbsp;
+&nbsp;/* Set the form info */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPPOST, post);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* post away! */
+&nbsp;
+&nbsp;/* free the post data again */
+&nbsp;curl_formfree(post);
+</pre>
<p class="level0">
<p class="level0">Multipart formposts are chains of parts using MIME-style separators and headers. It means that each one of these separate parts get a few headers set that describe the individual content-type, size etc. To enable your application to handicraft this formpost even more, libcurl allows you to supply your own set of custom headers to such an individual form part. You can of course supply headers to as many parts as you like, but this little example will show how you set headers to one specific part when you add that to the post handle:
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct curl_slist *headers=NULL;
- &nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
- <p class="level0">&nbsp;curl_formadd(&post, &last,
- &nbsp; CURLFORM_COPYNAME, "logotype-image",
- &nbsp; CURLFORM_FILECONTENT, "curl.xml",
- &nbsp; CURLFORM_CONTENTHEADER, headers,
- &nbsp; CURLFORM_END);
- <p class="level0">&nbsp;curl_easy_perform(easyhandle); /* post away! */
- <p class="level0">&nbsp;curl_formfree(post); /* free post */
- &nbsp;curl_slist_free_all(headers); /* free custom header list */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;struct curl_slist *headers=NULL;
+&nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
+&nbsp;
+&nbsp;curl_formadd(&post, &last,
+&nbsp; CURLFORM_COPYNAME, "logotype-image",
+&nbsp; CURLFORM_FILECONTENT, "curl.xml",
+&nbsp; CURLFORM_CONTENTHEADER, headers,
+&nbsp; CURLFORM_END);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* post away! */
+&nbsp;
+&nbsp;curl_formfree(post); /* free post */
+&nbsp;curl_slist_free_all(headers); /* free custom header list */
+</pre>
<p class="level0">
<p class="level0">Since all options on an easyhandle are "sticky", they remain the same until changed even if you do call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>, you may need to tell curl to go back to a plain GET request if you intend to do one as your next request. You force an easyhandle to go back to GET by using the <span Class="emphasis">CURLOPT_HTTPGET(3)</span> option:
@@ -267,13 +266,13 @@ p.roffit {
<p class="level0">Switch on the progress meter by, oddly enough, setting <span Class="emphasis">CURLOPT_NOPROGRESS(3)</span> to zero. This option is set to 1 by default.
<p class="level0">For most applications however, the built-in progress meter is useless and what instead is interesting is the ability to specify a progress callback. The function pointer you pass to libcurl will then be called on irregular intervals with information about the current transfer.
<p class="level0">Set the progress callback by using <span Class="emphasis">CURLOPT_PROGRESSFUNCTION(3)</span>. And pass a pointer to a function that matches this prototype:
-<p class="level0"><pre>
-<p class="level0">&nbsp;int progress_callback(void *clientp,
- &nbsp; double dltotal,
- &nbsp; double dlnow,
- &nbsp; double ultotal,
- &nbsp; double ulnow);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;int progress_callback(void *clientp,
+&nbsp; double dltotal,
+&nbsp; double dlnow,
+&nbsp; double ultotal,
+&nbsp; double ulnow);
+</pre>
<p class="level0">
<p class="level0">If any of the input arguments is unknown, a 0 will be passed. The first argument, the 'clientp' is the pointer you pass to libcurl with <span Class="emphasis">CURLOPT_PROGRESSDATA(3)</span>. libcurl won't touch it.
@@ -282,15 +281,15 @@ p.roffit {
<p class="level0">There's basically only one thing to keep in mind when using C++ instead of C when interfacing libcurl:
<p class="level0">The callbacks CANNOT be non-static class member functions
<p class="level0">Example C++ code:
-<p class="level0"><pre>
-<p class="level0">class AClass {
- &nbsp; static size_t write_data(void *ptr, size_t size, size_t nmemb,
- &nbsp; void *ourpointer)
- &nbsp; {
- &nbsp; /* do what you want with the data */
- &nbsp; }
- &nbsp;}
- </pre>
+<p class="level0"><pre class="level0">
+class AClass {
+&nbsp; static size_t write_data(void *ptr, size_t size, size_t nmemb,
+&nbsp; void *ourpointer)
+&nbsp; {
+&nbsp; /* do what you want with the data */
+&nbsp; }
+&nbsp;}
+</pre>
<p class="level0">
<p class="level0"><a name="Proxies"></a><h2 class="nroffsh">Proxies</h2>
@@ -373,22 +372,26 @@ p.roffit {
<p class="level1">
<p class="level0"><a name="Modify"></a><span class="nroffip">Modify Headers</span>
<p class="level1">HTTP-like protocols pass a series of headers to the server when doing the request, and you're free to pass any amount of extra headers that you think fit. Adding headers is this easy:
-<p class="level1"><pre>
-<p class="level1">&nbsp;struct curl_slist *headers=NULL; /* init to NULL is important */
- <p class="level1">&nbsp;headers = curl_slist_append(headers, "Hey-server-hey: how are you?");
- &nbsp;headers = curl_slist_append(headers, "X-silly-content: yes");
- <p class="level1">&nbsp;/* pass our list of custom made headers */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
- <p class="level1">&nbsp;curl_easy_perform(easyhandle); /* transfer http */
- <p class="level1">&nbsp;curl_slist_free_all(headers); /* free the header list */
- </pre>
+<p class="level1"><pre class="level1">
+&nbsp;struct curl_slist *headers=NULL; /* init to NULL is important */
+&nbsp;
+&nbsp;headers = curl_slist_append(headers, "Hey-server-hey: how are you?");
+&nbsp;headers = curl_slist_append(headers, "X-silly-content: yes");
+&nbsp;
+&nbsp;/* pass our list of custom made headers */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* transfer http */
+&nbsp;
+&nbsp;curl_slist_free_all(headers); /* free the header list */
+</pre>
<p class="level1">
<p class="level1">... and if you think some of the internally generated headers, such as Accept: or Host: don't contain the data you want them to contain, you can replace them by simply setting them too:
-<p class="level1"><pre>
-<p class="level1">&nbsp;headers = curl_slist_append(headers, "Accept: Agent-007");
- &nbsp;headers = curl_slist_append(headers, "Host: munged.host.line");
- </pre>
+<p class="level1"><pre class="level1">
+&nbsp;headers = curl_slist_append(headers, "Accept: Agent-007");
+&nbsp;headers = curl_slist_append(headers, "Host: munged.host.line");
+</pre>
<p class="level1">
<p class="level1">
@@ -411,13 +414,16 @@ p.roffit {
<p class="level1">Not all protocols are HTTP-like, and thus the above may not help you when you want to make, for example, your FTP transfers to behave differently.
<p class="level1">Sending custom commands to a FTP server means that you need to send the commands exactly as the FTP server expects them (<a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a> is a good guide here), and you can only use commands that work on the control-connection alone. All kinds of commands that require data interchange and thus need a data-connection must be left to libcurl's own judgement. Also be aware that libcurl will do its very best to change directory to the target directory before doing any transfer, so if you change directory (with CWD or similar) you might confuse libcurl and then it might not attempt to transfer the file in the correct remote directory.
<p class="level1">A little example that deletes a given file before an operation:
-<p class="level1"><pre>
-<p class="level1">&nbsp;headers = curl_slist_append(headers, "DELE file-to-remove");
- <p class="level1">&nbsp;/* pass the list of custom commands to the handle */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);
- <p class="level1">&nbsp;curl_easy_perform(easyhandle); /* transfer ftp data! */
- <p class="level1">&nbsp;curl_slist_free_all(headers); /* free the header list */
- </pre>
+<p class="level1"><pre class="level1">
+&nbsp;headers = curl_slist_append(headers, "DELE file-to-remove");
+&nbsp;
+&nbsp;/* pass the list of custom commands to the handle */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* transfer ftp data! */
+&nbsp;
+&nbsp;curl_slist_free_all(headers); /* free the header list */
+</pre>
<p class="level1">
<p class="level1">If you would instead want this operation (or chain of operations) to happen _after_ the data transfer took place the option to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> would instead be called <span Class="emphasis">CURLOPT_POSTQUOTE(3)</span> and used the exact same way.
@@ -435,7 +441,7 @@ p.roffit {
<p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
<p class="level0">In many cases, that is not enough. You might want to dynamically save whatever cookies the remote server passes to you, and make sure those cookies are then used accordingly on later requests.
<p class="level0">One way to do this, is to save all headers you receive in a plain file and when you make a request, you tell libcurl to read the previous headers to figure out which cookies to use. Set the header file to read cookies from with <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span>.
-<p class="level0">The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> option also automatically enables the cookie parser in libcurl. Until the cookie parser is enabled, libcurl will not parse or understand incoming cookies and they will just be ignored. However, when the parser is enabled the cookies will be understood and the cookies will be kept in memory and used properly in subsequent requests when the same handle is used. Many times this is enough, and you may not have to save the cookies to disk at all. Note that the file you specify to ICURLOPT_COOKIEFILE(3)</span> doesn't have to exist to enable the parser, so a common way to just enable the parser and not read any cookies is to use the name of a file you know doesn't exist.
+<p class="level0">The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> option also automatically enables the cookie parser in libcurl. Until the cookie parser is enabled, libcurl will not parse or understand incoming cookies and they will just be ignored. However, when the parser is enabled the cookies will be understood and the cookies will be kept in memory and used properly in subsequent requests when the same handle is used. Many times this is enough, and you may not have to save the cookies to disk at all. Note that the file you specify to <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> doesn't have to exist to enable the parser, so a common way to just enable the parser and not read any cookies is to use the name of a file you know doesn't exist.
<p class="level0">If you would rather use existing cookies that you've previously received with your Netscape or Mozilla browsers, you can make libcurl use that cookie file as input. The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> is used for that too, as libcurl will automatically find out what kind of file it is and act accordingly.
<p class="level0">Perhaps the most advanced cookie operation libcurl offers, is saving the entire internal cookie state back into a Netscape/Mozilla formatted cookie file. We call that the cookie-jar. When you set a file name with <span Class="emphasis">CURLOPT_COOKIEJAR(3)</span>, that file name will be created and all received cookies will be stored in it when <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> is called. This enables cookies to get passed on properly between multiple handles without any information getting lost.
<p class="level0"><a name="FTP"></a><h2 class="nroffsh">FTP Peculiarities We Need</h2>
diff --git a/docs/libcurl/libcurl-tutorial.pdf b/docs/libcurl/libcurl-tutorial.pdf
index 564b139bf..f93ccab96 100644
--- a/docs/libcurl/libcurl-tutorial.pdf
+++ b/docs/libcurl/libcurl-tutorial.pdf
Binary files differ
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index 39bcccd43..05034c98e 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -97,8 +97,8 @@ Unix-like operating system that ship libcurl as part of their distributions
often don't provide the curl-config tool, but simply install the library and
headers in the common path for this purpose.
-Many Linux and similar sytems use pkg-config to provide build and link options
-about libraries and libcurl supports that as well.
+Many Linux and similar systems use pkg-config to provide build and link
+options about libraries and libcurl supports that as well.
.SH "LIBCURL SYMBOL NAMES"
All public functions in the libcurl interface are prefixed with 'curl_' (with
a lowercase c). You can find other functions in the library source code, but
@@ -111,13 +111,8 @@ libcurl works
.B exactly
the same, on any of the platforms it compiles and builds on.
.SH "THREADS"
-Never ever call curl-functions simultaneously using the same handle from
-several threads. libcurl is thread-safe and can be used in any number of
-threads, but you must use separate curl handles if you want to use libcurl in
-more than one thread simultaneously.
-
-The global environment functions are not thread-safe. See \fBGLOBAL
-CONSTANTS\fP below for details.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
.SH "PERSISTENT CONNECTIONS"
Persistent connections means that libcurl can re-use the same connection for
diff --git a/docs/libcurl/libcurl.html b/docs/libcurl/libcurl.html
index c836e8a1a..6c4f902b8 100644
--- a/docs/libcurl/libcurl.html
+++ b/docs/libcurl/libcurl.html
@@ -4,15 +4,20 @@
<title>libcurl man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -77,12 +82,11 @@ p.roffit {
<p class="level0">curl-config is added to make it easier for applications to link with libcurl and developers to learn about libcurl and how to use it.
<p class="level0">Run 'curl-config --libs' to get the (additional) linker options you need to link with the particular version of libcurl you've installed. See the <span Class="emphasis">curl-config(1)</span> man page for further details.
<p class="level0">Unix-like operating system that ship libcurl as part of their distributions often don't provide the curl-config tool, but simply install the library and headers in the common path for this purpose.
-<p class="level0">Many Linux and similar sytems use pkg-config to provide build and link options about libraries and libcurl supports that as well. <a name="LIBCURL"></a><h2 class="nroffsh">LIBCURL SYMBOL NAMES</h2>
+<p class="level0">Many Linux and similar systems use pkg-config to provide build and link options about libraries and libcurl supports that as well. <a name="LIBCURL"></a><h2 class="nroffsh">LIBCURL SYMBOL NAMES</h2>
<p class="level0">All public functions in the libcurl interface are prefixed with 'curl_' (with a lowercase c). You can find other functions in the library source code, but other prefixes indicate that the functions are private and may change without further notice in the next release.
<p class="level0">Only use documented functions and functionality! <a name="PORTABILITY"></a><h2 class="nroffsh">PORTABILITY</h2>
<p class="level0">libcurl works <span Class="bold">exactly</span> the same, on any of the platforms it compiles and builds on. <a name="THREADS"></a><h2 class="nroffsh">THREADS</h2>
-<p class="level0">Never ever call curl-functions simultaneously using the same handle from several threads. libcurl is thread-safe and can be used in any number of threads, but you must use separate curl handles if you want to use libcurl in more than one thread simultaneously.
-<p class="level0">The global environment functions are not thread-safe. See <span class="bold">GLOBAL CONSTANTS</span> below for details.
+<p class="level0">libcurl is thread safe but there are a few exceptions. Refer to <a Class="emphasis" href="./libcurl-thread.html">libcurl-thread</a> for more information.
<p class="level0"><a name="PERSISTENT"></a><h2 class="nroffsh">PERSISTENT CONNECTIONS</h2>
<p class="level0">Persistent connections means that libcurl can re-use the same connection for several transfers, if the conditions are right.
<p class="level0">libcurl will <span Class="bold">always</span> attempt to use persistent connections. Whenever you use <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> etc, libcurl will attempt to use an existing connection to do the transfer, and if none exists it'll open a new one that will be subject for re-use on a possible following call to <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>.
diff --git a/docs/libcurl/libcurl.pdf b/docs/libcurl/libcurl.pdf
index 387509809..46c77107b 100644
--- a/docs/libcurl/libcurl.pdf
+++ b/docs/libcurl/libcurl.pdf
Binary files differ
diff --git a/docs/libcurl/mksymbolsmanpage.pl b/docs/libcurl/mksymbolsmanpage.pl
new file mode 100644
index 000000000..1bca4d071
--- /dev/null
+++ b/docs/libcurl/mksymbolsmanpage.pl
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+# ***************************************************************************
+# * _ _ ____ _
+# * Project ___| | | | _ \| |
+# * / __| | | | |_) | |
+# * | (__| |_| | _ <| |___
+# * \___|\___/|_| \_\_____|
+# *
+# * Copyright (C) 2015, 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 http://curl.haxx.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.
+# *
+# ***************************************************************************
+
+my $version="7.41.0";
+
+use POSIX qw(strftime);
+my $date = strftime "%b %e, %Y", localtime;
+my $year = strftime "%Y", localtime;
+
+print <<HEADER
+.\\" **************************************************************************
+.\\" * _ _ ____ _
+.\\" * Project ___| | | | _ \\| |
+.\\" * / __| | | | |_) | |
+.\\" * | (__| |_| | _ <| |___
+.\\" * \\___|\\___/|_| \\_\\_____|
+.\\" *
+.\\" * Copyright (C) 1998 - $year, 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 http://curl.haxx.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.
+.\\" *
+.\\" **************************************************************************
+.TH libcurl-symbols 3 "$date" "libcurl $version" "libcurl symbols"
+.SH NAME
+libcurl-symbols \\- libcurl symbol version information
+.SH "libcurl symbols"
+This man page details version information for public symbols provided in the
+libcurl header files. This lists the first version in which the symbol was
+introduced and for some symbols two additional information pieces:
+
+The first version in which the symbol is marked "deprecated" - meaning that
+since that version no new code should be written to use the symbol as it is
+marked for getting removed in a future.
+
+The last version that featured the specific symbol. Using the symbol in source
+code will make it no longer compile error-free after that specified version.
+
+This man page is automatically generated from the symbols-in-versions file.
+HEADER
+ ;
+
+while(<STDIN>) {
+ if($_ =~ /^(CURL[A-Z0-9_.]*) *(.*)/) {
+ my ($symbol, $rest)=($1,$2);
+ my ($intro, $dep, $rem);
+ if($rest =~ s/^([0-9.]*) *//) {
+ $intro = $1;
+ }
+ if($rest =~ s/^([0-9.]*) *//) {
+ $dep = $1;
+ }
+ if($rest =~ s/^([0-9.]*) *//) {
+ $rem = $1;
+ }
+ print ".IP $symbol\nIntroduced in $intro\n";
+ if($dep) {
+ print "Deprecated since $dep\n";
+ }
+ if($rem) {
+ print "Last used in $dep\n";
+ }
+ }
+
+}
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html
index 7650c0016..c7accdc18 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE - chunk length threshold for pipelining <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long with a <span Class="bold">size</span> in bytes. If a pipelined connection is currently processing a chunked (Transfer-encoding: chunked) request with a current chunk length larger than <a Class="emphasis" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, that pipeline will not be considered for additional requests, even if it is shorter than <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value is 0, which means that the penalization is inactive. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf
index 8584f68be..a722e09d7 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html
index b4881909e..e5edaaf2c 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE - size threshold for pipelining penalty <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long with a <span Class="bold">size</span> in bytes. If a pipelined connection is currently processing a request with a Content-Length larger than this <a Class="emphasis" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, that pipeline will then not be considered for additional requests, even if it is shorter than <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value is 0, which means that the size penalization is inactive. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf
index 3740c06a5..9d4bf169f 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html
index aa7bfba2c..cf82800ce 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_MAXCONNECTS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_MAXCONNECTS - set size of connection cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long indicating the <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections that libcurl may keep in its connection cache after completed use. By default libcurl will enlarge the size for each added easy handle to make it fit 4 times the number of added easy handles.
<p class="level0">By setting this option, you can prevent the cache size from growing beyond the limit set by you.
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf
index 75fab1e03..e68667b53 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index 778934737..7522d4375 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -29,8 +29,9 @@ CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);
.SH DESCRIPTION
Pass a long to indicate \fBmax\fP. The set number will be used as the maximum
-amount of simultaneously open connections to a single host. For each new
-session to a host, libcurl will open a new connection up to the limit set by
+amount of simultaneously open connections to a single host (a host being the
+same as a host name + port number pair). For each new session to a host,
+libcurl will open a new connection up to the limit set by
\fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP. When the limit is reached, the
sessions will be pending until a connection becomes available. If
\fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl will try to pipeline if the
@@ -40,6 +41,9 @@ The default \fBmax\fP value is 0, unlimited. However, for backwards
compatibility, setting it to 0 when \fICURLMOPT_PIPELINING(3)\fP is 1 will not
be treated as unlimited. Instead it will open only 1 connection and try to
pipeline on it.
+
+This set limit is also used for proxy connections, and then the proxy is
+considered to be the host for which this limit counts.
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html
index ddcb77eb7..5c6d85cb5 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_MAX_HOST_CONNECTIONS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,11 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_MAX_HOST_CONNECTIONS - set max number of connections to a single host <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a long to indicate <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections to a single host. For each new session to a host, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until a connection becomes available. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it.
-<p class="level0">The default <span Class="bold">max</span> value is 0, unlimited. However, for backwards compatibility, setting it to 0 when <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a long to indicate <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections to a single host (a host being the same as a host name + port number pair). For each new session to a host, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until a connection becomes available. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it.
+<p class="level0">The default <span Class="bold">max</span> value is 0, unlimited. However, for backwards compatibility, setting it to 0 when <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it.
+<p class="level0">This set limit is also used for proxy connections, and then the proxy is considered to be the host for which this limit counts. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf
index 1b1dbd314..1a5f3fb79 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html
index f54311279..d2fb91d38 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_MAX_PIPELINE_LENGTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_MAX_PIPELINE_LENGTH - maximum number of requests in a pipeline <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. The set <span Class="bold">max</span> number will be used as the maximum amount of outstanding requests in a pipelined connection. Only used if pipelining is enabled.
<p class="level0">When this limit is reached, libcurl will use another connection to the same host (see <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>), or queue the request until one of the pipelines to the host is ready to accept a request. Thus, the total number of requests in-flight is <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a> * <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf
index 08373e297..f94595454 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf
@@ -67,12 +67,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:13+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:13+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:36+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:36+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109'/>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109'/>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -81,9 +81,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091813+01'00')
-/ModDate(D:20150108091813+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081136+02'00')
+/ModDate(D:20150812081136+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -104,7 +104,7 @@ xref
0000001892 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<4EDD1116ACCC9D1C522F25B0E47AB18F><4EDD1116ACCC9D1C522F25B0E47AB18F>]
+/ID [<250AB0EF71AFA2B0149496D7C068D77D><250AB0EF71AFA2B0149496D7C068D77D>]
>>
startxref
3469
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html
index 317a962f3..32955acb5 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_MAX_TOTAL_CONNECTIONS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_MAX_TOTAL_CONNECTIONS - max simultaneously open connections <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long for the <span Class="bold">amount</span>. The set number will be used as the maximum number of simultaneously open connections in total using this multi handle. For each new session, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_TOTAL_CONNECTIONS.html">CURLMOPT_MAX_TOTAL_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until there are available connections. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value is 0, which means that there is no limit. It is then simply controlled by the number of easy handles added. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf
index 56dfdf4d2..0d516dc95 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index c1df1d560..c795c48ec 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -26,17 +26,28 @@ CURLMOPT_PIPELINING \- enable/disable HTTP pipelining
.SH SYNOPSIS
#include <curl/curl.h>
-CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, bool onoff);
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bits);
.SH DESCRIPTION
-Set the \fBonoff\fP parameter to 1 to make libcurl use HTTP pipelining for
-HTTP transfers done using this multi handle, as far as possible. This means
-that if you add a second request that can use an already existing connection,
-the second request will be \&"piped" on the same connection rather than being
-executed in parallel.
+Set the \fBbits\fP parameter to 1 to make libcurl use HTTP pipelining for
+HTTP/1.1 transfers done using this multi handle, as far as possible. This
+means that if you add a second request that can use an already existing
+connection, the second request will be \&"piped" on the same connection rather
+than being executed in parallel.
When using pipelining, there are also several other related options that are
interesting to tweak and adjust to alter how libcurl spreads out requests on
different connections or not etc.
+
+Starting in 7.43.0, the \fBbits\fP parameter's bit 1 also has a meaning and
+libcurl is now offering symbol names for the bits:
+.IP CURLPIPE_NOTHING (0)
+Default, which means doing no attempts at pipelining or multiplexing.
+.IP CURLPIPE_HTTP1 (1)
+If this bit is set, libcurl will try to pipeline HTTP/1.1 requests on
+connections that are already established and in use to hosts.
+.IP CURLPIPE_MULTIPLEX (2)
+If this bit is set, libcurl will try to multiplex the new transfer over an
+existing connection if possible. This requires HTTP/2.
.SH DEFAULT
0 (off)
.SH PROTOCOLS
@@ -44,7 +55,7 @@ HTTP(S)
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.16.0
+Added in 7.16.0. Multiplex support bit added in 7.43.0.
.SH RETURN VALUE
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.html b/docs/libcurl/opts/CURLMOPT_PIPELINING.html
index c56205cb5..20682a751 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.html
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_PIPELINING man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,21 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_PIPELINING - enable/disable HTTP pipelining <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
-<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, bool onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Set the <span Class="bold">onoff</span> parameter to 1 to make libcurl use HTTP pipelining for HTTP transfers done using this multi handle, as far as possible. This means that if you add a second request that can use an already existing connection, the second request will be "piped" on the same connection rather than being executed in parallel.
-<p class="level0">When using pipelining, there are also several other related options that are interesting to tweak and adjust to alter how libcurl spreads out requests on different connections or not etc. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bits); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the <span Class="bold">bits</span> parameter to 1 to make libcurl use HTTP pipelining for HTTP/1.1 transfers done using this multi handle, as far as possible. This means that if you add a second request that can use an already existing connection, the second request will be "piped" on the same connection rather than being executed in parallel.
+<p class="level0">When using pipelining, there are also several other related options that are interesting to tweak and adjust to alter how libcurl spreads out requests on different connections or not etc.
+<p class="level0">Starting in 7.43.0, the <span Class="bold">bits</span> parameter's bit 1 also has a meaning and libcurl is now offering symbol names for the bits:
+<p class="level0"><a name="CURLPIPENOTHING"></a><span class="nroffip">CURLPIPE_NOTHING (0)</span>
+<p class="level1">Default, which means doing no attempts at pipelining or multiplexing.
+<p class="level0"><a name="CURLPIPEHTTP1"></a><span class="nroffip">CURLPIPE_HTTP1 (1)</span>
+<p class="level1">If this bit is set, libcurl will try to pipeline HTTP/1.1 requests on connections that are already established and in use to hosts.
+<p class="level0"><a name="CURLPIPEMULTIPLEX"></a><span class="nroffip">CURLPIPE_MULTIPLEX (2)</span>
+<p class="level1">If this bit is set, libcurl will try to multiplex the new transfer over an existing connection if possible. This requires HTTP/2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 (off) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.16.0. Multiplex support bit added in 7.43.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_PIPELINING_SITE_BL.html">CURLMOPT_PIPELINING_SITE_BL</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAXCONNECTS.html">CURLMOPT_MAXCONNECTS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf b/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf
index 2166f2d40..9f93dbcfa 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index ae393121e..e3ea4b1ad 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -50,7 +50,7 @@ The default value is NULL, which means that there is no blacklist.
NULL
};
- curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
+ curl_multi_setopt(m, CURLMOPT_PIPELINING_SERVER_BL, server_blacklist);
.fi
.SH AVAILABILITY
Added in 7.30.0
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html
index 2193b7db0..50c3a8964 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_PIPELINING_SERVER_BL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,22 +52,23 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_PIPELINING_SERVER_BL - pipelining server blacklist <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="bold">servers</span> array of char *, ending with a NULL entry. This is a list of server types prefixes (in the Server: HTTP header) that are blacklisted from pipelining, i.e server types that are known to not support HTTP pipelining. The array is copied by libcurl.
<p class="level0">Note that the comparison matches if the Server: header begins with the string in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can both be blacklisted by having "Ninja" in the backlist.
<p class="level0">Pass a NULL pointer to clear the blacklist. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value is NULL, which means that there is no blacklist. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">&nbsp; server_blacklist[] =
- &nbsp; {
- &nbsp; "Microsoft-IIS/6.0",
- &nbsp; "nginx/0.8.54",
- &nbsp; NULL
- &nbsp; };
- <p class="level0">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; server_blacklist[] =
+&nbsp; {
+&nbsp; "Microsoft-IIS/6.0",
+&nbsp; "nginx/0.8.54",
+&nbsp; NULL
+&nbsp; };
+&nbsp;
+&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINING_SERVER_BL, server_blacklist);
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf
index d12a2e018..a7931787f 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index 6356d02f0..cf6e6e7bb 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -46,7 +46,7 @@ HTTP(S)
NULL
};
- curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
+ curl_multi_setopt(m, CURLMOPT_PIPELINING_SITE_BL, site_blacklist);
.fi
.SH AVAILABILITY
Added in 7.30.0
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html
index ab579d151..1161a818e 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_PIPELINING_SITE_BL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,21 +52,22 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_PIPELINING_SITE_BL - pipelining host blacklist <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="bold">hosts</span> array of char *, ending with a NULL entry. This is a list of sites that are blacklisted from pipelining, i.e sites that are known to not support HTTP pipelining. The array is copied by libcurl.
<p class="level0">Pass a NULL pointer to clear the blacklist. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value is NULL, which means that there is no blacklist. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">&nbsp; site_blacklist[] =
- &nbsp; {
- &nbsp; "www.haxx.se",
- &nbsp; "www.example.com:1234",
- &nbsp; NULL
- &nbsp; };
- <p class="level0">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; site_blacklist[] =
+&nbsp; {
+&nbsp; "www.haxx.se",
+&nbsp; "www.example.com:1234",
+&nbsp; NULL
+&nbsp; };
+&nbsp;
+&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINING_SITE_BL, site_blacklist);
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf
index fc712c030..d20ed4fa1 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
new file mode 100644
index 000000000..135e63212
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHDATA 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHDATA \- pointer to pass to push callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
+.fi
+.SH DESCRIPTION
+Set \fIpointer\fP to pass as the last argument to the
+\fICURLMOPT_PUSHFUNCTION(3)\fP callback. The pointer will not be touched or
+used by libcurl itself, only passed on to the callback function.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHFUNCTION "(3), " CURLMOPT_PIPELINING "(3), "
+.BR CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.html b/docs/libcurl/opts/CURLMOPT_PUSHDATA.html
new file mode 100644
index 000000000..0ea49f226
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PUSHDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PUSHDATA - pointer to pass to push callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
+</pre>
+
+<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set <span Class="emphasis">pointer</span> to pass as the last argument to the <a Class="emphasis" href="./CURLMOPT_PUSHFUNCTION.html">CURLMOPT_PUSHFUNCTION</a> callback. The pointer will not be touched or used by libcurl itself, only passed on to the callback function. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.44.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PUSHFUNCTION.html">CURLMOPT_PUSHFUNCTION</a>, <a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PIPEWAIT.html">CURLOPT_PIPEWAIT</a>, <span Class="manpage"> </span> <span Class="manpage"><a href="http://www.ietf.org/rfc/rfc7540.txt">RFC 7540</a></span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf b/docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf
new file mode 100644
index 000000000..200136b66
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
new file mode 100644
index 000000000..fb5e4e49c
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -0,0 +1,132 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHFUNCTION 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+char *curl_pushheader_bynum(push_headers, int num);
+char *curl_pushheader_byname(push_headers, const char *name);
+
+int curl_push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp);
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
+ curl_push_callback func);
+.fi
+.SH DESCRIPTION
+This callback gets called when a new HTTP/2 stream is being pushed by the
+server (using the PUSH_PROMISE frame). If no push callback is set, all offered
+pushes will be denied automatically.
+.SH CALLBACK DESCRIPTION
+The callback gets its arguments like this:
+
+\fIparent\fP is the handle of the stream on which this push arrives. The new
+handle has been duphandle()d from the parent, meaning that it has gotten all
+its options inherited. It is then up to the application to alter any options
+if desired.
+
+\fIeasy\fP is a newly created handle that represents this upcoming transfer.
+
+\fInum_headers\fP is the number of name+value pairs that was received and can
+be accessed
+
+\fIheaders\fP is a handle used to access push headers using the accessor
+functions described below. This only accesses and provides the PUSH_PROMISE
+headers, the normal response headers will be provided in the header callback
+as usual.
+
+\fIuserp\fP is the pointer set with \fICURLMOPT_PUSHDATA(3)\fP
+
+If the callback returns CURL_PUSH_OK, the 'easy' handle will be added to the
+multi handle, the callback must not do that by itself.
+
+The callback can access PUSH_PROMISE headers with two accessor
+functions. These functions can only be used from within this callback and they
+can only access the PUSH_PROMISE headers. The normal response headers will be
+pased to the header callback for pushed streams just as for normal streams.
+.IP curl_pushheader_bynum
+Returns the header at index 'num' (or NULL). The returned pointer points to a
+"name:value" string that will be freed when this callback returns.
+.IP curl_pushheader_byname
+Returns the value for the given header name (or NULL). This is a shortcut so
+that the application doesn't have to loop through all headers to find the one
+it is interested in. The data pointed will be freed when this callback
+returns.
+.SH CALLBACK RETURN VALUE
+.IP "CURL_PUSH_OK (0)"
+The application has accepted the stream and it can now start receiving data,
+the ownership of the CURL handle has been taken over by the application.
+.IP "CURL_PUSH_DENY (1)"
+The callback denies the stream and no data for this will reach the
+application, the easy handle will be destroyed by libcurl.
+.IP *
+All other return codes are reserved for future use.
+.SH DEFAULT
+NULL, no callback
+.SH PROTOCOLS
+HTTP(S) (HTTP/2 only)
+.SH EXAMPLE
+.nf
+/* only allow pushes for file names starting with "push-" */
+int push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp)
+{
+ char *headp;
+ int *transfers = (int *)userp;
+ FILE *out;
+ headp = curl_pushheader_byname(headers, ":path");
+ if(headp && !strncmp(headp, "/push-", 6)) {
+ fprintf(stderr, "The PATH is %s\n", headp);
+
+ /* save the push here */
+ out = fopen("pushed-stream", "wb");
+
+ /* write to this file */
+ curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+ (*transfers)++; /* one more */
+
+ return CURL_PUSH_OK;
+ }
+ return CURL_PUSH_DENY;
+}
+
+curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
+curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+.fi
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHDATA "(3), " CURLMOPT_PIPELINING "(3), " CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html
new file mode 100644
index 000000000..17680a019
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PUSHFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PUSHFUNCTION - callback that approves or denies server pushes <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+char *curl_pushheader_bynum(push_headers, int num);
+char *curl_pushheader_byname(push_headers, const char *name);
+&nbsp;
+int curl_push_callback(CURL *parent,
+&nbsp; CURL *easy,
+&nbsp; size_t num_headers,
+&nbsp; struct curl_pushheaders *headers,
+&nbsp; void *userp);
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
+&nbsp; curl_push_callback func);
+</pre>
+
+<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This callback gets called when a new HTTP/2 stream is being pushed by the server (using the PUSH_PROMISE frame). If no push callback is set, all offered pushes will be denied automatically. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DESCRIPTION</h2>
+<p class="level0">The callback gets its arguments like this:
+<p class="level0"><span Class="emphasis">parent</span> is the handle of the stream on which this push arrives. The new handle has been duphandle()d from the parent, meaning that it has gotten all its options inherited. It is then up to the application to alter any options if desired.
+<p class="level0"><span Class="emphasis">easy</span> is a newly created handle that represents this upcoming transfer.
+<p class="level0"><span Class="emphasis">num_headers</span> is the number of name+value pairs that was received and can be accessed
+<p class="level0"><span Class="emphasis">headers</span> is a handle used to access push headers using the accessor functions described below. This only accesses and provides the PUSH_PROMISE headers, the normal response headers will be provided in the header callback as usual.
+<p class="level0"><span Class="emphasis">userp</span> is the pointer set with <a Class="emphasis" href="./CURLMOPT_PUSHDATA.html">CURLMOPT_PUSHDATA</a>
+<p class="level0">If the callback returns CURL_PUSH_OK, the 'easy' handle will be added to the multi handle, the callback must not do that by itself.
+<p class="level0">The callback can access PUSH_PROMISE headers with two accessor functions. These functions can only be used from within this callback and they can only access the PUSH_PROMISE headers. The normal response headers will be pased to the header callback for pushed streams just as for normal streams.
+<p class="level0"><a name="curlpushheaderbynum"></a><span class="nroffip">curl_pushheader_bynum</span>
+<p class="level1">Returns the header at index 'num' (or NULL). The returned pointer points to a "name:value" string that will be freed when this callback returns.
+<p class="level0"><a name="curlpushheaderbyname"></a><span class="nroffip">curl_pushheader_byname</span>
+<p class="level1">Returns the value for the given header name (or NULL). This is a shortcut so that the application doesn't have to loop through all headers to find the one it is interested in. The data pointed will be freed when this callback returns. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK RETURN VALUE</h2>
+<p class="level0">
+<p class="level0"><a name="CURLPUSHOK"></a><span class="nroffip">CURL_PUSH_OK (0)</span>
+<p class="level1">The application has accepted the stream and it can now start receiving data, the ownership of the CURL handle has been taken over by the application.
+<p class="level0"><a name="CURLPUSHDENY"></a><span class="nroffip">CURL_PUSH_DENY (1)</span>
+<p class="level1">The callback denies the stream and no data for this will reach the application, the easy handle will be destroyed by libcurl.
+<p class="level0"><a name=""></a><span class="nroffip">*</span>
+<p class="level1">All other return codes are reserved for future use. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, no callback <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) (HTTP/2 only) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+/* only allow pushes for file names starting with "push-" */
+int push_callback(CURL *parent,
+&nbsp; CURL *easy,
+&nbsp; size_t num_headers,
+&nbsp; struct curl_pushheaders *headers,
+&nbsp; void *userp)
+{
+&nbsp; char *headp;
+&nbsp; int *transfers = (int *)userp;
+&nbsp; FILE *out;
+&nbsp; headp = curl_pushheader_byname(headers, ":path");
+&nbsp; if(headp && !strncmp(headp, "/push-", 6)) {
+&nbsp; fprintf(stderr, "The PATH is %sn", headp);
+&nbsp;
+&nbsp; /* save the push here */
+&nbsp; out = fopen("pushed-stream", "wb");
+&nbsp;
+&nbsp; /* write to this file */
+&nbsp; curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+&nbsp;
+&nbsp; (*transfers)++; /* one more */
+&nbsp;
+&nbsp; return CURL_PUSH_OK;
+&nbsp; }
+&nbsp; return CURL_PUSH_DENY;
+}
+&nbsp;
+curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
+curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.44.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PUSHDATA.html">CURLMOPT_PUSHDATA</a>, <a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLOPT_PIPEWAIT.html">CURLOPT_PIPEWAIT</a>, <a class="manpage" href="#"> </a> <span Class="manpage"><a href="http://www.ietf.org/rfc/rfc7540.txt">RFC 7540</a></span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf
new file mode 100644
index 000000000..d6431ed11
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.html b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.html
index dd2da96e7..5cea2c139 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.html
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_SOCKETDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,11 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_SOCKETDATA - custom pointer passed to the socket callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A data <span Class="emphasis">pointer</span> to pass to the socket callback set with the <a Class="emphasis" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a> option.
<p class="level0">This pointer will not be touched by libcurl but will only be passed in to the socket callbacks's <span Class="bold">userp</span> argument. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf
index 4beb93fc6..ac0a8a776 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html
index 1106738c7..ecb519adc 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_SOCKETFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,15 +52,17 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_SOCKETFUNCTION - callback informed about what to wait for <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">int socket_callback(CURL *easy, /* easy handle */
- &nbsp; curl_socket_t s, /* socket */
- &nbsp; int what, /* see above */
- &nbsp; void *userp, /* private callback pointer */
- &nbsp; void *socketp); /* private socket pointer */
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+int socket_callback(CURL *easy, /* easy handle */
+&nbsp; curl_socket_t s, /* socket */
+&nbsp; int what, /* see above */
+&nbsp; void *userp, /* private callback pointer */
+&nbsp; void *socketp); /* private socket pointer */
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">When the <span Class="emphasis">curl_multi_socket_action(3)</span> function runs, it informs the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the <span Class="bold">socket_callback</span>. The callback gets status updates with changes since the previous time the callback was called. If the given callback pointer is NULL, no callback will be called. Set the callback's <span Class="bold">userp</span> argument with <a Class="emphasis" href="./CURLMOPT_SOCKETDATA.html">CURLMOPT_SOCKETDATA</a>. See <span Class="emphasis">curl_multi_socket_action(3)</span> for more details on how the callback is used and should work. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf
index ba60f5343..3445301cf 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.html b/docs/libcurl/opts/CURLMOPT_TIMERDATA.html
index 020e5b03a..a42c18bd2 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.html
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_TIMERDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,11 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_TIMERDATA - custom pointer to pass to timer callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A data <span Class="bold">pointer</span> to pass to the timer callback set with the <a Class="emphasis" href="./CURLMOPT_TIMERFUNCTION.html">CURLMOPT_TIMERFUNCTION</a> option.
<p class="level0">This pointer will not be touched by libcurl but will only be passed in to the timer callbacks's <span Class="bold">userp</span> argument. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf b/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf
index a93b74de8..34eb8a990 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index 809c3ef5b..f509b4539 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -36,14 +36,21 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callbac
Pass a pointer to your callback function, which should match the prototype
shown above.
-This callback function will be called when the timeout value changes. The
-\fBtimeout_ms\fP value is at what latest time the application should call one
-of the \&"performing" functions of the multi interface
-(\fIcurl_multi_socket_action(3)\fP and \fIcurl_multi_perform(3)\fP) - to allow
-libcurl to keep timeouts and retries etc to work. A \fBtimeout_ms\fP value of
--1 means that there is no timeout at all, and 0 means that the timeout is
-already expired. libcurl attempts to limit calling this only when the fixed
-future timeout time actually changes.
+Certain features, such as timeouts and retries, require you to call libcurl
+even when there is no activity on the file descriptors.
+
+Your callback function \fBtimer_callback\fP should install a non-repeating
+timer with an interval of \fBtimeout_ms\fP. Each time that timer fires, call
+either \fIcurl_multi_socket_action(3)\fP or \fIcurl_multi_perform(3)\fP,
+depending on which interface you use.
+
+A \fBtimeout_ms\fP value of -1 means you should delete your timer.
+
+A \fBtimeout_ms\fP value of 0 means you should call
+\fIcurl_multi_socket_action(3)\fP or \fIcurl_multi_perform(3)\fP (once) as soon
+as possible.
+
+\fBtimer_callback\fP will only be called when the \fBtimeout_ms\fP changes.
The \fBuserp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP.
@@ -54,7 +61,38 @@ NULL
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+static gboolean timeout_cb(gpointer user_data) {
+ if (user_data) {
+ g_free(user_data);
+ curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL);
+ }
+ int running;
+ curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running);
+ return G_SOURCE_REMOVE;
+}
+
+static int timerfunc(CURLM *multi, long timeout_ms, void *userp) {
+ guint *id = userp;
+
+ if (id)
+ g_source_remove(*id);
+
+ // -1 means we should just delete our timer.
+ if (timeout_ms == -1) {
+ g_free(id);
+ id = NULL;
+ } else {
+ if (!id)
+ id = g_new(guint, 1);
+ *id = g_timeout_add(timeout_ms, timeout_cb, id);
+ }
+ curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+ return 0;
+}
+
+curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);
+.fi
.SH AVAILABILITY
Added in 7.16.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html
index 800bb8f13..0195567e2 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLMOPT_TIMERFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,21 +52,60 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLMOPT_TIMERFUNCTION - set callback to receive timeout values <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">int timer_callback(CURLM *multi, /* multi handle */
- &nbsp; long timeout_ms, /* see above */
- &nbsp; void *userp); /* private callback pointer */
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+int timer_callback(CURLM *multi, /* multi handle */
+&nbsp; long timeout_ms, /* see above */
+&nbsp; void *userp); /* private callback pointer */
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
-<p class="level0">This callback function will be called when the timeout value changes. The <span Class="bold">timeout_ms</span> value is at what latest time the application should call one of the "performing" functions of the multi interface (<span Class="emphasis">curl_multi_socket_action(3)</span> and <span Class="emphasis">curl_multi_perform(3)</span>) - to allow libcurl to keep timeouts and retries etc to work. A <span Class="bold">timeout_ms</span> value of -1 means that there is no timeout at all, and 0 means that the timeout is already expired. libcurl attempts to limit calling this only when the fixed future timeout time actually changes.
+<p class="level0">Certain features, such as timeouts and retries, require you to call libcurl even when there is no activity on the file descriptors.
+<p class="level0">Your callback function <span Class="bold">timer_callback</span> should install a non-repeating timer with an interval of <span Class="bold">timeout_ms</span>. Each time that timer fires, call either <span Class="emphasis">curl_multi_socket_action(3)</span> or <span Class="emphasis">curl_multi_perform(3)</span>, depending on which interface you use.
+<p class="level0">A <span Class="bold">timeout_ms</span> value of -1 means you should delete your timer.
+<p class="level0">A <span Class="bold">timeout_ms</span> value of 0 means you should call <span Class="emphasis">curl_multi_socket_action(3)</span> or <span Class="emphasis">curl_multi_perform(3)</span> (once) as soon as possible.
+<p class="level0"><span Class="bold">timer_callback</span> will only be called when the <span Class="bold">timeout_ms</span> changes.
<p class="level0">The <span Class="bold">userp</span> pointer is set with <a Class="emphasis" href="./CURLMOPT_TIMERDATA.html">CURLMOPT_TIMERDATA</a>.
<p class="level0">The timer callback should return 0 on success, and -1 on error. This callback can be used instead of, or in addition to, <span Class="emphasis">curl_multi_timeout(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+static gboolean timeout_cb(gpointer user_data) {
+&nbsp; if (user_data) {
+&nbsp; g_free(user_data);
+&nbsp; curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL);
+&nbsp; }
+&nbsp; int running;
+&nbsp; curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running);
+&nbsp; return G_SOURCE_REMOVE;
+}
+&nbsp;
+static int timerfunc(CURLM *multi, long timeout_ms, void *userp) {
+&nbsp; guint *id = userp;
+&nbsp;
+&nbsp; if (id)
+&nbsp; g_source_remove(*id);
+&nbsp;
+&nbsp; // -1 means we should just delete our timer.
+&nbsp; if (timeout_ms == -1) {
+&nbsp; g_free(id);
+&nbsp; id = NULL;
+&nbsp; } else {
+&nbsp; if (!id)
+&nbsp; id = g_new(guint, 1);
+&nbsp; *id = g_timeout_add(timeout_ms, timeout_cb, id);
+&nbsp; }
+&nbsp; curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+&nbsp; return 0;
+}
+&nbsp;
+curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLMOPT_TIMERDATA.html">CURLMOPT_TIMERDATA</a>, <a Class="manpage" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf
index 3db1c3ecb..9a8ba6e30 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html
index 3b84a4d12..e6e547e5b 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_ACCEPTTIMEOUT_MS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_ACCEPTTIMEOUT_MS - timeout waiting for FTP server to connect back <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long telling libcurl the maximum number of milliseconds to wait for a server to connect back to libcurl when an active FTP connection is used. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">If no timeout is set, the internal default of 60000 (one minute) will be used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf
index 4a5af84f3..5bc835e0e 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html
index 0f4aab449..76f7c9cf5 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html
@@ -4,15 +4,20 @@
<title>CURLOPT_ACCEPT_ENCODING man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_ACCEPT_ENCODING - enables automatic decompression of HTTP downloads <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * argument specifying what encoding you'd like.
<p class="level0">Sets the contents of the Accept-Encoding: header sent in a HTTP request, and enables decoding of a response when a Content-Encoding: header is received. Three encodings are supported: <span Class="emphasis">identity</span>, which does nothing, <span Class="emphasis">deflate</span> which requests the server to compress its response using the zlib algorithm, and <span Class="emphasis">gzip</span> which requests the gzip algorithm.
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf
index 33acf1301..659bd6852 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html
index d79833cb9..25017db64 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_ADDRESS_SCOPE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_ADDRESS_SCOPE - set scope for local IPv6 addresses <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long specifying the scope_id value to use when connecting to IPv6 link-local or site-local addresses. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf
index 883842cd2..f1f0e3429 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.html b/docs/libcurl/opts/CURLOPT_APPEND.html
index 32cef5ad0..9b0b8b5e0 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.html
+++ b/docs/libcurl/opts/CURLOPT_APPEND.html
@@ -4,15 +4,20 @@
<title>CURLOPT_APPEND man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_APPEND - enable appending to the remote file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A parameter set to 1 tells the library to append to the remote file instead of overwrite it. This is only useful when uploading to an FTP site. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.pdf b/docs/libcurl/opts/CURLOPT_APPEND.pdf
index 698e1f489..c1ea28ef6 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.pdf
+++ b/docs/libcurl/opts/CURLOPT_APPEND.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.html b/docs/libcurl/opts/CURLOPT_AUTOREFERER.html
index f7cf20ce1..55dad5490 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.html
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_AUTOREFERER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_AUTOREFERER - automatically update the referer header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a parameter set to 1 to enable this. When enabled, libcurl will automatically set the Referer: header field in HTTP requests where it follows a Location: redirect. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf b/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf
index 5cf16c009..dfcb134e9 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.html b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.html
index 265f84135..4275b5550 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.html
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_BUFFERSIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_BUFFERSIZE - set preferred receive buffer size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long specifying your preferred <span Class="emphasis">size</span> (in bytes) for the receive buffer in libcurl. The main point of this would be that the write callback gets called more often and with smaller chunks. This is just treated as a request, not an order. You cannot be guaranteed to actually get the given size.
<p class="level0">This size is by default set as big as possible (<span Class="emphasis">CURL_MAX_WRITE_SIZE</span>), so it only makes sense to use this option if you want it smaller. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf
index b63d18f2b..95302502f 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index cb7f47b74..85c9ba30a 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -47,7 +47,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-If built TLS enabled
+For SSL engines that don't support certificate files the CURLOPT_CAINFO option
+is ignored. Refer to http://curl.haxx.se/docs/ssl-compared.html
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.html b/docs/libcurl/opts/CURLOPT_CAINFO.html
index 528da915c..67ef6dcab 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.html
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CAINFO man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,16 +52,16 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CAINFO - path to Certificate Authority (CA) bundle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a zero terminated string naming a file holding one or more certificates to verify the peer with.
<p class="level0">If <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is zero and you avoid verifying the server's certificate, <a Class="emphasis" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a> need not even indicate an accessible file.
<p class="level0">This option is by default set to the system path where libcurl's cacert bundle is assumed to be stored, as established at build time.
-<p class="level0">If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module (libnsspem.so) needs to be available for this option to work properly. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">If curl is built against the NSS SSL library, the NSS PEM PKCS&#35;11 module (libnsspem.so) needs to be available for this option to work properly. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">Built-in system specific <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">If built TLS enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">For SSL engines that don't support certificate files the CURLOPT_CAINFO option is ignored. Refer to <a href="http://curl.haxx.se/docs/ssl-compared.html">http://curl.haxx.se/docs/ssl-compared.html</a> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.pdf b/docs/libcurl/opts/CURLOPT_CAINFO.pdf
index 572a5d453..e4dc058ec 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.pdf
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 642953dc9..6695f9f3c 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -43,9 +43,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-This option is OpenSSL-specific and does nothing if libcurl is built to use
-GnuTLS. NSS-powered libcurl provides the option only for backward
-compatibility.
+This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS
+backend provides the option only for backward compatibility.
.SH RETURN VALUE
Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.html b/docs/libcurl/opts/CURLOPT_CAPATH.html
index a9cdb2798..6f1c4031b 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.html
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CAPATH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CAPATH - specify directory holding CA certificates <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a zero terminated string naming a directory holding multiple CA certificates to verify the peer with. If libcurl is built against OpenSSL, the certificate directory must be prepared using the openssl c_rehash utility. This makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option.
<p class="level0">The <a Class="emphasis" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a> function apparently does not work in Windows due to some limitation in openssl. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">This option is OpenSSL-specific and does nothing if libcurl is built to use GnuTLS. NSS-powered libcurl provides the option only for backward compatibility. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS backend provides the option only for backward compatibility. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.pdf b/docs/libcurl/opts/CURLOPT_CAPATH.pdf
index 5dbdc971e..46be0cb85 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.pdf
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index 8c01711dd..a508b867b 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -29,11 +29,10 @@ CURLOPT_CERTINFO \- request SSL certificate information
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
.SH DESCRIPTION
Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
-this enabled, libcurl (if built with OpenSSL, NSS or GSKit) will
-extract lots of information and data about the certificates in the certificate
-chain used in the SSL connection. This data may then be retrieved after a
-transfer using \fIcurl_easy_getinfo(3)\fP and its option
-\fICURLINFO_CERTINFO\fP.
+this enabled, libcurl will extract lots of information and data about the
+certificates in the certificate chain used in the SSL connection. This data may
+then be retrieved after a transfer using \fIcurl_easy_getinfo(3)\fP and its
+option \fICURLINFO_CERTINFO\fP.
.SH DEFAULT
0
.SH PROTOCOLS
@@ -41,7 +40,7 @@ All TLS-based
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.19.1
+This option is supported by the OpenSSL, GnuTLS, NSS and GSKit backends.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.html b/docs/libcurl/opts/CURLOPT_CERTINFO.html
index ae19dd655..0b210d2a7 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.html
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CERTINFO man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,13 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CERTINFO - request SSL certificate information <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With this enabled, libcurl (if built with OpenSSL, NSS or GSKit) will extract lots of information and data about the certificates in the certificate chain used in the SSL connection. This data may then be retrieved after a transfer using <span Class="emphasis">curl_easy_getinfo(3)</span> and its option <span Class="emphasis">CURLINFO_CERTINFO</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With this enabled, libcurl will extract lots of information and data about the certificates in the certificate chain used in the SSL connection. This data may then be retrieved after a transfer using <span Class="emphasis">curl_easy_getinfo(3)</span> and its option <span Class="emphasis">CURLINFO_CERTINFO</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS-based <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This option is supported by the OpenSSL, GnuTLS, NSS and GSKit backends. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.pdf b/docs/libcurl/opts/CURLOPT_CERTINFO.pdf
index 9e7273ebb..e8cf96e17 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.pdf
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html
index 2721d5bdf..85f5657a7 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CHUNK_BGN_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,15 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CHUNK_BGN_FUNCTION - callback before a transfer with FTP wildcardmatch <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">long chunk_bgn_callback(const void *transfer_info, void *ptr,
- &nbsp; int remains);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
- &nbsp; chunk_bgn_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+long chunk_bgn_callback(const void *transfer_info, void *ptr,
+&nbsp; int remains);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
+&nbsp; chunk_bgn_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This callback function gets called by libcurl before a part of the stream is going to be transferred (if the transfer supports chunks).
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf
index 9a97a66ef..6af97345b 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index abdbc3a87..4d0ff3da5 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -29,8 +29,8 @@ CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
.SH DESCRIPTION
Pass a \fIpointer\fP that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_CHUNK_BGN_FUNTION(3)\fP and
-\fICURL_CHUNK_END_FUNTION(3)\fP.
+argument to the \fICURL_CHUNK_BGN_FUNCTION(3)\fP and
+\fICURL_CHUNK_END_FUNCTION(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.html b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.html
index 701d1a470..e27c65be3 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.html
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CHUNK_DATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,9 +52,9 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CHUNK_DATA - custom pointer to the FTP chunk callbacks <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_CHUNK_BGN_FUNTION(3)</span> and <span Class="emphasis">CURL_CHUNK_END_FUNTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_CHUNK_BGN_FUNCTION(3)</span> and <span Class="emphasis">CURL_CHUNK_END_FUNCTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf
index 11e87356e..8313611b9 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html
index 6322c73c2..7d0694610 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CHUNK_END_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CHUNK_END_FUNCTION - callback after a transfer with FTP wildcardmatch <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">long chunk_end_callback(void *ptr);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
- &nbsp; chunk_end_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+long chunk_end_callback(void *ptr);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
+&nbsp; chunk_end_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This function gets called by libcurl as soon as a part of the stream has been transferred (or skipped).
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf
index f9dfde6b5..3da58c804 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html
index 44fa4ff73..e47f8c8d6 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CLOSESOCKETDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CLOSESOCKETDATA - pointer passed to the socket close callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the closesocket callback set with <a Class="emphasis" href="./CURLOPT_CLOSESOCKETFUNCTION.html">CURLOPT_CLOSESOCKETFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf
index 7d78bda29..99b7f90ef 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html
index 1b004a19a..4124d0bb8 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CLOSESOCKETFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CLOSESOCKETFUNCTION - callback to socket close replacement function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">int closesocket_callback(void *clientp, curl_socket_t item);
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION, closesocket_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf
index 19edee517..4aae7c54c 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index 5005b5930..7f28e6358 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -41,7 +41,17 @@ In unix-like systems, this might cause signals to be used unless
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* complete connection within 10 seconds */
+ curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html
index 97ca35b2d..6afc39689 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CONNECTTIMEOUT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,25 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CONNECTTIMEOUT - timeout for the connect phase <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. It should contain the maximum time in seconds that you allow the connection phase to the server to take. This only limits the connection phase, it has no impact once it has connected. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a> option.
<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">300 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete connection within 10 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf
index cdf8c4f4b..3359205ce 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index dd5ef5869..d81118e53 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -41,7 +41,17 @@ In unix-like systems, this might cause signals to be used unless
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* complete connection within 10000 milliseconds */
+ curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10000L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html
index 91b2c9ae0..15580ffce 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CONNECTTIMEOUT_MS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,25 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CONNECTTIMEOUT_MS - timeout for the connect phase <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. It should contain the maximum time in milliseconds that you allow the connection phase to the server to take. This only limits the connection phase, it has no impact once it has connected. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a Class="emphasis" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a> option.
<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">300000 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete connection within 10000 milliseconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10000L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf
index 0a001f5d6..03d23ea31 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html
index a0fda31e1..3e07fc2dc 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CONNECT_ONLY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CONNECT_ONLY - stop when connected to target server <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the parameter equals 1, it tells the library to perform all the required proxy authentication and connection setup, but no data transfer, and then return.
<p class="level0">The option can be used to simply test a connection to a server, but is more useful when used with the <span Class="emphasis">CURLINFO_LASTSOCKET</span> option to <span Class="emphasis">curl_easy_getinfo(3)</span> as the library can set up the connection and then the application can obtain the most recently used socket for special data transfers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf
index 969689bb6..39371fe20 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html
index dea2c03a1..3c78f548e 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CONV_FROM_NETWORK_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CONV_FROM_NETWORK_FUNCTION - convert data from network to host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- &nbsp; conv_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode conv_callback(char *ptr, size_t length);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
+&nbsp; conv_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided.
@@ -60,10 +67,10 @@ p.roffit {
<p class="level0"><span Class="bold">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span> converts to host encoding from the network encoding. It is used when commands or ASCII data are received over the network.
<p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used. If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code.
<p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example:
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
<p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows:
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
<p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">FTP, SMTP, IMAP, POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf
index 2b9d62ccd..2b92ff406 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html
index 2ed2c13ac..5b6376310 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CONV_FROM_UTF8_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CONV_FROM_UTF8_FUNCTION - convert data from UTF8 to host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
- &nbsp; conv_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode conv_callback(char *ptr, size_t length);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
+&nbsp; conv_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided.
@@ -60,10 +67,10 @@ p.roffit {
<p class="level0"><span Class="bold">CURLOPT_CONV_FROM_UTF8_FUNCTION</span> converts to host encoding from UTF8 encoding. It is required only for SSL processing.
<p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used. If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code.
<p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example:
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
<p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows:
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
<p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">TLS-based protocols. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf
index dfa30c3d1..e9930fd2f 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html
index 40f8c2df9..de1517449 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CONV_TO_NETWORK_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CONV_TO_NETWORK_FUNCTION - convert data to network from host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
- &nbsp; conv_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode conv_callback(char *ptr, size_t length);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
+&nbsp; conv_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided.
@@ -60,10 +67,10 @@ p.roffit {
<p class="level0"><span Class="bold">CURLOPT_CONV_TO_NETWORK_FUNCTION</span> converts from host encoding to the network encoding. It is used when commands or ASCII data are sent over the network.
<p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used. If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code.
<p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example:
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
<p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows:
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
<p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">FTP, SMTP, IMAP, POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf
index 18cf2d532..b07a2cccd 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index 379296a7e..a390135fc 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -40,6 +40,15 @@ This option sets the cookie header explicitly in the outgoing request(s). If
multiple requests are done due to authentication, followed redirections or
similar, they will all get this cookie passed on.
+The cookies set by this option are separate from the internal cookie storage
+held by the cookie engine and will not be modified by it. If you enable the
+cookie engine and either you've imported a cookie of the same name (e.g. 'foo')
+or the server has set one, it will have no effect on the cookies you set here.
+A request to the server will send both the 'foo' held by the cookie engine and
+the 'foo' held by this option. To set a cookie that is instead held by the
+cookie engine and can be modified by the server use
+\fICURLOPT_COOKIELIST(3)\fP.
+
Using this option multiple times will only make the latest string override the
previous ones.
@@ -51,7 +60,16 @@ NULL, no cookies
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_setopt(curl, CURLOPT_COOKIE, "tool=curl; fun=yes;");
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
If HTTP is enabled
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.html b/docs/libcurl/opts/CURLOPT_COOKIE.html
index df42e6455..c91529f78 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.html
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_COOKIE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,16 +52,28 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_COOKIE - set contents of HTTP Cookie header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set a cookie in the HTTP request. The format of the string should be NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie should contain.
<p class="level0">If you need to set multiple cookies, set them all using a single option concatenated like this: "name1=content1; name2=content2;" etc.
<p class="level0">This option sets the cookie header explicitly in the outgoing request(s). If multiple requests are done due to authentication, followed redirections or similar, they will all get this cookie passed on.
+<p class="level0">The cookies set by this option are separate from the internal cookie storage held by the cookie engine and will not be modified by it. If you enable the cookie engine and either you've imported a cookie of the same name (e.g. 'foo') or the server has set one, it will have no effect on the cookies you set here. A request to the server will send both the 'foo' held by the cookie engine and the 'foo' held by this option. To set a cookie that is instead held by the cookie engine and can be modified by the server use <a Class="emphasis" href="./CURLOPT_COOKIELIST.html">CURLOPT_COOKIELIST</a>.
<p class="level0">Using this option multiple times will only make the latest string override the previous ones.
<p class="level0">This option will not enable the cookie engine. Use <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a> or <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a> to enable parsing and sending cookies automatically. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL, no cookies <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_COOKIE, "tool=curl; fun=yes;");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">If HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if HTTP is enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>, <a Class="manpage" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>, <a Class="manpage" href="./CURLOPT_COOKIELIST.html">CURLOPT_COOKIELIST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.pdf b/docs/libcurl/opts/CURLOPT_COOKIE.pdf
index 3a7edbc10..6e51674e9 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.pdf
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.html b/docs/libcurl/opts/CURLOPT_COOKIEFILE.html
index 10539bc5b..5123a4b57 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.html
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_COOKIEFILE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_COOKIEFILE - file name to read cookies from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It should point to the file name of your file holding cookie data to read. The cookie data can be in either the old Netscape / Mozilla cookie data format or just regular HTTP-style headers dumped to a file.
<p class="level0">It also enables the cookie engine, making libcurl parse and send cookies on subsequent requests with this handle.
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf b/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf
index 9e0064c01..50ff7cdd7 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.html b/docs/libcurl/opts/CURLOPT_COOKIEJAR.html
index a4f45bfb1..0a8b21007 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.html
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.html
@@ -4,15 +4,20 @@
<title>CURLOPT_COOKIEJAR man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_COOKIEJAR - file name to store cookies to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">filename</span> as char *, zero terminated. This will make libcurl write all internally known cookies to the specified file when <span Class="emphasis">curl_easy_cleanup(3)</span> is called. If no cookies are known, no file will be created. Specify "-" as filename to instead have the cookies written to stdout. Using this option also enables cookies for this session, so if you for example follow a location it will make matching cookies get sent accordingly.
<p class="level0">Note that libcurl doesn't read any cookies from the cookie jar. If you want to read cookies from a file, use <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>.
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf b/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf
index c0626bd4f..731cff52b 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index 815def1b9..937c79db8 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -36,6 +36,16 @@ Such a cookie can be either a single line in Netscape / Mozilla format or just
regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
cookie engine. This adds that single cookie to the internal cookie store.
+If you use the Set-Cookie format and don't specify a domain then the cookie
+is sent for any domain and will not be modified. If a server sets a cookie of
+the same name (or maybe you've imported one) then both will be sent on a future
+transfer to that server, likely not what you intended. Either set a domain in
+Set-Cookie (doing that will include sub domains) or use the Netscape format as
+shown in EXAMPLE.
+
+Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the
+lists exported by \fICURLINFO_COOKIELIST(3)\fP and \fICURLOPT_COOKIEJAR(3)\fP.
+
Additionally, there are commands available that perform actions if you pass in
these exact strings:
.IP ALL
@@ -55,7 +65,46 @@ NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+/* This example shows an inline import of a cookie in Netscape format.
+You can set the cookie as HttpOnly to prevent XSS attacks by prepending
+#HttpOnly_ to the hostname. That may be useful if the cookie will later
+be imported by a browser.
+*/
+
+#define SEP "\\t" /* Tab separates the fields */
+
+char *my_cookie =
+ "example.com" /* Hostname */
+ SEP "FALSE" /* Include subdomains */
+ SEP "/" /* Path */
+ SEP "FALSE" /* Secure */
+ SEP "0" /* Expiry in epoch time format. 0 == Session */
+ SEP "foo" /* Name */
+ SEP "bar"; /* Value */
+
+/* my_cookie is imported immediately via CURLOPT_COOKIELIST.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie);
+
+/* The list of cookies in cookies.txt will not be imported until right
+before a transfer is performed. Cookies in the list that have the same
+hostname, path and name as in my_cookie are skipped. That is because
+libcurl has already imported my_cookie and it's considered a "live"
+cookie. A live cookie won't be replaced by one read from a file.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); /* import */
+
+/* Cookies are exported after curl_easy_cleanup is called. The server
+may have added, deleted or modified cookies by then. The cookies that
+were skipped on import are not exported.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); /* export */
+
+res = curl_easy_perform(curl); /* cookies imported from cookies.txt */
+
+curl_easy_cleanup(curl); /* cookies exported to cookies.txt */
+.fi
.SH AVAILABILITY
ALL was added in 7.14.1
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.html b/docs/libcurl/opts/CURLOPT_COOKIELIST.html
index 382eb6087..0f06a6f93 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.html
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_COOKIELIST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,17 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_COOKIELIST - add to or manipulate cookies held in memory <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
- &nbsp; char *cookie);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
+&nbsp; char *cookie);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a <span Class="emphasis">cookie</span> string.
<p class="level0">Such a cookie can be either a single line in Netscape / Mozilla format or just regular HTTP-style header (Set-Cookie: ...) format. This will also enable the cookie engine. This adds that single cookie to the internal cookie store.
+<p class="level0">If you use the Set-Cookie format and don't specify a domain then the cookie is sent for any domain and will not be modified. If a server sets a cookie of the same name (or maybe you've imported one) then both will be sent on a future transfer to that server, likely not what you intended. Either set a domain in Set-Cookie (doing that will include sub domains) or use the Netscape format as shown in EXAMPLE.
+<p class="level0">Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the lists exported by <span Class="emphasis">CURLINFO_COOKIELIST(3)</span> and <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>.
<p class="level0">Additionally, there are commands available that perform actions if you pass in these exact strings:
<p class="level0"><a name="ALL"></a><span class="nroffip">ALL</span>
<p class="level1">erases all cookies held in memory
@@ -70,7 +78,48 @@ p.roffit {
<p class="level1"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+/* This example shows an inline import of a cookie in Netscape format.
+You can set the cookie as HttpOnly to prevent XSS attacks by prepending
+&#35;HttpOnly_ to the hostname. That may be useful if the cookie will later
+be imported by a browser.
+*/
+&nbsp;
+&#35;define SEP "\t" /* Tab separates the fields */
+&nbsp;
+char *my_cookie =
+&nbsp; "example.com" /* Hostname */
+&nbsp; SEP "FALSE" /* Include subdomains */
+&nbsp; SEP "/" /* Path */
+&nbsp; SEP "FALSE" /* Secure */
+&nbsp; SEP "0" /* Expiry in epoch time format. 0 == Session */
+&nbsp; SEP "foo" /* Name */
+&nbsp; SEP "bar"; /* Value */
+&nbsp;
+/* my_cookie is imported immediately via CURLOPT_COOKIELIST.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie);
+&nbsp;
+/* The list of cookies in cookies.txt will not be imported until right
+before a transfer is performed. Cookies in the list that have the same
+hostname, path and name as in my_cookie are skipped. That is because
+libcurl has already imported my_cookie and it's considered a "live"
+cookie. A live cookie won't be replaced by one read from a file.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); /* import */
+&nbsp;
+/* Cookies are exported after curl_easy_cleanup is called. The server
+may have added, deleted or modified cookies by then. The cookies that
+were skipped on import are not exported.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); /* export */
+&nbsp;
+res = curl_easy_perform(curl); /* cookies imported from cookies.txt */
+&nbsp;
+curl_easy_cleanup(curl); /* cookies exported to cookies.txt */
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">ALL was added in 7.14.1
<p class="level0">SESS was added in 7.15.4
<p class="level0">FLUSH was added in 7.17.1
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf b/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf
index 896acd617..1a7b3e140 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.html b/docs/libcurl/opts/CURLOPT_COOKIESESSION.html
index 4231e9d1d..04fa0e868 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.html
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_COOKIESESSION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_COOKIESESSION - start a new cookie session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long set to 1 to mark this as a new cookie "session". It will force libcurl to ignore all cookies it is about to load that are "session cookies" from the previous session. By default, libcurl always stores and loads all cookies, independent if they are session cookies or not. Session cookies are cookies without expiry date and they are meant to be alive and existing for this "session" only.
<p class="level0">A "session" is usually defined in browser land for as long as you have your browser up, more or less. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf b/docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf
index 92a3c9f9b..bbe973866 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf
@@ -63,12 +63,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:53+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:17:53+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:13+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:13+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:643f96ca-cf2b-11ef-0000-734885418920'/>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:7b88777e-78d5-11f0-0000-734885418920'/>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -77,9 +77,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091753+01'00')
-/ModDate(D:20150108091753+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081113+02'00')
+/ModDate(D:20150812081113+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 14
@@ -99,7 +99,7 @@ xref
0000001853 00000 n
trailer
<< /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<92DA738D7286633AF0F76D4DE60DE35D><92DA738D7286633AF0F76D4DE60DE35D>]
+/ID [<3FB8C8E04869B30090B9FE0589AF0565><3FB8C8E04869B30090B9FE0589AF0565>]
>>
startxref
3430
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html
index f2b7a0a75..7aa2456a2 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_COPYPOSTFIELDS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,24 +52,27 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_COPYPOSTFIELDS - have libcurl copy data to POST <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be the full <span Class="emphasis">data</span> to post in a HTTP POST operation. It behaves as the <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> option, but the original data is instead copied by the library, allowing the application to overwrite the original data after setting this option.
<p class="level0">Because data are copied, care must be taken when using this option in conjunction with <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>: If the size has not been set prior to <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, the data is assumed to be a zero terminated string; else the stored size informs the library about the byte count to copy. In any case, the size must not be changed after <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, unless another <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> or <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> option is issued. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; char local_buffer[1024]="data to send";
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the data to copy from the buffer and send in the request */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
- <p class="level0">&nbsp; /* send data from the local stack */
- &nbsp; curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; char local_buffer[1024]="data to send";
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the data to copy from the buffer and send in the request */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+&nbsp;
+&nbsp; /* send data from the local stack */
+&nbsp; curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.17.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf
index f376e1724..15a683765 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.html b/docs/libcurl/opts/CURLOPT_CRLF.html
index c3f7e9b31..001490b2e 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.html
+++ b/docs/libcurl/opts/CURLOPT_CRLF.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CRLF man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CRLF - enable/disable CRLF conversion <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to CRLF newlines on transfers. Disable this option again by setting the value to 0 (zero).
<p class="level0">This is a legacy option of questionable use. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.pdf b/docs/libcurl/opts/CURLOPT_CRLF.pdf
index 767bc0908..ab3ca881f 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.pdf
+++ b/docs/libcurl/opts/CURLOPT_CRLF.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.html b/docs/libcurl/opts/CURLOPT_CRLFILE.html
index a92de8467..b73881517 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.html
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CRLFILE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CRLFILE - specify a Certificate Revocation List file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a zero terminated string naming a <span Class="emphasis">file</span> with the concatenation of CRL (in PEM format) to use in the certificate validation that occurs during the SSL exchange.
<p class="level0">When curl is built to use NSS or GnuTLS, there is no way to influence the use of CRL passed to help in the verification process. When libcurl is built with OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both set, requiring CRL check against all the elements of the certificate chain if a CRL file is passed.
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.pdf b/docs/libcurl/opts/CURLOPT_CRLFILE.pdf
index 6ecefbc88..5249c5bba 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.pdf
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html
index c6e512473..03014103d 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_CUSTOMREQUEST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_CUSTOMREQUEST - custom string for request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter.
<p class="level0">When you change the request method by setting <a Class="bold" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a> to something, you don't actually change how libcurl behaves or acts in regards to the particular request method, it will only change the actual string sent in the request.
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf
index f93faa375..d3503079f 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.html b/docs/libcurl/opts/CURLOPT_DEBUGDATA.html
index d5a09e77f..2f79735e2 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.html
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DEBUGDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DEBUGDATA - custom pointer for debug callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> to whatever you want passed in to your <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> in the last void * argument. This pointer is not used by libcurl, it is only passed to the callback. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf b/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf
index 80247b7c0..a3720c735 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html
index ab3950b9c..2b5b63362 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DEBUGFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,26 +52,29 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DEBUGFUNCTION - debug callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLINFO_TEXT = 0,
- &nbsp; CURLINFO_HEADER_IN, /* 1 */
- &nbsp; CURLINFO_HEADER_OUT, /* 2 */
- &nbsp; CURLINFO_DATA_IN, /* 3 */
- &nbsp; CURLINFO_DATA_OUT, /* 4 */
- &nbsp; CURLINFO_SSL_DATA_IN, /* 5 */
- &nbsp; CURLINFO_SSL_DATA_OUT, /* 6 */
- &nbsp; CURLINFO_END
- } curl_infotype;
- <p class="level0">int debug_callback(CURL *handle,
- &nbsp; curl_infotype type,
- &nbsp; char *data,
- &nbsp; size_t size,
- &nbsp; void *userptr);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
- &nbsp; debug_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLINFO_TEXT = 0,
+&nbsp; CURLINFO_HEADER_IN, /* 1 */
+&nbsp; CURLINFO_HEADER_OUT, /* 2 */
+&nbsp; CURLINFO_DATA_IN, /* 3 */
+&nbsp; CURLINFO_DATA_OUT, /* 4 */
+&nbsp; CURLINFO_SSL_DATA_IN, /* 5 */
+&nbsp; CURLINFO_SSL_DATA_OUT, /* 6 */
+&nbsp; CURLINFO_END
+} curl_infotype;
+&nbsp;
+int debug_callback(CURL *handle,
+&nbsp; curl_infotype type,
+&nbsp; char *data,
+&nbsp; size_t size,
+&nbsp; void *userptr);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
+&nbsp; debug_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0"><a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> replaces the standard debug function used when <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> is in effect. This callback receives debug information, as specified in the <span Class="emphasis">type</span> argument. This function must return 0. The <span Class="emphasis">data</span> pointed to by the char * passed to this function WILL NOT be zero terminated, but will be exactly of the <span Class="emphasis">size</span> as told by the <span Class="emphasis">size</span> argument.
@@ -88,88 +96,103 @@ p.roffit {
<p class="level1">The data is SSL/TLS (binary) data received from the peer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">static
- void dump(const char *text,
- &nbsp; FILE *stream, unsigned char *ptr, size_t size)
- {
- &nbsp; size_t i;
- &nbsp; size_t c;
- &nbsp; unsigned int width=0x10;
- <p class="level0">&nbsp; fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)n",
- &nbsp; text, (long)size, (long)size);
- <p class="level0">&nbsp; for(i=0; i&lt;size; i+= width) {
- &nbsp; fprintf(stream, "%4.4lx: ", (long)i);
- <p class="level0">&nbsp; /* show hex to the left */
- &nbsp; for(c = 0; c &lt; width; c++) {
- &nbsp; if(i+c &lt; size)
- &nbsp; fprintf(stream, "%02x ", ptr[i+c]);
- &nbsp; else
- &nbsp; fputs(" ", stream);
- &nbsp; }
- <p class="level0">&nbsp; /* show data on the right */
- &nbsp; for(c = 0; (c &lt; width) && (i+c &lt; size); c++)
- &nbsp; fputc(ptr[i+c]&gt;=0x20) && (ptr[i+c]&lt;0x80)?ptr[i+c]:'.', stream);
- <p class="level0">&nbsp; fputc('n', stream); /* newline */
- &nbsp; }
- }
- <p class="level0">static
- int my_trace(CURL *handle, curl_infotype type,
- &nbsp; char *data, size_t size,
- &nbsp; void *userp)
- {
- &nbsp; const char *text;
- &nbsp; (void)handle; /* prevent compiler warning */
- <p class="level0">&nbsp; switch (type) {
- &nbsp; case CURLINFO_TEXT:
- &nbsp; fprintf(stderr, "== Info: %s", data);
- &nbsp; default: /* in case a new one is introduced to shock us */
- &nbsp; return 0;
- <p class="level0">&nbsp; case CURLINFO_HEADER_OUT:
- &nbsp; text = "=&gt; Send header";
- &nbsp; break;
- &nbsp; case CURLINFO_DATA_OUT:
- &nbsp; text = "=&gt; Send data";
- &nbsp; break;
- &nbsp; case CURLINFO_SSL_DATA_OUT:
- &nbsp; text = "=&gt; Send SSL data";
- &nbsp; break;
- &nbsp; case CURLINFO_HEADER_IN:
- &nbsp; text = "&lt;= Recv header";
- &nbsp; break;
- &nbsp; case CURLINFO_DATA_IN:
- &nbsp; text = "&lt;= Recv data";
- &nbsp; break;
- &nbsp; case CURLINFO_SSL_DATA_IN:
- &nbsp; text = "&lt;= Recv SSL data";
- &nbsp; break;
- &nbsp; }
- <p class="level0">&nbsp; dump(text, stderr, (unsigned char *)data, size);
- &nbsp; return 0;
- }
- <p class="level0">int main(void)
- {
- &nbsp; CURL *curl;
- &nbsp; CURLcode res;
- <p class="level0">&nbsp; curl = curl_easy_init();
- &nbsp; if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
- <p class="level0">&nbsp; /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
- &nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
- &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; /* Check for errors */
- &nbsp; if(res != CURLE_OK)
- &nbsp; fprintf(stderr, "curl_easy_perform() failed: %sn",
- &nbsp; curl_easy_strerror(res));
- <p class="level0">&nbsp; /* always cleanup */
- &nbsp; curl_easy_cleanup(curl);
- &nbsp; }
- &nbsp; return 0;
- }
- </pre>
+<p class="level0"><pre class="level0">
+static
+void dump(const char *text,
+&nbsp; FILE *stream, unsigned char *ptr, size_t size)
+{
+&nbsp; size_t i;
+&nbsp; size_t c;
+&nbsp; unsigned int width=0x10;
+&nbsp;
+&nbsp; fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)n",
+&nbsp; text, (long)size, (long)size);
+&nbsp;
+&nbsp; for(i=0; i&lt;size; i+= width) {
+&nbsp; fprintf(stream, "%4.4lx: ", (long)i);
+&nbsp;
+&nbsp; /* show hex to the left */
+&nbsp; for(c = 0; c &lt; width; c++) {
+&nbsp; if(i+c &lt; size)
+&nbsp; fprintf(stream, "%02x ", ptr[i+c]);
+&nbsp; else
+&nbsp; fputs(" ", stream);
+&nbsp; }
+&nbsp;
+&nbsp; /* show data on the right */
+&nbsp; for(c = 0; (c &lt; width) && (i+c &lt; size); c++)
+&nbsp; fputc(ptr[i+c]&gt;=0x20) && (ptr[i+c]&lt;0x80)?ptr[i+c]:'.', stream);
+&nbsp;
+&nbsp; fputc('n', stream); /* newline */
+&nbsp; }
+}
+&nbsp;
+static
+int my_trace(CURL *handle, curl_infotype type,
+&nbsp; char *data, size_t size,
+&nbsp; void *userp)
+{
+&nbsp; const char *text;
+&nbsp; (void)handle; /* prevent compiler warning */
+&nbsp;
+&nbsp; switch (type) {
+&nbsp; case CURLINFO_TEXT:
+&nbsp; fprintf(stderr, "== Info: %s", data);
+&nbsp; default: /* in case a new one is introduced to shock us */
+&nbsp; return 0;
+&nbsp;
+&nbsp; case CURLINFO_HEADER_OUT:
+&nbsp; text = "=&gt; Send header";
+&nbsp; break;
+&nbsp; case CURLINFO_DATA_OUT:
+&nbsp; text = "=&gt; Send data";
+&nbsp; break;
+&nbsp; case CURLINFO_SSL_DATA_OUT:
+&nbsp; text = "=&gt; Send SSL data";
+&nbsp; break;
+&nbsp; case CURLINFO_HEADER_IN:
+&nbsp; text = "&lt;= Recv header";
+&nbsp; break;
+&nbsp; case CURLINFO_DATA_IN:
+&nbsp; text = "&lt;= Recv data";
+&nbsp; break;
+&nbsp; case CURLINFO_SSL_DATA_IN:
+&nbsp; text = "&lt;= Recv SSL data";
+&nbsp; break;
+&nbsp; }
+&nbsp;
+&nbsp; dump(text, stderr, (unsigned char *)data, size);
+&nbsp; return 0;
+}
+&nbsp;
+int main(void)
+{
+&nbsp; CURL *curl;
+&nbsp; CURLcode res;
+&nbsp;
+&nbsp; curl = curl_easy_init();
+&nbsp; if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
+&nbsp;
+&nbsp; /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
+&nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+&nbsp;
+&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
+&nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; /* Check for errors */
+&nbsp; if(res != CURLE_OK)
+&nbsp; fprintf(stderr, "curl_easy_perform() failed: %sn",
+&nbsp; curl_easy_strerror(res));
+&nbsp;
+&nbsp; /* always cleanup */
+&nbsp; curl_easy_cleanup(curl);
+&nbsp; }
+&nbsp; return 0;
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf
index a9dae92f3..bb8e6cdb0 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.html b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.html
index 63d094c33..68d7f6e13 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.html
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DIRLISTONLY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DIRLISTONLY - ask for names only in a directory listing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">For FTP and SFTP based URLs a parameter set to 1 tells the library to list the names of files in a directory, rather than performing a full directory listing that would normally include file sizes, dates etc.
<p class="level0">For POP3 a parameter of 1 tells the library to list the email message or messages on the POP3 server. This can be used to change the default behaviour of libcurl, when combined with a URL that contains a message ID, to perform a "scan listing" which can then be used to determine the size of an email.
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf
index 3da3d2fb2..325275f73 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html
index 107630374..9fe9a12bb 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DNS_CACHE_TIMEOUT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DNS_CACHE_TIMEOUT - set life-time for DNS cache entries <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long, this sets the timeout in seconds. Name resolves will be kept in memory and used for this number of seconds. Set to zero to completely disable caching, or set to -1 to make the cached entries remain forever. By default, libcurl caches this info for 60 seconds.
<p class="level0">The name resolve functions of various libc implementations don't re-read name server information unless explicitly told so (for example, by calling <span Class="emphasis">res_init(3)</span>). This may cause libcurl to keep using the older server even if DHCP has updated the server info, and this may look like a DNS cache issue to the casual libcurl-app user.
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf
index bceefc387..cb609ecf9 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html
index 11dac38b8..b22f2d645 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DNS_INTERFACE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DNS_INTERFACE - set interface to speak DNS over <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter. Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address). Set this option to NULL to use the default setting (don't bind to a specific interface). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf
index 3b079691f..04c414a9e 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html
index efd1a579d..5d7f4fc1b 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DNS_LOCAL_IP4 man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DNS_LOCAL_IP4 - IPv4 address to bind DNS resolves to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the local IPv4 <span Class="emphasis">address</span> that the resolver should bind to. The argument should be of type char * and contain a single numerical IPv4 address as a string. Set this option to NULL to use the default setting (don't bind to a specific IP address). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf
index 49fc03d4f..78f9c773a 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html
index 67d3af936..ec72fdb0e 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DNS_LOCAL_IP6 man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DNS_LOCAL_IP6 - IPv6 address to bind DNS resolves to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the local IPv6 <span Class="emphasis">address</span> that the resolver should bind to. The argument should be of type char * and contain a single IPv6 address as a string. Set this option to NULL to use the default setting (don't bind to a specific IP address). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf
index 0aba0cfd4..e21197cc5 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.html b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.html
index ba803d0c5..c272171e7 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.html
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DNS_SERVERS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DNS_SERVERS - set preferred DNS servers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * that is the list of DNS servers to be used instead of the system default. The format of the dns servers option is:
<p class="level0">host[:port][,host[:port]]...
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf
index a15db8de4..fb3f635eb 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html
index 8fb0da9da..1461d3cf8 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_DNS_USE_GLOBAL_CACHE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_DNS_USE_GLOBAL_CACHE - enable/disable global DNS cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE, &nbsp; long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the <span Class="emphasis">enable</span> value is 1, it tells curl to use a global DNS cache that will survive between easy handle creations and deletions. This is not thread-safe and this will use a global variable.
<p class="level0"><span Class="bold">WARNING:</span> this option is considered obsolete. Stop using it. Switch over to using the share interface instead! See <a Class="emphasis" href="./CURLOPT_SHARE.html">CURLOPT_SHARE</a> and <span Class="emphasis">curl_share_init(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf
index e9f19ac94..d14d54612 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.html b/docs/libcurl/opts/CURLOPT_EGDSOCKET.html
index 18a11ee15..285934b37 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.html
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.html
@@ -4,15 +4,20 @@
<title>CURLOPT_EGDSOCKET man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_EGDSOCKET - set EGD socket path <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to the zero terminated path name to the Entropy Gathering Daemon socket. It will be used to seed the random engine for SSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf b/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf
index 31c65b9ba..550d8be1f 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index 577202cfc..2d4dc2350 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -51,15 +51,33 @@ All
.nf
curl = curl_easy_init();
if(curl) {
- char error[CURL_ERROR_SIZE]
+ CURLcode res;
+ char errbuf[CURL_ERROR_SIZE];
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* provide a buffer to store errors in */
- curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
+ curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
- /* Perform the request */
- curl_easy_perform(curl);
+ /* set the error buffer as empty before performing a request */
+ errbuf[0] = 0;
+
+ /* perform the request */
+ res = curl_easy_perform(curl);
+
+ /* if the request did not complete correctly, show the error
+ information. if no detailed error information was written to errbuf
+ show the more generic information from curl_easy_strerror instead.
+ */
+ if(res != CURLE_OK) {
+ size_t len = strlen(errbuf);
+ fprintf(stderr, "\\nlibcurl: (%d) ", res);
+ if(len)
+ fprintf(stderr, "%s%s", errbuf,
+ ((errbuf[len - 1] != '\\n') ? "\\n" : ""));
+ else
+ fprintf(stderr, "%s\\n", curl_easy_strerror(res));
+ }
}
.fi
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.html b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.html
index 40d29b1bf..519891a77 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.html
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_ERRORBUFFER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_ERRORBUFFER - set error buffer for error messages <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a buffer that the libcurl may store human readable error messages in on failures or problems. This may be more helpful than just the return code from <span Class="emphasis">curl_easy_perform(3)</span> and related functions. The buffer <span Class="bold">must be at least CURL_ERROR_SIZE bytes big</span>.
<p class="level0">You must keep the associated buffer available until libcurl no longer needs it. Failing to do so will cause very odd behavior or even crashes. libcurl will need it until you call <span Class="emphasis">curl_easy_cleanup(3)</span> or you set the same option again to use a different pointer.
@@ -55,17 +60,38 @@ p.roffit {
<p class="level0">If the library does not return an error, the buffer may not have been touched. Do not rely on the contents in those cases. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; char error[CURL_ERROR_SIZE]
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* provide a buffer to store errors in */
- &nbsp; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; char errbuf[CURL_ERROR_SIZE];
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* provide a buffer to store errors in */
+&nbsp; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
+&nbsp;
+&nbsp; /* set the error buffer as empty before performing a request */
+&nbsp; errbuf[0] = 0;
+&nbsp;
+&nbsp; /* perform the request */
+&nbsp; res = curl_easy_perform(curl);
+&nbsp;
+&nbsp; /* if the request did not complete correctly, show the error
+&nbsp; information. if no detailed error information was written to errbuf
+&nbsp; show the more generic information from curl_easy_strerror instead.
+&nbsp; */
+&nbsp; if(res != CURLE_OK) {
+&nbsp; size_t len = strlen(errbuf);
+&nbsp; fprintf(stderr, "\nlibcurl: (%d) ", res);
+&nbsp; if(len)
+&nbsp; fprintf(stderr, "%s%s", errbuf,
+&nbsp; ((errbuf[len - 1] != '\n') ? "\n" : ""));
+&nbsp; else
+&nbsp; fprintf(stderr, "%s\n", curl_easy_strerror(res));
+&nbsp; }
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf
index 5a0ddd4cb..6cb255230 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html
index b5cf9c6e9..1a91850b3 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_EXPECT_100_TIMEOUT_MS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_EXPECT_100_TIMEOUT_MS - timeout for Expect: 100-continue response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
- &nbsp; long milliseconds);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
+&nbsp; long milliseconds);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long to tell libcurl the number of <span Class="emphasis">milliseconds</span> to wait for a server response with the HTTP status 100 (Continue), 417 (Expectation Failed) or similar after sending a HTTP request containing an Expect: 100-continue header. If this times out before a response is received, the request body is sent anyway. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1000 milliseconds <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf
index 4184fe56e..7fb2ef47f 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index a8267fd3b..39aeb3899 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -39,6 +39,9 @@ response codes will slip through, especially when authentication is involved
You might get some amounts of headers transferred before this situation is
detected, like when a "100-continue" is received as a response to a POST/PUT
and a 401 or 407 is received immediately afterwards.
+
+When this option is used and an error is detected, it will cause the
+connection to get closed.
.SH DEFAULT
0, do not fail on error
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.html b/docs/libcurl/opts/CURLOPT_FAILONERROR.html
index 931f7638d..824dd045c 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.html
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FAILONERROR man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FAILONERROR - request failure on HTTP response &gt;= 400 <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A long parameter set to 1 tells the library to fail the request if the HTTP code returned is equal to or larger than 400. The default action would be to return the page normally, ignoring that code.
<p class="level0">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407).
-<p class="level0">You might get some amounts of headers transferred before this situation is detected, like when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">You might get some amounts of headers transferred before this situation is detected, like when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards.
+<p class="level0">When this option is used and an error is detected, it will cause the connection to get closed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, do not fail on error <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf b/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf
index d4044af80..db2e3af50 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.html b/docs/libcurl/opts/CURLOPT_FILETIME.html
index 904d68ddb..05909280b 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.html
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FILETIME man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FILETIME - get the modification time of the remote resource <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If it is 1, libcurl will attempt to get the modification time of the remote document in this operation. This requires that the remote server sends the time or replies to a time querying command. The <span Class="emphasis">curl_easy_getinfo(3)</span> function with the <span Class="emphasis">CURLINFO_FILETIME</span> argument can be used after a transfer to extract the received time (if any). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.pdf b/docs/libcurl/opts/CURLOPT_FILETIME.pdf
index 33728beaa..90abaa6e5 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.pdf
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html
index 6745382b4..b8d2dd730 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FNMATCH_DATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FNMATCH_DATA - custom pointer to fnmatch callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
- &nbsp; void *pointer);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
+&nbsp; void *pointer);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_FNMATCH_FUNCTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf
index 297371cf5..414ae776d 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html
index 34e595d4a..75e0f4e50 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FNMATCH_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,16 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FNMATCH_FUNCTION - wildcard matching function callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">int fnmatch_callback(void *ptr,
- &nbsp; const char *pattern,
- &nbsp; const char *string);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
- &nbsp; fnmatch_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+int fnmatch_callback(void *ptr,
+&nbsp; const char *pattern,
+&nbsp; const char *string);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
+&nbsp; fnmatch_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This callback s used for wildcard matching.
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf
index 5386b57d9..2e66bcd5c 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html
index 36c40c925..06869f7d6 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FOLLOWLOCATION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FOLLOWLOCATION - follow HTTP 3xx redirects <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A parameter set to 1 tells the library to follow any Location: header that the server sends as part of a HTTP header in a 3xx response.
<p class="level0">This means that libcurl will re-send the same request on the new location and follow new Location: headers all the way until no more such headers are returned. <a Class="emphasis" href="./CURLOPT_MAXREDIRS.html">CURLOPT_MAXREDIRS</a> can be used to limit the number of redirects libcurl will follow.
@@ -55,15 +60,17 @@ p.roffit {
<p class="level0">For users who think the existing location following is too naive, too simple or just lacks features, it is very easy to instead implement your own redirect follow logic with the use of <span Class="emphasis">curl_easy_getinfo(3)</span>'s <span Class="emphasis">CURLINFO_REDIRECT_URL</span> option instead of using <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
- &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
+&nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf
index 8c986ead9..aede0ae7a 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.html b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.html
index 6a968ea9e..0a1ba6adb 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.html
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FORBID_REUSE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FORBID_REUSE - make connection get closed at once after use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. Set <span Class="emphasis">close</span> to 1 to make libcurl explicitly close the connection when done with the transfer. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them. This option should be used with caution and only if you understand what it does as it can seriously impact performance.
<p class="level0">Set to 0 to have libcurl keep the connection open for possible later re-use (default behavior). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf
index 7c534b60a..15e2c1fca 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html
index 062da5263..aed306cca 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FRESH_CONNECT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FRESH_CONNECT - force a new connection to be used <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. Set to 1 to make the next transfer use a new (fresh) connection by force instead of trying to re-use an existing one. This option should be used with caution and only if you understand what it does as it may seriously impact performance.
<p class="level0">Related functionality is <a Class="emphasis" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a> which makes sure the connection is closed after use so that it won't be re-used.
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf
index 326ec751a..c9ca9bb36 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.html b/docs/libcurl/opts/CURLOPT_FTPPORT.html
index 2ef41872a..e80812d5e 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.html
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTPPORT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,18 +52,18 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTPPORT - make FTP transfer active <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It specifies that the FTP transfer will be made actively and the given string will be used to get the IP address to use for the FTP PORT instruction.
<p class="level0">The PORT instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a host name, a network interface name (under Unix) or just a '-' symbol to let the library use your system's default IP address. Default FTP operations are passive, and thus won't use PORT.
<p class="level0">The address can be followed by a ':' to specify a port, optionally followed by a '-' to specify a port range. If the port specified is 0, the operating system will pick a free port. If a range is provided and all ports in the range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the handle. Invalid port/range settings are ignored. IPv6 addresses followed by a port or portrange have to be in brackets. IPv6 addresses without port/range specifier can be in brackets.
<p class="level0">Examples with specified ports:
-<p class="level0"><pre>
-<p class="level0">&nbsp; eth0:0
- &nbsp; 192.168.1.2:32000-33000
- &nbsp; curl.se:32123
- &nbsp; [::1]:1234-4567
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; eth0:0
+&nbsp; 192.168.1.2:32000-33000
+&nbsp; curl.se:32123
+&nbsp; [::1]:1234-4567
+</pre>
<p class="level0">
<p class="level0">You disable PORT again and go back to using the passive version by setting this option to NULL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.pdf b/docs/libcurl/opts/CURLOPT_FTPPORT.pdf
index 4bd409ab3..5b2c6d62b 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html
index 5e688a5f3..47ca9c7ca 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTPSSLAUTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTPSSLAUTH - set order in which to attempt TLS vs SSL when using FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long using one of the values from below, to alter how libcurl issues "AUTH TLS" or "AUTH SSL" when FTP over SSL is activated. This is only interesting if <a Class="emphasis" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a> is also set.
<p class="level0">Possible <span Class="emphasis">order</span> values:
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf
index 710d984f9..0cbd8e807 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html
index 20db54238..74f58316c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_ACCOUNT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_ACCOUNT - set account info for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string (or NULL to disable). When an FTP server asks for "account data" after user name and password has been provided, this data is sent off using the ACCT command. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf
index def965a25..999c79762 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html
index f6810348f..c3e65cf31 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_ALTERNATIVE_TO_USER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_ALTERNATIVE_TO_USER - command to use instead of USER with FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
- &nbsp; char *cmd);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
+&nbsp; char *cmd);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, pointing to a string which will be used to authenticate if the usual FTP "USER user" and "PASS password" negotiation fails. This is currently only known to be required when connecting to Tumbleweed's Secure Transport FTPS server using client certificates for authentication. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf
index 56fcd4935..08b9e61f1 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html
index 04f8c61de..1c2fff7d0 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_CREATE_MISSING_DIRS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,16 +52,18 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_CREATE_MISSING_DIRS - create missing dirs for FTP and SFTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLFTP_CREATE_DIR_NONE,
- &nbsp; CURLFTP_CREATE_DIR,
- &nbsp; CURLFTP_CREATE_DIR_RETRY
- } curl_ftpcreatedir;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
- &nbsp; long create);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLFTP_CREATE_DIR_NONE,
+&nbsp; CURLFTP_CREATE_DIR,
+&nbsp; CURLFTP_CREATE_DIR_RETRY
+} curl_ftpcreatedir;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
+&nbsp; long create);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long telling libcurl to <span Class="emphasis">create</span> the dir. If the value is <span Class="emphasis">CURLFTP_CREATE_DIR</span> (1), libcurl will attempt to create any remote directory that it fails to "move" into.
<p class="level0">For FTP requests, that means a CWD command fails. CWD being the command that changes working directory.
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf
index adb73afc3..1cc32ecbc 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html
index 1ffba4730..521aa0cfa 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_FILEMETHOD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_FILEMETHOD - select directory traversing method for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
- &nbsp; long method);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
+&nbsp; long method);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long telling libcurl which <span Class="emphasis">method</span> to use to reach a file on a FTP(S) server.
<p class="level0">This option exists because some server implementations aren't compliant to what the standards say should work.
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf
index 1b0e2e4ec..df82791b7 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html
index 98a833c48..436d619ca 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_RESPONSE_TIMEOUT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_RESPONSE_TIMEOUT - time allowed to wait for FTP response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. Causes libcurl to set a <span Class="emphasis">timeout</span> period (in seconds) on the amount of time that the server is allowed to take in order to send a response message for a command before the session is considered dead. While libcurl is waiting for a response, this value overrides <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>. It is recommended that if used in conjunction with <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, you set <a Class="emphasis" href="./CURLOPT_FTP_RESPONSE_TIMEOUT.html">CURLOPT_FTP_RESPONSE_TIMEOUT</a> to a value smaller than <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf
index f52ae68b4..b455585c1 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html
index 35b781ef9..d46b7a5ba 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_SKIP_PASV_IP man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_SKIP_PASV_IP - ignore the IP address in the PASV response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If <span Class="emphasis">skip</span> is set to 1, it instructs libcurl to not use the IP address the server suggests in its 227-response to libcurl's PASV command when libcurl connects the data connection. Instead libcurl will re-use the same IP address it already uses for the control connection. But it will use the port number from the 227-response.
<p class="level0">This option thus allows libcurl to work around broken server installations that due to NATs, firewalls or incompetence report the wrong IP address back.
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf
index b9ae3028a..4c1e21d83 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html
index 051cdccc7..923ecfcf0 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_SSL_CCC man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_SSL_CCC - switch off SSL again with FTP after auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC, &nbsp; long how); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">If enabled, this option makes libcurl use CCC (Clear Command Channel). It shuts down the SSL/TLS layer after authenticating. The rest of the control channel communication will be unencrypted. This allows NAT routers to follow the FTP transaction. Pass a long using one of the values below
<p class="level0"><a name="CURLFTPSSLCCCNONE"></a><span class="nroffip">CURLFTPSSL_CCC_NONE</span>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf
index fc5a13bb7..af6086991 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html
index bc4855684..b6008d3a0 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_USE_EPRT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_USE_EPRT - enable/disable use of EPRT with FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the value is 1, it tells curl to use the EPRT command when doing active FTP downloads (which is enabled by <a Class="emphasis" href="./CURLOPT_FTPPORT.html">CURLOPT_FTPPORT</a>). Using EPRT means that it will first attempt to use EPRT before using PORT, but if you pass zero to this option, it will not try using EPRT, only plain PORT.
<p class="level0">If the server is an IPv6 host, this option will have no effect as EPRT is necessary then. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf
index 7b8530a4b..1de278f14 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html
index 3ebd1059e..2dbec7d3e 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_USE_EPSV man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_USE_EPSV - enable/disable use of EPSV <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass <span Class="emphasis">epsv</span> as a long. If the value is 1, it tells curl to use the EPSV command when doing passive FTP downloads (which it does by default). Using EPSV means that it will first attempt to use EPSV before using PASV, but if you pass zero to this option, it will not try using EPSV, only plain PASV.
<p class="level0">If the server is an IPv6 host, this option will have no effect as of 7.12.3. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf
index 2da167197..a64fc005d 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html
index f2cfc71f6..1724d1132 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html
@@ -4,15 +4,20 @@
<title>CURLOPT_FTP_USE_PRET man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_FTP_USE_PRET - enable the PRET command <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the value is 1, it tells curl to send a PRET command before PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard command for directory listings as well as up and downloads in PASV mode. Has no effect when using the active FTP transfers mode. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf
index c48929af1..94af93039 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html
index f9beaf911..bafd0ca02 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_GSSAPI_DELEGATION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_GSSAPI_DELEGATION - set allowed GSS-API delegation <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the long parameter <span Class="emphasis">level</span> to CURLGSSAPI_DELEGATION_FLAG to allow unconditional GSSAPI credential delegation. The delegation is disabled by default since 7.21.7. Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG to delegate only if the OK-AS-DELEGATE flag is set in the service ticket in case this feature is supported by the GSS-API implementation and the definition of GSS_C_DELEG_POLICY_FLAG was available at compile-time. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">CURLGSSAPI_DELEGATION_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf
index d7c67bea1..df618a0c4 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index 130575aaa..f5a4be8d3 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -38,9 +38,26 @@ about the protocol in use.
It is often better to use \fICURLOPT_HEADERFUNCTION(3)\fP to get the header
data separately.
+
+While named confusingly similar, \fICURLOPT_HTTPHEADER(3)\fP is used to set
+custom HTTP headers!
.SH DEFAULT
0
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH RETURN VALUE
Returns CURLE_OK.
.SH "SEE ALSO"
.BR CURLOPT_HEADERFUNCTION "(3), "
+.BR CURLOPT_HTTPHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.html b/docs/libcurl/opts/CURLOPT_HEADER.html
index 7cbb9d318..23f0204a0 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.html
+++ b/docs/libcurl/opts/CURLOPT_HEADER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HEADER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,27 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HEADER - pass headers to the data stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass in <span Class="emphasis">onoff</span> set to 1 to tell the library to include the header in the body output for requests with this <span Class="emphasis">handle</span>. This option is relevant for protocols that actually have headers or other meta-data (like HTTP and FTP).
<p class="level0">When asking to get the header info passed to the same callback as the body, it is not possible to accurately separate them again without detailed knowledge about the protocol in use.
-<p class="level0">It is often better to use <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> to get the header data separately. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">It is often better to use <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> to get the header data separately.
+<p class="level0">While named confusingly similar, <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> is used to set custom HTTP headers! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.pdf b/docs/libcurl/opts/CURLOPT_HEADER.pdf
index b4168cf58..db9d3c251 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.pdf
+++ b/docs/libcurl/opts/CURLOPT_HEADER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.html b/docs/libcurl/opts/CURLOPT_HEADERDATA.html
index 122cad9aa..64f5439aa 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.html
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HEADERDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HEADERDATA - pointer to pass to header callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> to be used to write the header part of the received data to.
<p class="level0">If <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> or <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> is used, <span Class="emphasis">pointer</span> will be passed in to the respective callback.
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf b/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf
index 1c28b8c4f..dc52f5228 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index b6100f253..f8ed0ab8a 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -39,14 +39,14 @@ shown above.
This function gets called by libcurl as soon as it has received header
data. The header callback will be called once for each header and only
complete header lines are passed on to the callback. Parsing headers is very
-easy using this. The size of the data pointed to by \fIptr\fP is \fIsize\fP
+easy using this. The size of the data pointed to by \fIbuffer\fP is \fIsize\fP
multiplied with \fInmemb\fP. Do not assume that the header line is zero
terminated! The pointer named \fIuserdata\fP is the one you set with the
\fICURLOPT_HEADERDATA(3)\fP option. This callback function must return the
number of bytes actually taken care of. If that amount differs from the amount
passed in to your function, it'll signal an error to the library. This will
cause the transfer to get aborted and the libcurl function in progress will
-return \fICURL_WRITE_ERROR\fP.
+return \fICURLE_WRITE_ERROR\fP.
A complete HTTP header that is passed to this function can be up to
\fICURL_MAX_HTTP_HEADER\fP (100K) bytes.
@@ -80,7 +80,24 @@ Nothing.
Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3,
IMAP, SMTP and more.
.SH EXAMPLE
-TODO
+.nf
+static size_t header_callback(char *buffer, size_t size,
+ size_t nitems, void *userdata)
+{
+ /* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
+ /* 'userdata' is set with CURLOPT_WRITEDATA */
+ return nitems * size;
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html
index 8d112ce87..182c1aea6 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HEADERFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,11 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HEADERFUNCTION - callback that receives header data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">size_t header_callback(char *buffer, &nbsp; size_t size, &nbsp; size_t nitems, &nbsp; void *userdata);
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION, header_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
-<p class="level0">This function gets called by libcurl as soon as it has received header data. The header callback will be called once for each header and only complete header lines are passed on to the callback. Parsing headers is very easy using this. The size of the data pointed to by <span Class="emphasis">ptr</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. Do not assume that the header line is zero terminated! The pointer named <span Class="emphasis">userdata</span> is the one you set with the <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> option. This callback function must return the number of bytes actually taken care of. If that amount differs from the amount passed in to your function, it'll signal an error to the library. This will cause the transfer to get aborted and the libcurl function in progress will return <span Class="emphasis">CURL_WRITE_ERROR</span>.
+<p class="level0">This function gets called by libcurl as soon as it has received header data. The header callback will be called once for each header and only complete header lines are passed on to the callback. Parsing headers is very easy using this. The size of the data pointed to by <span Class="emphasis">buffer</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. Do not assume that the header line is zero terminated! The pointer named <span Class="emphasis">userdata</span> is the one you set with the <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> option. This callback function must return the number of bytes actually taken care of. If that amount differs from the amount passed in to your function, it'll signal an error to the library. This will cause the transfer to get aborted and the libcurl function in progress will return <span Class="emphasis">CURLE_WRITE_ERROR</span>.
<p class="level0">A complete HTTP header that is passed to this function can be up to <span Class="emphasis">CURL_MAX_HTTP_HEADER</span> (100K) bytes.
<p class="level0">If this option is not set, or if it is set to NULL, but <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> is set to anything but NULL, the function used to accept response data will be used instead. That is, it will be the function specified with <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, or if it is not specified or NULL - the default, stream-writing function.
<p class="level0">It's important to note that the callback will be invoked for the headers of all responses received after initiating a request and not just the final response. This includes all responses which occur during authentication negotiation. If you need to operate on only the headers from the final response, you will need to collect headers in the callback yourself and use HTTP status lines, for example, to delimit response boundaries.
@@ -59,7 +64,26 @@ p.roffit {
<p class="level0">For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get called with the server responses to the commands that libcurl sends. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">Nothing. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3, IMAP, SMTP and more. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+static size_t header_callback(char *buffer, size_t size,
+&nbsp; size_t nitems, void *userdata)
+{
+&nbsp; /* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
+&nbsp; /* 'userdata' is set with CURLOPT_WRITEDATA */
+&nbsp; return nitems * size;
+}
+&nbsp;
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf
index acf174a3d..491eec862 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index be96d7d88..7776b921a 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -31,10 +31,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);
Pass a long that is a bitmask of options of how to deal with headers. The two
mutually exclusive options are:
-\fBCURLHEADER_UNIFIED\fP - keep working as before. This means
-\fICURLOPT_HTTPHEADER(3)\fP headers will be used in requests both to servers
-and proxies. With this option enabled, \fICURLOPT_PROXYHEADER(3)\fP will not
-have any effect.
+\fBCURLHEADER_UNIFIED\fP - the headers specified in
+\fICURLOPT_HTTPHEADER(3)\fP will be used in requests both to servers and
+proxies. With this option enabled, \fICURLOPT_PROXYHEADER(3)\fP will not have
+any effect.
\fBCURLHEADER_SEPARATE\fP - makes \fICURLOPT_HTTPHEADER(3)\fP headers only get
sent to a server and not to a proxy. Proxy headers must be set with
@@ -44,7 +44,7 @@ headers. When doing CONNECT, libcurl will send \fICURLOPT_PROXYHEADER(3)\fP
headers only to the proxy and then \fICURLOPT_HTTPHEADER(3)\fP headers only to
the server.
.SH DEFAULT
-CURLHEADER_UNIFIED
+CURLHEADER_SEPARATE (changed in 7.42.1, ased CURLHEADER_UNIFIED before then)
.SH PROTOCOLS
HTTP
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.html b/docs/libcurl/opts/CURLOPT_HEADEROPT.html
index dbcd3195e..181aefe26 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.html
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HEADEROPT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HEADEROPT - set how to send HTTP headers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long that is a bitmask of options of how to deal with headers. The two mutually exclusive options are:
-<p class="level0"><span Class="bold">CURLHEADER_UNIFIED</span> - keep working as before. This means <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers will be used in requests both to servers and proxies. With this option enabled, <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> will not have any effect.
+<p class="level0"><span Class="bold">CURLHEADER_UNIFIED</span> - the headers specified in <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> will be used in requests both to servers and proxies. With this option enabled, <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> will not have any effect.
<p class="level0"><span Class="bold">CURLHEADER_SEPARATE</span> - makes <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers only get sent to a server and not to a proxy. Proxy headers must be set with <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> headers only to the proxy and then <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers only to the server. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">CURLHEADER_UNIFIED <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">CURLHEADER_SEPARATE (changed in 7.42.1, ased CURLHEADER_UNIFIED before then) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.37.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf b/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf
index 686bd2011..0308057bb 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index 1454ed12e..b87db4649 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -32,9 +32,11 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
.SH DESCRIPTION
Pass a pointer to a linked list of \fIaliases\fP to be treated as valid HTTP
200 responses. Some servers respond with a custom header response line. For
-example, IceCast servers respond with "ICY 200 OK". By including this string
-in your list of aliases, the response will be treated as a valid HTTP header
-line such as "HTTP/1.0 200 OK".
+example, SHOUTcast servers respond with "ICY 200 OK". Also some very old
+Icecast 1.3.x servers will respond like that for certain user agent headers or
+in absence of such. By including this string in your list of aliases,
+the response will be treated as a valid HTTP header line such as
+"HTTP/1.0 200 OK".
The linked list should be a fully valid list of struct curl_slist structs, and
be properly filled in. Use \fIcurl_slist_append(3)\fP to create the list and
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html
index 72c6a9daf..693be853a 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTP200ALIASES man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTP200ALIASES - specify alternative matches for HTTP 200 OK <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
- &nbsp; struct curl_slist *aliases);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
+&nbsp; struct curl_slist *aliases);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a pointer to a linked list of <span Class="emphasis">aliases</span> to be treated as valid HTTP 200 responses. Some servers respond with a custom header response line. For example, IceCast servers respond with "ICY 200 OK". By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK".
+<p class="level0">Pass a pointer to a linked list of <span Class="emphasis">aliases</span> to be treated as valid HTTP 200 responses. Some servers respond with a custom header response line. For example, SHOUTcast servers respond with "ICY 200 OK". Also some very old Icecast 1.3.x servers will respond like that for certain user agent headers or in absence of such. By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK".
<p class="level0">The linked list should be a fully valid list of struct curl_slist structs, and be properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list.
<p class="level0">The alias itself is not parsed for any version strings. The protocol is assumed to match HTTP 1.0 when an alias match. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf
index 714de6412..bc68e99ce 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.html b/docs/libcurl/opts/CURLOPT_HTTPAUTH.html
index c184acb10..c0d06652c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.html
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTPAUTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,11 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTPAUTH - set HTTP server authentication methods to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPAUTH, long bitmask);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPAUTH, long bitmask);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use speaking to the remote server.
<p class="level0">The available bits are listed below. If more than one bit is set, libcurl will first query the site to see which authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> option or with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> and the <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> options.
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf b/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf
index 34aa232cc..a830302ac 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.html b/docs/libcurl/opts/CURLOPT_HTTPGET.html
index cd708515d..d826527fb 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.html
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTPGET man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,22 +52,24 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTPGET - ask for a HTTP GET request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If <span Class="emphasis">useget</span> is 1, this forces the HTTP request to get back to using GET. Usable if a POST, HEAD, PUT, etc has been used previously using the same curl <span Class="emphasis">handle</span>.
<p class="level0">When setting <a Class="emphasis" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a> to 1, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0 and <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a> to 0. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* use a GET to fetch this */
- &nbsp; curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* use a GET to fetch this */
+&nbsp; curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.pdf b/docs/libcurl/opts/CURLOPT_HTTPGET.pdf
index 2bb9c9ea6..110a5d136 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index 10fcf08f0..cd504314b 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -63,21 +63,48 @@ Pass a NULL to this option to reset back to no custom headers.
The most commonly replaced headers have "shortcuts" in the options
\fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP and
-\fICURLOPT_REFERER(3)\fP.
+\fICURLOPT_REFERER(3)\fP. We recommend using those.
There's an alternative option that sets or replaces headers only for requests
that are sent with CONNECT to a proxy: \fICURLOPT_PROXYHEADER(3)\fP. Use
\fICURLOPT_HEADEROPT(3)\fP to control the behavior.
+.SH SECURITY CONCERNS
+By default, this option makes libcurl send the given headers in all HTTP
+requests done by this handle. You should therefore use this option with
+caution if you for example connect to the remote site using a proxy and a
+CONNECT request, you should to consider if that proxy is supposed to also get
+the headers. They may be private or otherwise sensitive to leak.
+
+Use \fICURLOPT_HEADEROPT(3)\fP to make the headers only get sent to where you
+intend them to get sent.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+
+struct curl_slist *list = NULL;
+
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ list = curl_slist_append(list, "Shoesize: 10");
+ list = curl_slist_append(list, "Accept:");
+
+ curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
+
+ curl_easy_perform(curl);
+
+ curl_slist_free_all(list); /* free the list again */
+}
+.fi
+
.SH AVAILABILITY
As long as HTTP is enabled
.SH RETURN VALUE
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_CUSTOMREQUEST "(3), " CURLOPT_HEADEROPT "(3), "
-.BR CURLOPT_PROXYHEADER "(3)"
+.BR CURLOPT_PROXYHEADER "(3), " CURLOPT_HEADER "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.html b/docs/libcurl/opts/CURLOPT_HTTPHEADER.html
index 308887a5d..3cbb716ed 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.html
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTPHEADER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTPHEADER - set custom HTTP headers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of HTTP headers to pass to the server and/or proxy in your HTTP request. The same list can be used for both host and proxy requests!
<p class="level0">The linked list should be a fully valid list of <span Class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. If you add a header that is otherwise generated and used by libcurl internally, your added one will be used instead. If you add a header with no content as in 'Accept:' (no data on the right side of the colon), the internally used header will get disabled. With this option you can add new headers, replace internal headers and remove internal headers. To add a header with no content (nothing to the right side of the colon), use the form 'MyHeader;' (note the ending semicolon).
@@ -55,13 +60,35 @@ p.roffit {
<p class="level0">The first line in a request (containing the method, usually a GET or POST) is not a header and cannot be replaced using this option. Only the lines following the request-line are headers. Adding this method line in this list of headers will only cause your request to send an invalid header. Use <a Class="emphasis" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a> to change the method.
<p class="level0">When this option is passed to <span Class="emphasis">curl_easy_setopt(3)</span>, libcurl will not copy the entire list so you <span Class="bold">must</span> keep it around until you no longer use this <span Class="emphasis">handle</span> for a transfer before you call <span Class="emphasis">curl_slist_free_all(3)</span> on the list.
<p class="level0">Pass a NULL to this option to reset back to no custom headers.
-<p class="level0">The most commonly replaced headers have "shortcuts" in the options <a Class="emphasis" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="emphasis" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a> and <a Class="emphasis" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>.
-<p class="level0">There's an alternative option that sets or replaces headers only for requests that are sent with CONNECT to a proxy: <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>. Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to control the behavior. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The most commonly replaced headers have "shortcuts" in the options <a Class="emphasis" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="emphasis" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a> and <a Class="emphasis" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>. We recommend using those.
+<p class="level0">There's an alternative option that sets or replaces headers only for requests that are sent with CONNECT to a proxy: <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>. Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to control the behavior. <a name="SECURITY"></a><h2 class="nroffsh">SECURITY CONCERNS</h2>
+<p class="level0">By default, this option makes libcurl send the given headers in all HTTP requests done by this handle. You should therefore use this option with caution if you for example connect to the remote site using a proxy and a CONNECT request, you should to consider if that proxy is supposed to also get the headers. They may be private or otherwise sensitive to leak.
+<p class="level0">Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to make the headers only get sent to where you intend them to get sent. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+&nbsp;
+struct curl_slist *list = NULL;
+&nbsp;
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; list = curl_slist_append(list, "Shoesize: 10");
+&nbsp; list = curl_slist_append(list, "Accept:");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+&nbsp;
+&nbsp; curl_slist_free_all(list); /* free the list again */
+}
+</pre>
+
+<p class="level0">
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">As long as HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a>, <a Class="manpage" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>, <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a>, <a Class="manpage" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>, <a Class="manpage" href="./CURLOPT_HEADER.html">CURLOPT_HEADER</a>, <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf b/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf
index 4e471f2ec..6c48bfa5c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.html b/docs/libcurl/opts/CURLOPT_HTTPPOST.html
index 226621d77..41ada86fa 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.html
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTPPOST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,38 +52,41 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTPPOST - specify the multipart formpost content <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
- &nbsp; struct curl_httppost *formpost);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
+&nbsp; struct curl_httppost *formpost);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Tells libcurl you want a multipart/formdata HTTP POST to be made and you instruct what data to pass on to the server in the <span Class="emphasis">formpost</span> argument. Pass a pointer to a linked list of curl_httppost structs as parameter. The easiest way to create such a list, is to use <span Class="emphasis">curl_formadd(3)</span> as documented. The data in this list must remain intact until you close this curl handle again with <span Class="emphasis">curl_easy_cleanup(3)</span>.
<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>.
<p class="level0">When setting <a Class="emphasis" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a>, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">/* Fill in the file upload field. This makes libcurl load data from
- &nbsp; the given file name when curl_easy_perform() is called. */
- curl_formadd(&formpost,
- &nbsp; &lastptr,
- &nbsp; CURLFORM_COPYNAME, "sendfile",
- &nbsp; CURLFORM_FILE, "postit2.c",
- &nbsp; CURLFORM_END);
- <p class="level0">/* Fill in the filename field */
- curl_formadd(&formpost,
- &nbsp; &lastptr,
- &nbsp; CURLFORM_COPYNAME, "filename",
- &nbsp; CURLFORM_COPYCONTENTS, "postit2.c",
- &nbsp; CURLFORM_END);
- <p class="level0">/* Fill in the submit field too, even if this is rarely needed */
- curl_formadd(&formpost,
- &nbsp; &lastptr,
- &nbsp; CURLFORM_COPYNAME, "submit",
- &nbsp; CURLFORM_COPYCONTENTS, "send",
- &nbsp; CURLFORM_END);
- </pre>
+<p class="level0"><pre class="level0">
+/* Fill in the file upload field. This makes libcurl load data from
+&nbsp; the given file name when curl_easy_perform() is called. */
+curl_formadd(&formpost,
+&nbsp; &lastptr,
+&nbsp; CURLFORM_COPYNAME, "sendfile",
+&nbsp; CURLFORM_FILE, "postit2.c",
+&nbsp; CURLFORM_END);
+&nbsp;
+/* Fill in the filename field */
+curl_formadd(&formpost,
+&nbsp; &lastptr,
+&nbsp; CURLFORM_COPYNAME, "filename",
+&nbsp; CURLFORM_COPYCONTENTS, "postit2.c",
+&nbsp; CURLFORM_END);
+&nbsp;
+/* Fill in the submit field too, even if this is rarely needed */
+curl_formadd(&formpost,
+&nbsp; &lastptr,
+&nbsp; CURLFORM_COPYNAME, "submit",
+&nbsp; CURLFORM_COPYCONTENTS, "send",
+&nbsp; CURLFORM_END);
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">As long as HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf b/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf
index 3889f02e0..4f23a25ce 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index 3cbf50e2d..f861afbde 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -37,6 +37,9 @@ Tunneling essentially means that a CONNECT is sent to the proxy, asking it to
connect to a remote host on a specific port number and then the traffic is
just passed through the proxy. Proxies tend to whitelist specific port numbers
it allows CONNECT requests to and often only port 80 and 443 are allowed.
+
+When using this, it only makes sense to use \fICURLOPT_PROXYTYPE(3)\fP set to
+a HTTP proxy.
.SH DEFAULT
0
.SH PROTOCOLS
@@ -48,4 +51,4 @@ Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
-.BR CURLOPT_PROXY "(3), "
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), " CURLOPT_PROXYPORT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html
index 6f1688eb0..4ddfade34 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTPPROXYTUNNEL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,15 +52,16 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTPPROXYTUNNEL - tunnel through HTTP proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the parameter to 1 to make libcurl tunnel all operations through the HTTP proxy. There is a big difference between using a proxy and to tunnel through it. If you don't know what this means, you probably don't want this tunneling option.
-<p class="level0">Tunneling essentially means that a CONNECT is sent to the proxy, asking it to connect to a remote host on a specific port number and then the traffic is just passed through the proxy. Proxies tend to whitelist specific port numbers it allows CONNECT requests to and often only port 80 and 443 are allowed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Tunneling essentially means that a CONNECT is sent to the proxy, asking it to connect to a remote host on a specific port number and then the traffic is just passed through the proxy. Proxies tend to whitelist specific port numbers it allows CONNECT requests to and often only port 80 and 443 are allowed.
+<p class="level0">When using this, it only makes sense to use <a Class="emphasis" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a> set to a HTTP proxy. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All network protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <a Class="manpage" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf
index babdf5229..e99689f37 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html
index cacd17eca..d6193c2e2 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTP_CONTENT_DECODING man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTP_CONTENT_DECODING - enable/disable HTTP content decoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_CONTENT_DECODING,
- &nbsp; long enabled);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_CONTENT_DECODING,
+&nbsp; long enabled);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long to tell libcurl how to act on content decoding. If set to zero, content decoding will be disabled. If set to 1 it is enabled. Libcurl has no default content decoding but requires you to use <a Class="emphasis" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a> for that. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf
index 36983d89b..a489403aa 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html
index ddf9eea7b..be05c43f9 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTP_TRANSFER_DECODING man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTP_TRANSFER_DECODING - enable/disable HTTP transfer decoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_TRANSFER_DECODING,
- &nbsp; long enabled);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_TRANSFER_DECODING,
+&nbsp; long enabled);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long to tell libcurl how to act on transfer decoding. If set to zero, transfer decoding will be disabled, if set to 1 it is enabled (default). libcurl does chunked transfer decoding by default unless this option is set to zero. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf
index 151796c93..c6bc68b53 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index ed5ea82b4..c85d14482 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -41,8 +41,8 @@ Enforce HTTP 1.0 requests.
.IP CURL_HTTP_VERSION_1_1
Enforce HTTP 1.1 requests.
.IP CURL_HTTP_VERSION_2_0
-Attempt HTTP 2.0 requests. libcurl will fall back to HTTP 1.x if HTTP 2.0
-can't be negotiated with the server.
+Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.x if HTTP 2 can't be
+negotiated with the server. (Added in 7.33.0)
.SH DEFAULT
CURL_HTTP_VERSION_NONE
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.html b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.html
index 7169870b8..05c4b4ce1 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.html
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_HTTP_VERSION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_HTTP_VERSION - specify HTTP protocol version to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass <span Class="emphasis">version</span> a long, set to one of the values described below. They force libcurl to use the specific HTTP versions. This is not sensible to do unless you have a good reason. You have to set this option if you want to use libcurl's HTTP/2 support.
<p class="level0">
@@ -58,7 +63,7 @@ p.roffit {
<p class="level0"><a name="CURLHTTPVERSION11"></a><span class="nroffip">CURL_HTTP_VERSION_1_1</span>
<p class="level1">Enforce HTTP 1.1 requests.
<p class="level0"><a name="CURLHTTPVERSION20"></a><span class="nroffip">CURL_HTTP_VERSION_2_0</span>
-<p class="level1">Attempt HTTP 2.0 requests. libcurl will fall back to HTTP 1.x if HTTP 2.0 can't be negotiated with the server. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level1">Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.x if HTTP 2 can't be negotiated with the server. (Added in 7.33.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">CURL_HTTP_VERSION_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf
index 7351f4d2b..27215d726 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index 11bff65c6..51fd6b08c 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -42,7 +42,17 @@ Only use this option if strictly necessary.
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* we know the server is silly, ignore content-length */
+ curl_easy_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Added in 7.14.1
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html
index 7616ae51b..c7c52298c 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_IGNORE_CONTENT_LENGTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,17 +52,30 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_IGNORE_CONTENT_LENGTH - ignore Content-Length in HTTP response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
- &nbsp; long ignore);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
+&nbsp; long ignore);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">If <span Class="emphasis">ignore</span> is set to 1, ignore the Content-Length header in the HTTP response. This is useful for Apache 1.x (and similar servers) which will report incorrect content length for files over 2 gigabytes. If this option is used, curl will not be able to accurately report progress, and will simply stop the download when the server ends the connection.
<p class="level0">Only use this option if strictly necessary. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* we know the server is silly, ignore content-length */
+&nbsp; curl_easy_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.14.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>, <a Class="manpage" href="./CURLOPT_MAXFILESIZE_LARGE.html">CURLOPT_MAXFILESIZE_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf
index 90a31bc0f..083d3736f 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index 129414c07..fd49e21a7 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -49,7 +49,20 @@ Unset
.SH PROTOCOLS
Many
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ long uploadsize = FILE_SIZE;
+
+ curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/destination.tar.gz");
+
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+ curl_easy_setopt(curl, CURLOPT_INFILESIZE, uploadsize);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
SMTP support added in 7.23.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.html b/docs/libcurl/opts/CURLOPT_INFILESIZE.html
index ae0e21740..48accfee0 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.html
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_INFILESIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_INFILESIZE - set size of the input file to send off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">When uploading a file to a remote site, <span Class="emphasis">filesize</span> should be used to tell libcurl what the expected size of the input file is. This value must be passed as a long. See also <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> for sending files larger than 2GB.
<p class="level0">For uploading using SCP, this option or <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> is mandatory.
@@ -56,7 +61,22 @@ p.roffit {
<p class="level0">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns, but telling one value and sending a different amount may lead to errors. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">Unset <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">Many <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; long uploadsize = FILE_SIZE;
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/destination.tar.gz">ftp://example.com/destination.tar.gz</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, uploadsize);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">SMTP support added in 7.23.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf b/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf
index 39e4d2813..cc2f21888 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index 0aa522452..114676d0e 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -50,7 +50,20 @@ Unset
.SH PROTOCOLS
Many
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_off_t uploadsize = FILE_SIZE;
+
+ curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/destination.tar.gz");
+
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+ curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadsize);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
SMTP support added in 7.23.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html
index c16aed1c8..0ad59d059 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_INFILESIZE_LARGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_INFILESIZE_LARGE - set size of the input file to send off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE_LARGE,
- &nbsp; curl_off_t filesize);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE_LARGE,
+&nbsp; curl_off_t filesize);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">When uploading a file to a remote site, <span Class="emphasis">filesize</span> should be used to tell libcurl what the expected size of the input file is. This value must be passed as a <span Class="bold">curl_off_t</span>.
<p class="level0">For uploading using SCP, this option or <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> is mandatory.
@@ -60,7 +66,22 @@ p.roffit {
<p class="level0">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns, but telling one value and sending a different amount may lead to errors. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">Unset <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">Many <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_off_t uploadsize = FILE_SIZE;
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/destination.tar.gz">ftp://example.com/destination.tar.gz</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadsize);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">SMTP support added in 7.23.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf
index 769696ade..bcb5dea2f 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.html b/docs/libcurl/opts/CURLOPT_INTERFACE.html
index 480679770..94faf8b7d 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.html
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_INTERFACE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_INTERFACE - source interface for outgoing traffic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter. This sets the <span Class="emphasis">interface</span> name to use as outgoing network interface. The name can be an interface name, an IP address, or a host name.
<p class="level0">If the parameter starts with "if!" then it is treated as only as interface name and no attempt will ever be named to do treat it as an IP address or to do name resolution on it. If the parameter starts with "host!" it is treated as either an IP address or a hostname. Hostnames are resolved synchronously. Using the if! format is highly recommended when using the multi interfaces to avoid allowing the code to block. If "if!" is specified but the parameter does not match an existing interface, CURLE_INTERFACE_FAILED is returned from the libcurl function used to perform the transfer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.pdf b/docs/libcurl/opts/CURLOPT_INTERFACE.pdf
index 564e7b2a4..b2f5d992d 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.pdf
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html
index bc9892814..068615c0c 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_INTERLEAVEDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_INTERLEAVEDATA - custom pointer to RTSP interleave callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This is the userdata <span Class="emphasis">pointer</span> that will be passed to <a Class="emphasis" href="./CURLOPT_INTERLEAVEFUNCTION.html">CURLOPT_INTERLEAVEFUNCTION</a> when interleaved RTP data is received. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf
index b51132c72..f2e1b9a52 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html
index d6d82a1bd..c3bdbfb1f 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_INTERLEAVEFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,15 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_INTERLEAVEFUNCTION - callback function for RTSP interleaved data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
- &nbsp; void *userdata);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
- &nbsp; interleave_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
+&nbsp; void *userdata);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
+&nbsp; interleave_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This callback function gets called by libcurl as soon as it has received interleaved RTP data. This function gets called for each $ block and therefore contains exactly one upper-layer protocol unit (e.g. one RTP packet). Curl writes the interleaved header as well as the included data for each call. The first byte is always an ASCII dollar sign. The dollar sign is followed by a one byte channel identifier and then a 2 byte integer length in network byte order. See <span Class="emphasis"><a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 10.12</span> for more information on how RTP interleaving behaves. If unset or set to NULL, curl will use the default write function.
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf
index 08f7c69cd..3aab7594a 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.html b/docs/libcurl/opts/CURLOPT_IOCTLDATA.html
index 7b4b2961c..212d263da 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.html
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_IOCTLDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_IOCTLDATA - custom pointer passed to I/O callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass the <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the 3rd argument in the ioctl callback set with <a Class="emphasis" href="./CURLOPT_IOCTLFUNCTION.html">CURLOPT_IOCTLFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">By default, the value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf b/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf
index a6bb33b8c..6c665668d 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html
index 4280b9f8a..361ddfadc 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_IOCTLFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,22 +52,26 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_IOCTLFUNCTION - callback for I/O operations <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLIOE_OK, /* I/O operation successful */
- &nbsp; CURLIOE_UNKNOWNCMD, /* command was unknown to callback */
- &nbsp; CURLIOE_FAILRESTART, /* failed to restart the read */
- &nbsp; CURLIOE_LAST /* never use */
- } curlioerr;
- <p class="level0">typedef enum {
- &nbsp; CURLIOCMD_NOP, /* no operation */
- &nbsp; CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
- &nbsp; CURLIOCMD_LAST /* never use */
- } curliocmd;
- <p class="level0">curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLFUNCTION, ioctl_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLIOE_OK, /* I/O operation successful */
+&nbsp; CURLIOE_UNKNOWNCMD, /* command was unknown to callback */
+&nbsp; CURLIOE_FAILRESTART, /* failed to restart the read */
+&nbsp; CURLIOE_LAST /* never use */
+} curlioerr;
+&nbsp;
+typedef enum {
+&nbsp; CURLIOCMD_NOP, /* no operation */
+&nbsp; CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
+&nbsp; CURLIOCMD_LAST /* never use */
+} curliocmd;
+&nbsp;
+curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLFUNCTION, ioctl_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This callback function gets called by libcurl when something special I/O-related needs to be done that the library can't do by itself. For now, rewinding the read data stream is the only action it can request. The rewinding of the read data stream may be necessary when doing a HTTP PUT or POST with a multi-pass authentication method.
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf
index bf304e1b7..5049dc700 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.html b/docs/libcurl/opts/CURLOPT_IPRESOLVE.html
index 283873ca7..e908e358a 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.html
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_IPRESOLVE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_IPRESOLVE - specify which IP protocol version to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Allows an application to select what kind of IP addresses to use when resolving host names. This is only interesting when using host names that resolve addresses using more than one version of IP. The allowed values are:
<p class="level0"><a name="CURLIPRESOLVEWHATEVER"></a><span class="nroffip">CURL_IPRESOLVE_WHATEVER</span>
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf b/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf
index 79c6dd3ad..839fa8949 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.html b/docs/libcurl/opts/CURLOPT_ISSUERCERT.html
index d1bef9fe3..0577496d7 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.html
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_ISSUERCERT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_ISSUERCERT - issuer SSL certificate filename <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a zero terminated string naming a <span Class="emphasis">file</span> holding a CA certificate in PEM format. If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree.
<p class="level0">This option makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. Otherwise, the result of the check is not considered as failure.
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf b/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf
index a04ea53fa..5ce4b7abc 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.html b/docs/libcurl/opts/CURLOPT_KEYPASSWD.html
index 9c022915b..81e95355c 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.html
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_KEYPASSWD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_KEYPASSWD - set passphrase to private key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used as the password required to use the <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a> or <a Class="emphasis" href="./CURLOPT_SSH_PRIVATE_KEYFILE.html">CURLOPT_SSH_PRIVATE_KEYFILE</a> private key. You never needed a pass phrase to load a certificate but you need one to load your private key. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf b/docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf
index db9de05c2..b583ca434 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf
@@ -68,12 +68,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:59+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:17:59+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:21+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:21+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2'/>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2'/>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -82,9 +82,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091759+01'00')
-/ModDate(D:20150108091759+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081121+02'00')
+/ModDate(D:20150812081121+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -105,7 +105,7 @@ xref
0000002124 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<9C282454DD73ABCBA4EAB892D19536F1><9C282454DD73ABCBA4EAB892D19536F1>]
+/ID [<18792872C3CF70730F5D6279F9982EE4><18792872C3CF70730F5D6279F9982EE4>]
>>
startxref
3701
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.html b/docs/libcurl/opts/CURLOPT_KRBLEVEL.html
index 4e503fd35..21e7239f8 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.html
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.html
@@ -4,15 +4,20 @@
<title>CURLOPT_KRBLEVEL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_KRBLEVEL - set FTP kerberos security level <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter. Set the kerberos security level for FTP; this also enables kerberos awareness. This is a string that should match one of the following: 'clear', 'safe', 'confidential' or 'private'. If the string is set but doesn't match one of these, 'private' will be used. Set the string to NULL to disable kerberos support for FTP. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf b/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf
index 9a583b598..b5d6e4a55 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.html b/docs/libcurl/opts/CURLOPT_LOCALPORT.html
index ff86fd5ce..be3089433 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.html
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_LOCALPORT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_LOCALPORT - set local port number to use for socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. This sets the local port number of the socket used for the connection. This can be used in combination with <a Class="emphasis" href="./CURLOPT_INTERFACE.html">CURLOPT_INTERFACE</a> and you are recommended to use <a Class="emphasis" href="./CURLOPT_LOCALPORTRANGE.html">CURLOPT_LOCALPORTRANGE</a> as well when this option is set. Valid port numbers are 1 - 65535. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, disabled - use whatever the system thinks is fine <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf b/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf
index 68e856471..c0902cbdf 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html
index 1e6181e21..c5069d4e6 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_LOCALPORTRANGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_LOCALPORTRANGE - number of additional local ports to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE, &nbsp; long range); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. The <span Class="emphasis">range</span> argument is the number of attempts libcurl will make to find a working local port number. It starts with the given <a Class="emphasis" href="./CURLOPT_LOCALPORT.html">CURLOPT_LOCALPORT</a> and adds one to the number for each retry. Setting this option to 1 or below will make libcurl do only one try for the exact port number. Port numbers by nature are scarce resources that will be busy at times so setting this value to something too low might cause unnecessary connection setup failures. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf
index cf5a7a607..7a4f09c83 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html
index ac8495543..b54df961f 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_LOGIN_OPTIONS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_LOGIN_OPTIONS - set login options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated <span Class="emphasis">options</span> string to use for the transfer.
<p class="level0">For more information about the login options please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, RFC5092 and IETF draft draft-earhart-url-smtp-00.txt
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf
index 7c15e64ab..5f36138ee 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html
index a10f6e6d7..bdef6e49b 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_LOW_SPEED_LIMIT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_LOW_SPEED_LIMIT - set low speed limit in bytes per second <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter. It contains the average transfer speed in bytes per second that the transfer should be below during <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> seconds for libcurl to consider it to be too slow and abort. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf
index b7aaaf5a8..7533c2f2d 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html
index 0d097df9e..8e70e0697 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html
@@ -4,15 +4,20 @@
<title>CURLOPT_LOW_SPEED_TIME man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_LOW_SPEED_TIME - set low speed limit time period <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter. It contains the time in number seconds that the transfer speed should be below the <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a> for the library to consider it too slow and abort. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf
index 41f2f3768..301bdb9b6 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.html b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.html
index 3209031e0..3bb82693d 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.html
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAIL_AUTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAIL_AUTH - SMTP authentication address <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. This will be used to specify the authentication address (identity) of a submitted message that is being relayed to another server.
<p class="level0">This optional parameter allows co-operating agents in a trusted environment to communicate the authentication of individual messages and should only be used by the application program, using libcurl, if the application is itself a mail server acting in such an environment. If the application is operating as such and the AUTH address is not known or is invalid, then an empty string should be used for this parameter.
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf
index 5afbd9755..a75fb8028 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.html b/docs/libcurl/opts/CURLOPT_MAIL_FROM.html
index f34a2fc7b..b230652cd 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.html
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAIL_FROM man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAIL_FROM - SMTP sender address <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. This should be used to specify the sender's email address when sending SMTP mail with libcurl.
<p class="level0">An originator email address should be specified with angled brackets (&lt;&gt;) around it, which if not specified will be added automatically.
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf b/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf
index 0d24fcefe..45ed4ecfd 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.html b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.html
index a37fcd589..13fe8f884 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.html
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAIL_RCPT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAIL_RCPT - list of SMTP mail recipients <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT,
- &nbsp; struct curl_slist *rcpts);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT,
+&nbsp; struct curl_slist *rcpts);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of recipients to pass to the server in your SMTP mail request. The linked list should be a fully valid list of <span class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list.
<p class="level0">When performing a mail transfer, each recipient should be specified within a pair of angled brackets (&lt;&gt;), however, should you not use an angled bracket as the first character libcurl will assume you provided a single email address and enclose that address within brackets for you.
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf
index bc2e86f8a..9fdabb234 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.html b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.html
index 3edcfba74..e26de802a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.html
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAXCONNECTS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAXCONNECTS - maximum connection cache size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. The set <span Class="emphasis">amount</span> will be the maximum number of simultaneously open persistent connections that libcurl may cache in the pool associated with this handle. The default is 5, and there isn't much point in changing this value unless you are perfectly aware of how this works and changes libcurl's behaviour. This concerns connections using any of the protocols that support persistent connections.
<p class="level0">When reaching the maximum limit, curl closes the oldest one in the cache to prevent increasing the number of open connections.
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf
index 1cc92dbc5..636725bdf 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.html b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.html
index 306cc5921..0ee4cae7b 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.html
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAXFILESIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAXFILESIZE - maximum file size allowed to download <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter. This allows you to specify the maximum <span Class="emphasis">size</span> (in bytes) of a file to download. If the file requested is found larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned.
<p class="level0">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers.
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf
index b434b9618..e46c5223f 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html
index fb97d1e0a..f05bb589b 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAXFILESIZE_LARGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAXFILESIZE_LARGE - maximum file size allowed to download <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE_LARGE,
- &nbsp; curl_off_t size);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE_LARGE,
+&nbsp; curl_off_t size);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a curl_off_t as parameter. This allows you to specify the maximum <span Class="emphasis">size</span> (in bytes) of a file to download. If the file requested is found larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned.
<p class="level0">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf
index 3ab472129..6db1cbef2 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.html b/docs/libcurl/opts/CURLOPT_MAXREDIRS.html
index 5fe72479d..fbeb6c416 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.html
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAXREDIRS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,25 +52,28 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAXREDIRS - maximum number of redirects allowed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. The set number will be the redirection limit <span Class="emphasis">amount</span>. If that many redirections have been followed, the next redirect will cause an error (<span Class="emphasis">CURLE_TOO_MANY_REDIRECTS</span>). This option only makes sense if the <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> is used at the same time.
<p class="level0">Setting the limit to 0 will make libcurl refuse any redirect.
<p class="level0">Set it to -1 for an infinite number of redirects. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">-1, unlimited <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
- <p class="level0">&nbsp; /* enable redirect following */
- &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- <p class="level0">&nbsp; /* allow three redirects */
- &nbsp; curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
+&nbsp;
+&nbsp; /* enable redirect following */
+&nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+&nbsp;
+&nbsp; /* allow three redirects */
+&nbsp; curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf b/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf
index a00bda4a8..c7a5b867a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html
index aa542562a..f230b2291 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAX_RECV_SPEED_LARGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAX_RECV_SPEED_LARGE - rate limit data download speed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_RECV_SPEED_LARGE,
- &nbsp; curl_off_t speed);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_RECV_SPEED_LARGE,
+&nbsp; curl_off_t speed);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a curl_off_t as parameter. If a download exceeds this <span Class="emphasis">speed</span> (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value. Defaults to unlimited speed.
<p class="level0">This option doesn't affect transfer speeds done with FILE:// URLs. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf
index ffd933ac4..485f096c1 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html
index ed9c19a2e..295d5d585 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_MAX_SEND_SPEED_LARGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_MAX_SEND_SPEED_LARGE - rate limit data upload speed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_SEND_SPEED_LARGE,
- &nbsp; curl_off_t maxspeed);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_SEND_SPEED_LARGE,
+&nbsp; curl_off_t maxspeed);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a curl_off_t as parameter with the <span Class="emphasis">maxspeed</span>. If an upload exceeds this speed (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value. Defaults to unlimited speed.
<p class="level0">This option doesn't affect transfer speeds done with FILE:// URLs. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf
index 9b4391877..7959ad858 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.html b/docs/libcurl/opts/CURLOPT_NETRC.html
index 777f4fffc..3a99468be 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.html
+++ b/docs/libcurl/opts/CURLOPT_NETRC.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NETRC man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NETRC - request that .netrc is used <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This parameter controls the preference <span Class="emphasis">level</span> of libcurl between using user names and passwords from your <span Class="emphasis">~/.netrc</span> file, relative to user names and passwords in the URL supplied with <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a>.
<p class="level0">libcurl uses a user name (and supplied or prompted password) supplied with <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> or <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> in preference to any of the options controlled by this parameter.
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.pdf b/docs/libcurl/opts/CURLOPT_NETRC.pdf
index 05b8eea13..076fc49cf 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.pdf
+++ b/docs/libcurl/opts/CURLOPT_NETRC.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.html b/docs/libcurl/opts/CURLOPT_NETRC_FILE.html
index 8b05da089..f3365608d 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.html
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NETRC_FILE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NETRC_FILE - file name to read .netrc info from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, pointing to a zero terminated string containing the full path name to the <span Class="emphasis">file</span> you want libcurl to use as .netrc file. If this option is omitted, and <a Class="emphasis" href="./CURLOPT_NETRC.html">CURLOPT_NETRC</a> is set, libcurl will attempt to find a .netrc file in the current user's home directory. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf b/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf
index e14615dc1..285d49e49 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html
index 401b8853d..2dfced773 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NEW_DIRECTORY_PERMS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NEW_DIRECTORY_PERMS - permissions for remotely created directories <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_DIRECTORY_PERMS,
- &nbsp; long mode);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_DIRECTORY_PERMS,
+&nbsp; long mode);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created directories on the remote server. The default value is <span Class="emphasis">0755</span>, but any valid value can be used. The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0755 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf
index 75aa45ffd..77b59ec8f 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html
index da31f737f..e95b42e0c 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NEW_FILE_PERMS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NEW_FILE_PERMS - permissions for remotely created files <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_FILE_PERMS,
- &nbsp; long mode);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_FILE_PERMS,
+&nbsp; long mode);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created files on the remote server. The default value is <span Class="emphasis">0644</span>, but any valid value can be used. The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0644 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf
index 4be08714a..fa8e3fbe8 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.html b/docs/libcurl/opts/CURLOPT_NOBODY.html
index abca4392e..3ca441899 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.html
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NOBODY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,22 +52,24 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NOBODY - do the download request without getting the body <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A long parameter set to 1 tells libcurl to not include the body-part in the output when doing what would otherwise be a download. For HTTP(S), this makes libcurl do a HEAD request. For most other protocols it means just not asking to transfer the body data.
<p class="level0">Enabling this option means asking for a download but without a body. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, the body is transferred <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* get us the resource without a body! */
- &nbsp; curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* get us the resource without a body! */
+&nbsp; curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.pdf b/docs/libcurl/opts/CURLOPT_NOBODY.pdf
index d58164ad9..0dc741ad9 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.pdf
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.html b/docs/libcurl/opts/CURLOPT_NOPROGRESS.html
index 79bde0ee5..72b427ce5 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.html
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NOPROGRESS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NOPROGRESS - switch off the progress meter <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">If <span Class="emphasis">onoff</span> is to 1, it tells the library to shut off the progress meter completely for requests done with this <span Class="emphasis">handle</span>. It will also prevent the <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> from getting called.
<p class="level0">Future versions of libcurl are likely to not have any built-in progress meter at all. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf b/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf
index 2d832a1ec..b0bd0dea9 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.html b/docs/libcurl/opts/CURLOPT_NOPROXY.html
index f8b9794a1..e30cc4825 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.html
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NOPROXY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NOPROXY - disable proxy use for specific hosts <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string. The string consists of a comma separated list of host names that do not require a proxy to get reached, even if one is specified. The only wildcard available is a single * character, which matches all hosts, and effectively disables the proxy. Each name in this list is matched as either a domain which contains the hostname, or the hostname itself. For example, example.com would match example.com, example.com:80, and www.example.com, but not www.notanexample.com or example.com.othertld. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.pdf b/docs/libcurl/opts/CURLOPT_NOPROXY.pdf
index 5301afc45..77d1934b8 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.pdf
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.pdf
@@ -68,12 +68,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:02+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:02+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:23+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:23+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:817e587e-78d5-11f0-0000-65c5a25808db'/>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -82,9 +82,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091802+01'00')
-/ModDate(D:20150108091802+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081123+02'00')
+/ModDate(D:20150812081123+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 14
@@ -104,7 +104,7 @@ xref
0000002157 00000 n
trailer
<< /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<2D83AF6D6784F99F64821E4ED344D788><2D83AF6D6784F99F64821E4ED344D788>]
+/ID [(\005\234s\355\360]:{8$N72\264d:)(\005\234s\355\360]:{8$N72\264d:)]
>>
startxref
3734
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.html b/docs/libcurl/opts/CURLOPT_NOSIGNAL.html
index 287fbb3cc..8453ca522 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.html
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.html
@@ -4,15 +4,20 @@
<title>CURLOPT_NOSIGNAL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_NOSIGNAL - skip all signal handling <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">If <span Class="emphasis">onoff</span> is 1, libcurl will not use any functions that install signal handlers or any functions that cause signals to be sent to the process. This option is here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals.
<p class="level0">If this option is set and libcurl has been built with the standard name resolver, timeouts will not occur while the name resolve takes place. Consider building libcurl with the c-ares or threaded resolver backends to enable asynchronous DNS lookups, to enable timeouts for name resolves without the use of signals.
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf b/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf
index 619b766cb..e063cd006 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html
index 75985aaa7..5475200f5 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_OPENSOCKETDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_OPENSOCKETDATA - custom pointer passed to open socket callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the opensocket callback set with <a Class="emphasis" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf
index 7bf876d20..11d5a53d7 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html
index b72dedb9f..14d1e8cd9 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_OPENSOCKETFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,34 +52,38 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_OPENSOCKETFUNCTION - set callback for opening sockets <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
- &nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
- &nbsp; CURLSOCKTYPE_LAST /* never use */
- } curlsocktype;
- <p class="level0">struct curl_sockaddr {
- &nbsp; int family;
- &nbsp; int socktype;
- &nbsp; int protocol;
- &nbsp; unsigned int addrlen;
- &nbsp; struct sockaddr addr;
- };
- <p class="level0">curl_socket_t opensocket_callback(void *clientp,
- &nbsp; curlsocktype purpose,
- &nbsp; struct curl_sockaddr *address);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
+&nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+&nbsp; CURLSOCKTYPE_LAST /* never use */
+} curlsocktype;
+&nbsp;
+struct curl_sockaddr {
+&nbsp; int family;
+&nbsp; int socktype;
+&nbsp; int protocol;
+&nbsp; unsigned int addrlen;
+&nbsp; struct sockaddr addr;
+};
+&nbsp;
+curl_socket_t opensocket_callback(void *clientp,
+&nbsp; curlsocktype purpose,
+&nbsp; struct curl_sockaddr *address);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This callback function gets called by libcurl instead of the <span Class="emphasis">socket(2)</span> call. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: <span Class="emphasis">CURLSOCKTYPE_IPCXN</span> is for IP based connections and <span Class="emphasis">CURLSOCKTYPE_ACCEPT</span> is for sockets created after accept() - such as when doing active FTP. Future versions of libcurl may support more purposes.
<p class="level0">The <span Class="emphasis">clientp</span> pointer contains whatever user-defined value set using the <a Class="emphasis" href="./CURLOPT_OPENSOCKETDATA.html">CURLOPT_OPENSOCKETDATA</a> function.
<p class="level0">The callback gets the resolved peer address as the <span Class="emphasis">address</span> argument and is allowed to modify the address or refuse to connect completely. The callback function should return the newly created socket or <span Class="emphasis">CURL_SOCKET_BAD</span> in case no connection could be established or another error was detected. Any additional <span Class="emphasis">setsockopt(2)</span> calls can of course be done on the socket at the user's discretion. A <span Class="emphasis">CURL_SOCKET_BAD</span> return value from the callback function will signal an unrecoverable error to libcurl and it will return <span Class="emphasis">CURLE_COULDNT_CONNECT</span> from the function that triggered this callback. This return code can be used for IP address blacklisting.
<p class="level0">If you want to pass in a socket with an already established connection, pass the socket back with this callback and then use <a Class="emphasis" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a> to signal that it already is connected. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">The default behavior is the equivalent of this: <pre>
-<p class="level0">&nbsp; return socket(addr-&gt;family, addr-&gt;socktype, addr-&gt;protocol);
- </pre>
+<p class="level0">The default behavior is the equivalent of this: <pre class="level0">
+&nbsp; return socket(addr-&gt;family, addr-&gt;socktype, addr-&gt;protocol);
+</pre>
<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf
index 335e93ece..acf29a4ab 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.html b/docs/libcurl/opts/CURLOPT_PASSWORD.html
index b2da86d48..a8f11ff00 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.html
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PASSWORD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PASSWORD - password to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated password to use for the transfer.
<p class="level0">The <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> option should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.pdf b/docs/libcurl/opts/CURLOPT_PASSWORD.pdf
index 760f360e5..7ee12c948 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.pdf
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
new file mode 100644
index 000000000..490aca0d7
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PATH_AS_IS 3 "17 Jun 2014" "libcurl 7.42.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
+.SH DESCRIPTION
+By setting the long \fIleavit\fP to 1, to explicitly tell libcurl to not alter
+the given path before passing it on to the server.
+
+This tells libcurl to NOT squash sequences of "/../" or "/./" that may exist
+in the URL's path part and that is supposed to be removed according to RFC
+3986 section 5.2.4.
+
+Some server implementations are known to (erroneously) require the dot dot
+sequences to remain in the path and some clients want to pass these on in
+order to try out server implementations.
+
+By default libcurl will merge such sequences before using the path.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/../../etc/password");
+
+ curl_easy_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Aded in 7.42.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.html b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.html
new file mode 100644
index 000000000..1d54f0171
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PATH_AS_IS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PATH_AS_IS - do not handle dot dot sequences <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">By setting the long <span Class="emphasis">leavit</span> to 1, to explicitly tell libcurl to not alter the given path before passing it on to the server.
+<p class="level0">This tells libcurl to NOT squash sequences of "/../" or "/./" that may exist in the URL's path part and that is supposed to be removed according to RFC 3986 section 5.2.4.
+<p class="level0">Some server implementations are known to (erroneously) require the dot dot sequences to remain in the path and some clients want to pass these on in order to try out server implementations.
+<p class="level0">By default libcurl will merge such sequences before using the path. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/../../etc/password">http://example.com/../../etc/password</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Aded in 7.42.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf
new file mode 100644
index 000000000..2e6c2d617
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
new file mode 100644
index 000000000..0d4357ab1
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -0,0 +1,87 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "27 Aug 2014" "libcurl 7.38.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PINNEDPUBLICKEY \- set pinned public key
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string can be the
+file name of your pinned public key. The file format expected is "PEM" or "DER".
+The string can also be any number of base64 encoded sha256 hashes preceded by
+"sha256//" and seperated by ";"
+
+When negotiating a TLS or SSL connection, the server sends a certificate
+indicating its identity. A public key is extracted from this certificate and
+if it does not exactly match the public key provided to this option, curl will
+abort the connection before sending or receiving any data.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+ curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+ /* OR
+ curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+ */
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH PUBLIC KEY EXTRACTION
+If you do not have the server's public key file you can extract it from the
+server's certificate.
+.nf
+# extract public key in pem format from certificate
+openssl x509 -in www.test.com.pem -pubkey -noout > www.test.com.pubkey.pem
+# convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.test.com.pubkey.pem -out www.test.com.pubkey.der
+# sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.test.com.pubkey.der | openssl base64
+.fi
+The public key in PEM format contains a header, base64 data and a
+footer:
+.nf
+-----BEGIN PUBLIC KEY-----
+[BASE 64 DATA]
+-----END PUBLIC KEY-----
+.fi
+.SH AVAILABILITY
+Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for
+NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL,
+GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYPEER "(3), "
+.BR CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLOPT_CAINFO "(3), "
+.BR CURLOPT_CAPATH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html
new file mode 100644
index 000000000..b0f5e6350
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PINNEDPUBLICKEY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PINNEDPUBLICKEY - set pinned public key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and seperated by ";"
+<p class="level0">When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, curl will abort the connection before sending or receiving any data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp; curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+&nbsp; /* OR
+&nbsp; curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+&nbsp; */
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="PUBLIC"></a><h2 class="nroffsh">PUBLIC KEY EXTRACTION</h2>
+<p class="level0">If you do not have the server's public key file you can extract it from the server's certificate. <pre class="level0">
+&#35; extract public key in pem format from certificate
+openssl x509 -in www.test.com.pem -pubkey -noout &gt; www.test.com.pubkey.pem
+&#35; convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.test.com.pubkey.pem -out www.test.com.pubkey.der
+&#35; sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.test.com.pubkey.der | openssl base64
+</pre>
+
+<p class="level0">The public key in PEM format contains a header, base64 data and a footer: <pre class="level0">
+-----BEGIN PUBLIC KEY-----
+[BASE 64 DATA]
+-----END PUBLIC KEY-----
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf
new file mode 100644
index 000000000..3b770592e
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
new file mode 100644
index 000000000..5f6419598
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PIPEWAIT 3 "12 May 2015" "libcurl 7.43.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);
+.SH DESCRIPTION
+Set \fIwait\fP to 1L to tell libcurl to prefer to wait for a connection to
+confirm or deny that it can do pipelining or multiplexing before continuing.
+
+When about to perform a new transfer that allows pipelining or multiplexing,
+libcurl will check for existing connections to re-use and pipeline on. If no
+such connection exists it will immediately continue and create a fresh new
+connection to use.
+
+By setting this option to 1 - and having \fICURLMOPT_PIPELINE\fP enabled for
+the multi handle this transfer is associated with - libcurl will instead wait
+for the connection to reveal if it is possible to pipeline/multiplex on before
+it continues. This enables libcurl to much better keep the number of
+connections to a minimum when using pipelining or multiplexing protocols.
+
+The effect thus becomes that with this option set, libcurl prefers to wait and
+re-use an existing connection for pipelining rather than the opposite: prefer
+to open a new connection rather than waiting.
+
+The waiting time is as long as it takes for the connection to get up and for
+libcurl to get the necessary response back that informs it about its protocol
+and support level.
+.SH DEFAULT
+0 (off)
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.SH AVAILABILITY
+Added in 7.43.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FORBID_REUSE "(3), " CURLOPT_FRESH_CONNECT "(3), "
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.html b/docs/libcurl/opts/CURLOPT_PIPEWAIT.html
new file mode 100644
index 000000000..b266c5e5a
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PIPEWAIT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PIPEWAIT - wait for pipelining/multiplexing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set <span Class="emphasis">wait</span> to 1L to tell libcurl to prefer to wait for a connection to confirm or deny that it can do pipelining or multiplexing before continuing.
+<p class="level0">When about to perform a new transfer that allows pipelining or multiplexing, libcurl will check for existing connections to re-use and pipeline on. If no such connection exists it will immediately continue and create a fresh new connection to use.
+<p class="level0">By setting this option to 1 - and having <span Class="emphasis">CURLMOPT_PIPELINE</span> enabled for the multi handle this transfer is associated with - libcurl will instead wait for the connection to reveal if it is possible to pipeline/multiplex on before it continues. This enables libcurl to much better keep the number of connections to a minimum when using pipelining or multiplexing protocols.
+<p class="level0">The effect thus becomes that with this option set, libcurl prefers to wait and re-use an existing connection for pipelining rather than the opposite: prefer to open a new connection rather than waiting.
+<p class="level0">The waiting time is as long as it takes for the connection to get up and for libcurl to get the necessary response back that informs it about its protocol and support level. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 (off) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.43.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a>, <a Class="manpage" href="./CURLOPT_FRESH_CONNECT.html">CURLOPT_FRESH_CONNECT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf b/docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf
new file mode 100644
index 000000000..01326206a
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PORT.html b/docs/libcurl/opts/CURLOPT_PORT.html
index 415401445..13588035c 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.html
+++ b/docs/libcurl/opts/CURLOPT_PORT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PORT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PORT - set remote port number to work with <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">This option sets <span Class="emphasis">number</span> to be the remote port number to connect to, instead of the one specified in the URL or the default port for the used protocol.
<p class="level0">Usually, you just let the URL decide which port to use but this allows the application to override that.
diff --git a/docs/libcurl/opts/CURLOPT_PORT.pdf b/docs/libcurl/opts/CURLOPT_PORT.pdf
index 9a9bb46e0..860b8b8e0 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.pdf
+++ b/docs/libcurl/opts/CURLOPT_PORT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_POST.html b/docs/libcurl/opts/CURLOPT_POST.html
index bc7dcd175..bb9203796 100644
--- a/docs/libcurl/opts/CURLOPT_POST.html
+++ b/docs/libcurl/opts/CURLOPT_POST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_POST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_POST - request a HTTP POST <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A parameter set to 1 tells libcurl to do a regular HTTP post. This will also make the library use a "Content-Type: application/x-www-form-urlencoded" header. (This is by far the most commonly used POST method).
<p class="level0">Use one of <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> or <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> options to specify what data to post and <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a> to set the data size.
diff --git a/docs/libcurl/opts/CURLOPT_POST.pdf b/docs/libcurl/opts/CURLOPT_POST.pdf
index 8e0e966c6..c2ce020ae 100644
--- a/docs/libcurl/opts/CURLOPT_POST.pdf
+++ b/docs/libcurl/opts/CURLOPT_POST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index d55914308..27e4510b1 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -44,6 +44,9 @@ used by HTML forms. Change Content-Type with \fICURLOPT_HTTPHEADER(3)\fP.
Using \fICURLOPT_POSTFIELDS(3)\fP implies \fICURLOPT_POST(3)\fP.
+You can use \fIcurl_easy_escape(3)\fP to url-encode your data, if necessary. It
+returns a pointer to an encoded string that can be passed as \fIpostdata\fP.
+
If you want to do a zero-byte POST, you need to set
\fICURLOPT_POSTFIELDSIZE(3)\fP explicitly to zero, as simply setting
\fICURLOPT_POSTFIELDS(3)\fP to NULL or "" just effectively disables the
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.html b/docs/libcurl/opts/CURLOPT_POSTFIELDS.html
index 3b998ef52..d8fd439b9 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.html
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_POSTFIELDS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,29 +52,34 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_POSTFIELDS - specify data to POST to server <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, pointing to the full data to send in a HTTP POST operation. You must make sure that the data is formatted the way you want the server to receive it. libcurl will not convert or encode it for you in any way. For example, the web server may assume that this data is url-encoded.
<p class="level0">The data pointed to is NOT copied by the library: as a consequence, it must be preserved by the calling application until the associated transfer finishes. This behaviour can be changed (so libcurl does copy the data) by setting the <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> option.
<p class="level0">This POST is a normal application/x-www-form-urlencoded kind (and libcurl will set that Content-Type by default when this option is used), which is commonly used by HTML forms. Change Content-Type with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>.
<p class="level0">Using <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> implies <a Class="emphasis" href="./CURLOPT_POST.html">CURLOPT_POST</a>.
+<p class="level0">You can use <span Class="emphasis">curl_easy_escape(3)</span> to url-encode your data, if necessary. It returns a pointer to an encoded string that can be passed as <span Class="emphasis">postdata</span>.
<p class="level0">If you want to do a zero-byte POST, you need to set <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> explicitly to zero, as simply setting <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> to NULL or "" just effectively disables the sending of the specified string. libcurl will instead assume that you'll send the POST data using the read callback!
<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual.
<p class="level0">To make multipart/formdata posts (aka <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>-posts), check out the <a Class="emphasis" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a> option combined with <span Class="emphasis">curl_formadd(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; const char *data = "data to send";
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the POST data */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
- <p class="level0">&nbsp; /* pass in a pointer to the data - libcurl will not copy */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; const char *data = "data to send";
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the POST data */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+&nbsp;
+&nbsp; /* pass in a pointer to the data - libcurl will not copy */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf b/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf
index 879a67715..8e8644d36 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html
index ac4732beb..7046668ff 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_POSTFIELDSIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,23 +52,27 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_POSTFIELDSIZE - size of POST data pointed to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">If you want to post data to the server without having libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size.
<p class="level0">If you post more than 2GB, use <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">-1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; const char *data = "data to send";
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the POST data */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; const char *data = "data to send";
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the POST data */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf
index 98043aa48..ea991f3e7 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf
@@ -72,12 +72,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:02+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:02+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:24+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:24+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:8216eefe-78d5-11f0-0000-17393b2772b9'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -86,9 +86,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091802+01'00')
-/ModDate(D:20150108091802+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081124+02'00')
+/ModDate(D:20150812081124+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -109,7 +109,7 @@ xref
0000001889 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<E7A069C89AE370A9D41735FF131F0C9F><E7A069C89AE370A9D41735FF131F0C9F>]
+/ID [<8BF561F8AF8B932CC4A2CD621BAF8816><8BF561F8AF8B932CC4A2CD621BAF8816>]
>>
startxref
3466
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html
index 322ee476b..cd8901b1f 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_POSTFIELDSIZE_LARGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,27 +52,32 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_POSTFIELDSIZE_LARGE - size of POST data pointed to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE_LARGE,
- &nbsp; curl_off_t size);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE_LARGE,
+&nbsp; curl_off_t size);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">If you want to post data to the server without having libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">-1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; const char *data = large_chunk;
- &nbsp; curl_off_t length_of_data; /* set somehow */
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the POST data */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data);
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; const char *data = large_chunk;
+&nbsp; curl_off_t length_of_data; /* set somehow */
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the POST data */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf
index 53bb6bd3e..64330d4bd 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.html b/docs/libcurl/opts/CURLOPT_POSTQUOTE.html
index ba8a206cf..027b74d84 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.html
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_POSTQUOTE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_POSTQUOTE - (S)FTP commands to run after the transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after your FTP transfer request. The commands will only be run if no error occurred. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>.
<p class="level0">Disable this operation again by setting a NULL to this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf b/docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf
index 7ee5b9b78..a967487bf 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf
@@ -70,12 +70,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:03+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:03+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:24+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:24+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a'/>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:8216eefe-78d5-11f0-0000-56fc4828454a'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -84,9 +84,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091803+01'00')
-/ModDate(D:20150108091803+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081124+02'00')
+/ModDate(D:20150812081124+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -107,7 +107,7 @@ xref
0000001843 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<6D18367D1B659C0775060C32CB00322E><6D18367D1B659C0775060C32CB00322E>]
+/ID [<ED9B25888E54BDFB04922D9C185068C8><ED9B25888E54BDFB04922D9C185068C8>]
>>
startxref
3420
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.html b/docs/libcurl/opts/CURLOPT_POSTREDIR.html
index f4b8ffe1d..04000595e 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.html
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.html
@@ -4,15 +4,20 @@
<title>CURLOPT_POSTREDIR man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,28 +52,32 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_POSTREDIR - how to act on a HTTP POST redirect <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
- &nbsp; long bitmask);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
+&nbsp; long bitmask);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a bitmask to control how libcurl acts on redirects after POSTs that get a 301, 302 or 303 response back. A parameter with bit 0 set (value <span Class="bold">CURL_REDIR_POST_301</span>) tells the library to respect <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>/10.3.2 and not convert POST requests into GET requests when following a 301 redirection. Setting bit 1 (value <span Class="bold">CURL_REDIR_POST_302</span>) makes libcurl maintain the request method after a 302 redirect whilst setting bit 2 (value <span Class="bold">CURL_REDIR_POST_303</span>) makes libcurl maintain the request method after a 303 redirect. The value <span Class="bold">CURL_REDIR_POST_ALL</span> is a convenience define that sets all three bits.
<p class="level0">The non-RFC behaviour is ubiquitous in web browsers, so the library does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when setting <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* a silly POST example */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
- <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
- &nbsp; 303 HTTP response codes */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* a silly POST example */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
+&nbsp;
+&nbsp; /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
+&nbsp; 303 HTTP response codes */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.17.1. This option was known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then. CURL_REDIR_POST_303 was added in 7.26.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf b/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf
index 513682a6e..e371271d5 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.html b/docs/libcurl/opts/CURLOPT_PREQUOTE.html
index f74c660e2..b0c9a30b6 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.html
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PREQUOTE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PREQUOTE - commands to run before FTP or SFTP transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE, char *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after the transfer type is set. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>. Disable this operation again by setting a NULL to this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf b/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf
index 60ae8e458..ca9c5a104 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index bdb11cf2c..9907f9754 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -37,7 +37,22 @@ NULL
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+struct private secrets;
+if(curl) {
+ struct private *extracted;
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* store a pointer to our private struct */
+ curl_easy_setopt(curl, CURLOPT_PRIVATE, &secrets);
+
+ curl_easy_perform(curl);
+
+ /* we can extract the private pointer again too */
+ curl_easy_getinfo(curl, CURLINFO_PRIVATE, &extracted);
+}
+.fi
.SH AVAILABILITY
Added in 7.10.3
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.html b/docs/libcurl/opts/CURLOPT_PRIVATE.html
index 165f333a8..2be9405e8 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.html
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PRIVATE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,29 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PRIVATE - store a private pointer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a void * as parameter, pointing to data that should be associated with this curl handle. The pointer can subsequently be retrieved using <span Class="emphasis">curl_easy_getinfo(3)</span> with the CURLINFO_PRIVATE option. libcurl itself never does nothing with this data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+struct private secrets;
+if(curl) {
+&nbsp; struct private *extracted;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* store a pointer to our private struct */
+&nbsp; curl_easy_setopt(curl, CURLOPT_PRIVATE, &secrets);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+&nbsp;
+&nbsp; /* we can extract the private pointer again too */
+&nbsp; curl_easy_getinfo(curl, CURLINFO_PRIVATE, &extracted);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.10.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.pdf b/docs/libcurl/opts/CURLOPT_PRIVATE.pdf
index 6d0c6d463..1cf43d52c 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.pdf
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.html b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.html
index cd73126d3..8a8a94bc0 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.html
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROGRESSDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROGRESSDATA - custom pointer passed to the progress callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the progress callback set with <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf
index efd922665..ba2a7db5e 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html
index 489cd703a..2cd791d3f 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROGRESSFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROGRESSFUNCTION - callback to progress meter function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">int progress_callback(void *clientp, &nbsp; double dltotal, &nbsp; double dlnow, &nbsp; double ultotal, &nbsp; double ulnow);
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSFUNCTION, progress_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf
index dc418fee6..656e09fe9 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.html b/docs/libcurl/opts/CURLOPT_PROTOCOLS.html
index b2eae2366..a5ef7f396 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.html
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROTOCOLS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,54 +52,56 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROTOCOLS - set allowed protocols <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in the transfer. This allows you to have a libcurl built to support a wide range of protocols but still limit specific transfers to only be allowed to use a subset of them. By default libcurl will accept all protocols it supports (<span Class="emphasis">CURLPROTO_ALL</span>). See also <a Class="emphasis" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a>.
-<p class="level0">These are the available protocol defines: <pre>
-<p class="level0">CURLPROTO_DICT
- CURLPROTO_FILE
- CURLPROTO_FTP
- CURLPROTO_FTPS
- CURLPROTO_GOPHER
- CURLPROTO_HTTP
- CURLPROTO_HTTPS
- CURLPROTO_IMAP
- CURLPROTO_IMAPS
- CURLPROTO_LDAP
- CURLPROTO_LDAPS
- CURLPROTO_POP3
- CURLPROTO_POP3S
- CURLPROTO_RTMP
- CURLPROTO_RTMPE
- CURLPROTO_RTMPS
- CURLPROTO_RTMPT
- CURLPROTO_RTMPTE
- CURLPROTO_RTMPTS
- CURLPROTO_RTSP
- CURLPROTO_SCP
- CURLPROTO_SFTP
- CURLPROTO_SMB
- CURLPROTO_SMTP
- CURLPROTO_SMTPS
- CURLPROTO_TELNET
- CURLPROTO_TFTP
- </pre>
+<p class="level0">These are the available protocol defines: <pre class="level0">
+CURLPROTO_DICT
+CURLPROTO_FILE
+CURLPROTO_FTP
+CURLPROTO_FTPS
+CURLPROTO_GOPHER
+CURLPROTO_HTTP
+CURLPROTO_HTTPS
+CURLPROTO_IMAP
+CURLPROTO_IMAPS
+CURLPROTO_LDAP
+CURLPROTO_LDAPS
+CURLPROTO_POP3
+CURLPROTO_POP3S
+CURLPROTO_RTMP
+CURLPROTO_RTMPE
+CURLPROTO_RTMPS
+CURLPROTO_RTMPT
+CURLPROTO_RTMPTE
+CURLPROTO_RTMPTS
+CURLPROTO_RTSP
+CURLPROTO_SCP
+CURLPROTO_SFTP
+CURLPROTO_SMB
+CURLPROTO_SMTP
+CURLPROTO_SMTPS
+CURLPROTO_TELNET
+CURLPROTO_TFTP
+</pre>
<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">All protocols built-in <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; /* pass in the URL from an external source */
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
- <p class="level0">&nbsp; /* only allow HTTP, TFTP and SFTP */
- &nbsp; curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
- &nbsp; CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; /* pass in the URL from an external source */
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+&nbsp;
+&nbsp; /* only allow HTTP, TFTP and SFTP */
+&nbsp; curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
+&nbsp; CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf b/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf
index 45587f3d7..309fa433a 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.html b/docs/libcurl/opts/CURLOPT_PROXY.html
index d37676a41..ff3de6268 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.html
+++ b/docs/libcurl/opts/CURLOPT_PROXY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXY - set proxy to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the <span Class="emphasis">proxy</span> to use for the upcoming request. The parameter should be a char * to a zero terminated string holding the host name or dotted IP address.
<p class="level0">To specify port number in this string, append :[port] to the end of the host name. The proxy's port number may optionally be specified with the separate option <a Class="emphasis" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>. If not specified, libcurl will default to using port 1080 for proxies.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.pdf b/docs/libcurl/opts/CURLOPT_PROXY.pdf
index 76ace305c..d8d8291bc 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.html b/docs/libcurl/opts/CURLOPT_PROXYAUTH.html
index e7d050ec7..29fbac91d 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYAUTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYAUTH - set HTTP proxy authentication methods to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which HTTP authentication method(s) you want it to use for your proxy authentication. If more than one bit is set, libcurl will first query the site to see what authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the <a Class="emphasis" href="./CURLOPT_PROXYUSERPWD.html">CURLOPT_PROXYUSERPWD</a> option.
<p class="level0">The bitmask can be constructed by or'ing together the bits fully listed and described in the <a Class="emphasis" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a> man page. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf b/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf
index 377a5c48a..38d3fc7a8 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.html b/docs/libcurl/opts/CURLOPT_PROXYHEADER.html
index 8c143634e..8e630f8b5 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYHEADER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYHEADER - custom HTTP headers to pass to proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYHEADER,
- &nbsp; struct curl_slist *headers);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYHEADER,
+&nbsp; struct curl_slist *headers);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of HTTP headers to pass in your HTTP request sent to a proxy. The rules for this list is identical to the <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> option's.
<p class="level0">The headers set with this option is only ever used in requests sent to a proxy - when there's also a request sent to a host.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf b/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf
index 07ff613e2..93d9bd5b0 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html
index f41b4f0a9..5bafeb95b 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYPASSWORD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYPASSWORD - password to use with proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated password to use for authentication with the proxy.
<p class="level0">The <a Class="emphasis" href="./CURLOPT_PROXYPASSWORD.html">CURLOPT_PROXYPASSWORD</a> option should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf
index 025758f6f..1f50795c4 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.html b/docs/libcurl/opts/CURLOPT_PROXYPORT.html
index e065f3359..3e2c81f64 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYPORT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYPORT - port number the proxy listens on <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long with this option to set the proxy port to connect to unless it is specified in the proxy string <a Class="emphasis" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a> or uses the default one.
<p class="level0">While this accepts a 'long', the port number is 16 bit so it can't be larger than 65535. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf b/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf
index 4d6607951..351bb8e80 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.html b/docs/libcurl/opts/CURLOPT_PROXYTYPE.html
index 2f45432e6..5ee0cf547 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYTYPE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYTYPE - proxy protocol type <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long with this option to set type of the proxy. Available options for this are <span Class="emphasis">CURLPROXY_HTTP</span>, <span Class="emphasis">CURLPROXY_HTTP_1_0</span> <span Class="emphasis">CURLPROXY_SOCKS4</span>, <span Class="emphasis">CURLPROXY_SOCKS5</span>, <span Class="emphasis">CURLPROXY_SOCKS4A</span> and <span Class="emphasis">CURLPROXY_SOCKS5_HOSTNAME</span>. The HTTP type is default.
<p class="level0">If you set <a Class="bold" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a> to <span Class="emphasis">CURLPROXY_HTTP_1_0</span>, it will only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version used for "regular" HTTP requests is instead controlled with <a Class="emphasis" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf b/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf
index c5a8e405d..d31cc97b5 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html
index 04e8263e4..f7c98dbe3 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYUSERNAME man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYUSERNAME - user name to use for proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
- &nbsp; char *username);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
+&nbsp; char *username);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer.
<p class="level0"><a Class="bold" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a> sets the user name to be used in protocol authentication with the proxy.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf
index 03f7611f0..0573e8f45 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html
index ecd301cc8..0c71103ea 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXYUSERPWD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXYUSERPWD - user name and password to use for proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be [user name]:[password] to use for the connection to the HTTP proxy. Both the name and the password will be URL decoded before use, so to include for example a colon in the user name you should encode it as %3A. (This is different to how <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> is used - beware.)
<p class="level0">Use <a Class="emphasis" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a> to specify the authentication method. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf
index c99bf9438..7682c09b6 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
new file mode 100644
index 000000000..a6224fb77
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXY_SERVICE_NAME \- proxy service name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
+.SH DESCRIPTION
+Pass a char * as parameter to a string holding the \fIname\fP of the
+service. The default service name is "HTTP". This option allows you to change it.
+..SH DEFAULT
+See above
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.43.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html
new file mode 100644
index 000000000..4d0329ec9
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXY_SERVICE_NAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXY_SERVICE_NAME - proxy service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name is "HTTP". This option allows you to change it.
+<p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.43.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf
new file mode 100644
index 000000000..19a9905b4
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html
index ae3f30a5c..65b97dd96 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PROXY_TRANSFER_MODE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PROXY_TRANSFER_MODE - append FTP transfer mode to URL for proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the value is set to 1 (one), it tells libcurl to set the transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by appending ;type=a or ;type=i to the URL. Without this setting, or it being set to 0 (zero, the default), <a Class="emphasis" href="./CURLOPT_TRANSFERTEXT.html">CURLOPT_TRANSFERTEXT</a> has no effect when doing FTP via a proxy. Beware that not all proxies support this feature. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf
index d21dcf716..9d63f294e 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_PUT.html b/docs/libcurl/opts/CURLOPT_PUT.html
index 1000cc76b..c96474353 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.html
+++ b/docs/libcurl/opts/CURLOPT_PUT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_PUT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_PUT - make a HTTP PUT request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A parameter set to 1 tells the library to use HTTP PUT to transfer data. The data should be set with <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> and <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>.
<p class="level0">This option is <span Class="bold">deprecated</span> since version 7.12.1. Use <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_PUT.pdf b/docs/libcurl/opts/CURLOPT_PUT.pdf
index d5f4626a8..e926ddb00 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.pdf
+++ b/docs/libcurl/opts/CURLOPT_PUT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.html b/docs/libcurl/opts/CURLOPT_QUOTE.html
index 91549aff4..ca310bbc1 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.html
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_QUOTE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_QUOTE - (S)FTP commands to run before transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server prior to your request. This will be done before any other commands are issued (even before the CWD command for FTP). The linked list should be a fully valid list of 'struct curl_slist' structs properly filled in with text strings. Use <span Class="emphasis">curl_slist_append(3)</span> to append strings (commands) to the list, and clear the entire list afterwards with <span Class="emphasis">curl_slist_free_all(3)</span>. Disable this operation again by setting a NULL to this option. When speaking to a FTP server, prefix the command with an asterisk (*) to make libcurl continue even if the command fails as by default libcurl will stop at first failure.
<p class="level0">The set of valid FTP commands depends on the server (see <a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a> for a list of mandatory commands).
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.pdf b/docs/libcurl/opts/CURLOPT_QUOTE.pdf
index 76550af18..b2dda69b7 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.pdf
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.html b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.html
index 2b81b5ef4..fb34ccb53 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.html
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RANDOM_FILE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RANDOM_FILE - specify a source for random data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to a zero terminated file name. The file will be used to read from to seed the random engine for SSL and more. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf
index 5f8a5ac33..29efb23ea 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.html b/docs/libcurl/opts/CURLOPT_RANGE.html
index c256da890..89da71492 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.html
+++ b/docs/libcurl/opts/CURLOPT_RANGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RANGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,23 +52,25 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RANGE - set byte range to request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should contain the specified range you want to retrieve. It should be in the format "X-Y", where either X or Y may be left out and X and Y are byte indexes.
<p class="level0">HTTP transfers also support several intervals, separated with commas as in <span Class="emphasis">"X-Y,N-M"</span>. Using this kind of multiple intervals will cause the HTTP server to send the response document in pieces (using standard MIME separation techniques). For RTSP, the formatting of a range should follow <a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 12.29. For RTSP, byte ranges are <span Class="bold">not</span> permitted. Instead, ranges should be given in npt, utc, or smpte formats.
<p class="level0">Pass a NULL to this option to disable the use of ranges. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP, FTP, FILE, RTSP and SFTP. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* get the first 200 bytes */
- &nbsp; curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* get the first 200 bytes */
+&nbsp; curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">FILE since 7.18.0, RTSP since 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.pdf b/docs/libcurl/opts/CURLOPT_RANGE.pdf
index 196f75d61..e0a132abe 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_RANGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index db666316e..a67f41542 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -42,7 +42,19 @@ By default, this is a FILE * to stdin.
.SH PROTOCOLS
This is used for all protocols when sending data.
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+struct MyData this;
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* pass pointer that gets passed in to the
+ CURLOPT_READFUNCTION callback */
+ curl_easy_setopt(curl, CURLOPT_READDATA, &this);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
This option was once known by the older name \fICURLOPT_INFILE\fP, the name
\fICURLOPT_READDATA\fP was introduced in 7.9.7.
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.html b/docs/libcurl/opts/CURLOPT_READDATA.html
index cb372fccd..42642c6cb 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.html
+++ b/docs/libcurl/opts/CURLOPT_READDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_READDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,14 +52,28 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_READDATA - custom pointer passed to the read callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Data <span Class="emphasis">pointer</span> to pass to the file read function. If you use the <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> option, this is the pointer you'll get as input in the 4th argument to the callback.
<p class="level0">If you don't specify a read callback but instead rely on the default internal read function, this data must be a valid readable FILE * (cast to 'void *').
<p class="level0">If you're using libcurl as a win32 DLL, you MUST use a <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> if you set this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">By default, this is a FILE * to stdin. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">This is used for all protocols when sending data. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+struct MyData this;
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* pass pointer that gets passed in to the
+&nbsp; CURLOPT_READFUNCTION callback */
+&nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, &this);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">This option was once known by the older name <span Class="emphasis">CURLOPT_INFILE</span>, the name <span Class="emphasis">CURLOPT_READDATA</span> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a>, <a Class="manpage" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.pdf b/docs/libcurl/opts/CURLOPT_READDATA.pdf
index c23376d42..f974e1c3a 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_READDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index 79139adf1..edd9bdbf6 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -34,9 +34,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READFUNCTION, read_callback);
Pass a pointer to your callback function, as the prototype shows above.
This callback function gets called by libcurl as soon as it needs to read data
-in order to send it to the peer. The data area pointed at by the pointer
-\fIbuffer\fP should be filled up with at most \fIsize\fP multiplied with
-\fInmemb\fP number of bytes by your function.
+in order to send it to the peer - like if you ask it to upload or post data to
+the server. The data area pointed at by the pointer \fIbuffer\fP should be
+filled up with at most \fIsize\fP multiplied with \fInmemb\fP number of bytes
+by your function.
Your function must then return the actual number of bytes that it stored in
that memory area. Returning 0 will signal end-of-file to the library and cause
@@ -75,4 +76,4 @@ was added in 7.12.1.
This will return CURLE_OK.
.SH "SEE ALSO"
.BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
-.BR CURLOPT_SEEKFUNCTION "(3), "
+.BR CURLOPT_SEEKFUNCTION "(3), " CURLOPT_UPLOAD "(3), " CURLOPT_POST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.html b/docs/libcurl/opts/CURLOPT_READFUNCTION.html
index e1e88dd8a..aeac9bd66 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_READFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_READFUNCTION - read callback for data uploads <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">size_t read_callback(char *buffer, size_t size, size_t nitems, void *instream);
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READFUNCTION, read_callback);
<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, as the prototype shows above.
-<p class="level0">This callback function gets called by libcurl as soon as it needs to read data in order to send it to the peer. The data area pointed at by the pointer <span Class="emphasis">buffer</span> should be filled up with at most <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span> number of bytes by your function.
+<p class="level0">This callback function gets called by libcurl as soon as it needs to read data in order to send it to the peer - like if you ask it to upload or post data to the server. The data area pointed at by the pointer <span Class="emphasis">buffer</span> should be filled up with at most <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span> number of bytes by your function.
<p class="level0">Your function must then return the actual number of bytes that it stored in that memory area. Returning 0 will signal end-of-file to the library and cause it to stop the current transfer.
<p class="level0">If you stop the current transfer by returning 0 "pre-maturely" (i.e before the server expected it, like when you've said you will upload N bytes and you upload less than N bytes), you may experience that the server "hangs" waiting for the rest of the data that won't come.
<p class="level0">The read callback may return <span Class="emphasis">CURL_READFUNC_ABORT</span> to stop the current operation immediately, resulting in a <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span> error code from the transfer.
@@ -64,6 +69,6 @@ p.roffit {
<p class="level0">Here's an example setting a read callback for reading that to upload to an FTP site: <a href="http://curl.haxx.se/libcurl/c/ftpupload.html">http://curl.haxx.se/libcurl/c/ftpupload.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT was added in 7.12.1. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <a Class="manpage" href="./CURLOPT_POST.html">CURLOPT_POST</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf
index 7926845c1..1f1fb1f82 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html
index 58f8e2808..80249a37e 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_REDIR_PROTOCOLS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,54 +52,56 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_REDIR_PROTOCOLS - set protocols allowed to redirect to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in a transfer that it follows to in a redirect when <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> is enabled. This allows you to limit specific transfers to only be allowed to use a subset of protocols in redirections. By default libcurl will allow all protocols except for FILE and SCP.
-<p class="level0">These are the available protocol defines: <pre>
-<p class="level0">CURLPROTO_DICT
- CURLPROTO_FILE
- CURLPROTO_FTP
- CURLPROTO_FTPS
- CURLPROTO_GOPHER
- CURLPROTO_HTTP
- CURLPROTO_HTTPS
- CURLPROTO_IMAP
- CURLPROTO_IMAPS
- CURLPROTO_LDAP
- CURLPROTO_LDAPS
- CURLPROTO_POP3
- CURLPROTO_POP3S
- CURLPROTO_RTMP
- CURLPROTO_RTMPE
- CURLPROTO_RTMPS
- CURLPROTO_RTMPT
- CURLPROTO_RTMPTE
- CURLPROTO_RTMPTS
- CURLPROTO_RTSP
- CURLPROTO_SCP
- CURLPROTO_SFTP
- CURLPROTO_SMB
- CURLPROTO_SMTP
- CURLPROTO_SMTPS
- CURLPROTO_TELNET
- CURLPROTO_TFTP
- </pre>
+<p class="level0">These are the available protocol defines: <pre class="level0">
+CURLPROTO_DICT
+CURLPROTO_FILE
+CURLPROTO_FTP
+CURLPROTO_FTPS
+CURLPROTO_GOPHER
+CURLPROTO_HTTP
+CURLPROTO_HTTPS
+CURLPROTO_IMAP
+CURLPROTO_IMAPS
+CURLPROTO_LDAP
+CURLPROTO_LDAPS
+CURLPROTO_POP3
+CURLPROTO_POP3S
+CURLPROTO_RTMP
+CURLPROTO_RTMPE
+CURLPROTO_RTMPS
+CURLPROTO_RTMPT
+CURLPROTO_RTMPTE
+CURLPROTO_RTMPTS
+CURLPROTO_RTSP
+CURLPROTO_SCP
+CURLPROTO_SFTP
+CURLPROTO_SMB
+CURLPROTO_SMTP
+CURLPROTO_SMTPS
+CURLPROTO_TELNET
+CURLPROTO_TFTP
+</pre>
<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">All protocols except for FILE, SCP and SMB. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; /* pass in the URL from an external source */
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
- <p class="level0">&nbsp; /* only allow redirects to HTTP and HTTPS URLs */
- &nbsp; curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
- &nbsp; CURLPROTO_HTTP | CURLPROTO_HTTPS);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; /* pass in the URL from an external source */
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+&nbsp;
+&nbsp; /* only allow redirects to HTTP and HTTPS URLs */
+&nbsp; curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
+&nbsp; CURLPROTO_HTTP | CURLPROTO_HTTPS);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.19.4, before then it would follow all protocols. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf
index f5e35275a..e702d150c 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index d00019b01..bcb162515 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -37,7 +37,17 @@ NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* tell it where we found the link to this place */
+ curl_easy_setopt(curl, CURLOPT_REFERER, "http://example.com/aboutme.html");
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
If built with HTTP support
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.html b/docs/libcurl/opts/CURLOPT_REFERER.html
index d9dcbc61d..733a8c840 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.html
+++ b/docs/libcurl/opts/CURLOPT_REFERER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_REFERER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,24 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_REFERER - set the HTTP referer header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set the Referer: header in the http request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* tell it where we found the link to this place */
+&nbsp; curl_easy_setopt(curl, CURLOPT_REFERER, "<a href="http://example.com/aboutme.html">http://example.com/aboutme.html</a>");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">If built with HTTP support <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if HTTP support is enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.pdf b/docs/libcurl/opts/CURLOPT_REFERER.pdf
index c8989263f..18d4035fe 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.pdf
+++ b/docs/libcurl/opts/CURLOPT_REFERER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index 06a393a74..4d34ed614 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -51,7 +51,8 @@ entries.
You can remove names from the DNS cache again, to stop providing these fake
resolves, by including a string in the linked list that uses the format
\&"-HOST:PORT". The host name must be prefixed with a dash, and the host name
-and port number must exactly match what was already added previously.
+and port number must exactly match what was already added previously. (Added in
+7.42.0)
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -75,7 +76,7 @@ if(curl) {
curl_slist_free_all(host);
.fi
.SH AVAILABILITY
-Added in 7.21.3
+Added in 7.21.3. Removal support added in 7.42.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.html b/docs/libcurl/opts/CURLOPT_RESOLVE.html
index f3bd34276..bec4d8514 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.html
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RESOLVE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,35 +52,39 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RESOLVE - provide custom host name to IP address resolves <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
- &nbsp; struct curl_slist *hosts);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
+&nbsp; struct curl_slist *hosts);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a linked list of strings with host name resolve information to use for requests with this handle. The linked list should be a fully valid list of <span Class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list.
<p class="level0">Each single name resolve string should be written using the format HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, PORT is the port number of the service where libcurl wants to connect to the HOST and ADDRESS is the numerical IP address. If libcurl is built to support IPv6, ADDRESS can of course be either IPv4 or IPv6 style addressing.
<p class="level0">This option effectively pre-populates the DNS cache with entries for the host+port pair so redirects and everything that operations against the HOST+PORT will instead use your provided ADDRESS. Addresses to set with <span Class="emphasis">CURL_RESOLVE</span> will not time-out from the DNS cache like ordinary entries.
-<p class="level0">You can remove names from the DNS cache again, to stop providing these fake resolves, by including a string in the linked list that uses the format "-HOST:PORT". The host name must be prefixed with a dash, and the host name and port number must exactly match what was already added previously. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">You can remove names from the DNS cache again, to stop providing these fake resolves, by including a string in the linked list that uses the format "-HOST:PORT". The host name must be prefixed with a dash, and the host name and port number must exactly match what was already added previously. (Added in 7.42.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl;
- struct curl_slist *host = NULL;
- host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
- <p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- <p class="level0">&nbsp; /* always cleanup */
- &nbsp; curl_easy_cleanup(curl);
- }
- <p class="level0">curl_slist_free_all(host);
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl;
+struct curl_slist *host = NULL;
+host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+&nbsp;
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp;
+&nbsp; /* always cleanup */
+&nbsp; curl_easy_cleanup(curl);
+}
+&nbsp;
+curl_slist_free_all(host);
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.21.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.21.3. Removal support added in 7.42.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_IPRESOLVE.html">CURLOPT_IPRESOLVE</a>, <a Class="manpage" href="./CURLOPT_DNS_CACHE_TIMEOUT.html">CURLOPT_DNS_CACHE_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.pdf b/docs/libcurl/opts/CURLOPT_RESOLVE.pdf
index ee832c9cf..7c1907718 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.pdf
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.html b/docs/libcurl/opts/CURLOPT_RESUME_FROM.html
index 223d95a28..a79652980 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.html
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RESUME_FROM man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,27 +52,31 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RESUME_FROM - set a point to resume transfer from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload).
<p class="level0">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file.
<p class="level0">If you need to resume a transfer beyond the 2GB limit, use <a Class="emphasis" href="./CURLOPT_RESUME_FROM_LARGE.html">CURLOPT_RESUME_FROM_LARGE</a> instead. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
- <p class="level0">&nbsp; /* resume upload at byte index 200 */
- &nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L);
- <p class="level0">&nbsp; /* ask for upload */
- &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
- <p class="level0">&nbsp; /* set total data amount to expect */
- &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
+&nbsp;
+&nbsp; /* resume upload at byte index 200 */
+&nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L);
+&nbsp;
+&nbsp; /* ask for upload */
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; /* set total data amount to expect */
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf b/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf
index 2cae610ad..5b1aad114 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html
index 122520bcc..20c956f3e 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RESUME_FROM_LARGE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,32 +52,38 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RESUME_FROM_LARGE - set a point to resume transfer from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM_LARGE,
- &nbsp; curl_off_t from);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM_LARGE,
+&nbsp; curl_off_t from);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a curl_off_t as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload).
<p class="level0">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_off_t resume_position = GET_IT_SOMEHOW;
- &nbsp; curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL;
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
- <p class="level0">&nbsp; /* resuming upload at this position, possibly beyond 2GB */
- &nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position);
- <p class="level0">&nbsp; /* ask for upload */
- &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
- <p class="level0">&nbsp; /* set total data amount to expect */
- &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_off_t resume_position = GET_IT_SOMEHOW;
+&nbsp; curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL;
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
+&nbsp;
+&nbsp; /* resuming upload at this position, possibly beyond 2GB */
+&nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position);
+&nbsp;
+&nbsp; /* ask for upload */
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; /* set total data amount to expect */
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.11.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf
index 2c7eb2d32..135317e7b 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html
index b1f53cad9..1b567d959 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RTSP_CLIENT_CSEQ man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RTSP_CLIENT_CSEQ - set the RTSP client CSEQ number <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long to set the the CSEQ number to issue for the next RTSP request. Useful if the application is resuming a previously broken connection. The CSEQ will increment from this new number henceforth. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf
index 3a6b03395..800e75be0 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html
index 87592b583..5db979d9f 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RTSP_REQUEST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RTSP_REQUEST - specify RTSP request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP enum values as a long in the <span Class="emphasis">request</span> argument. Unless noted otherwise, commands require the Session ID to be initialized.
<p class="level0"><a name="CURLRTSPREQOPTIONS"></a><span class="nroffip">CURL_RTSPREQ_OPTIONS</span>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf
index baec9cb27..11823540a 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html
index e90ff59e0..45a5d0602 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RTSP_SERVER_CSEQ man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RTSP_SERVER_CSEQ - set the RTSP server CSEQ number <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long to set the CSEQ number to expect for the next RTSP Server-&gt;Client request. <span Class="bold">NOTE</span>: this feature (listening for Server requests) is unimplemented. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf
index c64018d8d..9d520f98e 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf
@@ -67,12 +67,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:05+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:05+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:27+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:27+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a'/>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -81,9 +81,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091805+01'00')
-/ModDate(D:20150108091805+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081127+02'00')
+/ModDate(D:20150812081127+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 14
@@ -103,7 +103,7 @@ xref
0000001666 00000 n
trailer
<< /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<A4FA71C88590FFAE0FC8708BF479E6D2><A4FA71C88590FFAE0FC8708BF479E6D2>]
+/ID [<8C96E27F966D9A8794FCAEBDAE104CE8><8C96E27F966D9A8794FCAEBDAE104CE8>]
>>
startxref
3243
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html
index d3cf458cb..81fb65e66 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RTSP_SESSION_ID man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RTSP_SESSION_ID - set RTSP session ID <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as a parameter to set the value of the current RTSP Session ID for the handle. Useful for resuming an in-progress session. Once this value is set to any non-NULL value, libcurl will return <span Class="emphasis">CURLE_RTSP_SESSION_ERROR</span> if ID received from the server does not match. If unset (or set to NULL), libcurl will automatically set the ID the first time the server sets it in a response. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf
index 3b58f7cbe..be422bdbc 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html
index c35879bca..f65c70c9f 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RTSP_STREAM_URI man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RTSP_STREAM_URI - set RTSP stream URI <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the stream <span Class="emphasis">URI</span> to operate on by passing a char * . For example, a single session may be controlling <span Class="emphasis">rtsp://foo/twister/audio</span> and <span Class="emphasis">rtsp://foo/twister/video</span> and the application can switch to the appropriate stream using this option. If unset, libcurl will default to operating on generic server options by passing '*' in the place of the RTSP Stream URI. This option is distinct from <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a>. When working with RTSP, the <span Class="emphasis">CURLOPT_STREAM_URI(3)</span> indicates what URL to send to the server in the request header while the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> indicates where to make the connection to. (e.g. the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> for the above examples might be set to <span Class="emphasis">rtsp://foo/twister</span> <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">'*' <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf
index 79bbdc9c6..3756ff83b 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html
index f79c01f9b..46609fa39 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_RTSP_TRANSPORT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_RTSP_TRANSPORT - set RTSP Transport: header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_TRANSPORT,
- &nbsp; char *transport);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_TRANSPORT,
+&nbsp; char *transport);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * to tell libcurl what to pass for the Transport: header for this RTSP session. This is mainly a convenience method to avoid needing to set a custom Transport: header for every SETUP request. The application must set a Transport: header before issuing a SETUP request. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf
index d05ea247c..72be67ce6 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.html b/docs/libcurl/opts/CURLOPT_SASL_IR.html
index a703b4997..713412e36 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.html
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SASL_IR man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SASL_IR - enable sending initial response in first packet <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If the value is 1, curl will send the initial response to the server in the first authentication packet in order to reduce the number of ping pong requests. Only applicable to the following supporting SASL authentication mechanisms:
<p class="level0">* Login * Plain * GSSAPI * NTLM * OAuth 2.0
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.pdf b/docs/libcurl/opts/CURLOPT_SASL_IR.pdf
index 841d3a9fc..7b465043a 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.pdf
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.html b/docs/libcurl/opts/CURLOPT_SEEKDATA.html
index bd688d16e..4cf4d9826 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.html
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SEEKDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SEEKDATA - custom pointer passed to the seek callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Data <span Class="emphasis">pointer</span> to pass to the seek callback function. If you use the <a Class="emphasis" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a> option, this is the pointer you'll get as input. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">If you don't set this, NULL is passed to the callback. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.pdf b/docs/libcurl/opts/CURLOPT_SEEKDATA.pdf
index 9cbfdea34..ebe314d7f 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.pdf
@@ -68,12 +68,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:06+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:06+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:28+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:28+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -82,9 +82,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091806+01'00')
-/ModDate(D:20150108091806+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081128+02'00')
+/ModDate(D:20150812081128+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -105,7 +105,7 @@ xref
0000001688 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<DEB12F4A5B8693AE24F75ABA0F65967E><DEB12F4A5B8693AE24F75ABA0F65967E>]
+/ID [<0F85402D7DE02750E9EB57DA2274A941><0F85402D7DE02750E9EB57DA2274A941>]
>>
startxref
3265
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index 8747a1784..bf7e3045e 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -43,10 +43,13 @@ shown above.
This function gets called by libcurl to seek to a certain position in the
input stream and can be used to fast forward a file in a resumed upload
(instead of reading all uploaded bytes with the normal read
-function/callback). It is also called to rewind a stream when doing a HTTP PUT
-or POST with a multi-pass authentication method. The function shall work like
-fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument
-for \fIorigin\fP, although libcurl currently only passes SEEK_SET.
+function/callback). It is also called to rewind a stream when data has already
+been sent to the server and needs to be sent again. This may happen when doing
+a HTTP PUT or POST with a multi-pass authentication method, or when an
+existing HTTP connection is reused too late and the server closes the
+connection. The function shall work like fseek(3) or lseek(3) and it gets
+SEEK_SET, SEEK_CUR or SEEK_END as argument for \fIorigin\fP, although libcurl
+currently only passes SEEK_SET.
\fIuserp\fP is the pointer you set with \fICURLOPT_SEEKDATA(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html
index 6010e4913..6154cb5b2 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SEEKFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,19 +52,22 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SEEKFUNCTION - user callback for seeking in input stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">/* These are the return codes for the seek callbacks */
- #define CURL_SEEKFUNC_OK 0
- #define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */
- #define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
- &nbsp; libcurl might try other means instead */
- <p class="level0">int seek_callback(void *userp, curl_off_t offset, int origin);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+/* These are the return codes for the seek callbacks */
+&#35;define CURL_SEEKFUNC_OK 0
+&#35;define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */
+&#35;define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
+&nbsp; libcurl might try other means instead */
+&nbsp;
+int seek_callback(void *userp, curl_off_t offset, int origin);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
-<p class="level0">This function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication method. The function shall work like fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument for <span Class="emphasis">origin</span>, although libcurl currently only passes SEEK_SET.
+<p class="level0">This function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when data has already been sent to the server and needs to be sent again. This may happen when doing a HTTP PUT or POST with a multi-pass authentication method, or when an existing HTTP connection is reused too late and the server closes the connection. The function shall work like fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument for <span Class="emphasis">origin</span>, although libcurl currently only passes SEEK_SET.
<p class="level0"><span Class="emphasis">userp</span> is the pointer you set with <a Class="emphasis" href="./CURLOPT_SEEKDATA.html">CURLOPT_SEEKDATA</a>.
<p class="level0">The callback function must return <span Class="emphasis">CURL_SEEKFUNC_OK</span> on success, <span Class="emphasis">CURL_SEEKFUNC_FAIL</span> to cause the upload operation to fail or <span Class="emphasis">CURL_SEEKFUNC_CANTSEEK</span> to indicate that while the seek failed, libcurl is free to work around the problem if possible. The latter can sometimes be done by instead reading from the input or similar.
<p class="level0">If you forward the input arguments directly to fseek(3) or lseek(3), note that the data type for <span Class="emphasis">offset</span> is not the same as defined for curl_off_t on many systems! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf
index 712417b45..048f83f8c 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
new file mode 100644
index 000000000..116fdbe76
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SERVICE_NAME \- SPNEGO service name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
+.SH DESCRIPTION
+Pass a char * as parameter to a string holding the \fIname\fP of the
+service. The default service name is "HTTP". This option allows you to
+change it.
+..SH DEFAULT
+See above
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.43.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.html b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.html
new file mode 100644
index 000000000..3c6a495b1
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SERVICE_NAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SERVICE_NAME - SPNEGO service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name is "HTTP". This option allows you to change it.
+<p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.43.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf
new file mode 100644
index 000000000..21d32fbc1
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.html b/docs/libcurl/opts/CURLOPT_SHARE.html
index ae2082e32..8fbe21b92 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.html
+++ b/docs/libcurl/opts/CURLOPT_SHARE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SHARE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SHARE - specify share handle to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">share</span> handle as a parameter. The share handle must have been created by a previous call to <span Class="emphasis">curl_share_init(3)</span>. Setting this option, will make this curl handle use the data from the shared handle instead of keeping the data to itself. This enables several curl handles to share data. If the curl handles are used simultaneously in multiple threads, you <span Class="bold">MUST</span> use the locking methods in the share handle. See <span Class="emphasis">curl_share_setopt(3)</span> for details.
<p class="level0">If you add a share that is set to share cookies, your easy handle will use that cookie cache and get the cookie engine enabled. If you unshare an object that was using cookies (or change to another object that doesn't share cookies), the easy handle will get its cookie engine disabled.
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.pdf b/docs/libcurl/opts/CURLOPT_SHARE.pdf
index 8453bebbf..6a55d9cc8 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SHARE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html
index 692af0e8c..7a67c5543 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SOCKOPTDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SOCKOPTDATA - custom pointer to pass to sockopt callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the sockopt callback set with <a Class="emphasis" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf
index 5e4622fef..04881f796 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf
@@ -72,12 +72,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:06+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:06+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:28+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:28+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -86,9 +86,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091806+01'00')
-/ModDate(D:20150108091806+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081128+02'00')
+/ModDate(D:20150812081128+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -109,7 +109,7 @@ xref
0000001836 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<548B7B107771A11F62E135259C369E68><548B7B107771A11F62E135259C369E68>]
+/ID [<D908C4288394121E1AB0E7BC684E0476><D908C4288394121E1AB0E7BC684E0476>]
>>
startxref
3413
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html
index 07186d22b..211e800b5 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SOCKOPTFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,22 +52,26 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SOCKOPTFUNCTION - set callback for setting socket options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
- &nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
- &nbsp; CURLSOCKTYPE_LAST /* never use */
- } curlsocktype;
- <p class="level0">#define CURL_SOCKOPT_OK 0
- #define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
- &nbsp; CURLE_ABORTED_BY_CALLBACK */
- #define CURL_SOCKOPT_ALREADY_CONNECTED 2
- <p class="level0">int sockopt_callback(void *clientp,
- &nbsp; curl_socket_t curlfd,
- &nbsp; curlsocktype purpose);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
+&nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+&nbsp; CURLSOCKTYPE_LAST /* never use */
+} curlsocktype;
+&nbsp;
+&#35;define CURL_SOCKOPT_OK 0
+&#35;define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
+&nbsp; CURLE_ABORTED_BY_CALLBACK */
+&#35;define CURL_SOCKOPT_ALREADY_CONNECTED 2
+&nbsp;
+int sockopt_callback(void *clientp,
+&nbsp; curl_socket_t curlfd,
+&nbsp; curlsocktype purpose);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">When set, this callback function gets called by libcurl when the socket has been created, but before the connect call to allow applications to change specific socket options. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket:
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf
index 47958b9fa..5ccd41c70 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html
index 41a462e6a..0ee98e5fd 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SOCKS5_GSSAPI_NEC man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SOCKS5_GSSAPI_NEC - set socks proxy gssapi negotiation protection <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long set to 1 to enable or 0 to disable. As part of the gssapi negotiation a protection mode is negotiated. The <a href="http://www.ietf.org/rfc/rfc1961.txt">RFC 1961</a> says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not. If enabled, this option allows the unprotected exchange of the protection mode negotiation. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">? <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf
index 42a15abf9..b120db278 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html
index 32c43d396..ab2c47260 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SOCKS5_GSSAPI_SERVICE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SOCKS5_GSSAPI_SERVICE - proxy socks gssapi service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name for a SOCKS5 server is rcmd/server-fqdn. This option allows you to change it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf
index 74b6ccd29..878761c5e 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html
index 6b2874473..c7e306d93 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_AUTH_TYPES man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_AUTH_TYPES - set desired auth types for SFTP and SCP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long set to a bitmask consisting of one or more of CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT.
<p class="level0">Set <span Class="emphasis">CURLSSH_AUTH_ANY</span> to let libcurl pick a suitable one. Currently CURLSSH_AUTH_HOST has no effect. If CURLSSH_AUTH_AGENT is used, libcurl attempts to connect to ssh-agent or pageant and let the agent attempt the authentication. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf
index a719b923f..d148ccb12 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html
index 0bcbfddbc..ee8d2f5f4 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 - checksum of SSH server public key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
- &nbsp; char *md5);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
+&nbsp; char *md5);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * pointing to a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, and libcurl will reject the connection to the host unless the md5sums match. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf
index e04a2f8ea..093d2c26d 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html
index 9257ac70b..87ecc6ab3 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_KEYDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_KEYDATA - pointer to pass to the SSH key callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a void * as parameter. This <span Class="emphasis">pointer</span> will be passed along verbatim to the callback set with <a Class="emphasis" href="./CURLOPT_SSH_KEYFUNCTION.html">CURLOPT_SSH_KEYFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf
index 5c2b7dba2..b4b071338 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html
index bfc1920b9..3fe17c301 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_KEYFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,37 +52,42 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_KEYFUNCTION - callback for known host matching logic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">enum curl_khstat {
- &nbsp; CURLKHSTAT_FINE_ADD_TO_FILE,
- &nbsp; CURLKHSTAT_FINE,
- &nbsp; CURLKHSTAT_REJECT, /* reject the connection, return an error */
- &nbsp; CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right
- &nbsp; now so this causes a CURLE_DEFER error but
- &nbsp; otherwise the connection will be left intact
- &nbsp; etc */
- };
- <p class="level0">enum curl_khmatch {
- &nbsp; CURLKHMATCH_OK, /* match */
- &nbsp; CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
- &nbsp; CURLKHMATCH_MISSING, /* no matching host/key found */
- };
- <p class="level0">struct curl_khkey {
- &nbsp; const char *key; /* points to a zero-terminated string encoded with
- &nbsp; base64 if len is zero, otherwise to the "raw"
- &nbsp; data */
- &nbsp; size_t len;
- &nbsp; enum curl_khtype keytype;
- };
- <p class="level0">int ssh_keycallback(CURL *easy,
- &nbsp; const struct curl_khkey *knownkey,
- &nbsp; const struct curl_khkey *foundkey,
- &nbsp; enum curl_khmatch,
- &nbsp; void *clientp);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
- &nbsp; ssh_keycallback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+enum curl_khstat {
+&nbsp; CURLKHSTAT_FINE_ADD_TO_FILE,
+&nbsp; CURLKHSTAT_FINE,
+&nbsp; CURLKHSTAT_REJECT, /* reject the connection, return an error */
+&nbsp; CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right
+&nbsp; now so this causes a CURLE_DEFER error but
+&nbsp; otherwise the connection will be left intact
+&nbsp; etc */
+};
+&nbsp;
+enum curl_khmatch {
+&nbsp; CURLKHMATCH_OK, /* match */
+&nbsp; CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
+&nbsp; CURLKHMATCH_MISSING, /* no matching host/key found */
+};
+&nbsp;
+struct curl_khkey {
+&nbsp; const char *key; /* points to a zero-terminated string encoded with
+&nbsp; base64 if len is zero, otherwise to the "raw"
+&nbsp; data */
+&nbsp; size_t len;
+&nbsp; enum curl_khtype keytype;
+};
+&nbsp;
+int ssh_keycallback(CURL *easy,
+&nbsp; const struct curl_khkey *knownkey,
+&nbsp; const struct curl_khkey *foundkey,
+&nbsp; enum curl_khmatch,
+&nbsp; void *clientp);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
+&nbsp; ssh_keycallback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">It gets called when the known_host matching has been done, to allow the application to act and decide for libcurl how to proceed. The callback will only be called if <a Class="emphasis" href="./CURLOPT_SSH_KNOWNHOSTS.html">CURLOPT_SSH_KNOWNHOSTS</a> is also set.
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf
index cdbd6b6d9..0c0d9a5b1 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html
index b757f226a..107e4fdb3 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_KNOWNHOSTS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_KNOWNHOSTS - file name holding the SSH known hosts <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string holding the file name of the known_host file to use. The known_hosts file should use the OpenSSH file format as supported by libssh2. If this file is specified, libcurl will only accept connections with hosts that are known and present in that file, with a matching public key. Use <a Class="emphasis" href="./CURLOPT_SSH_KEYFUNCTION.html">CURLOPT_SSH_KEYFUNCTION</a> to alter the default behavior on host and key (mis)matching. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf
index 51cf58ae5..a7d37406f 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf
@@ -72,12 +72,12 @@ endobj
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:07+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:07+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:29+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:29+02:00</xmp:CreateDate>
<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e'/>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e'/>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -86,9 +86,9 @@ endobj
endstream
endobj
2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091807+01'00')
-/ModDate(D:20150108091807+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081129+02'00')
+/ModDate(D:20150812081129+02'00')
/Creator(groff version 1.22.3)>>endobj
xref
0 15
@@ -109,7 +109,7 @@ xref
0000002028 00000 n
trailer
<< /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<D884164C072563CB883565F84D010B8D><D884164C072563CB883565F84D010B8D>]
+/ID [<632DBB8A202AD6F3B6D28E25E2670178><632DBB8A202AD6F3B6D28E25E2670178>]
>>
startxref
3605
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html
index c425a1b61..22f172156 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_PRIVATE_KEYFILE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_PRIVATE_KEYFILE - set private key file for SSH auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
- &nbsp; char *filename);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
+&nbsp; char *filename);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * pointing to a <span Class="emphasis">filename</span> for your private key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa</span> if the HOME environment variable is set, and just "id_dsa" in the current directory if HOME is not set.
<p class="level0">If the file is password-protected, set the password with <a Class="emphasis" href="./CURLOPT_KEYPASSWD.html">CURLOPT_KEYPASSWD</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf
index ed2ddf901..49dc3c752 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html
index fc38e723c..a93245706 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSH_PUBLIC_KEYFILE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSH_PUBLIC_KEYFILE - set public key file for SSH auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
- &nbsp; char *filename);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
+&nbsp; char *filename);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * pointing to a <span Class="emphasis">filename</span> for your public key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa.pub</span> if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set.
<p class="level0">If an empty string is passed, libcurl will pass no public key to libssh2 which then tries to compute it from the private key, this is known to work when libssh2 1.4.0+ is linked against OpenSSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf
index c588db2cc..594cea019 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.html b/docs/libcurl/opts/CURLOPT_SSLCERT.html
index 8e3e4bc18..1cd1df15f 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.html
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLCERT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLCERT - set SSL client certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your client certificate. The default format is "P12" on Secure Transport and "PEM" on other engines, and can be changed with <a Class="emphasis" href="./CURLOPT_SSLCERTTYPE.html">CURLOPT_SSLCERTTYPE</a>.
<p class="level0">With NSS or Secure Transport, this can also be the nickname of the certificate you wish to authenticate with as it is named in the security database. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.pdf b/docs/libcurl/opts/CURLOPT_SSLCERT.pdf
index 7466794e4..2e7c5e077 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html
index 071eeb714..2ead1f7b2 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLCERTTYPE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,9 +52,9 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLCERTTYPE - specify type of the client SSL certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your certificate. Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for PKCS#12-encoded files. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your certificate. Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for PKCS&#35;12-encoded files. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">"PEM" <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf
index dd6660240..2a68e9f8c 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.html b/docs/libcurl/opts/CURLOPT_SSLENGINE.html
index 7263f402b..55ea3251a 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.html
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLENGINE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLENGINE - set SSL engine identifier <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used as the identifier for the crypto engine you want to use for your private key.
<p class="level0">If the crypto device cannot be loaded, <span Class="emphasis">CURLE_SSL_ENGINE_NOTFOUND</span> is returned. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf b/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf
index a9a478e67..3d05678d4 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html
index 75c3bbc89..69c87030e 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLENGINE_DEFAULT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLENGINE_DEFAULT - make SSL engine default <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long set to 1 as parameter. Sets the actual crypto engine as the default for (asymmetric) crypto operations.
<p class="level0">If the crypto device cannot be set, <span Class="emphasis">CURLE_SSL_ENGINE_SETFAILED</span> is returned. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf
index 506cb92f8..394ec8df2 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.html b/docs/libcurl/opts/CURLOPT_SSLKEY.html
index faabcf33f..b31d6ed0f 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.html
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLKEY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,10 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLKEY - specify private keyfile for TLS and SSL client cert <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your private key. The default format is "PEM" and can be changed with <a Class="emphasis" href="./CURLOPT_SSLKEYTYPE.html">CURLOPT_SSLKEYTYPE</a>.
-<p class="level0">(iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport. Secure Transport expects the private key to be already present in the keychain or PKCS#12 file containing the certificate. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">(iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport. Secure Transport expects the private key to be already present in the keychain or PKCS&#35;12 file containing the certificate. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.pdf b/docs/libcurl/opts/CURLOPT_SSLKEY.pdf
index fe27c02ba..8044a1515 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html
index be6b2bd88..a4bd97209 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLKEYTYPE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLKEYTYPE - set type of the private key file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your private key. Supported formats are "PEM", "DER" and "ENG".
<p class="level0">The format "ENG" enables you to load the private key from a crypto engine. In this case <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a> is used as an identifier passed to the engine. You have to set the crypto engine with <a Class="emphasis" href="./CURLOPT_SSLENGINE.html">CURLOPT_SSLENGINE</a>. "DER" format key file currently does not work because of a bug in OpenSSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf
index f5446ae4b..238bbe47f 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.html b/docs/libcurl/opts/CURLOPT_SSLVERSION.html
index efbca5b07..dedebc6c5 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.html
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSLVERSION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSLVERSION - set preferred TLS/SSL version <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter to control which version of SSL/TLS to attempt to use.
<p class="level0">Use one of the available defines for this purpose. The available options are:
@@ -69,16 +74,18 @@ p.roffit {
<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">CURL_SSLVERSION_DEFAULT <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- <p class="level0">&nbsp; /* ask libcurl to use TLS version 1.0 or later */
- &nbsp; curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp;
+&nbsp; /* ask libcurl to use TLS version 1.0 or later */
+&nbsp; curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">SSLv2 is disabled by default since 7.18.1. Other SSL versions availability may vary depending on which backend libcurl has been built to use.
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf b/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf
index ed73b15b1..713933c82 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html
index eab61ca27..afba26ab2 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_CIPHER_LIST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_CIPHER_LIST - specify ciphers to use for TLS <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char *, pointing to a zero terminated string holding the list of ciphers to use for the SSL connection. The list must be syntactically correct, it consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used, !, - and + can be used as operators.
<p class="level0">For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA', &acute;SHA1+DES&acute;, 'TLSv1' and 'DEFAULT'. The default list is normally set when you compile OpenSSL.
@@ -55,7 +60,7 @@ p.roffit {
<p class="level0">&nbsp;<a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a>
<p class="level0">For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5', &acute;rsa_aes_128_sha&acute;, etc. With NSS you don't add/remove ciphers. If one uses this option then all known ciphers are disabled and only those passed in are enabled.
<p class="level0">You'll find more details about the NSS cipher lists on this URL:
-<p class="level0">&nbsp;<a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives</a> <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">&nbsp;<a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html</a>&#35;Directives <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL, use internal default <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf
index 4b0f4d083..292a70f88 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 4873cdd1b..977cc12d4 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -38,7 +38,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.11.0. Only used with the OpenSSL backend.
+Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL
+backends not supported.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html
index 7c3995d2e..8531b4b45 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_CTX_DATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,13 +52,13 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_CTX_DATA - custom pointer passed to ssl_ctx callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Data <span Class="emphasis">pointer</span> to pass to the ssl context callback set by the option <a Class="emphasis" href="./CURLOPT_SSL_CTX_FUNCTION.html">CURLOPT_SSL_CTX_FUNCTION</a>, this is the pointer you'll get as third parameter. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.11.0. Only used with the OpenSSL backend. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL backends not supported. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_CTX_FUNCTION.html">CURLOPT_SSL_CTX_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf
index 8e9f8bd2c..efe4ce7b5 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index 1e8dbe5a4..e3e017078 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -22,7 +22,7 @@
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SSL_CTX_FUNCTION \- openssl specific callback to do SSL magic
+CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL or wolfSSL/CyaSSL
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -32,28 +32,28 @@ CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
ssl_ctx_callback);
.SH DESCRIPTION
-This option only works for libcurl powered by OpenSSL. If libcurl was built
-against another SSL library, this functionality is absent.
+This option only works for libcurl powered by OpenSSL or wolfSSL/CyaSSL. If
+libcurl was built against another SSL library this functionality is absent.
Pass a pointer to your callback function, which should match the prototype
shown above.
This callback function gets called by libcurl just before the initialization
-of a SSL connection after having processed all other SSL related options to
-give a last chance to an application to modify the behaviour of openssl's ssl
-initialization. The \fIsslctx\fP parameter is actually a pointer to an openssl
-\fISSL_CTX\fP. If an error is returned from the callback, no attempt to
-establish a connection is made and the perform operation will return the error
-code. Set the \fIuserptr\fP argument with the \fICURLOPT_SSL_CTX_DATA(3)\fP
-option.
+of an SSL connection after having processed all other SSL related options to
+give a last chance to an application to modify the behaviour of the SSL
+initialization. The \fIssl_ctx\fP parameter is actually a pointer to the SSL
+library's \fISSL_CTX\fP. If an error is returned from the callback no attempt
+to establish a connection is made and the perform operation will return the
+callback's error code. Set the \fIuserptr\fP argument with the
+\fICURLOPT_SSL_CTX_DATA(3)\fP option.
This function will get called on all new connections made to a server, during
the SSL negotiation. The SSL_CTX pointer will be a new one every time.
-To use this properly, a non-trivial amount of knowledge of the openssl
-libraries is necessary. For example, using this function allows you to use
-openssl callbacks to add additional validation code for certificates, and even
-to change the actual URI of a HTTPS request (example used in the lib509 test
+To use this properly, a non-trivial amount of knowledge of your SSL library
+is necessary. For example, you can use this function to call library-specific
+callbacks to add additional validation code for certificates, and even to
+change the actual URI of a HTTPS request (example used in the lib509 test
case). See also the example section for a replacement of the key, certificate
and trust file settings.
.SH DEFAULT
@@ -63,7 +63,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.11.0. Only supported when built with OpenSSL.
+Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL
+backends not supported.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html
index 2b0f441d1..add68193f 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_CTX_FUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -46,23 +51,25 @@ p.roffit {
</head><body>
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
-<p class="level0">CURLOPT_SSL_CTX_FUNCTION - openssl specific callback to do SSL magic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
- &nbsp; ssl_ctx_callback);
- </pre>
+<p class="level0">CURLOPT_SSL_CTX_FUNCTION - SSL context callback for OpenSSL or wolfSSL/CyaSSL <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
+&nbsp; ssl_ctx_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This option only works for libcurl powered by OpenSSL. If libcurl was built against another SSL library, this functionality is absent.
+<p class="level0">This option only works for libcurl powered by OpenSSL or wolfSSL/CyaSSL. If libcurl was built against another SSL library this functionality is absent.
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
-<p class="level0">This callback function gets called by libcurl just before the initialization of a SSL connection after having processed all other SSL related options to give a last chance to an application to modify the behaviour of openssl's ssl initialization. The <span Class="emphasis">sslctx</span> parameter is actually a pointer to an openssl <span Class="emphasis">SSL_CTX</span>. If an error is returned from the callback, no attempt to establish a connection is made and the perform operation will return the error code. Set the <span Class="emphasis">userptr</span> argument with the <a Class="emphasis" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a> option.
+<p class="level0">This callback function gets called by libcurl just before the initialization of an SSL connection after having processed all other SSL related options to give a last chance to an application to modify the behaviour of the SSL initialization. The <span Class="emphasis">ssl_ctx</span> parameter is actually a pointer to the SSL library's <span Class="emphasis">SSL_CTX</span>. If an error is returned from the callback no attempt to establish a connection is made and the perform operation will return the callback's error code. Set the <span Class="emphasis">userptr</span> argument with the <a Class="emphasis" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a> option.
<p class="level0">This function will get called on all new connections made to a server, during the SSL negotiation. The SSL_CTX pointer will be a new one every time.
-<p class="level0">To use this properly, a non-trivial amount of knowledge of the openssl libraries is necessary. For example, using this function allows you to use openssl callbacks to add additional validation code for certificates, and even to change the actual URI of a HTTPS request (example used in the lib509 test case). See also the example section for a replacement of the key, certificate and trust file settings. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">To use this properly, a non-trivial amount of knowledge of your SSL library is necessary. For example, you can use this function to call library-specific callbacks to add additional validation code for certificates, and even to change the actual URI of a HTTPS request (example used in the lib509 test case). See also the example section for a replacement of the key, certificate and trust file settings. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.11.0. Only supported when built with OpenSSL. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL backends not supported. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf
index af3d9593f..21b0570c1 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html
index 69d6df276..74751f661 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_ENABLE_ALPN man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_ENABLE_ALPN - enable ALPN <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This option enables/disables ALPN in the SSL handshake (if the SSL backend libcurl is built to use supports it), which can be used to negotiate http2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1, enabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf
index 96f158c90..c7d009e89 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html
index 3278e952f..24b817aa1 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_ENABLE_NPN man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_ENABLE_NPN - enable NPN <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This option enables/disables NPN in the SSL handshake (if the SSL backend libcurl is built to use supports it), which can be used to negotiate http2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1, enabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf
index 49767cbcc..9c5a9122d 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
new file mode 100644
index 000000000..31a05e68e
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_FALSESTART 3 "14 Feb 2015" "libcurl 7.41.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_FALSESTART \- enable TLS false start
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);
+.SH DESCRIPTION
+Pass a long as parameter set to 1 to enable or 0 to disable.
+
+This option determines whether libcurl should use false start during the TLS
+handshake. False start is a mode where a TLS client will start sending
+application data before verifying the server's Finished message, thus saving a
+round trip when performing a full handshake.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.42.0. This option is currently only supported by the NSS and
+Secure Transport (on iOS 7.0 or later, or OS X 10.9 or later) TLS backends.
+.SH RETURN VALUE
+Returns CURLE_OK if false start is supported by the SSL backend, otherwise
+returns CURLE_NOT_BUILT_IN.
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html
new file mode 100644
index 000000000..eb6b4a993
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_FALSESTART man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_FALSESTART - enable TLS false start <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter set to 1 to enable or 0 to disable.
+<p class="level0">This option determines whether libcurl should use false start during the TLS handshake. False start is a mode where a TLS client will start sending application data before verifying the server's Finished message, thus saving a round trip when performing a full handshake. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.42.0. This option is currently only supported by the NSS and Secure Transport (on iOS 7.0 or later, or OS X 10.9 or later) TLS backends. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if false start is supported by the SSL backend, otherwise returns CURLE_NOT_BUILT_IN. <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf
new file mode 100644
index 000000000..bca982c54
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index 09bcb96cf..0afd2fb6a 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -30,13 +30,25 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
.SH DESCRIPTION
Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
-\fICURLSSLOPT_ALLOW_BEAST\fP is the only supported bit and by setting this the
-user will tell libcurl to not attempt to use any workarounds for a security
-flaw in the SSL3 and TLS1.0 protocols. If this option isn't used or this bit
-is set to 0, the SSL layer libcurl uses may use a work-around for this flaw
-although it might cause interoperability problems with some (older) SSL
-implementations. WARNING: avoiding this work-around lessens the security, and
-by setting this option to 1 you ask for exactly that.
+\fICURLSSLOPT_ALLOW_BEAST\fP tells libcurl to not attempt to use any
+workarounds for a security flaw in the SSL3 and TLS1.0 protocols. If this
+option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a
+work-around for this flaw although it might cause interoperability problems
+with some (older) SSL implementations. WARNING: avoiding this work-around
+lessens the security, and by setting this option to 1 you ask for exactly that.
+This option is only supported for DarwinSSL, NSS and OpenSSL.
+
+Added in 7.44.0:
+
+\fICURLSSLOPT_NO_REVOKE\fP tells libcurl to disable certificate revocation
+checks for those SSL backends where such behavior is present. \fBCurrently this
+option is only supported for WinSSL (the native Windows SSL library), with an
+exception in the case of Windows' Untrusted Publishers blacklist which it seems
+can't be bypassed.\fP This option may have broader support to accommodate other
+SSL backends in the future.
+http://curl.haxx.se/docs/ssl-compared.html
+
+
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html
index f268c59fd..5b0a4a61a 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_OPTIONS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,10 +52,14 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_OPTIONS - set SSL behavior options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
-<p class="level0"><span Class="emphasis">CURLSSLOPT_ALLOW_BEAST</span> is the only supported bit and by setting this the user will tell libcurl to not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. If this option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a work-around for this flaw although it might cause interoperability problems with some (older) SSL implementations. WARNING: avoiding this work-around lessens the security, and by setting this option to 1 you ask for exactly that. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0"><span Class="emphasis">CURLSSLOPT_ALLOW_BEAST</span> tells libcurl to not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. If this option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a work-around for this flaw although it might cause interoperability problems with some (older) SSL implementations. WARNING: avoiding this work-around lessens the security, and by setting this option to 1 you ask for exactly that. This option is only supported for DarwinSSL, NSS and OpenSSL.
+<p class="level0">Added in 7.44.0:
+<p class="level0"><span Class="emphasis">CURLSSLOPT_NO_REVOKE</span> tells libcurl to disable certificate revocation checks for those SSL backends where such behavior is present. <span class="bold">Currently this option is only supported for WinSSL (the native Windows SSL library), with an exception in the case of Windows' Untrusted Publishers blacklist which it seems can't be bypassed.</span> This option may have broader support to accommodate other SSL backends in the future. <a href="http://curl.haxx.se/docs/ssl-compared.html">http://curl.haxx.se/docs/ssl-compared.html</a>
+<p class="level0">
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf
index c974eb5fb..b93f18d50 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html
index 0f3257230..c19e26453 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_SESSIONID_CACHE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_SESSIONID_CACHE - enable/disable use of the SSL session-ID cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SESSIONID_CACHE,
- &nbsp; long enabled);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SESSIONID_CACHE,
+&nbsp; long enabled);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set this to 1 to enable it. By default all transfers are done using the cache enabled. While nothing ever should get hurt by attempting to reuse SSL session-IDs, there seem to be or have been broken SSL implementations in the wild that may require you to disable this in order for you to succeed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf
index 467c624fe..516571875 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index ca39a09ec..fbf204286 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -66,7 +66,17 @@ also set to zero and cannot be overridden.
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+ /* Set the default value: strict name check please */
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
If built TLS enabled.
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html
index 7de718d16..7ca3c50eb 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_VERIFYHOST man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_VERIFYHOST - verify the certificate's name against host <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter specifying what to <span Class="emphasis">verify</span>.
<p class="level0">This option determines whether libcurl verifies that the server cert is for the server it is known as.
@@ -60,7 +65,19 @@ p.roffit {
<p class="level0">This option controls checking the server's certificate's claimed identity. The server could be lying. To control lying, see <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>. If libcurl is built against NSS and <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is zero, <a Class="emphasis" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a> is also set to zero and cannot be overridden. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">2 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp;
+&nbsp; /* Set the default value: strict name check please */
+&nbsp; curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if TLS is supported, and CURLE_UNKNOWN_OPTION if not.
<p class="level0">If 1 is set as argument, <span Class="emphasis">CURLE_BAD_FUNCTION_ARGUMENT</span> is returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf
index 3ba7cfd0f..48dad4776 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index f2bad7464..81bb59397 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -62,7 +62,17 @@ By default, curl assumes a value of 1.
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+ /* Set the default value: strict certificate check please */
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
If built TLS enabled.
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html
index 7b9a56c05..b978b55c9 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_SSL_VERIFYPEER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_SSL_VERIFYPEER - verify the peer's SSL certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter to enable or disable.
<p class="level0">This option determines whether curl verifies the authenticity of the peer's certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't.
@@ -57,7 +62,19 @@ p.roffit {
<p class="level0">WARNING: disabling verification of the certificate allows bad guys to man-in-the-middle the communication without you knowing it. Disabling verification makes the communication insecure. Just having encryption on a transfer is not enough as you cannot be sure that you are communicating with the correct end-point. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">By default, curl assumes a value of 1. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp;
+&nbsp; /* Set the default value: strict certificate check please */
+&nbsp; curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf
index 2bba56302..c5adbd26a 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
new file mode 100644
index 000000000..d7f011a48
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "04 Dec 2014" "libcurl 7.40.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);
+.SH DESCRIPTION
+Pass a long as parameter set to 1 to enable or 0 to disable.
+
+This option determines whether libcurl verifies the status of the server cert
+using the "Certificate Status Request" TLS extension (aka. OCSP stapling).
+
+Note that if this option is enabled but the server does not support the TLS
+extension, the verification will fail.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.41.0. This option is currently only supported by the OpenSSL, GnuTLS
+and NSS TLS backends.
+.SH RETURN VALUE
+Returns CURLE_OK if OCSP stapling is supported by the SSL backend, otherwise
+returns CURLE_NOT_BUILT_IN.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLOPT_SSL_VERIFYPEER "(3), "
+.BR CURLOPT_CAINFO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html
new file mode 100644
index 000000000..eb3ed2afb
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_VERIFYSTATUS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_VERIFYSTATUS - verify the certificate's status <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter set to 1 to enable or 0 to disable.
+<p class="level0">This option determines whether libcurl verifies the status of the server cert using the "Certificate Status Request" TLS extension (aka. OCSP stapling).
+<p class="level0">Note that if this option is enabled but the server does not support the TLS extension, the verification will fail. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.41.0. This option is currently only supported by the OpenSSL, GnuTLS and NSS TLS backends. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if OCSP stapling is supported by the SSL backend, otherwise returns CURLE_NOT_BUILT_IN. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf
new file mode 100644
index 000000000..9e026209b
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf
@@ -0,0 +1,111 @@
+%PDF-1.4
+%Çì¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+xœ­Vën£Fþï§8ÚþX¼2†áÚV•œ„tÝ:Æ5$j”T±' »À›æöUúŽ=sÁÄIV«J•%0Ì̹|ç;ßá,BÁ?}_Ý>Ü6 n*AßV÷p˜â†@¼Hoê ß?d$!½Gg‹i<O—I2]žG‹ÉÉE’ÓO“J!] ( ‰çàÉt=0ÆrÍ’ïmbÓ0T ¶K<ÒÇÁ¥q–\ìj«m],yÖ<-ÞV›vhÚNHÂøWeoºþ+ý­÷m‡!q‚ïøî<ʨ-± ¶,BÌ›„®HÝtF\LæɳqoÊ%nÈ´¥ÓH¼ï!³-âX>˜Ô–ËÿVV‡ü_†èß²|fð:¿y‚öŽÃŠ×mþu•µü½DÃ&®´ayÄí°hšÞ6¦XT/´Y»mTÏó·‡`ÝMê‘@îK.fñ<™$ûù"<]®?äåªØ®9ü,
+y .äî±Ýv *0VnxYè+¹î²r]ðÑÛe~߃Æ,‡XÞw@x ¨Ê[™CÂÀufWß$Lû 3OÏ>Ž’£ÅdžNâ™&
+uOÞH~ží¢Iàî@‡L…5°Éêìž·¼ÌÚ
+ /¼Ì® UGðq7â™HÒ’)Ð[(aø yÞå ¨–€µ0xŸ—¼Ç;Žd¨¡È¯Àš)ÔñDÖ_qƒ J#Ë ÕzâõŘÀ%¾¦¡ðäOxNR ¶MŽ)ˆïŽvTƒdÇS×`hº.øÖ7í;¬}|GÛ¿[^6"ô+#ûœˆ’¹kS “«!‘ñX$ RÒ—ƬBoí]ÖB.Âî“Ç
+¾5\©
+Û7¶mŸšôi‹²ÃºBʪ…f»ÙTµÚ¤"rÇéÚ 3•CìHn×P"Š ˆ ó¢P$Dëoj[5nzjøÄó0HÍŽ¼ ¯ûeGìÙãá‰æŸ‹Ê&47S§ëßñ™DWË“í1_¯Nûîèy+"õ}Ÿí*fX¯‘äîb˜/t“!`?Ùž¯1mb¹¡dLœB¼sh3â[^§”Gñô…v`Ì!±Ïc\².×YƒuÝÔU[­ª¢ù>¦é;úD^'§cq›Çs6‚äßoWo๗Fôçøt>ºv¾ÙÎiŸe¢ïUDZÆÚ ‚7FF(v’¨>ŸC?>°zžK;L¦ãÃÉt’^ìCƒEdNìA
+àñz¨ä%øÄAûÒý~ÀίyÙOP•xÑd ¢FE¼á%Êê~-·eT\˜%‰F|õÙq§¨×¼\7u÷Û€v¥g‹œ)Cõ¨1žžEZb_ƒ‹ƒ_M~Tˆv[ë±-ãßEïÉÈèU
+¾ UDÊrO8a—)Ý*×#¨„>æ ‡Z¹‘¥Ót(—†r=‹‡Ž¥ä)]¥’xq6™CÜOqr¤ËÉŒ¼56^Âa$Qãi÷\|A®×ãíc¬> žÀ±I7ºå·Êhߺô<«cÑk‹ó(Z¼´H‰÷ßM'³“xß~ 2¶û€èmáG“OP:Mf£/p7¯ˆðÐD,ÇÀÆ8æ+°q<ILLPa(Jàï_Gc»|endstream
+endobj
+6 0 obj
+1230
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 10 0 R
+/Font 11 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 13 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+10 0 obj
+<</R7
+7 0 R>>
+endobj
+11 0 obj
+<</R9
+9 0 R/R8
+8 0 R>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 12 0 R/Subtype/Type1>>
+endobj
+12 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+13 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:31+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:31+02:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:86430c7e-78d5-11f0-0000-75a6345ca275'/>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+
+
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081131+02'00')
+/ModDate(D:20150812081131+02'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 14
+0000000000 65535 f
+0000001554 00000 n
+0000003365 00000 n
+0000001495 00000 n
+0000001335 00000 n
+0000000015 00000 n
+0000001315 00000 n
+0000001619 00000 n
+0000001794 00000 n
+0000001729 00000 n
+0000001660 00000 n
+0000001690 00000 n
+0000001876 00000 n
+0000001942 00000 n
+trailer
+<< /Size 14 /Root 1 0 R /Info 2 0 R
+/ID [<C60007D8815D1C73E5022698D69DF45E><C60007D8815D1C73E5022698D69DF45E>]
+>>
+startxref
+3519
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index 67e95017b..8ef1a32a6 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -36,7 +36,16 @@ stderr
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+FILE *filep = fopen("dump", "wb");
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+ curl_easy_setopt(curl, CURLOPT_STDERR, filep);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.html b/docs/libcurl/opts/CURLOPT_STDERR.html
index 50fcd9373..52fcb4d9a 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.html
+++ b/docs/libcurl/opts/CURLOPT_STDERR.html
@@ -4,15 +4,20 @@
<title>CURLOPT_STDERR man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,23 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_STDERR - redirect stderr to another stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a FILE * as parameter. Tell libcurl to use this <span Class="emphasis">stream</span> instead of stderr when showing the progress meter and displaying <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">stderr <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+FILE *filep = fopen("dump", "wb");
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; curl_easy_setopt(curl, CURLOPT_STDERR, filep);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.pdf b/docs/libcurl/opts/CURLOPT_STDERR.pdf
index 18a1a52ae..7d01fcb32 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.pdf
+++ b/docs/libcurl/opts/CURLOPT_STDERR.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index daf3df4a2..941cc4882 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -38,7 +38,23 @@ disable keepalive probes
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable TCP keep-alive for this transfer */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+
+ /* keep-alive idle time to 120 seconds */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+
+ /* interval time between keep-alive probes: 60 seconds */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Added in 7.25.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html
index 765594e12..0d0887837 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TCP_KEEPALIVE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,30 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TCP_KEEPALIVE - enable TCP keep-alive probing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and frequency of these probes can be controlled by the <a Class="emphasis" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a> and <a Class="emphasis" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a> options, provided the operating system supports them. Set to 0 (default behavior) to disable keepalive probes <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* enable TCP keep-alive for this transfer */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+&nbsp;
+&nbsp; /* keep-alive idle time to 120 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+&nbsp;
+&nbsp; /* interval time between keep-alive probes: 60 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf
index 3f60961a9..2e55c29f3 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index 1724824f2..d60a3dffb 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -36,7 +36,23 @@ operating systems support this option.
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable TCP keep-alive for this transfer */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+
+ /* set keep-alive idle time to 120 seconds */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+
+ /* interval time between keep-alive probes: 60 seconds */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Added in 7.25.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html
index a575947f7..d0018825e 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TCP_KEEPIDLE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,30 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TCP_KEEPIDLE - set TCP keep-alive idle time wait <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. Sets the <span Class="emphasis">delay</span>, in seconds, that the operating system will wait while the connection is idle before sending keepalive probes. Not all operating systems support this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">? <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* enable TCP keep-alive for this transfer */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+&nbsp;
+&nbsp; /* set keep-alive idle time to 120 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+&nbsp;
+&nbsp; /* interval time between keep-alive probes: 60 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf
index cdcc1793f..20ee61a7c 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index e4bcf7ff4..42bc0b4ed 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -34,7 +34,23 @@ option. (Added in 7.25.0)
.SH DEFAULT
.SH PROTOCOLS
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable TCP keep-alive for this transfer */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+
+ /* keep-alive idle time to 120 seconds */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+
+ /* interval time between keep-alive probes: 60 seconds */
+ curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html
index b7579fb2e..712bc38a9 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TCP_KEEPINTVL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,30 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TCP_KEEPINTVL - set TCP keep-alive interval <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long. Sets the interval, in seconds, that the operating system will wait between sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* enable TCP keep-alive for this transfer */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+&nbsp;
+&nbsp; /* keep-alive idle time to 120 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+&nbsp;
+&nbsp; /* interval time between keep-alive probes: 60 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf
index 7982babe0..e2370c429 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.html b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.html
index 7f2ba4988..421b5c6f7 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.html
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TCP_NODELAY man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TCP_NODELAY - set the TCP_NODELAY option <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long specifying whether the TCP_NODELAY option is to be set or cleared (1 = set, 0 = clear). The option is cleared by default. This will have no effect after the connection has been established.
<p class="level0">Setting this option will disable TCP's Nagle algorithm. The purpose of this algorithm is to try to minimize the number of small packets on the network (where "small packets" means TCP segments less than the Maximum Segment Size (MSS) for the network).
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf
index 7277e8e5e..9be0e8105 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html
index ac5007649..5dbd6e186 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TELNETOPTIONS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TELNETOPTIONS - custom telnet options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS, &nbsp; struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Provide a pointer to a curl_slist with variables to pass to the telnet negotiations. The variables should be in the format &lt;option=value&gt;. libcurl supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET standard for details. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf
index ade0176ad..14a5259c0 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html
index 080d61274..a85374071 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TFTP_BLKSIZE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TFTP_BLKSIZE - TFTP block size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Specify <span Class="emphasis">blocksize</span> to use for TFTP data transmission. Valid range as per <a href="http://www.ietf.org/rfc/rfc2348.txt">RFC 2348</a> is 8-65464 bytes. The default of 512 bytes will be used if this option is not specified. The specified block size will only be used pending support by the remote server. If the server does not return an option acknowledgement or returns an option acknowledgement with no blksize, the default of 512 bytes will be used. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">512 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf
index ef1d0fd72..95591f919 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.html b/docs/libcurl/opts/CURLOPT_TIMECONDITION.html
index dedeed008..a6ee991c6 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.html
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TIMECONDITION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TIMECONDITION - select condition for a time request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter. This defines how the <a Class="emphasis" href="./CURLOPT_TIMEVALUE.html">CURLOPT_TIMEVALUE</a> time value is treated. You can set this parameter to <span Class="emphasis">CURL_TIMECOND_IFMODSINCE</span> or <span Class="emphasis">CURL_TIMECOND_IFUNMODSINCE</span>.
<p class="level0">The last modification time of a file is not always known and in such instances this feature will have no effect even if the given time condition would not have been met. <span Class="emphasis">curl_easy_getinfo(3)</span> with the <span Class="emphasis">CURLINFO_CONDITION_UNMET</span> option can be used after a transfer to learn if a zero-byte successful "transfer" was due to this condition not matching. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf b/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf
index 7c4f1b653..16b32aea7 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 41e05690c..6440ffea2 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -50,7 +50,17 @@ Default timeout is 0 (zero) which means it never times out during transfer.
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* complete within 20 seconds */
+ curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.html b/docs/libcurl/opts/CURLOPT_TIMEOUT.html
index 1b1b78426..a8bcfa667 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.html
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TIMEOUT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TIMEOUT - set maximum time the request is allowed to take <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter containing <span Class="emphasis">timeout</span> - the maximum time in seconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option may cause libcurl to use the SIGALRM signal to timeout system calls.
<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set.
@@ -55,7 +60,19 @@ p.roffit {
<p class="level0">Since this puts a hard limit for how long time a request is allowed to take, it has limited use in dynamic use cases with varying transfer times. You are then advised to explore <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> or using <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> to implement your own timeout logic. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">Default timeout is 0 (zero) which means it never times out during transfer. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete within 20 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf
index 958c7621e..3ebfb10d2 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index fe9a3cd37..3727133b3 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -54,7 +54,17 @@ Default timeout is 0 (zero) which means it never times out during transfer.
.SH PROTOCOLS
All
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* complete within 20000 milliseconds */
+ curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 20000L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html
index 383bff383..0063aa4bf 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TIMEOUT_MS man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TIMEOUT_MS - set maximum time the request is allowed to take <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter containing <span Class="emphasis">timeout</span> - the maximum time in milliseconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option may cause libcurl to use the SIGALRM signal to timeout system calls.
<p class="level0">If libcurl is built to use the standard system name resolver, that portion of the transfer will still use full-second resolution for timeouts with a minimum timeout allowed of one second.
@@ -56,7 +61,19 @@ p.roffit {
<p class="level0">Since this puts a hard limit for how long time a request is allowed to take, it has limited use in dynamic use cases with varying transfer times. You are then advised to explore <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> or using <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> to implement your own timeout logic. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">Default timeout is 0 (zero) which means it never times out during transfer. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete within 20000 milliseconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 20000L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf
index f5ced77f4..6897c0882 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.html b/docs/libcurl/opts/CURLOPT_TIMEVALUE.html
index 14df2f14b..f2f5dad4d 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.html
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TIMEVALUE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TIMEVALUE - set time value for conditional <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long <span Class="emphasis">val</span> as parameter. This should be the time counted as seconds since 1 Jan 1970, and the time will be used in a condition as specified with <a Class="emphasis" href="./CURLOPT_TIMECONDITION.html">CURLOPT_TIMECONDITION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf b/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf
index 9265a93dd..416318b60 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html
index 3af10cbc6..76c5650b5 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TLSAUTH_PASSWORD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TLSAUTH_PASSWORD - password to use for TLS authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should point to the zero terminated password to use for the TLS authentication method specified with the <a Class="emphasis" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <a Class="emphasis" href="./CURLOPT_TLSAUTH_USERNAME.html">CURLOPT_TLSAUTH_USERNAME</a> option also be set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf
index 631361aa4..753542a13 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html
index 7a969795a..02c9a9683 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TLSAUTH_TYPE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TLSAUTH_TYPE - set TLS authentication methods <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use for TLS authentication.
<p class="level0">
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf
index e8549b0a2..3c794dc49 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html
index 2d8fcf6a0..7ebb829cb 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TLSAUTH_USERNAME man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TLSAUTH_USERNAME - user name to use for TLS authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should point to the zero terminated username to use for the TLS authentication method specified with the <a Class="emphasis" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <a Class="emphasis" href="./CURLOPT_TLSAUTH_PASSWORD.html">CURLOPT_TLSAUTH_PASSWORD</a> option also be set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf
index c4be60cb0..35301a96e 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html
index 7a9518788..443edee6e 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TRANSFERTEXT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TRANSFERTEXT - request a text based transfer for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A parameter set to 1 tells the library to use ASCII mode for FTP transfers, instead of the default binary transfer. For win32 systems it does not set the stdout to binary mode. This option can be usable when transferring text data between systems with different views on certain characters, such as newlines or similar.
<p class="level0">libcurl does not do a complete ASCII conversion when doing ASCII transfers over FTP. This is a known limitation/flaw that nobody has rectified. libcurl simply sets the mode to ASCII and performs a standard transfer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf
index a7fceec9f..357118575 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html
index 5cb1e39f7..0b2790411 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html
@@ -4,15 +4,20 @@
<title>CURLOPT_TRANSFER_ENCODING man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_TRANSFER_ENCODING - ask for HTTP Transfer Encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long set to 1 to <span Class="emphasis">enable</span> or 0 to disable.
<p class="level0">Adds a request for compressed Transfer Encoding in the outgoing HTTP request. If the server supports this and so desires, it can respond with the HTTP response sent using a compressed Transfer-Encoding that will be automatically uncompressed by libcurl on reception.
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf
index f135e559e..4a01a70a6 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html
index 17fcef6ee..1b5044933 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_UNIX_SOCKET_PATH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_UNIX_SOCKET_PATH - set Unix domain socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Enables the use of Unix domain sockets as connection endpoint and sets the path to <span Class="emphasis">path</span>. If <span Class="emphasis">path</span> is NULL, then Unix domain sockets are disabled. An empty string will result in an error at some point, it will not disable use of Unix domain sockets.
<p class="level0">When enabled, cURL will connect to the Unix domain socket instead of establishing a TCP connection to a host. Since no TCP connection is created, cURL does not need to resolve the DNS hostname in the URL.
@@ -56,20 +61,20 @@ p.roffit {
<p class="level0">Default is NULL, meaning that no Unix domain sockets are used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All protocols except for file:// and FTP are supported in theory. HTTP, IMAP, POP3 and SMTP should in particular work (including their SSL/TLS variants). <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
<p class="level0">Given that you have an nginx server running, listening on /tmp/nginx.sock, you can request a HTTP resource with:
-<p class="level0"><pre>
-<p class="level0">&nbsp; curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
- &nbsp; curl_easy_setopt(curl_handle, CURLOPT_URL, "<a href="http://localhost/">http://localhost/</a>");
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
+&nbsp; curl_easy_setopt(curl_handle, CURLOPT_URL, "<a href="http://localhost/">http://localhost/</a>");
+</pre>
<p class="level0">
<p class="level0">If you are on Linux and somehow have a need for paths larger than 107 bytes, you could use the proc filesystem to bypass the limitation:
-<p class="level0"><pre>
-<p class="level0">&nbsp; int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
- &nbsp; char path[108];
- &nbsp; snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd);
- &nbsp; curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path);
- &nbsp; /* Be sure to keep dirfd valid until you discard the handle */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
+&nbsp; char path[108];
+&nbsp; snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd);
+&nbsp; curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path);
+&nbsp; /* Be sure to keep dirfd valid until you discard the handle */
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Since 7.40.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf
index 200b6232f..1bd7f8fd6 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html
index 9d16b0f33..1e04eb009 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_UNRESTRICTED_AUTH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_UNRESTRICTED_AUTH - send credentials to other hosts too <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNRESTRICTED_AUTH,
- &nbsp; long goahead);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNRESTRICTED_AUTH,
+&nbsp; long goahead);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A long parameter set to 1 tells libcurl it can continue to send authentication (user+password) credentials when following locations, even when hostname changed. This option is meaningful only when setting <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf
index 56e223b7b..d7493b4ce 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.html b/docs/libcurl/opts/CURLOPT_UPLOAD.html
index f0c399f46..afbf48a25 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.html
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_UPLOAD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,30 +52,35 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_UPLOAD - enable data upload <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">The long parameter <span Class="emphasis">upload</span> set to 1 tells the library to prepare for and perform an upload. The <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> and <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> or <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> options are also interesting for uploads. If the protocol is HTTP, uploading means using the PUT request unless you tell libcurl otherwise.
<p class="level0">Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual.
<p class="level0">If you use PUT to a HTTP 1.1 server, you can upload data without knowing the size before starting the transfer if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. With HTTP 1.0 or without chunked transfer, you must specify the size. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, default is download <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; /* we want to use our own read function */
- &nbsp; curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
- <p class="level0">&nbsp; /* enable uploading */
- &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
- <p class="level0">&nbsp; /* specify target */
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/to/newfile">ftp://example.com/dir/to/newfile</a>");
- <p class="level0">&nbsp; /* now specify which pointer to pass to our callback */
- &nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
- <p class="level0">&nbsp; /* Set the size of the file to upload */
- &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
- <p class="level0">&nbsp; /* Now run off and do what you've been told! */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; /* we want to use our own read function */
+&nbsp; curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+&nbsp;
+&nbsp; /* enable uploading */
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; /* specify target */
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/to/newfile">ftp://example.com/dir/to/newfile</a>");
+&nbsp;
+&nbsp; /* now specify which pointer to pass to our callback */
+&nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
+&nbsp;
+&nbsp; /* Set the size of the file to upload */
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
+&nbsp;
+&nbsp; /* Now run off and do what you've been told! */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.pdf b/docs/libcurl/opts/CURLOPT_UPLOAD.pdf
index 4b3a45f73..f9897196b 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.pdf
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index bf192282c..6e4824a9f 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -284,6 +284,29 @@ escape it by providing it as backslash and its ASCII value in hexadecimal:
.SH DEFAULT
There is no default URL. If this option isn't set, no transfer can be
performed.
+.SH SECURITY CONCERNS
+Applications may at times find it convenient to allow users to specify URLs
+for various purposes and that string would then end up fed to this option.
+
+Getting a URL from an external untrusted party will bring reasons for several
+security concerns:
+
+If you have an application that runs as or in a server application, getting an
+unfiltered URL can easily trick your application to access a local resource
+instead of a remote. Protecting yourself against localhost accesses is very
+hard when accepting user provided URLs.
+
+Such custom URLs can also access other ports than you planned as port numbers
+are part of the regular URL format. The combination of a local host and a
+custom port number can allow external users to play tricks with your local
+services.
+
+Accepting external URLs may also use other protocols than http:// or other
+common ones. Restrict what accept with \fICURLOPT_PROTOCOLS(3)\fP.
+
+User provided URLs can also be made to point to sites that redirect further on
+(possibly to other protocols too). Consider your
+\fICURLOPT_FOLLOWLOCATION(3)\fP and \fICURLOPT_REDIR_PROTOCOLS(3)\fP settings.
.SH PROTOCOLS
All
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_URL.html b/docs/libcurl/opts/CURLOPT_URL.html
index 0f7558241..3bb2e1901 100644
--- a/docs/libcurl/opts/CURLOPT_URL.html
+++ b/docs/libcurl/opts/CURLOPT_URL.html
@@ -4,15 +4,20 @@
<title>CURLOPT_URL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_URL - provide the URL to use in the request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass in a pointer to the <span Class="emphasis">URL</span> to work with. The parameter should be a char * to a zero terminated string which must be URL-encoded in the following format:
<p class="level0">scheme://host:port/path
@@ -135,16 +140,23 @@ p.roffit {
<p class="level1">For more information about the individual components of a LDAP URL please see <a href="http://www.ietf.org/rfc/rfc4516.txt">RFC 4516</a>.
<p class="level0"><a name="RTMP"></a><span class="nroffip">RTMP</span>
<p class="level1">There's no official URL spec for RTMP so libcurl uses the URL syntax supported by the underlying librtmp library. It has a syntax where it wants a traditional URL, followed by a space and a series of space-separated name=value pairs.
-<p class="level1">While space is not typically a "legal" letter, libcurl accepts them. When a user wants to pass in a '#' (hash) character it will be treated as a fragment and get cut off by libcurl if provided literally. You will instead have to escape it by providing it as backslash and its ASCII value in hexadecimal: "\23". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">There is no default URL. If this option isn't set, no transfer can be performed. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level1">While space is not typically a "legal" letter, libcurl accepts them. When a user wants to pass in a '&#35;' (hash) character it will be treated as a fragment and get cut off by libcurl if provided literally. You will instead have to escape it by providing it as backslash and its ASCII value in hexadecimal: "\23". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">There is no default URL. If this option isn't set, no transfer can be performed. <a name="SECURITY"></a><h2 class="nroffsh">SECURITY CONCERNS</h2>
+<p class="level0">Applications may at times find it convenient to allow users to specify URLs for various purposes and that string would then end up fed to this option.
+<p class="level0">Getting a URL from an external untrusted party will bring reasons for several security concerns:
+<p class="level0">If you have an application that runs as or in a server application, getting an unfiltered URL can easily trick your application to access a local resource instead of a remote. Protecting yourself against localhost accesses is very hard when accepting user provided URLs.
+<p class="level0">Such custom URLs can also access other ports than you planned as port numbers are part of the regular URL format. The combination of a local host and a custom port number can allow external users to play tricks with your local services.
+<p class="level0">Accepting external URLs may also use other protocols than http:// or other common ones. Restrict what accept with <a Class="emphasis" href="./CURLOPT_PROTOCOLS.html">CURLOPT_PROTOCOLS</a>.
+<p class="level0">User provided URLs can also be made to point to sites that redirect further on (possibly to other protocols too). Consider your <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> and <a Class="emphasis" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a> settings. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">POP3 and SMTP were added in 7.31.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_URL.pdf b/docs/libcurl/opts/CURLOPT_URL.pdf
index 7867b41fc..7ac38c4ca 100644
--- a/docs/libcurl/opts/CURLOPT_URL.pdf
+++ b/docs/libcurl/opts/CURLOPT_URL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index 13ccbd48d..4d7036d8e 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -37,7 +37,16 @@ NULL, no User-Agent: header is used by default.
.SH PROTOCOLS
HTTP, HTTPS
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0");
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
As long as HTTP is supported
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.html b/docs/libcurl/opts/CURLOPT_USERAGENT.html
index e418ec54a..71447441c 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.html
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.html
@@ -4,15 +4,20 @@
<title>CURLOPT_USERAGENT man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,12 +52,23 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_USERAGENT - set HTTP user-agent header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set the User-Agent: header in the HTTP request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">NULL, no User-Agent: header is used by default. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">HTTP, HTTPS <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">As long as HTTP is supported <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.pdf b/docs/libcurl/opts/CURLOPT_USERAGENT.pdf
index d3ef56883..04aed42e7 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.pdf
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.html b/docs/libcurl/opts/CURLOPT_USERNAME.html
index e0d459ded..003656500 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.html
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.html
@@ -4,15 +4,20 @@
<title>CURLOPT_USERNAME man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,12 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_USERNAME - user name to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
- &nbsp; char *username);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
+&nbsp; char *username);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer.
<p class="level0"><a Class="bold" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> sets the user name to be used in protocol authentication. You should not use this option together with the (older) <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> option.
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.pdf b/docs/libcurl/opts/CURLOPT_USERNAME.pdf
index 904f8b0b7..92a373598 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.pdf
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.html b/docs/libcurl/opts/CURLOPT_USERPWD.html
index c1c3394d4..3e4a9557b 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.html
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.html
@@ -4,15 +4,20 @@
<title>CURLOPT_USERPWD man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_USERPWD - user name and password to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, pointing to a zero terminated login details string for the connection. The format of which is: [user name]:[password].
<p class="level0">When using Kerberos V5 authentication with a Windows based server, you should specify the user name part with the domain name in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial part of the authentication handshake may fail.
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.pdf b/docs/libcurl/opts/CURLOPT_USERPWD.pdf
index 5e5209b8b..23c3c6642 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.pdf
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.html b/docs/libcurl/opts/CURLOPT_USE_SSL.html
index 22916b028..5f849dc78 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.html
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.html
@@ -4,15 +4,20 @@
<title>CURLOPT_USE_SSL man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_USE_SSL - request using SSL / TLS for the transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a long using one of the values from below, to make libcurl use your desired <span Class="emphasis">level</span> of SSL for the transfer.
<p class="level0">These are all protocols that start out plain text and get "upgraded" to SSL using the STARTTLS command.
@@ -62,16 +67,18 @@ p.roffit {
<p class="level1">Require SSL for all communication or fail with <span Class="emphasis">CURLE_USE_SSL_FAILED</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">CURLUSESSL_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">FTP, SMTP, POP3, IMAP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/file.ext">ftp://example.com/dir/file.ext</a>");
- <p class="level0">&nbsp; /* require use of SSL for this, or fail */
- &nbsp; curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/file.ext">ftp://example.com/dir/file.ext</a>");
+&nbsp;
+&nbsp; /* require use of SSL for this, or fail */
+&nbsp; curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Added in 7.11.0. This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants were known as CURLFTPSSL_* <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.pdf b/docs/libcurl/opts/CURLOPT_USE_SSL.pdf
index b2c54422c..4c36937b2 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.pdf
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.html b/docs/libcurl/opts/CURLOPT_VERBOSE.html
index 402a394d4..48bdf3d0f 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.html
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.html
@@ -4,15 +4,20 @@
<title>CURLOPT_VERBOSE man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,23 +52,25 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_VERBOSE - set verbose mode on/off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set the <span Class="emphasis">onoff</span> parameter to 1 to make the library display a lot of verbose information about its operations on this <span Class="emphasis">handle</span>. Very useful for libcurl and/or protocol debugging and understanding. The verbose information will be sent to stderr, or the stream set with <a Class="emphasis" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>.
<p class="level0">You hardly ever want this set in production use, you will almost always want this when you debug/report problems.
<p class="level0">To also get all the protocol data sent and received, consider using the <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">0, meaning disabled. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* ask libcurl to show us the verbose output */
- &nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* ask libcurl to show us the verbose output */
+&nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.pdf b/docs/libcurl/opts/CURLOPT_VERBOSE.pdf
index 5250d4ec7..955988234 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.pdf
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html
index 1abff184f..801372352 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html
@@ -4,15 +4,20 @@
<title>CURLOPT_WILDCARDMATCH man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_WILDCARDMATCH - enable directory wildcard transfers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Set <span Class="emphasis">onoff</span> to 1 if you want to transfer multiple files according to a file name pattern. The pattern can be specified as part of the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> option, using an fnmatch-like pattern (Shell Pattern Matching) in the last part of URL (file name).
<p class="level0">By default, libcurl uses its internal wildcard matching implementation. You can provide your own matching function by the <a Class="emphasis" href="./CURLOPT_FNMATCH_FUNCTION.html">CURLOPT_FNMATCH_FUNCTION</a> option.
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf
index c0d81dc6e..c0cd14110 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index be07c769a..0b7a50287 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, 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
@@ -46,12 +46,14 @@ By default, this is a FILE * to stdout.
Used for all protocols.
.SH EXAMPLE
A common technique is to use the write callback to store the incoming data
-into a dynamically growing allocated buffer, and then this CURLOPT_WRITEDATA
-is used to point to a struct or the buffer to store data in. Like in the
-getinmemory example: http://curl.haxx.se/libcurl/c/getinmemory.html
+into a dynamically growing allocated buffer, and then this
+\fICURLOPT_WRITEDATA(3)\fP is used to point to a struct or the buffer to store
+data in. Like in the getinmemory example:
+http://curl.haxx.se/libcurl/c/getinmemory.html
.SH AVAILABILITY
Available in all libcurl versions. This option was formerly known as
-\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA\fP was introduced in 7.9.7.
+\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA(3)\fP was introduced in
+7.9.7.
.SH RETURN VALUE
This will return CURLE_OK.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.html b/docs/libcurl/opts/CURLOPT_WRITEDATA.html
index fb9dff9e9..e1adf779a 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.html
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_WRITEDATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,15 +52,15 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_WRITEDATA - custom pointer passed to the write callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">A data <span Class="emphasis">pointer</span> to pass to the write callback. If you use the <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> option, this is the pointer you'll get in that callback's 4th argument. If you don't use a write callback, you must make <span Class="emphasis">pointer</span> a 'FILE *' (cast to 'void *') as libcurl will pass this to <span Class="emphasis">fwrite(3)</span> when writing data.
<p class="level0">The internal <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> will write the data to the FILE * given with this option, or to stdout if this option hasn't been set.
<p class="level0">If you're using libcurl as a win32 DLL, you <span Class="bold">MUST</span> use the <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> if you set this option or you will experience crashes. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
<p class="level0">By default, this is a FILE * to stdout. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
<p class="level0">Used for all protocols. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">A common technique is to use the write callback to store the incoming data into a dynamically growing allocated buffer, and then this CURLOPT_WRITEDATA is used to point to a struct or the buffer to store data in. Like in the getinmemory example: <a href="http://curl.haxx.se/libcurl/c/getinmemory.html">http://curl.haxx.se/libcurl/c/getinmemory.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Available in all libcurl versions. This option was formerly known as <span Class="emphasis">CURLOPT_FILE</span>, the name <span Class="emphasis">CURLOPT_WRITEDATA</span> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">A common technique is to use the write callback to store the incoming data into a dynamically growing allocated buffer, and then this <a Class="emphasis" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a> is used to point to a struct or the buffer to store data in. Like in the getinmemory example: <a href="http://curl.haxx.se/libcurl/c/getinmemory.html">http://curl.haxx.se/libcurl/c/getinmemory.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Available in all libcurl versions. This option was formerly known as <span Class="emphasis">CURLOPT_FILE</span>, the name <a Class="emphasis" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
<p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <span Class="manpage"> </span> <p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf b/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf
index 2751caa02..508d74bfe 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html
index 94bb1b245..a54dcd412 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_WRITEFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,11 +52,13 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_WRITEFUNCTION - set callback for writing received data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback);
+</pre>
<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
<p class="level0">This callback function gets called by libcurl as soon as there is data received that needs to be saved. <span Class="emphasis">ptr</span> points to the delivered data, and the size of that data is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>.
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf
index 42c2177d0..c847f1ec1 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.html b/docs/libcurl/opts/CURLOPT_XFERINFODATA.html
index 3c61c0e0d..e779438ff 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.html
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.html
@@ -4,15 +4,20 @@
<title>CURLOPT_XFERINFODATA man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_XFERINFODATA - custom pointer passed to the progress callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the progress callback set with <a Class="emphasis" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a>.
<p class="level0">This is an alias for <a Class="emphasis" href="./CURLOPT_PROGRESSDATA.html">CURLOPT_PROGRESSDATA</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf b/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf
index 87d1cfd65..a3088de35 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html
index 12435a163..01b000bf0 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html
@@ -4,15 +4,20 @@
<title>CURLOPT_XFERINFOFUNCTION man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_XFERINFOFUNCTION - callback to progress meter function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">int progress_callback(void *clientp, &nbsp; curl_off_t dltotal, &nbsp; curl_off_t dlnow, &nbsp; curl_off_t ultotal, &nbsp; curl_off_t ulnow);
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFOFUNCTION, progress_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above.
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf
index 56d3a0da4..07dc41a9c 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf
Binary files differ
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html
index 0658c30dd..95604a39e 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html
@@ -4,15 +4,20 @@
<title>CURLOPT_XOAUTH2_BEARER man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -47,7 +52,7 @@ p.roffit {
<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
<p class="level0">CURLOPT_XOAUTH2_BEARER - specify OAuth 2.0 access token <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt;
+<p class="level0">&#35;include &lt;curl/curl.h&gt;
<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
<p class="level0">Pass a char * as parameter, which should point to the zero terminated OAuth 2.0 Bearer Access Token for use with IMAP, POP3 and SMTP servers that support the OAuth 2.0 Authorization Framework.
<p class="level0">Note: The user name used to generate the Bearer Token should be supplied via the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf
index b8406cf6b..84dec609b 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf
Binary files differ
diff --git a/docs/libcurl/opts/Makefile.am b/docs/libcurl/opts/Makefile.am
index eac785c93..4865b41b5 100644
--- a/docs/libcurl/opts/Makefile.am
+++ b/docs/libcurl/opts/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -66,8 +66,9 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_NEW_DIRECTORY_PERMS.3 CURLOPT_NEW_FILE_PERMS.3 \
CURLOPT_NOBODY.3 CURLOPT_NOPROGRESS.3 CURLOPT_NOPROXY.3 \
CURLOPT_NOSIGNAL.3 CURLOPT_OPENSOCKETDATA.3 \
- CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 CURLOPT_PORT.3 \
- CURLOPT_POST.3 CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3 \
+ CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 \
+ CURLOPT_PINNEDPUBLICKEY.3 CURLOPT_PORT.3 CURLOPT_POST.3 \
+ CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3 \
CURLOPT_POSTFIELDSIZE_LARGE.3 CURLOPT_POSTQUOTE.3 CURLOPT_POSTREDIR.3 \
CURLOPT_PREQUOTE.3 CURLOPT_PRIVATE.3 CURLOPT_PROGRESSDATA.3 \
CURLOPT_PROGRESSFUNCTION.3 CURLOPT_PROTOCOLS.3 CURLOPT_PROXY.3 \
@@ -90,17 +91,18 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_SSLCERT.3 CURLOPT_SSLCERTTYPE.3 CURLOPT_SSL_CIPHER_LIST.3 \
CURLOPT_SSL_CTX_DATA.3 CURLOPT_SSL_CTX_FUNCTION.3 \
CURLOPT_SSL_ENABLE_ALPN.3 CURLOPT_SSL_ENABLE_NPN.3 CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSLKEY.3 CURLOPT_SSLKEYTYPE.3 \
- CURLOPT_SSL_OPTIONS.3 CURLOPT_SSL_SESSIONID_CACHE.3 \
- CURLOPT_SSL_VERIFYHOST.3 CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSLVERSION.3 \
- CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 CURLOPT_TCP_KEEPIDLE.3 \
- CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 CURLOPT_TELNETOPTIONS.3 \
- CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 CURLOPT_TIMEOUT.3 \
- CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 CURLOPT_TLSAUTH_PASSWORD.3 \
- CURLOPT_TLSAUTH_TYPE.3 CURLOPT_TLSAUTH_USERNAME.3 \
- CURLOPT_TRANSFER_ENCODING.3 CURLOPT_TRANSFERTEXT.3 \
- CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 CURLOPT_URL.3 \
- CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3 \
+ CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSL_FALSESTART.3 CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEYTYPE.3 CURLOPT_SSL_OPTIONS.3 \
+ CURLOPT_SSL_SESSIONID_CACHE.3 CURLOPT_SSL_VERIFYHOST.3 \
+ CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSL_VERIFYSTATUS.3 \
+ CURLOPT_SSLVERSION.3 CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 \
+ CURLOPT_TCP_KEEPIDLE.3 CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 \
+ CURLOPT_TELNETOPTIONS.3 CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 \
+ CURLOPT_TIMEOUT.3 CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 \
+ CURLOPT_TLSAUTH_PASSWORD.3 CURLOPT_TLSAUTH_TYPE.3 \
+ CURLOPT_TLSAUTH_USERNAME.3 CURLOPT_TRANSFER_ENCODING.3 \
+ CURLOPT_TRANSFERTEXT.3 CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 \
+ CURLOPT_URL.3 CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3 \
CURLOPT_USE_SSL.3 CURLOPT_VERBOSE.3 CURLOPT_WILDCARDMATCH.3 \
CURLOPT_WRITEDATA.3 CURLOPT_WRITEFUNCTION.3 CURLOPT_XFERINFODATA.3 \
CURLOPT_XFERINFOFUNCTION.3 CURLOPT_XOAUTH2_BEARER.3 \
@@ -110,8 +112,10 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLMOPT_MAX_TOTAL_CONNECTIONS.3 CURLMOPT_PIPELINING.3 \
CURLMOPT_PIPELINING_SERVER_BL.3 CURLMOPT_PIPELINING_SITE_BL.3 \
CURLMOPT_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3 \
- CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3
-
+ CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3 \
+ CURLOPT_PATH_AS_IS.3 CURLOPT_PROXY_SERVICE_NAME.3 \
+ CURLOPT_SERVICE_NAME.3 CURLOPT_PIPEWAIT.3 CURLMOPT_PUSHDATA.3 \
+ CURLMOPT_PUSHFUNCTION.3
HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html \
@@ -166,8 +170,8 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html \
CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html \
CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html \
- CURLOPT_PASSWORD.html CURLOPT_PORT.html CURLOPT_POST.html \
- CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html \
+ CURLOPT_PASSWORD.html CURLOPT_PINNEDPUBLICKEY.html CURLOPT_PORT.html \
+ CURLOPT_POST.html CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html \
CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html \
CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html \
CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html \
@@ -193,11 +197,11 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html \
CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html \
CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html \
- CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSLKEY.html \
- CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html \
+ CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSL_FALSESTART.html \
+ CURLOPT_SSLKEY.html CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html \
CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html \
- CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSLVERSION.html \
- CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html \
+ CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSL_VERIFYSTATUS.html \
+ CURLOPT_SSLVERSION.html CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html \
CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html \
CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html \
CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html \
@@ -217,7 +221,10 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html \
CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html \
CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html \
- CURLOPT_UNIX_SOCKET_PATH.html
+ CURLOPT_UNIX_SOCKET_PATH.html CURLOPT_PATH_AS_IS.html \
+ CURLOPT_PROXY_SERVICE_NAME.html CURLOPT_SERVICE_NAME.html \
+ CURLOPT_PIPEWAIT.html CURLMOPT_PUSHDATA.html \
+ CURLMOPT_PUSHFUNCTION.html
PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf \
@@ -269,8 +276,9 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf \
CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf \
CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf \
- CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf CURLOPT_PORT.pdf \
- CURLOPT_POST.pdf CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf \
+ CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf \
+ CURLOPT_PINNEDPUBLICKEY.pdf CURLOPT_PORT.pdf CURLOPT_POST.pdf \
+ CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf \
CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf \
CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf \
CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf \
@@ -296,30 +304,33 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf \
CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf \
CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf \
- CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSLKEY.pdf \
- CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf \
+ CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSL_FALSESTART.pdf \
+ CURLOPT_SSLKEY.pdf CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf \
CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf \
- CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf \
- CURLOPT_TCP_KEEPALIVE.pdf CURLOPT_TCP_KEEPIDLE.pdf \
- CURLOPT_TCP_KEEPINTVL.pdf CURLOPT_TCP_NODELAY.pdf \
- CURLOPT_TELNETOPTIONS.pdf CURLOPT_TFTP_BLKSIZE.pdf \
- CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf CURLOPT_TIMEOUT_MS.pdf \
- CURLOPT_TIMEVALUE.pdf CURLOPT_TLSAUTH_PASSWORD.pdf \
- CURLOPT_TLSAUTH_TYPE.pdf CURLOPT_TLSAUTH_USERNAME.pdf \
- CURLOPT_TRANSFER_ENCODING.pdf CURLOPT_TRANSFERTEXT.pdf \
- CURLOPT_UNRESTRICTED_AUTH.pdf CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf \
- CURLOPT_USERAGENT.pdf CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf \
- CURLOPT_USE_SSL.pdf CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf \
- CURLOPT_WRITEDATA.pdf CURLOPT_WRITEFUNCTION.pdf \
- CURLOPT_XFERINFODATA.pdf CURLOPT_XFERINFOFUNCTION.pdf \
- CURLOPT_XOAUTH2_BEARER.pdf CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
+ CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSL_VERIFYSTATUS.pdf \
+ CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf CURLOPT_TCP_KEEPALIVE.pdf \
+ CURLOPT_TCP_KEEPIDLE.pdf CURLOPT_TCP_KEEPINTVL.pdf \
+ CURLOPT_TCP_NODELAY.pdf CURLOPT_TELNETOPTIONS.pdf \
+ CURLOPT_TFTP_BLKSIZE.pdf CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf \
+ CURLOPT_TIMEOUT_MS.pdf CURLOPT_TIMEVALUE.pdf \
+ CURLOPT_TLSAUTH_PASSWORD.pdf CURLOPT_TLSAUTH_TYPE.pdf \
+ CURLOPT_TLSAUTH_USERNAME.pdf CURLOPT_TRANSFER_ENCODING.pdf \
+ CURLOPT_TRANSFERTEXT.pdf CURLOPT_UNRESTRICTED_AUTH.pdf \
+ CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf CURLOPT_USERAGENT.pdf \
+ CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf CURLOPT_USE_SSL.pdf \
+ CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf CURLOPT_WRITEDATA.pdf \
+ CURLOPT_WRITEFUNCTION.pdf CURLOPT_XFERINFODATA.pdf \
+ CURLOPT_XFERINFOFUNCTION.pdf CURLOPT_XOAUTH2_BEARER.pdf \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf \
CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf \
CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf \
CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf \
CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf \
CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf \
- CURLOPT_UNIX_SOCKET_PATH.pdf
+ CURLOPT_UNIX_SOCKET_PATH.pdf CURLOPT_PATH_AS_IS.pdf \
+ CURLOPT_PROXY_SERVICE_NAME.pdf CURLOPT_SERVICE_NAME.pdf \
+ CURLOPT_PIPEWAIT.pdf CURLMOPT_PUSHDATA.pdf CURLMOPT_PUSHFUNCTION.pdf
CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
diff --git a/docs/libcurl/opts/Makefile.in b/docs/libcurl/opts/Makefile.in
index cb2f5d294..f6cd895ac 100644
--- a/docs/libcurl/opts/Makefile.in
+++ b/docs/libcurl/opts/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -36,7 +36,17 @@
#
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -100,8 +110,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl/opts
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -179,6 +188,7 @@ man3dir = $(mandir)/man3
am__installdirs = "$(DESTDIR)$(man3dir)"
MANS = $(man_MANS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -237,7 +247,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -290,6 +300,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -306,7 +317,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -411,8 +421,9 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_NEW_DIRECTORY_PERMS.3 CURLOPT_NEW_FILE_PERMS.3 \
CURLOPT_NOBODY.3 CURLOPT_NOPROGRESS.3 CURLOPT_NOPROXY.3 \
CURLOPT_NOSIGNAL.3 CURLOPT_OPENSOCKETDATA.3 \
- CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 CURLOPT_PORT.3 \
- CURLOPT_POST.3 CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3 \
+ CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 \
+ CURLOPT_PINNEDPUBLICKEY.3 CURLOPT_PORT.3 CURLOPT_POST.3 \
+ CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3 \
CURLOPT_POSTFIELDSIZE_LARGE.3 CURLOPT_POSTQUOTE.3 CURLOPT_POSTREDIR.3 \
CURLOPT_PREQUOTE.3 CURLOPT_PRIVATE.3 CURLOPT_PROGRESSDATA.3 \
CURLOPT_PROGRESSFUNCTION.3 CURLOPT_PROTOCOLS.3 CURLOPT_PROXY.3 \
@@ -435,17 +446,18 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_SSLCERT.3 CURLOPT_SSLCERTTYPE.3 CURLOPT_SSL_CIPHER_LIST.3 \
CURLOPT_SSL_CTX_DATA.3 CURLOPT_SSL_CTX_FUNCTION.3 \
CURLOPT_SSL_ENABLE_ALPN.3 CURLOPT_SSL_ENABLE_NPN.3 CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSLKEY.3 CURLOPT_SSLKEYTYPE.3 \
- CURLOPT_SSL_OPTIONS.3 CURLOPT_SSL_SESSIONID_CACHE.3 \
- CURLOPT_SSL_VERIFYHOST.3 CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSLVERSION.3 \
- CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 CURLOPT_TCP_KEEPIDLE.3 \
- CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 CURLOPT_TELNETOPTIONS.3 \
- CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 CURLOPT_TIMEOUT.3 \
- CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 CURLOPT_TLSAUTH_PASSWORD.3 \
- CURLOPT_TLSAUTH_TYPE.3 CURLOPT_TLSAUTH_USERNAME.3 \
- CURLOPT_TRANSFER_ENCODING.3 CURLOPT_TRANSFERTEXT.3 \
- CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 CURLOPT_URL.3 \
- CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3 \
+ CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSL_FALSESTART.3 CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEYTYPE.3 CURLOPT_SSL_OPTIONS.3 \
+ CURLOPT_SSL_SESSIONID_CACHE.3 CURLOPT_SSL_VERIFYHOST.3 \
+ CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSL_VERIFYSTATUS.3 \
+ CURLOPT_SSLVERSION.3 CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 \
+ CURLOPT_TCP_KEEPIDLE.3 CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 \
+ CURLOPT_TELNETOPTIONS.3 CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 \
+ CURLOPT_TIMEOUT.3 CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 \
+ CURLOPT_TLSAUTH_PASSWORD.3 CURLOPT_TLSAUTH_TYPE.3 \
+ CURLOPT_TLSAUTH_USERNAME.3 CURLOPT_TRANSFER_ENCODING.3 \
+ CURLOPT_TRANSFERTEXT.3 CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 \
+ CURLOPT_URL.3 CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3 \
CURLOPT_USE_SSL.3 CURLOPT_VERBOSE.3 CURLOPT_WILDCARDMATCH.3 \
CURLOPT_WRITEDATA.3 CURLOPT_WRITEFUNCTION.3 CURLOPT_XFERINFODATA.3 \
CURLOPT_XFERINFOFUNCTION.3 CURLOPT_XOAUTH2_BEARER.3 \
@@ -455,7 +467,10 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLMOPT_MAX_TOTAL_CONNECTIONS.3 CURLMOPT_PIPELINING.3 \
CURLMOPT_PIPELINING_SERVER_BL.3 CURLMOPT_PIPELINING_SITE_BL.3 \
CURLMOPT_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3 \
- CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3
+ CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3 \
+ CURLOPT_PATH_AS_IS.3 CURLOPT_PROXY_SERVICE_NAME.3 \
+ CURLOPT_SERVICE_NAME.3 CURLOPT_PIPEWAIT.3 CURLMOPT_PUSHDATA.3 \
+ CURLMOPT_PUSHFUNCTION.3
HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html \
@@ -510,8 +525,8 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html \
CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html \
CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html \
- CURLOPT_PASSWORD.html CURLOPT_PORT.html CURLOPT_POST.html \
- CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html \
+ CURLOPT_PASSWORD.html CURLOPT_PINNEDPUBLICKEY.html CURLOPT_PORT.html \
+ CURLOPT_POST.html CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html \
CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html \
CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html \
CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html \
@@ -537,11 +552,11 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html \
CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html \
CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html \
- CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSLKEY.html \
- CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html \
+ CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSL_FALSESTART.html \
+ CURLOPT_SSLKEY.html CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html \
CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html \
- CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSLVERSION.html \
- CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html \
+ CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSL_VERIFYSTATUS.html \
+ CURLOPT_SSLVERSION.html CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html \
CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html \
CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html \
CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html \
@@ -561,7 +576,10 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html \
CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html \
CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html \
- CURLOPT_UNIX_SOCKET_PATH.html
+ CURLOPT_UNIX_SOCKET_PATH.html CURLOPT_PATH_AS_IS.html \
+ CURLOPT_PROXY_SERVICE_NAME.html CURLOPT_SERVICE_NAME.html \
+ CURLOPT_PIPEWAIT.html CURLMOPT_PUSHDATA.html \
+ CURLMOPT_PUSHFUNCTION.html
PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf \
@@ -613,8 +631,9 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf \
CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf \
CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf \
- CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf CURLOPT_PORT.pdf \
- CURLOPT_POST.pdf CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf \
+ CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf \
+ CURLOPT_PINNEDPUBLICKEY.pdf CURLOPT_PORT.pdf CURLOPT_POST.pdf \
+ CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf \
CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf \
CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf \
CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf \
@@ -640,30 +659,33 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf \
CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf \
CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf \
- CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSLKEY.pdf \
- CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf \
+ CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSL_FALSESTART.pdf \
+ CURLOPT_SSLKEY.pdf CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf \
CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf \
- CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf \
- CURLOPT_TCP_KEEPALIVE.pdf CURLOPT_TCP_KEEPIDLE.pdf \
- CURLOPT_TCP_KEEPINTVL.pdf CURLOPT_TCP_NODELAY.pdf \
- CURLOPT_TELNETOPTIONS.pdf CURLOPT_TFTP_BLKSIZE.pdf \
- CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf CURLOPT_TIMEOUT_MS.pdf \
- CURLOPT_TIMEVALUE.pdf CURLOPT_TLSAUTH_PASSWORD.pdf \
- CURLOPT_TLSAUTH_TYPE.pdf CURLOPT_TLSAUTH_USERNAME.pdf \
- CURLOPT_TRANSFER_ENCODING.pdf CURLOPT_TRANSFERTEXT.pdf \
- CURLOPT_UNRESTRICTED_AUTH.pdf CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf \
- CURLOPT_USERAGENT.pdf CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf \
- CURLOPT_USE_SSL.pdf CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf \
- CURLOPT_WRITEDATA.pdf CURLOPT_WRITEFUNCTION.pdf \
- CURLOPT_XFERINFODATA.pdf CURLOPT_XFERINFOFUNCTION.pdf \
- CURLOPT_XOAUTH2_BEARER.pdf CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
+ CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSL_VERIFYSTATUS.pdf \
+ CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf CURLOPT_TCP_KEEPALIVE.pdf \
+ CURLOPT_TCP_KEEPIDLE.pdf CURLOPT_TCP_KEEPINTVL.pdf \
+ CURLOPT_TCP_NODELAY.pdf CURLOPT_TELNETOPTIONS.pdf \
+ CURLOPT_TFTP_BLKSIZE.pdf CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf \
+ CURLOPT_TIMEOUT_MS.pdf CURLOPT_TIMEVALUE.pdf \
+ CURLOPT_TLSAUTH_PASSWORD.pdf CURLOPT_TLSAUTH_TYPE.pdf \
+ CURLOPT_TLSAUTH_USERNAME.pdf CURLOPT_TRANSFER_ENCODING.pdf \
+ CURLOPT_TRANSFERTEXT.pdf CURLOPT_UNRESTRICTED_AUTH.pdf \
+ CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf CURLOPT_USERAGENT.pdf \
+ CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf CURLOPT_USE_SSL.pdf \
+ CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf CURLOPT_WRITEDATA.pdf \
+ CURLOPT_WRITEFUNCTION.pdf CURLOPT_XFERINFODATA.pdf \
+ CURLOPT_XFERINFOFUNCTION.pdf CURLOPT_XOAUTH2_BEARER.pdf \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf \
CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf \
CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf \
CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf \
CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf \
CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf \
- CURLOPT_UNIX_SOCKET_PATH.pdf
+ CURLOPT_UNIX_SOCKET_PATH.pdf CURLOPT_PATH_AS_IS.pdf \
+ CURLOPT_PROXY_SERVICE_NAME.pdf CURLOPT_SERVICE_NAME.pdf \
+ CURLOPT_PIPEWAIT.pdf CURLMOPT_PUSHDATA.pdf CURLMOPT_PUSHFUNCTION.pdf
CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
@@ -685,7 +707,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/libcurl/opts/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign docs/libcurl/opts/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -906,6 +927,8 @@ uninstall-man: uninstall-man3
ps ps-am tags-am uninstall uninstall-am uninstall-man \
uninstall-man3
+.PRECIOUS: Makefile
+
html: $(HTMLPAGES)
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index b8b0838b0..4021c7607 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -118,6 +118,7 @@ CURLE_SSL_CRL_BADFILE 7.19.0
CURLE_SSL_ENGINE_INITFAILED 7.12.3
CURLE_SSL_ENGINE_NOTFOUND 7.9.3
CURLE_SSL_ENGINE_SETFAILED 7.9.3
+CURLE_SSL_INVALIDCERTSTATUS 7.41.0
CURLE_SSL_ISSUER_ERROR 7.19.0
CURLE_SSL_PEER_CERTIFICATE 7.8 7.17.1
CURLE_SSL_PINNEDPUBKEYNOTMATCH 7.39.0
@@ -283,6 +284,8 @@ CURLMOPT_MAX_TOTAL_CONNECTIONS 7.30.0
CURLMOPT_PIPELINING 7.16.0
CURLMOPT_PIPELINING_SERVER_BL 7.30.0
CURLMOPT_PIPELINING_SITE_BL 7.30.0
+CURLMOPT_PUSHDATA 7.44.0
+CURLMOPT_PUSHFUNCTION 7.44.0
CURLMOPT_SOCKETDATA 7.15.4
CURLMOPT_SOCKETFUNCTION 7.15.4
CURLMOPT_TIMERDATA 7.16.0
@@ -430,7 +433,9 @@ CURLOPT_PASSWDDATA 7.4.2 7.11.1 7.15.5
CURLOPT_PASSWDFUNCTION 7.4.2 7.11.1 7.15.5
CURLOPT_PASSWORD 7.19.1
CURLOPT_PASV_HOST 7.12.1 7.16.0 7.15.5
+CURLOPT_PATH_AS_IS 7.42.0
CURLOPT_PINNEDPUBLICKEY 7.39.0
+CURLOPT_PIPEWAIT 7.43.0
CURLOPT_PORT 7.1
CURLOPT_POST 7.1
CURLOPT_POST301 7.17.1 7.19.1
@@ -452,6 +457,7 @@ CURLOPT_PROXYPORT 7.1
CURLOPT_PROXYTYPE 7.10
CURLOPT_PROXYUSERNAME 7.19.1
CURLOPT_PROXYUSERPWD 7.1
+CURLOPT_PROXY_SERVICE_NAME 7.43.0
CURLOPT_PROXY_TRANSFER_MODE 7.18.0
CURLOPT_PUT 7.1
CURLOPT_QUOTE 7.1
@@ -475,6 +481,7 @@ CURLOPT_SASL_IR 7.31.0
CURLOPT_SEEKDATA 7.18.0
CURLOPT_SEEKFUNCTION 7.18.0
CURLOPT_SERVER_RESPONSE_TIMEOUT 7.20.0
+CURLOPT_SERVICE_NAME 7.43.0
CURLOPT_SHARE 7.10
CURLOPT_SOCKOPTDATA 7.16.0
CURLOPT_SOCKOPTFUNCTION 7.16.0
@@ -509,10 +516,12 @@ CURLOPT_SSL_CTX_DATA 7.10.6
CURLOPT_SSL_CTX_FUNCTION 7.10.6
CURLOPT_SSL_ENABLE_ALPN 7.36.0
CURLOPT_SSL_ENABLE_NPN 7.36.0
+CURLOPT_SSL_FALSESTART 7.42.0
CURLOPT_SSL_OPTIONS 7.25.0
CURLOPT_SSL_SESSIONID_CACHE 7.16.0
CURLOPT_SSL_VERIFYHOST 7.8.1
CURLOPT_SSL_VERIFYPEER 7.4.2
+CURLOPT_SSL_VERIFYSTATUS 7.41.0
CURLOPT_STDERR 7.1
CURLOPT_TCP_KEEPALIVE 7.25.0
CURLOPT_TCP_KEEPIDLE 7.25.0
@@ -552,6 +561,9 @@ CURLPAUSE_RECV 7.18.0
CURLPAUSE_RECV_CONT 7.18.0
CURLPAUSE_SEND 7.18.0
CURLPAUSE_SEND_CONT 7.18.0
+CURLPIPE_HTTP1 7.43.0
+CURLPIPE_MULTIPLEX 7.43.0
+CURLPIPE_NOTHING 7.43.0
CURLPROTO_ALL 7.19.4
CURLPROTO_DICT 7.19.4
CURLPROTO_FILE 7.19.4
@@ -621,6 +633,7 @@ CURLSSLBACKEND_POLARSSL 7.34.0
CURLSSLBACKEND_QSOSSL 7.34.0 - 7.38.1
CURLSSLBACKEND_SCHANNEL 7.34.0
CURLSSLOPT_ALLOW_BEAST 7.25.0
+CURLSSLOPT_NO_REVOKE 7.44.0
CURLUSESSL_ALL 7.17.0
CURLUSESSL_CONTROL 7.17.0
CURLUSESSL_NONE 7.17.0
@@ -661,6 +674,7 @@ CURL_GLOBAL_WIN32 7.8.1
CURL_HTTP_VERSION_1_0 7.9.1
CURL_HTTP_VERSION_1_1 7.9.1
CURL_HTTP_VERSION_2_0 7.33.0
+CURL_HTTP_VERSION_2 7.43.0
CURL_HTTP_VERSION_NONE 7.9.1
CURL_IPRESOLVE_V4 7.10.8
CURL_IPRESOLVE_V6 7.10.8
@@ -691,6 +705,8 @@ CURL_POLL_OUT 7.14.0
CURL_POLL_REMOVE 7.14.0
CURL_PROGRESS_BAR 7.1.1 - 7.4.1
CURL_PROGRESS_STATS 7.1.1 - 7.4.1
+CURL_PUSH_DENY 7.44.0
+CURL_PUSH_OK 7.44.0
CURL_READFUNC_ABORT 7.12.1
CURL_READFUNC_PAUSE 7.18.0
CURL_REDIR_GET_ALL 7.19.1
diff --git a/docs/libcurl/symbols.pl b/docs/libcurl/symbols.pl
index d1ff7a656..a7b76e239 100755
--- a/docs/libcurl/symbols.pl
+++ b/docs/libcurl/symbols.pl
@@ -24,7 +24,7 @@
# Experience has shown that the symbols-in-versions file is very useful to
# applications that want to build with a wide range of libcurl versions.
# It is however easy to get it wrong and the source gets a bit messy with all
-# the fixed numerical comparisions.
+# the fixed numerical comparisons.
#
# The point of this script is to provide an easy-to-use macro for libcurl-
# using applications to do preprocessor checks for specific libcurl defines,
@@ -71,7 +71,7 @@ while(<F>) {
my $dep;
# is there removed info?
- if($vers =~ /([\d.]+)[ \t-]+([\d.]+)[ \t]+([\d.]+)/) {
+ if($vers =~ /([\d.]+)[ \t-]+([\d.-]+)[ \t]+([\d.]+)/) {
($intr, $dep, $rm)=($1, $2, $3);
}
# is it a dep-only line?
diff --git a/docs/mk-ca-bundle.html b/docs/mk-ca-bundle.html
index 0c633de3f..89b9b1212 100644
--- a/docs/mk-ca-bundle.html
+++ b/docs/mk-ca-bundle.html
@@ -4,15 +4,20 @@
<title>mk-ca-bundle man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -70,6 +75,7 @@ p.roffit {
<p class="level1">Valid purposes are:
<p class="level2">ALL, DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, SERVER_AUTH (default), CLIENT_AUTH, CODE_SIGNING, EMAIL_PROTECTION, IPSEC_END_SYSTEM, IPSEC_TUNNEL, IPSEC_USER, TIME_STAMPING, STEP_UP_APPROVED
<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span>
<p class="level1">Valid trust levels are:
<p class="level2">ALL, TRUSTED_DELEGATOR (default), NOT_TRUSTED, MUST_VERIFY_TRUST, TRUSTED
<p class="level1">
@@ -88,9 +94,9 @@ p.roffit {
<p class="level0"><a name="-v"></a><span class="nroffip">-v</span>
<p class="level1">be verbose and print out processed CAs <a name="EXIT"></a><h2 class="nroffsh">EXIT STATUS</h2>
<p class="level0">Returns 0 on success. Returns 1 if it fails to download data. <a name="CERTDATA"></a><h2 class="nroffsh">CERTDATA FORMAT</h2>
-<p class="level0">The file format used by Mozilla for this trust information seems to be documented here: <pre>
-<p class="level0"><a href="http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html">http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html</a>
- </pre>
+<p class="level0">The file format used by Mozilla for this trust information seems to be documented here: <pre class="level0">
+<a href="http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html">http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html</a>
+</pre>
<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
<p class="level0"><span Class="manpage">curl (1)</span> <a name="HISTORY"></a><h2 class="nroffsh">HISTORY</h2>
diff --git a/docs/mk-ca-bundle.pdf b/docs/mk-ca-bundle.pdf
index fbd4b36c1..483aa8c4e 100644
--- a/docs/mk-ca-bundle.pdf
+++ b/docs/mk-ca-bundle.pdf
Binary files differ
diff --git a/include/Makefile.in b/include/Makefile.in
index 1b6b48f6f..bce5fa6a6 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -162,6 +171,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -245,7 +255,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -298,6 +308,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -314,7 +325,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -392,7 +402,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign include/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -687,6 +696,8 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/include/curl/Makefile.in b/include/curl/Makefile.in
index 1087121e8..b71496e9c 100644
--- a/include/curl/Makefile.in
+++ b/include/curl/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,9 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include/curl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(srcdir)/curlbuild.h.in $(top_srcdir)/mkinstalldirs \
- $(pkginclude_HEADERS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -101,7 +108,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \
+ $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h curlbuild.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -173,6 +182,7 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curlbuild.h.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
pkgincludedir = $(includedir)/curl
ACLOCAL = @ACLOCAL@
@@ -232,7 +242,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -285,6 +295,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -301,7 +312,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -420,7 +430,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign include/curl/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -680,6 +689,8 @@ uninstall-am: uninstall-pkgincludeHEADERS
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-pkgincludeHEADERS
+.PRECIOUS: Makefile
+
checksrc:
@@PERL@ $(top_srcdir)/lib/checksrc.pl -Wcurlbuild.h -D$(top_srcdir)/include/curl $(pkginclude_HEADERS) $(EXTRA_DIST)
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 44b1b7e39..64f926142 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -523,6 +523,7 @@ typedef enum {
session will be queued */
CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not
match */
+ CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */
CURL_LAST /* never use! */
} CURLcode;
@@ -724,6 +725,10 @@ typedef enum {
servers, a user can this way allow the vulnerability back. */
#define CURLSSLOPT_ALLOW_BEAST (1<<0)
+/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
+ SSL backends where such behavior is present. */
+#define CURLSSLOPT_NO_REVOKE (1<<1)
+
#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
the obsolete stuff removed! */
@@ -845,7 +850,7 @@ typedef enum {
CINIT(WRITEDATA, OBJECTPOINT, 1),
/* The full URL to get/put */
- CINIT(URL, OBJECTPOINT, 2),
+ CINIT(URL, OBJECTPOINT, 2),
/* Port number to connect to, if other than default. */
CINIT(PORT, LONG, 3),
@@ -1622,6 +1627,24 @@ typedef enum {
/* Path to Unix domain socket */
CINIT(UNIX_SOCKET_PATH, OBJECTPOINT, 231),
+ /* Set if we should verify the certificate status. */
+ CINIT(SSL_VERIFYSTATUS, LONG, 232),
+
+ /* Set if we should enable TLS false start. */
+ CINIT(SSL_FALSESTART, LONG, 233),
+
+ /* Do not squash dot-dot sequences */
+ CINIT(PATH_AS_IS, LONG, 234),
+
+ /* Proxy Service Name */
+ CINIT(PROXY_SERVICE_NAME, OBJECTPOINT, 235),
+
+ /* Service Name */
+ CINIT(SERVICE_NAME, OBJECTPOINT, 236),
+
+ /* Wait/don't wait for pipe/mutex to clarify */
+ CINIT(PIPEWAIT, LONG, 237),
+
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
@@ -1676,6 +1699,11 @@ enum {
CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
};
+/* Convenience definition simple because the name of the version is HTTP/2 and
+ not 2.0. The 2_0 version of the enum name was set while the version was
+ still planned to be 2.0 and we stick to it for compatibility. */
+#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
+
/*
* Public API enums for RTSP requests
*/
diff --git a/include/curl/curlver.h b/include/curl/curlver.h
index ccdafc1de..43455a950 100644
--- a/include/curl/curlver.h
+++ b/include/curl/curlver.h
@@ -30,12 +30,12 @@
/* This is the version number of the libcurl package from which this header
file origins: */
-#define LIBCURL_VERSION "7.40.0"
+#define LIBCURL_VERSION "7.44.0"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 40
+#define LIBCURL_VERSION_MINOR 44
#define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier
@@ -52,8 +52,12 @@
This 6-digit (24 bits) hexadecimal number does not show pre-release number,
and it is always a greater number in a more recent release. It makes
comparisons with greater than and less than work.
+
+ Note: This define is the full hex number and _does not_ use the
+ CURL_VERSION_BITS() macro since curl's own configure script greps for it
+ and needs it to contain the full number.
*/
-#define LIBCURL_VERSION_NUM 0x072800
+#define LIBCURL_VERSION_NUM 0x072c00
/*
* This is the date and time when the full source package was created. The
@@ -64,6 +68,10 @@
*
* "Mon Feb 12 11:35:33 UTC 2007"
*/
-#define LIBCURL_TIMESTAMP "Thu Jan 8 08:17:17 UTC 2015"
+#define LIBCURL_TIMESTAMP "Wed Aug 12 06:10:30 UTC 2015"
+
+#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z)
+#define CURL_AT_LEAST_VERSION(x,y,z) \
+ (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
#endif /* __CURL_CURLVER_H */
diff --git a/include/curl/mprintf.h b/include/curl/mprintf.h
index cc9e7f5d1..c6b0d7679 100644
--- a/include/curl/mprintf.h
+++ b/include/curl/mprintf.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -57,15 +57,8 @@ CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
# undef vaprintf
# define printf curl_mprintf
# define fprintf curl_mfprintf
-#ifdef CURLDEBUG
-/* When built with CURLDEBUG we define away the sprintf functions since we
- don't want internal code to be using them */
-# define sprintf sprintf_was_used
-# define vsprintf vsprintf_was_used
-#else
# define sprintf curl_msprintf
# define vsprintf curl_mvsprintf
-#endif
# define snprintf curl_msnprintf
# define vprintf curl_mvprintf
# define vfprintf curl_mvfprintf
diff --git a/include/curl/multi.h b/include/curl/multi.h
index 3c4acb0f6..36e2e940e 100644
--- a/include/curl/multi.h
+++ b/include/curl/multi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -74,6 +74,11 @@ typedef enum {
curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
+/* bitmask bits for CURLMOPT_PIPELINING */
+#define CURLPIPE_NOTHING 0L
+#define CURLPIPE_HTTP1 1L
+#define CURLPIPE_MULTIPLEX 2L
+
typedef enum {
CURLMSG_NONE, /* first, not used */
CURLMSG_DONE, /* This easy handle has completed. 'result' contains
@@ -365,6 +370,12 @@ typedef enum {
/* maximum number of open connections in total */
CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
+ /* This is the server push callback function pointer */
+ CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
+
+ /* This is the argument passed to the server push callback */
+ CINIT(PUSHDATA, OBJECTPOINT, 15),
+
CURLMOPT_LASTENTRY /* the last unused */
} CURLMoption;
@@ -392,6 +403,31 @@ CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
curl_socket_t sockfd, void *sockp);
+
+/*
+ * Name: curl_push_callback
+ *
+ * Desc: This callback gets called when a new stream is being pushed by the
+ * server. It approves or denies the new stream.
+ *
+ * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
+ */
+#define CURL_PUSH_OK 0
+#define CURL_PUSH_DENY 1
+
+struct curl_pushheaders; /* forward declaration only */
+
+CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
+ size_t num);
+CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+ const char *name);
+
+typedef int (*curl_push_callback)(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp);
+
#ifdef __cplusplus
} /* end of extern "C" */
#endif
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h
index 69d41a20d..13fb0fa9e 100644
--- a/include/curl/typecheck-gcc.h
+++ b/include/curl/typecheck-gcc.h
@@ -270,6 +270,8 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
(option) == CURLOPT_DNS_LOCAL_IP4 || \
(option) == CURLOPT_DNS_LOCAL_IP6 || \
(option) == CURLOPT_LOGIN_OPTIONS || \
+ (option) == CURLOPT_PROXY_SERVICE_NAME || \
+ (option) == CURLOPT_SERVICE_NAME || \
0)
/* evaluates to true if option takes a curl_write_callback argument */
diff --git a/install-sh b/install-sh
index 377bb8687..0b0fdcbba 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2013-12-25.23; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
dst_arg=
copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
- -t) dst_arg=$2
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
- -T) no_target_directory=true;;
+ -T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
shift
done
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
@@ -208,6 +204,15 @@ if test $# -eq 0; then
fi
if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -269,41 +274,15 @@ do
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
+ dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
@@ -314,74 +293,74 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
esac
if
$posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
@@ -391,53 +370,51 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- eval "$initialize_posix_glob"
-
oIFS=$IFS
IFS=/
- $posix_glob set -f
+ set -f
set fnord $dstdir
shift
- $posix_glob set +f
+ set +f
IFS=$oIFS
prefixes=
for d
do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
done
if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
fi
fi
@@ -472,15 +449,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
+ set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -493,24 +467,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index e7886ac55..49a340938 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -98,4 +98,7 @@ if(WIN32)
endif()
endif()
-install(TARGETS ${LIB_NAME} DESTINATION lib)
+install(TARGETS ${LIB_NAME}
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
diff --git a/lib/Makefile.Watcom b/lib/Makefile.Watcom
index 14f5ac844..0b7ba59c2 100644
--- a/lib/Makefile.Watcom
+++ b/lib/Makefile.Watcom
@@ -101,7 +101,7 @@ ZLIB_ROOT = ../../zlib-1.2.8
!ifdef %libssh2_root
LIBSSH2_ROOT = $(%libssh2_root)
!else
-LIBSSH2_ROOT = ../../libssh2-1.4.3
+LIBSSH2_ROOT = ../../libssh2-1.5.0
!endif
!ifdef %librtmp_root
@@ -113,7 +113,7 @@ LIBRTMP_ROOT = ../../rtmpdump-2.3
!ifdef %openssl_root
OPENSSL_ROOT = $(%openssl_root)
!else
-OPENSSL_ROOT = ../../openssl-0.9.8zc
+OPENSSL_ROOT = ../../openssl-1.0.2a
!endif
!ifdef %ares_root
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 6dffbd9c9..ef8d124e7 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -21,10 +21,6 @@
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
-DOCS = README.encoding README.memoryleak README.ares README.curlx \
- README.hostip README.multi_socket README.httpauth README.pipelining \
- README.curl_off_t README.pingpong
-
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 config-win32.h \
@@ -32,9 +28,9 @@ EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 config-win32.h \
makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h \
config-os400.h setup-os400.h config-symbian.h Makefile.Watcom \
- config-tpf.h $(DOCS) mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST) \
+ config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST) \
firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl \
- objnames-test08.sh objnames-test10.sh objnames.inc
+ objnames-test08.sh objnames-test10.sh objnames.inc checksrc.whitelist
lib_LTLIBRARIES = libcurl.la
@@ -84,9 +80,9 @@ if SONAME_BUMP
#
# This conditional soname bump SHOULD be removed at next "proper" bump.
#
-VERSIONINFO=-version-info 8:0:3
+VERSIONINFO=-version-info 9:0:4
else
-VERSIONINFO=-version-info 7:0:3
+VERSIONINFO=-version-info 8:0:4
endif
# This flag accepts an argument of the form current[:revision[:age]]. So,
diff --git a/lib/Makefile.b32 b/lib/Makefile.b32
index b9531fdf4..37c264871 100644
--- a/lib/Makefile.b32
+++ b/lib/Makefile.b32
@@ -27,7 +27,7 @@ ZLIB_PATH = ..\..\zlib-1.2.8
# Edit the path below to point to the base of your OpenSSL package.
!ifndef OPENSSL_PATH
-OPENSSL_PATH = ..\..\openssl-0.9.8zc
+OPENSSL_PATH = ..\..\openssl-1.0.2a
!endif
# Set libcurl static lib, dll and import lib
@@ -74,7 +74,7 @@ LINKLIB = $(LINKLIB) $(ZLIB_PATH)\zlib.lib
# SSL support is enabled setting WITH_SSL=1
!ifdef WITH_SSL
-DEFINES = $(DEFINES) -DUSE_SSLEAY
+DEFINES = $(DEFINES) -DUSE_OPENSSL
INCDIRS = $(INCDIRS);$(OPENSSL_PATH)\inc32;$(OPENSSL_PATH)\inc32\openssl
LINKLIB = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\libeay32.lib
!endif
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 5947cf0b5..27bfd1015 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -37,7 +37,17 @@
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -110,10 +120,6 @@ host_triplet = @host@
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_7 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = $(CFLAG_CURL_SYMBOL_HIDING)
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(srcdir)/curl_config.h.in \
- $(top_srcdir)/mkinstalldirs $(srcdir)/libcurl.vers.in \
- $(top_srcdir)/depcomp
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -135,7 +141,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = curl_config.h $(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES = libcurl.vers
CONFIG_CLEAN_VPATH_FILES =
@@ -212,19 +219,19 @@ am__objects_1 = libcurl_la-file.lo libcurl_la-timeval.lo \
libcurl_la-curl_ntlm_wb.lo libcurl_la-curl_ntlm_core.lo \
libcurl_la-curl_ntlm_msgs.lo libcurl_la-curl_sasl.lo \
libcurl_la-curl_multibyte.lo libcurl_la-hostcheck.lo \
- libcurl_la-bundles.lo libcurl_la-conncache.lo \
- libcurl_la-pipeline.lo libcurl_la-dotdot.lo \
- libcurl_la-x509asn1.lo libcurl_la-http2.lo \
- libcurl_la-curl_sasl_sspi.lo libcurl_la-smb.lo \
- libcurl_la-curl_sasl_gssapi.lo libcurl_la-curl_endian.lo
+ libcurl_la-conncache.lo libcurl_la-pipeline.lo \
+ libcurl_la-dotdot.lo libcurl_la-x509asn1.lo \
+ libcurl_la-http2.lo libcurl_la-curl_sasl_sspi.lo \
+ libcurl_la-smb.lo libcurl_la-curl_sasl_gssapi.lo \
+ libcurl_la-curl_endian.lo libcurl_la-curl_des.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = vtls/libcurl_la-openssl.lo vtls/libcurl_la-gtls.lo \
vtls/libcurl_la-vtls.lo vtls/libcurl_la-nss.lo \
vtls/libcurl_la-polarssl.lo \
vtls/libcurl_la-polarssl_threadlock.lo \
vtls/libcurl_la-axtls.lo vtls/libcurl_la-cyassl.lo \
- vtls/libcurl_la-curl_schannel.lo \
- vtls/libcurl_la-curl_darwinssl.lo vtls/libcurl_la-gskit.lo
+ vtls/libcurl_la-schannel.lo vtls/libcurl_la-darwinssl.lo \
+ vtls/libcurl_la-gskit.lo
am__objects_3 = $(am__objects_1) $(am__objects_2)
am__objects_4 =
am__objects_5 = $(am__objects_4) $(am__objects_4)
@@ -282,19 +289,19 @@ am__objects_6 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
libcurlu_la-curl_ntlm.lo libcurlu_la-curl_ntlm_wb.lo \
libcurlu_la-curl_ntlm_core.lo libcurlu_la-curl_ntlm_msgs.lo \
libcurlu_la-curl_sasl.lo libcurlu_la-curl_multibyte.lo \
- libcurlu_la-hostcheck.lo libcurlu_la-bundles.lo \
- libcurlu_la-conncache.lo libcurlu_la-pipeline.lo \
- libcurlu_la-dotdot.lo libcurlu_la-x509asn1.lo \
- libcurlu_la-http2.lo libcurlu_la-curl_sasl_sspi.lo \
- libcurlu_la-smb.lo libcurlu_la-curl_sasl_gssapi.lo \
- libcurlu_la-curl_endian.lo
+ libcurlu_la-hostcheck.lo libcurlu_la-conncache.lo \
+ libcurlu_la-pipeline.lo libcurlu_la-dotdot.lo \
+ libcurlu_la-x509asn1.lo libcurlu_la-http2.lo \
+ libcurlu_la-curl_sasl_sspi.lo libcurlu_la-smb.lo \
+ libcurlu_la-curl_sasl_gssapi.lo libcurlu_la-curl_endian.lo \
+ libcurlu_la-curl_des.lo
am__objects_7 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
vtls/libcurlu_la-vtls.lo vtls/libcurlu_la-nss.lo \
vtls/libcurlu_la-polarssl.lo \
vtls/libcurlu_la-polarssl_threadlock.lo \
vtls/libcurlu_la-axtls.lo vtls/libcurlu_la-cyassl.lo \
- vtls/libcurlu_la-curl_schannel.lo \
- vtls/libcurlu_la-curl_darwinssl.lo vtls/libcurlu_la-gskit.lo
+ vtls/libcurlu_la-schannel.lo vtls/libcurlu_la-darwinssl.lo \
+ vtls/libcurlu_la-gskit.lo
am__objects_8 = $(am__objects_6) $(am__objects_7)
am_libcurlu_la_OBJECTS = $(am__objects_8) $(am__objects_5)
libcurlu_la_OBJECTS = $(am_libcurlu_la_OBJECTS)
@@ -363,6 +370,9 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(srcdir)/curl_config.h.in $(srcdir)/libcurl.vers.in \
+ $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -423,7 +433,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -478,6 +488,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -494,7 +505,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -562,7 +572,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -577,19 +587,15 @@ top_srcdir = @top_srcdir@
#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
-DOCS = README.encoding README.memoryleak README.ares README.curlx \
- README.hostip README.multi_socket README.httpauth README.pipelining \
- README.curl_off_t README.pingpong
-
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 config-win32.h \
config-win32ce.h config-riscos.h config-mac.h curl_config.h.in \
makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h \
config-os400.h setup-os400.h config-symbian.h Makefile.Watcom \
- config-tpf.h $(DOCS) mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST) \
+ config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST) \
firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl \
- objnames-test08.sh objnames-test10.sh objnames.inc
+ objnames-test08.sh objnames-test10.sh objnames.inc checksrc.whitelist
lib_LTLIBRARIES = libcurl.la
@BUILD_UNITTESTS_FALSE@noinst_LTLIBRARIES =
@@ -623,7 +629,7 @@ lib_LTLIBRARIES = libcurl.la
AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
-I$(top_srcdir)/include -I$(top_builddir)/lib \
-I$(top_srcdir)/lib $(am__append_1) -DBUILDING_LIBCURL
-@SONAME_BUMP_FALSE@VERSIONINFO = -version-info 7:0:3
+@SONAME_BUMP_FALSE@VERSIONINFO = -version-info 8:0:4
#
# Bumping of SONAME conditionally may seem like a weird thing to do, and yeah
@@ -634,7 +640,7 @@ AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
#
# This conditional soname bump SHOULD be removed at next "proper" bump.
#
-@SONAME_BUMP_TRUE@VERSIONINFO = -version-info 8:0:3
+@SONAME_BUMP_TRUE@VERSIONINFO = -version-info 9:0:4
AM_LDFLAGS =
AM_CFLAGS =
libcurl_la_CPPFLAGS_EXTRA = $(am__append_6) $(am__append_7)
@@ -649,11 +655,11 @@ libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
libcurlu_la_CFLAGS = $(AM_CFLAGS)
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c \
vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c \
- vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+ vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c
LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h \
- vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+ vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
@@ -671,8 +677,9 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c \
asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c \
curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c \
- hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c \
- http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+ hostcheck.c conncache.c pipeline.c dotdot.c x509asn1.c \
+ http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c \
+ curl_des.c
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
@@ -688,9 +695,10 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \
curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \
curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \
- curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h \
+ curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h \
conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h \
- dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+ dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
+ curl_printf.h
LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
@@ -716,7 +724,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign lib/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -725,7 +732,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -820,9 +827,9 @@ vtls/libcurl_la-axtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-cyassl.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurl_la-curl_schannel.lo: vtls/$(am__dirstamp) \
+vtls/libcurl_la-schannel.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurl_la-curl_darwinssl.lo: vtls/$(am__dirstamp) \
+vtls/libcurl_la-darwinssl.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
@@ -845,9 +852,9 @@ vtls/libcurlu_la-axtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-cyassl.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurlu_la-curl_schannel.lo: vtls/$(am__dirstamp) \
+vtls/libcurlu_la-schannel.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurlu_la-curl_darwinssl.lo: vtls/$(am__dirstamp) \
+vtls/libcurlu_la-darwinssl.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
@@ -867,12 +874,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-ares.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-thread.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-base64.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-bundles.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-conncache.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-connect.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_des.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gethostname.Plo@am__quote@
@@ -971,12 +978,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-ares.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-thread.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-base64.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-bundles.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-conncache.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-connect.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_des.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo@am__quote@
@@ -1072,26 +1079,26 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-axtls.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-curl_schannel.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-cyassl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-darwinssl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-axtls.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-cyassl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-darwinssl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl_threadlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-schannel.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@
.c.o:
@@ -1776,13 +1783,6 @@ libcurl_la-hostcheck.lo: hostcheck.c
@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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-libcurl_la-bundles.lo: bundles.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-bundles.lo -MD -MP -MF $(DEPDIR)/libcurl_la-bundles.Tpo -c -o libcurl_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-bundles.Tpo $(DEPDIR)/libcurl_la-bundles.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bundles.c' object='libcurl_la-bundles.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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-
libcurl_la-conncache.lo: conncache.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurl_la-conncache.Tpo -c -o libcurl_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-conncache.Tpo $(DEPDIR)/libcurl_la-conncache.Plo
@@ -1846,6 +1846,13 @@ libcurl_la-curl_endian.lo: curl_endian.c
@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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
+libcurl_la-curl_des.lo: curl_des.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_des.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_des.Tpo -c -o libcurl_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_des.Tpo $(DEPDIR)/libcurl_la-curl_des.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curl_des.c' object='libcurl_la-curl_des.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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+
vtls/libcurl_la-openssl.lo: vtls/openssl.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-openssl.Tpo -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-openssl.Tpo vtls/$(DEPDIR)/libcurl_la-openssl.Plo
@@ -1902,19 +1909,19 @@ vtls/libcurl_la-cyassl.lo: vtls/cyassl.c
@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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
-vtls/libcurl_la-curl_schannel.lo: vtls/curl_schannel.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-curl_schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-curl_schannel.Tpo -c -o vtls/libcurl_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-curl_schannel.Tpo vtls/$(DEPDIR)/libcurl_la-curl_schannel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/curl_schannel.c' object='vtls/libcurl_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurl_la-schannel.lo: vtls/schannel.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-schannel.Tpo -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-schannel.Tpo vtls/$(DEPDIR)/libcurl_la-schannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurl_la-schannel.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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
-vtls/libcurl_la-curl_darwinssl.lo: vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-curl_darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Tpo -c -o vtls/libcurl_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Tpo vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/curl_darwinssl.c' object='vtls/libcurl_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurl_la-darwinssl.lo: vtls/darwinssl.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-darwinssl.Tpo -c -o vtls/libcurl_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-darwinssl.Tpo vtls/$(DEPDIR)/libcurl_la-darwinssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/darwinssl.c' object='vtls/libcurl_la-darwinssl.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) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
vtls/libcurl_la-gskit.lo: vtls/gskit.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-gskit.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-gskit.Tpo -c -o vtls/libcurl_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
@@ -2581,13 +2588,6 @@ libcurlu_la-hostcheck.lo: hostcheck.c
@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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-libcurlu_la-bundles.lo: bundles.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-bundles.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-bundles.Tpo -c -o libcurlu_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-bundles.Tpo $(DEPDIR)/libcurlu_la-bundles.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bundles.c' object='libcurlu_la-bundles.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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-
libcurlu_la-conncache.lo: conncache.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-conncache.Tpo -c -o libcurlu_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-conncache.Tpo $(DEPDIR)/libcurlu_la-conncache.Plo
@@ -2651,6 +2651,13 @@ libcurlu_la-curl_endian.lo: curl_endian.c
@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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
+libcurlu_la-curl_des.lo: curl_des.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_des.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_des.Tpo -c -o libcurlu_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_des.Tpo $(DEPDIR)/libcurlu_la-curl_des.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curl_des.c' object='libcurlu_la-curl_des.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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+
vtls/libcurlu_la-openssl.lo: vtls/openssl.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
@@ -2707,19 +2714,19 @@ vtls/libcurlu_la-cyassl.lo: vtls/cyassl.c
@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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
-vtls/libcurlu_la-curl_schannel.lo: vtls/curl_schannel.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-curl_schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Tpo -c -o vtls/libcurlu_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/curl_schannel.c' object='vtls/libcurlu_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurlu_la-schannel.lo: vtls/schannel.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurlu_la-schannel.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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
-vtls/libcurlu_la-curl_darwinssl.lo: vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-curl_darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo -c -o vtls/libcurlu_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/curl_darwinssl.c' object='vtls/libcurlu_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurlu_la-darwinssl.lo: vtls/darwinssl.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-darwinssl.Tpo -c -o vtls/libcurlu_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-darwinssl.Tpo vtls/$(DEPDIR)/libcurlu_la-darwinssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/darwinssl.c' object='vtls/libcurlu_la-darwinssl.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) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
vtls/libcurlu_la-gskit.lo: vtls/gskit.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-gskit.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-gskit.Tpo -c -o vtls/libcurlu_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
@@ -2945,6 +2952,8 @@ uninstall-am: uninstall-libLTLIBRARIES
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+.PRECIOUS: Makefile
+
checksrc:
@@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/lib $(CSOURCES) $(HHEADERS)
diff --git a/lib/Makefile.inc b/lib/Makefile.inc
index 8f9d16d8b..d444a6b21 100644
--- a/lib/Makefile.inc
+++ b/lib/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -22,11 +22,11 @@
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c \
vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c \
- vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+ vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c
LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h \
- vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+ vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
@@ -44,8 +44,9 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c \
asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c \
curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c \
- hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c \
- http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+ hostcheck.c conncache.c pipeline.c dotdot.c x509asn1.c \
+ http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c \
+ curl_des.c
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
@@ -61,9 +62,10 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \
curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \
curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \
- curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h \
+ curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h \
conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h \
- dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+ dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
+ curl_printf.h
LIB_RCFILES = libcurl.rc
diff --git a/lib/Makefile.m32 b/lib/Makefile.m32
index f3673c5a3..736e600f5 100644
--- a/lib/Makefile.m32
+++ b/lib/Makefile.m32
@@ -1,7 +1,7 @@
###########################################################################
#
## Makefile for building libcurl.a with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (0.9.8), libssh2 (1.3), zlib (1.2.5), librtmp (2.3)
+## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4)
##
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
@@ -18,23 +18,23 @@ ZLIB_PATH = ../../zlib-1.2.8
endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.3
+LIBRTMP_PATH = ../../librtmp-2.4
endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
+LIBIDN_PATH = ../../libidn-1.32
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
+# https://www.microsoft.com/en-us/download/details.aspx?id=734
ifndef WINIDN_PATH
WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
endif
@@ -44,7 +44,7 @@ LDAP_SDK = c:/novell/ndk/cldapsdk/win32
endif
# Edit the path below to point to the base of your nghttp2 package.
ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-0.6.7
+NGHTTP2_PATH = ../../nghttp2-1.0.0
endif
PROOT = ..
@@ -55,10 +55,10 @@ LIBCARES_PATH = $(PROOT)/ares
endif
CC = $(CROSSPREFIX)gcc
-CFLAGS = -g -O2 -Wall
+CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall
CFLAGS += -fno-strict-aliasing
# comment LDFLAGS below to keep debug info
-LDFLAGS = -s
+LDFLAGS = $(CURL_LDFLAG_EXTRAS) -s
AR = $(CROSSPREFIX)ar
RANLIB = $(CROSSPREFIX)ranlib
RC = $(CROSSPREFIX)windres
@@ -75,10 +75,12 @@ endif
endif
ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
+CFLAGS += -m64 -D_AMD64_
+LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS += -m32
+LDFLAGS += -m32
RCFLAGS += -F pe-i386
endif
@@ -214,14 +216,17 @@ ifdef SSL
OPENSSL_LIBS = -lcrypto -lssl
endif
endif
+ ifndef DYN
+ OPENSSL_LIBS += -lgdi32 -lcrypt32
+ endif
INCLUDES += -I"$(OPENSSL_INCLUDE)"
- CFLAGS += -DUSE_SSLEAY -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
+ CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
-DHAVE_ENGINE_LOAD_BUILTIN_ENGINES -DOPENSSL_NO_KRB5 \
-DCURL_WANTS_CA_BUNDLE_ENV
DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
ifdef SRP
ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h"
- CFLAGS += -DHAVE_SSLEAY_SRP -DUSE_TLS_SRP
+ CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
endif
endif
endif
@@ -323,5 +328,3 @@ $(PROOT)/include/curl/curlbuild.h:
$(LIBCARES_PATH)/libcares.a:
$(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32
-
-
diff --git a/lib/Makefile.netware b/lib/Makefile.netware
index 802959ce9..5a955f889 100644
--- a/lib/Makefile.netware
+++ b/lib/Makefile.netware
@@ -19,12 +19,12 @@ endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your axTLS package.
@@ -214,6 +214,11 @@ WITH_SSL =
else
ifeq ($(findstring -ssl,$(CFG)),-ssl)
WITH_SSL = 1
+ifeq ($(findstring -srp,$(CFG)),-srp)
+ifeq "$(wildcard $(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h)" "$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h"
+WITH_SRP = 1
+endif
+endif
endif
endif
ifeq ($(findstring -zlib,$(CFG)),-zlib)
@@ -638,6 +643,10 @@ ifdef WITH_SSL
@echo $(DL)#define HAVE_LIBSSL 1$(DL) >> $@
@echo $(DL)#define HAVE_LIBCRYPTO 1$(DL) >> $@
@echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
+ifdef WITH_SRP
+ @echo $(DL)#define HAVE_SSLEAY_SRP 1$(DL) >> $@
+ @echo $(DL)#define USE_TLS_SRP 1$(DL) >> $@
+endif
ifdef WITH_SPNEGO
@echo $(DL)#define HAVE_SPNEGO 1$(DL) >> $@
endif
@@ -690,6 +699,11 @@ ifdef WITH_SSL
else
@echo SSL support: no
endif
+ifdef WITH_SRP
+ @echo SRP support: enabled
+else
+ @echo SRP support: no
+endif
ifdef WITH_SSH2
@echo SSH2 support: enabled (libssh2)
else
diff --git a/lib/Makefile.vc10 b/lib/Makefile.vc10
index 461e4f74c..987e01edb 100644
--- a/lib/Makefile.vc10
+++ b/lib/Makefile.vc10
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -65,11 +65,11 @@
!INCLUDE ..\winbuild\Makefile.msvc.names
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
!ENDIF
!IFNDEF ZLIB_PATH
@@ -90,7 +90,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
CCNODBG = cl.exe /O2 /DNDEBUG
CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1
-CFLAGSSSL = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
CFLAGSWINSSL = /DUSE_SCHANNEL
CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
@@ -427,7 +427,7 @@ CFGSET = TRUE
TARGET = $(LIBCURL_DYN_LIB_DBG)
DIROBJ = $(CFG)
LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
-CC = $(CCDEBUG) $(RTLIBD)
+CC = $(CCDEBUG) $(RTLIBD)
CFGSET = TRUE
RESOURCE = $(DIROBJ)\libcurl.res
!ENDIF
@@ -528,13 +528,12 @@ X_OBJS= \
$(DIROBJ)\asyn-thread.obj \
$(DIROBJ)\axtls.obj \
$(DIROBJ)\base64.obj \
- $(DIROBJ)\bundles.obj \
$(DIROBJ)\conncache.obj \
$(DIROBJ)\connect.obj \
$(DIROBJ)\content_encoding.obj \
$(DIROBJ)\cookie.obj \
$(DIROBJ)\curl_addrinfo.obj \
- $(DIROBJ)\curl_darwinssl.obj \
+ $(DIROBJ)\curl_des.obj \
$(DIROBJ)\curl_endian.obj \
$(DIROBJ)\curl_fnmatch.obj \
$(DIROBJ)\curl_gethostname.obj \
@@ -549,10 +548,10 @@ X_OBJS= \
$(DIROBJ)\curl_sasl.obj \
$(DIROBJ)\curl_sasl_gssapi.obj \
$(DIROBJ)\curl_sasl_sspi.obj \
- $(DIROBJ)\curl_schannel.obj \
$(DIROBJ)\curl_sspi.obj \
$(DIROBJ)\curl_threads.obj \
$(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
$(DIROBJ)\dict.obj \
$(DIROBJ)\dotdot.obj \
$(DIROBJ)\easy.obj \
@@ -607,6 +606,7 @@ X_OBJS= \
$(DIROBJ)\progress.obj \
$(DIROBJ)\rawstr.obj \
$(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
$(DIROBJ)\security.obj \
$(DIROBJ)\select.obj \
$(DIROBJ)\sendf.obj \
diff --git a/lib/Makefile.vc11 b/lib/Makefile.vc11
new file mode 100644
index 000000000..d1bf34a33
--- /dev/null
+++ b/lib/Makefile.vc11
@@ -0,0 +1,677 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-library.
+
+###########################################################################
+#
+# Makefile for building libcurl with MSVC11
+#
+# Usage: see usage message below
+# Should be invoked from \lib directory
+# Edit the paths and desired library name
+# SSL path is only required if you intend compiling
+# with SSL.
+#
+# This make file leaves the result either a .lib or .dll file
+# in the \lib directory. It should be called from the \lib
+# directory.
+#
+# An option would have been to allow the source directory to
+# be specified, but I saw no requirement.
+#
+# Another option would have been to leave the .lib and .dll
+# files in the "cfg" directory, but then the make file
+# in \src would need to be changed.
+#
+##############################################################
+
+# ----------------------------------------------
+# Verify that current subdir is libcurl's 'lib'
+# ----------------------------------------------
+
+!IF ! EXIST(.\curl_addrinfo.c)
+! MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.
+! MESSAGE Change to libcurl's 'lib' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF LIBSSH2_PATH
+LIBSSH2_PATH = ../../libssh2-1.5.0
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC11 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+#############################################################
+## Nothing more to do below this line!
+
+CCNODBG = cl.exe /O2 /DNDEBUG
+CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSWINSSL = /DUSE_SCHANNEL
+CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
+CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+CFLAGS = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+CFLAGSLIB = /DCURL_STATICLIB
+LNKDLL = link.exe /DLL
+LNKLIB = link.exe /lib
+LFLAGS = /nologo /machine:$(MACHINE)
+SSLLIBS = libeay32.lib ssleay32.lib
+ZLIBLIBSDLL = zdll.lib
+ZLIBLIBS = zlib.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+CFLAGS = $(CFLAGS)
+
+CFGSET = FALSE
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+!IFDEF USE_IPV6
+CFLAGS = $(CFLAGS) /DUSE_IPV6
+!ENDIF
+
+!IFDEF USE_IDN
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES
+!ENDIF
+
+##############################################################
+# Runtime library configuration
+
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+
+######################
+# release
+
+!IF "$(CFG)" == "release"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl
+
+!IF "$(CFG)" == "release-ssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl
+
+!IF "$(CFG)" == "release-winssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib
+
+!IF "$(CFG)" == "release-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl-zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll
+
+!IF "$(CFG)" == "release-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib-dll
+
+!IF "$(CFG)" == "release-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-dll
+
+!IF "$(CFG)" == "release-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug
+
+!IF "$(CFG)" == "debug"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl
+
+!IF "$(CFG)" == "debug-ssl"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib
+
+!IF "$(CFG)" == "debug-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-zlib
+
+!IF "$(CFG)" == "debug-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll
+
+!IF "$(CFG)" == "debug-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib-dll
+
+!IF "$(CFG)" == "debug-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-dll
+
+!IF "$(CFG)" == "debug-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+#######################
+# Usage
+#
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""
+!MESSAGE Usage: nmake /f makefile.vc11 CFG=<config> <target>
+!MESSAGE where <config> is one of:
+!MESSAGE release - release static library
+!MESSAGE release-ssl - release static library with ssl
+!MESSAGE release-zlib - release static library with zlib
+!MESSAGE release-ssl-zlib - release static library with ssl and zlib
+!MESSAGE release-ssl-ssh2-zlib - release static library with ssl, ssh2 and zlib
+!MESSAGE release-ssl-dll - release static library with dynamic ssl
+!MESSAGE release-zlib-dll - release static library with dynamic zlib
+!MESSAGE release-ssl-dll-zlib-dll - release static library with dynamic ssl and dynamic zlib
+!MESSAGE release-dll - release dynamic library
+!MESSAGE release-dll-ssl-dll - release dynamic library with dynamic ssl
+!MESSAGE release-dll-zlib-dll - release dynamic library with dynamic zlib
+!MESSAGE release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE debug - debug static library
+!MESSAGE debug-ssl - debug static library with ssl
+!MESSAGE debug-zlib - debug static library with zlib
+!MESSAGE debug-ssl-zlib - debug static library with ssl and zlib
+!MESSAGE debug-ssl-ssh2-zlib - debug static library with ssl, ssh2 and zlib
+!MESSAGE debug-ssl-dll - debug static library with dynamic ssl
+!MESSAGE debug-zlib-dll - debug static library with dynamic zlib
+!MESSAGE debug-ssl-dll-zlib-dll - debug static library with dynamic ssl and dynamic zlib
+!MESSAGE debug-dll - debug dynamic library
+!MESSAGE debug-dll-ssl-dll - debug dynamic library with dynamic ssl
+!MESSAGE debug-dll-zlib-dll - debug dynamic library with dynamic zlib1
+!MESSAGE debug-dll-ssl-dll-zlib-dll - debug dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE <target> can be left blank in which case all is assumed
+!ERROR please choose a valid configuration "$(CFG)"
+!ENDIF
+
+#######################
+# Only the clean target can be used if a config was not provided.
+#
+!IF "$(CFGSET)" == "FALSE"
+clean:
+ @-erase /s *.dll 2> NUL
+ @-erase /s *.exp 2> NUL
+ @-erase /s *.idb 2> NUL
+ @-erase /s *.lib 2> NUL
+ @-erase /s *.obj 2> NUL
+ @-erase /s *.pch 2> NUL
+ @-erase /s *.pdb 2> NUL
+ @-erase /s *.res 2> NUL
+!ELSE
+# A config was provided, so the library can be built.
+#
+X_OBJS= \
+ $(DIROBJ)\amigaos.obj \
+ $(DIROBJ)\asyn-ares.obj \
+ $(DIROBJ)\asyn-thread.obj \
+ $(DIROBJ)\axtls.obj \
+ $(DIROBJ)\base64.obj \
+ $(DIROBJ)\conncache.obj \
+ $(DIROBJ)\connect.obj \
+ $(DIROBJ)\content_encoding.obj \
+ $(DIROBJ)\cookie.obj \
+ $(DIROBJ)\curl_addrinfo.obj \
+ $(DIROBJ)\curl_des.obj \
+ $(DIROBJ)\curl_endian.obj \
+ $(DIROBJ)\curl_fnmatch.obj \
+ $(DIROBJ)\curl_gethostname.obj \
+ $(DIROBJ)\curl_gssapi.obj \
+ $(DIROBJ)\curl_memrchr.obj \
+ $(DIROBJ)\curl_multibyte.obj \
+ $(DIROBJ)\curl_ntlm.obj \
+ $(DIROBJ)\curl_ntlm_core.obj \
+ $(DIROBJ)\curl_ntlm_msgs.obj \
+ $(DIROBJ)\curl_ntlm_wb.obj \
+ $(DIROBJ)\curl_rtmp.obj \
+ $(DIROBJ)\curl_sasl.obj \
+ $(DIROBJ)\curl_sasl_gssapi.obj \
+ $(DIROBJ)\curl_sasl_sspi.obj \
+ $(DIROBJ)\curl_sspi.obj \
+ $(DIROBJ)\curl_threads.obj \
+ $(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
+ $(DIROBJ)\dict.obj \
+ $(DIROBJ)\dotdot.obj \
+ $(DIROBJ)\easy.obj \
+ $(DIROBJ)\escape.obj \
+ $(DIROBJ)\file.obj \
+ $(DIROBJ)\fileinfo.obj \
+ $(DIROBJ)\formdata.obj \
+ $(DIROBJ)\ftp.obj \
+ $(DIROBJ)\ftplistparser.obj \
+ $(DIROBJ)\getenv.obj \
+ $(DIROBJ)\getinfo.obj \
+ $(DIROBJ)\gopher.obj \
+ $(DIROBJ)\gtls.obj \
+ $(DIROBJ)\hash.obj \
+ $(DIROBJ)\hmac.obj \
+ $(DIROBJ)\hostasyn.obj \
+ $(DIROBJ)\hostcheck.obj \
+ $(DIROBJ)\hostip.obj \
+ $(DIROBJ)\hostip4.obj \
+ $(DIROBJ)\hostip6.obj \
+ $(DIROBJ)\hostsyn.obj \
+ $(DIROBJ)\http.obj \
+ $(DIROBJ)\http_chunks.obj \
+ $(DIROBJ)\http_digest.obj \
+ $(DIROBJ)\http_negotiate.obj \
+ $(DIROBJ)\http_negotiate_sspi.obj \
+ $(DIROBJ)\http_proxy.obj \
+ $(DIROBJ)\idn_win32.obj \
+ $(DIROBJ)\if2ip.obj \
+ $(DIROBJ)\imap.obj \
+ $(DIROBJ)\inet_ntop.obj \
+ $(DIROBJ)\inet_pton.obj \
+ $(DIROBJ)\krb5.obj \
+ $(DIROBJ)\ldap.obj \
+ $(DIROBJ)\llist.obj \
+ $(DIROBJ)\md4.obj \
+ $(DIROBJ)\md5.obj \
+ $(DIROBJ)\memdebug.obj \
+ $(DIROBJ)\mprintf.obj \
+ $(DIROBJ)\multi.obj \
+ $(DIROBJ)\netrc.obj \
+ $(DIROBJ)\non-ascii.obj \
+ $(DIROBJ)\nonblock.obj \
+ $(DIROBJ)\nss.obj \
+ $(DIROBJ)\openldap.obj \
+ $(DIROBJ)\parsedate.obj \
+ $(DIROBJ)\pingpong.obj \
+ $(DIROBJ)\pipeline.obj \
+ $(DIROBJ)\polarssl.obj \
+ $(DIROBJ)\polarssl_threadlock.obj \
+ $(DIROBJ)\pop3.obj \
+ $(DIROBJ)\progress.obj \
+ $(DIROBJ)\rawstr.obj \
+ $(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
+ $(DIROBJ)\security.obj \
+ $(DIROBJ)\select.obj \
+ $(DIROBJ)\sendf.obj \
+ $(DIROBJ)\share.obj \
+ $(DIROBJ)\slist.obj \
+ $(DIROBJ)\smb.obj \
+ $(DIROBJ)\smtp.obj \
+ $(DIROBJ)\socks.obj \
+ $(DIROBJ)\socks_gssapi.obj \
+ $(DIROBJ)\socks_sspi.obj \
+ $(DIROBJ)\speedcheck.obj \
+ $(DIROBJ)\splay.obj \
+ $(DIROBJ)\ssh.obj \
+ $(DIROBJ)\vtls.obj \
+ $(DIROBJ)\openssl.obj \
+ $(DIROBJ)\strdup.obj \
+ $(DIROBJ)\strequal.obj \
+ $(DIROBJ)\strerror.obj \
+ $(DIROBJ)\strtok.obj \
+ $(DIROBJ)\strtoofft.obj \
+ $(DIROBJ)\telnet.obj \
+ $(DIROBJ)\tftp.obj \
+ $(DIROBJ)\timeval.obj \
+ $(DIROBJ)\transfer.obj \
+ $(DIROBJ)\url.obj \
+ $(DIROBJ)\version.obj \
+ $(DIROBJ)\warnless.obj \
+ $(DIROBJ)\wildcard.obj \
+ $(RESOURCE)
+
+all : $(TARGET)
+
+$(TARGET): $(X_OBJS)
+ $(LNK) $(LFLAGS) $(X_OBJS)
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\*.exp . /y
+ -xcopy $(DIROBJ)\*.pdb . /y
+
+$(X_OBJS): $(DIROBJ)
+
+$(DIROBJ):
+ @if not exist "$(DIROBJ)" mkdir $(DIROBJ)
+
+.SUFFIXES: .c .obj .res
+
+{.\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+{.\vtls\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+debug-dll\libcurl.res \
+debug-dll-ssl-dll\libcurl.res \
+debug-dll-zlib-dll\libcurl.res \
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc
+
+release-dll\libcurl.res \
+release-dll-ssl-dll\libcurl.res \
+release-dll-zlib-dll\libcurl.res \
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc
+!ENDIF # End of case where a config was provided.
diff --git a/lib/Makefile.vc12 b/lib/Makefile.vc12
new file mode 100644
index 000000000..7590de455
--- /dev/null
+++ b/lib/Makefile.vc12
@@ -0,0 +1,677 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-library.
+
+###########################################################################
+#
+# Makefile for building libcurl with MSVC12
+#
+# Usage: see usage message below
+# Should be invoked from \lib directory
+# Edit the paths and desired library name
+# SSL path is only required if you intend compiling
+# with SSL.
+#
+# This make file leaves the result either a .lib or .dll file
+# in the \lib directory. It should be called from the \lib
+# directory.
+#
+# An option would have been to allow the source directory to
+# be specified, but I saw no requirement.
+#
+# Another option would have been to leave the .lib and .dll
+# files in the "cfg" directory, but then the make file
+# in \src would need to be changed.
+#
+##############################################################
+
+# ----------------------------------------------
+# Verify that current subdir is libcurl's 'lib'
+# ----------------------------------------------
+
+!IF ! EXIST(.\curl_addrinfo.c)
+! MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.
+! MESSAGE Change to libcurl's 'lib' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF LIBSSH2_PATH
+LIBSSH2_PATH = ../../libssh2-1.5.0
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC12 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+#############################################################
+## Nothing more to do below this line!
+
+CCNODBG = cl.exe /O2 /DNDEBUG
+CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSWINSSL = /DUSE_SCHANNEL
+CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
+CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+CFLAGS = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+CFLAGSLIB = /DCURL_STATICLIB
+LNKDLL = link.exe /DLL
+LNKLIB = link.exe /lib
+LFLAGS = /nologo /machine:$(MACHINE)
+SSLLIBS = libeay32.lib ssleay32.lib
+ZLIBLIBSDLL = zdll.lib
+ZLIBLIBS = zlib.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+CFLAGS = $(CFLAGS)
+
+CFGSET = FALSE
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+!IFDEF USE_IPV6
+CFLAGS = $(CFLAGS) /DUSE_IPV6
+!ENDIF
+
+!IFDEF USE_IDN
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES
+!ENDIF
+
+##############################################################
+# Runtime library configuration
+
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+
+######################
+# release
+
+!IF "$(CFG)" == "release"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl
+
+!IF "$(CFG)" == "release-ssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl
+
+!IF "$(CFG)" == "release-winssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib
+
+!IF "$(CFG)" == "release-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl-zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll
+
+!IF "$(CFG)" == "release-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib-dll
+
+!IF "$(CFG)" == "release-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-dll
+
+!IF "$(CFG)" == "release-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug
+
+!IF "$(CFG)" == "debug"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl
+
+!IF "$(CFG)" == "debug-ssl"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib
+
+!IF "$(CFG)" == "debug-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-zlib
+
+!IF "$(CFG)" == "debug-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll
+
+!IF "$(CFG)" == "debug-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib-dll
+
+!IF "$(CFG)" == "debug-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-dll
+
+!IF "$(CFG)" == "debug-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+#######################
+# Usage
+#
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""
+!MESSAGE Usage: nmake /f makefile.vc12 CFG=<config> <target>
+!MESSAGE where <config> is one of:
+!MESSAGE release - release static library
+!MESSAGE release-ssl - release static library with ssl
+!MESSAGE release-zlib - release static library with zlib
+!MESSAGE release-ssl-zlib - release static library with ssl and zlib
+!MESSAGE release-ssl-ssh2-zlib - release static library with ssl, ssh2 and zlib
+!MESSAGE release-ssl-dll - release static library with dynamic ssl
+!MESSAGE release-zlib-dll - release static library with dynamic zlib
+!MESSAGE release-ssl-dll-zlib-dll - release static library with dynamic ssl and dynamic zlib
+!MESSAGE release-dll - release dynamic library
+!MESSAGE release-dll-ssl-dll - release dynamic library with dynamic ssl
+!MESSAGE release-dll-zlib-dll - release dynamic library with dynamic zlib
+!MESSAGE release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE debug - debug static library
+!MESSAGE debug-ssl - debug static library with ssl
+!MESSAGE debug-zlib - debug static library with zlib
+!MESSAGE debug-ssl-zlib - debug static library with ssl and zlib
+!MESSAGE debug-ssl-ssh2-zlib - debug static library with ssl, ssh2 and zlib
+!MESSAGE debug-ssl-dll - debug static library with dynamic ssl
+!MESSAGE debug-zlib-dll - debug static library with dynamic zlib
+!MESSAGE debug-ssl-dll-zlib-dll - debug static library with dynamic ssl and dynamic zlib
+!MESSAGE debug-dll - debug dynamic library
+!MESSAGE debug-dll-ssl-dll - debug dynamic library with dynamic ssl
+!MESSAGE debug-dll-zlib-dll - debug dynamic library with dynamic zlib1
+!MESSAGE debug-dll-ssl-dll-zlib-dll - debug dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE <target> can be left blank in which case all is assumed
+!ERROR please choose a valid configuration "$(CFG)"
+!ENDIF
+
+#######################
+# Only the clean target can be used if a config was not provided.
+#
+!IF "$(CFGSET)" == "FALSE"
+clean:
+ @-erase /s *.dll 2> NUL
+ @-erase /s *.exp 2> NUL
+ @-erase /s *.idb 2> NUL
+ @-erase /s *.lib 2> NUL
+ @-erase /s *.obj 2> NUL
+ @-erase /s *.pch 2> NUL
+ @-erase /s *.pdb 2> NUL
+ @-erase /s *.res 2> NUL
+!ELSE
+# A config was provided, so the library can be built.
+#
+X_OBJS= \
+ $(DIROBJ)\amigaos.obj \
+ $(DIROBJ)\asyn-ares.obj \
+ $(DIROBJ)\asyn-thread.obj \
+ $(DIROBJ)\axtls.obj \
+ $(DIROBJ)\base64.obj \
+ $(DIROBJ)\conncache.obj \
+ $(DIROBJ)\connect.obj \
+ $(DIROBJ)\content_encoding.obj \
+ $(DIROBJ)\cookie.obj \
+ $(DIROBJ)\curl_addrinfo.obj \
+ $(DIROBJ)\curl_des.obj \
+ $(DIROBJ)\curl_endian.obj \
+ $(DIROBJ)\curl_fnmatch.obj \
+ $(DIROBJ)\curl_gethostname.obj \
+ $(DIROBJ)\curl_gssapi.obj \
+ $(DIROBJ)\curl_memrchr.obj \
+ $(DIROBJ)\curl_multibyte.obj \
+ $(DIROBJ)\curl_ntlm.obj \
+ $(DIROBJ)\curl_ntlm_core.obj \
+ $(DIROBJ)\curl_ntlm_msgs.obj \
+ $(DIROBJ)\curl_ntlm_wb.obj \
+ $(DIROBJ)\curl_rtmp.obj \
+ $(DIROBJ)\curl_sasl.obj \
+ $(DIROBJ)\curl_sasl_gssapi.obj \
+ $(DIROBJ)\curl_sasl_sspi.obj \
+ $(DIROBJ)\curl_sspi.obj \
+ $(DIROBJ)\curl_threads.obj \
+ $(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
+ $(DIROBJ)\dict.obj \
+ $(DIROBJ)\dotdot.obj \
+ $(DIROBJ)\easy.obj \
+ $(DIROBJ)\escape.obj \
+ $(DIROBJ)\file.obj \
+ $(DIROBJ)\fileinfo.obj \
+ $(DIROBJ)\formdata.obj \
+ $(DIROBJ)\ftp.obj \
+ $(DIROBJ)\ftplistparser.obj \
+ $(DIROBJ)\getenv.obj \
+ $(DIROBJ)\getinfo.obj \
+ $(DIROBJ)\gopher.obj \
+ $(DIROBJ)\gtls.obj \
+ $(DIROBJ)\hash.obj \
+ $(DIROBJ)\hmac.obj \
+ $(DIROBJ)\hostasyn.obj \
+ $(DIROBJ)\hostcheck.obj \
+ $(DIROBJ)\hostip.obj \
+ $(DIROBJ)\hostip4.obj \
+ $(DIROBJ)\hostip6.obj \
+ $(DIROBJ)\hostsyn.obj \
+ $(DIROBJ)\http.obj \
+ $(DIROBJ)\http_chunks.obj \
+ $(DIROBJ)\http_digest.obj \
+ $(DIROBJ)\http_negotiate.obj \
+ $(DIROBJ)\http_negotiate_sspi.obj \
+ $(DIROBJ)\http_proxy.obj \
+ $(DIROBJ)\idn_win32.obj \
+ $(DIROBJ)\if2ip.obj \
+ $(DIROBJ)\imap.obj \
+ $(DIROBJ)\inet_ntop.obj \
+ $(DIROBJ)\inet_pton.obj \
+ $(DIROBJ)\krb5.obj \
+ $(DIROBJ)\ldap.obj \
+ $(DIROBJ)\llist.obj \
+ $(DIROBJ)\md4.obj \
+ $(DIROBJ)\md5.obj \
+ $(DIROBJ)\memdebug.obj \
+ $(DIROBJ)\mprintf.obj \
+ $(DIROBJ)\multi.obj \
+ $(DIROBJ)\netrc.obj \
+ $(DIROBJ)\non-ascii.obj \
+ $(DIROBJ)\nonblock.obj \
+ $(DIROBJ)\nss.obj \
+ $(DIROBJ)\openldap.obj \
+ $(DIROBJ)\parsedate.obj \
+ $(DIROBJ)\pingpong.obj \
+ $(DIROBJ)\pipeline.obj \
+ $(DIROBJ)\polarssl.obj \
+ $(DIROBJ)\polarssl_threadlock.obj \
+ $(DIROBJ)\pop3.obj \
+ $(DIROBJ)\progress.obj \
+ $(DIROBJ)\rawstr.obj \
+ $(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
+ $(DIROBJ)\security.obj \
+ $(DIROBJ)\select.obj \
+ $(DIROBJ)\sendf.obj \
+ $(DIROBJ)\share.obj \
+ $(DIROBJ)\slist.obj \
+ $(DIROBJ)\smb.obj \
+ $(DIROBJ)\smtp.obj \
+ $(DIROBJ)\socks.obj \
+ $(DIROBJ)\socks_gssapi.obj \
+ $(DIROBJ)\socks_sspi.obj \
+ $(DIROBJ)\speedcheck.obj \
+ $(DIROBJ)\splay.obj \
+ $(DIROBJ)\ssh.obj \
+ $(DIROBJ)\vtls.obj \
+ $(DIROBJ)\openssl.obj \
+ $(DIROBJ)\strdup.obj \
+ $(DIROBJ)\strequal.obj \
+ $(DIROBJ)\strerror.obj \
+ $(DIROBJ)\strtok.obj \
+ $(DIROBJ)\strtoofft.obj \
+ $(DIROBJ)\telnet.obj \
+ $(DIROBJ)\tftp.obj \
+ $(DIROBJ)\timeval.obj \
+ $(DIROBJ)\transfer.obj \
+ $(DIROBJ)\url.obj \
+ $(DIROBJ)\version.obj \
+ $(DIROBJ)\warnless.obj \
+ $(DIROBJ)\wildcard.obj \
+ $(RESOURCE)
+
+all : $(TARGET)
+
+$(TARGET): $(X_OBJS)
+ $(LNK) $(LFLAGS) $(X_OBJS)
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\*.exp . /y
+ -xcopy $(DIROBJ)\*.pdb . /y
+
+$(X_OBJS): $(DIROBJ)
+
+$(DIROBJ):
+ @if not exist "$(DIROBJ)" mkdir $(DIROBJ)
+
+.SUFFIXES: .c .obj .res
+
+{.\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+{.\vtls\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+debug-dll\libcurl.res \
+debug-dll-ssl-dll\libcurl.res \
+debug-dll-zlib-dll\libcurl.res \
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc
+
+release-dll\libcurl.res \
+release-dll-ssl-dll\libcurl.res \
+release-dll-zlib-dll\libcurl.res \
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc
+!ENDIF # End of case where a config was provided.
diff --git a/lib/Makefile.vc14 b/lib/Makefile.vc14
new file mode 100644
index 000000000..226d27a77
--- /dev/null
+++ b/lib/Makefile.vc14
@@ -0,0 +1,677 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-library.
+
+###########################################################################
+#
+# Makefile for building libcurl with MSVC14
+#
+# Usage: see usage message below
+# Should be invoked from \lib directory
+# Edit the paths and desired library name
+# SSL path is only required if you intend compiling
+# with SSL.
+#
+# This make file leaves the result either a .lib or .dll file
+# in the \lib directory. It should be called from the \lib
+# directory.
+#
+# An option would have been to allow the source directory to
+# be specified, but I saw no requirement.
+#
+# Another option would have been to leave the .lib and .dll
+# files in the "cfg" directory, but then the make file
+# in \src would need to be changed.
+#
+##############################################################
+
+# ----------------------------------------------
+# Verify that current subdir is libcurl's 'lib'
+# ----------------------------------------------
+
+!IF ! EXIST(.\curl_addrinfo.c)
+! MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.
+! MESSAGE Change to libcurl's 'lib' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF LIBSSH2_PATH
+LIBSSH2_PATH = ../../libssh2-1.5.0
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC14 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+#############################################################
+## Nothing more to do below this line!
+
+CCNODBG = cl.exe /O2 /DNDEBUG
+CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSWINSSL = /DUSE_SCHANNEL
+CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
+CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+CFLAGS = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+CFLAGSLIB = /DCURL_STATICLIB
+LNKDLL = link.exe /DLL
+LNKLIB = link.exe /lib
+LFLAGS = /nologo /machine:$(MACHINE)
+SSLLIBS = libeay32.lib ssleay32.lib
+ZLIBLIBSDLL = zdll.lib
+ZLIBLIBS = zlib.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+CFLAGS = $(CFLAGS)
+
+CFGSET = FALSE
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+!IFDEF USE_IPV6
+CFLAGS = $(CFLAGS) /DUSE_IPV6
+!ENDIF
+
+!IFDEF USE_IDN
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES
+!ENDIF
+
+##############################################################
+# Runtime library configuration
+
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+
+######################
+# release
+
+!IF "$(CFG)" == "release"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl
+
+!IF "$(CFG)" == "release-ssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl
+
+!IF "$(CFG)" == "release-winssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib
+
+!IF "$(CFG)" == "release-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl-zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll
+
+!IF "$(CFG)" == "release-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib-dll
+
+!IF "$(CFG)" == "release-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-dll
+
+!IF "$(CFG)" == "release-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug
+
+!IF "$(CFG)" == "debug"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl
+
+!IF "$(CFG)" == "debug-ssl"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib
+
+!IF "$(CFG)" == "debug-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-zlib
+
+!IF "$(CFG)" == "debug-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll
+
+!IF "$(CFG)" == "debug-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib-dll
+
+!IF "$(CFG)" == "debug-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-dll
+
+!IF "$(CFG)" == "debug-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+#######################
+# Usage
+#
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""
+!MESSAGE Usage: nmake /f makefile.vc14 CFG=<config> <target>
+!MESSAGE where <config> is one of:
+!MESSAGE release - release static library
+!MESSAGE release-ssl - release static library with ssl
+!MESSAGE release-zlib - release static library with zlib
+!MESSAGE release-ssl-zlib - release static library with ssl and zlib
+!MESSAGE release-ssl-ssh2-zlib - release static library with ssl, ssh2 and zlib
+!MESSAGE release-ssl-dll - release static library with dynamic ssl
+!MESSAGE release-zlib-dll - release static library with dynamic zlib
+!MESSAGE release-ssl-dll-zlib-dll - release static library with dynamic ssl and dynamic zlib
+!MESSAGE release-dll - release dynamic library
+!MESSAGE release-dll-ssl-dll - release dynamic library with dynamic ssl
+!MESSAGE release-dll-zlib-dll - release dynamic library with dynamic zlib
+!MESSAGE release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE debug - debug static library
+!MESSAGE debug-ssl - debug static library with ssl
+!MESSAGE debug-zlib - debug static library with zlib
+!MESSAGE debug-ssl-zlib - debug static library with ssl and zlib
+!MESSAGE debug-ssl-ssh2-zlib - debug static library with ssl, ssh2 and zlib
+!MESSAGE debug-ssl-dll - debug static library with dynamic ssl
+!MESSAGE debug-zlib-dll - debug static library with dynamic zlib
+!MESSAGE debug-ssl-dll-zlib-dll - debug static library with dynamic ssl and dynamic zlib
+!MESSAGE debug-dll - debug dynamic library
+!MESSAGE debug-dll-ssl-dll - debug dynamic library with dynamic ssl
+!MESSAGE debug-dll-zlib-dll - debug dynamic library with dynamic zlib1
+!MESSAGE debug-dll-ssl-dll-zlib-dll - debug dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE <target> can be left blank in which case all is assumed
+!ERROR please choose a valid configuration "$(CFG)"
+!ENDIF
+
+#######################
+# Only the clean target can be used if a config was not provided.
+#
+!IF "$(CFGSET)" == "FALSE"
+clean:
+ @-erase /s *.dll 2> NUL
+ @-erase /s *.exp 2> NUL
+ @-erase /s *.idb 2> NUL
+ @-erase /s *.lib 2> NUL
+ @-erase /s *.obj 2> NUL
+ @-erase /s *.pch 2> NUL
+ @-erase /s *.pdb 2> NUL
+ @-erase /s *.res 2> NUL
+!ELSE
+# A config was provided, so the library can be built.
+#
+X_OBJS= \
+ $(DIROBJ)\amigaos.obj \
+ $(DIROBJ)\asyn-ares.obj \
+ $(DIROBJ)\asyn-thread.obj \
+ $(DIROBJ)\axtls.obj \
+ $(DIROBJ)\base64.obj \
+ $(DIROBJ)\conncache.obj \
+ $(DIROBJ)\connect.obj \
+ $(DIROBJ)\content_encoding.obj \
+ $(DIROBJ)\cookie.obj \
+ $(DIROBJ)\curl_addrinfo.obj \
+ $(DIROBJ)\curl_des.obj \
+ $(DIROBJ)\curl_endian.obj \
+ $(DIROBJ)\curl_fnmatch.obj \
+ $(DIROBJ)\curl_gethostname.obj \
+ $(DIROBJ)\curl_gssapi.obj \
+ $(DIROBJ)\curl_memrchr.obj \
+ $(DIROBJ)\curl_multibyte.obj \
+ $(DIROBJ)\curl_ntlm.obj \
+ $(DIROBJ)\curl_ntlm_core.obj \
+ $(DIROBJ)\curl_ntlm_msgs.obj \
+ $(DIROBJ)\curl_ntlm_wb.obj \
+ $(DIROBJ)\curl_rtmp.obj \
+ $(DIROBJ)\curl_sasl.obj \
+ $(DIROBJ)\curl_sasl_gssapi.obj \
+ $(DIROBJ)\curl_sasl_sspi.obj \
+ $(DIROBJ)\curl_sspi.obj \
+ $(DIROBJ)\curl_threads.obj \
+ $(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
+ $(DIROBJ)\dict.obj \
+ $(DIROBJ)\dotdot.obj \
+ $(DIROBJ)\easy.obj \
+ $(DIROBJ)\escape.obj \
+ $(DIROBJ)\file.obj \
+ $(DIROBJ)\fileinfo.obj \
+ $(DIROBJ)\formdata.obj \
+ $(DIROBJ)\ftp.obj \
+ $(DIROBJ)\ftplistparser.obj \
+ $(DIROBJ)\getenv.obj \
+ $(DIROBJ)\getinfo.obj \
+ $(DIROBJ)\gopher.obj \
+ $(DIROBJ)\gtls.obj \
+ $(DIROBJ)\hash.obj \
+ $(DIROBJ)\hmac.obj \
+ $(DIROBJ)\hostasyn.obj \
+ $(DIROBJ)\hostcheck.obj \
+ $(DIROBJ)\hostip.obj \
+ $(DIROBJ)\hostip4.obj \
+ $(DIROBJ)\hostip6.obj \
+ $(DIROBJ)\hostsyn.obj \
+ $(DIROBJ)\http.obj \
+ $(DIROBJ)\http_chunks.obj \
+ $(DIROBJ)\http_digest.obj \
+ $(DIROBJ)\http_negotiate.obj \
+ $(DIROBJ)\http_negotiate_sspi.obj \
+ $(DIROBJ)\http_proxy.obj \
+ $(DIROBJ)\idn_win32.obj \
+ $(DIROBJ)\if2ip.obj \
+ $(DIROBJ)\imap.obj \
+ $(DIROBJ)\inet_ntop.obj \
+ $(DIROBJ)\inet_pton.obj \
+ $(DIROBJ)\krb5.obj \
+ $(DIROBJ)\ldap.obj \
+ $(DIROBJ)\llist.obj \
+ $(DIROBJ)\md4.obj \
+ $(DIROBJ)\md5.obj \
+ $(DIROBJ)\memdebug.obj \
+ $(DIROBJ)\mprintf.obj \
+ $(DIROBJ)\multi.obj \
+ $(DIROBJ)\netrc.obj \
+ $(DIROBJ)\non-ascii.obj \
+ $(DIROBJ)\nonblock.obj \
+ $(DIROBJ)\nss.obj \
+ $(DIROBJ)\openldap.obj \
+ $(DIROBJ)\parsedate.obj \
+ $(DIROBJ)\pingpong.obj \
+ $(DIROBJ)\pipeline.obj \
+ $(DIROBJ)\polarssl.obj \
+ $(DIROBJ)\polarssl_threadlock.obj \
+ $(DIROBJ)\pop3.obj \
+ $(DIROBJ)\progress.obj \
+ $(DIROBJ)\rawstr.obj \
+ $(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
+ $(DIROBJ)\security.obj \
+ $(DIROBJ)\select.obj \
+ $(DIROBJ)\sendf.obj \
+ $(DIROBJ)\share.obj \
+ $(DIROBJ)\slist.obj \
+ $(DIROBJ)\smb.obj \
+ $(DIROBJ)\smtp.obj \
+ $(DIROBJ)\socks.obj \
+ $(DIROBJ)\socks_gssapi.obj \
+ $(DIROBJ)\socks_sspi.obj \
+ $(DIROBJ)\speedcheck.obj \
+ $(DIROBJ)\splay.obj \
+ $(DIROBJ)\ssh.obj \
+ $(DIROBJ)\vtls.obj \
+ $(DIROBJ)\openssl.obj \
+ $(DIROBJ)\strdup.obj \
+ $(DIROBJ)\strequal.obj \
+ $(DIROBJ)\strerror.obj \
+ $(DIROBJ)\strtok.obj \
+ $(DIROBJ)\strtoofft.obj \
+ $(DIROBJ)\telnet.obj \
+ $(DIROBJ)\tftp.obj \
+ $(DIROBJ)\timeval.obj \
+ $(DIROBJ)\transfer.obj \
+ $(DIROBJ)\url.obj \
+ $(DIROBJ)\version.obj \
+ $(DIROBJ)\warnless.obj \
+ $(DIROBJ)\wildcard.obj \
+ $(RESOURCE)
+
+all : $(TARGET)
+
+$(TARGET): $(X_OBJS)
+ $(LNK) $(LFLAGS) $(X_OBJS)
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\*.exp . /y
+ -xcopy $(DIROBJ)\*.pdb . /y
+
+$(X_OBJS): $(DIROBJ)
+
+$(DIROBJ):
+ @if not exist "$(DIROBJ)" mkdir $(DIROBJ)
+
+.SUFFIXES: .c .obj .res
+
+{.\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+{.\vtls\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+debug-dll\libcurl.res \
+debug-dll-ssl-dll\libcurl.res \
+debug-dll-zlib-dll\libcurl.res \
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc
+
+release-dll\libcurl.res \
+release-dll-ssl-dll\libcurl.res \
+release-dll-zlib-dll\libcurl.res \
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc
+!ENDIF # End of case where a config was provided.
diff --git a/lib/Makefile.vc6 b/lib/Makefile.vc6
index ee20ebe12..c34c3dbc7 100644
--- a/lib/Makefile.vc6
+++ b/lib/Makefile.vc6
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -65,11 +65,11 @@
!INCLUDE ..\winbuild\Makefile.msvc.names
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
!ENDIF
!IFNDEF ZLIB_PATH
@@ -90,7 +90,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
CCNODBG = cl.exe /O2 /DNDEBUG
CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /GZ
-CFLAGSSSL = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
CFLAGSWINSSL = /DUSE_SCHANNEL
CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
@@ -427,7 +427,7 @@ CFGSET = TRUE
TARGET = $(LIBCURL_DYN_LIB_DBG)
DIROBJ = $(CFG)
LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
-CC = $(CCDEBUG) $(RTLIBD)
+CC = $(CCDEBUG) $(RTLIBD)
CFGSET = TRUE
RESOURCE = $(DIROBJ)\libcurl.res
!ENDIF
@@ -528,13 +528,12 @@ X_OBJS= \
$(DIROBJ)\asyn-thread.obj \
$(DIROBJ)\axtls.obj \
$(DIROBJ)\base64.obj \
- $(DIROBJ)\bundles.obj \
$(DIROBJ)\conncache.obj \
$(DIROBJ)\connect.obj \
$(DIROBJ)\content_encoding.obj \
$(DIROBJ)\cookie.obj \
$(DIROBJ)\curl_addrinfo.obj \
- $(DIROBJ)\curl_darwinssl.obj \
+ $(DIROBJ)\curl_des.obj \
$(DIROBJ)\curl_endian.obj \
$(DIROBJ)\curl_fnmatch.obj \
$(DIROBJ)\curl_gethostname.obj \
@@ -549,10 +548,10 @@ X_OBJS= \
$(DIROBJ)\curl_sasl.obj \
$(DIROBJ)\curl_sasl_gssapi.obj \
$(DIROBJ)\curl_sasl_sspi.obj \
- $(DIROBJ)\curl_schannel.obj \
$(DIROBJ)\curl_sspi.obj \
$(DIROBJ)\curl_threads.obj \
$(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
$(DIROBJ)\dict.obj \
$(DIROBJ)\dotdot.obj \
$(DIROBJ)\easy.obj \
@@ -607,6 +606,7 @@ X_OBJS= \
$(DIROBJ)\progress.obj \
$(DIROBJ)\rawstr.obj \
$(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
$(DIROBJ)\security.obj \
$(DIROBJ)\select.obj \
$(DIROBJ)\sendf.obj \
diff --git a/lib/Makefile.vc7 b/lib/Makefile.vc7
new file mode 100644
index 000000000..97c4773a5
--- /dev/null
+++ b/lib/Makefile.vc7
@@ -0,0 +1,677 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-library.
+
+###########################################################################
+#
+# Makefile for building libcurl with MSVC7
+#
+# Usage: see usage message below
+# Should be invoked from \lib directory
+# Edit the paths and desired library name
+# SSL path is only required if you intend compiling
+# with SSL.
+#
+# This make file leaves the result either a .lib or .dll file
+# in the \lib directory. It should be called from the \lib
+# directory.
+#
+# An option would have been to allow the source directory to
+# be specified, but I saw no requirement.
+#
+# Another option would have been to leave the .lib and .dll
+# files in the "cfg" directory, but then the make file
+# in \src would need to be changed.
+#
+##############################################################
+
+# ----------------------------------------------
+# Verify that current subdir is libcurl's 'lib'
+# ----------------------------------------------
+
+!IF ! EXIST(.\curl_addrinfo.c)
+! MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.
+! MESSAGE Change to libcurl's 'lib' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF LIBSSH2_PATH
+LIBSSH2_PATH = ../../libssh2-1.5.0
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC7 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+#############################################################
+## Nothing more to do below this line!
+
+CCNODBG = cl.exe /O2 /DNDEBUG
+CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /GZ
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSWINSSL = /DUSE_SCHANNEL
+CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
+CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+CFLAGS = /I. /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+CFLAGSLIB = /DCURL_STATICLIB
+LNKDLL = link.exe /DLL
+LNKLIB = link.exe /lib
+LFLAGS = /nologo /machine:$(MACHINE)
+SSLLIBS = libeay32.lib ssleay32.lib
+ZLIBLIBSDLL = zdll.lib
+ZLIBLIBS = zlib.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+CFLAGS = $(CFLAGS)
+
+CFGSET = FALSE
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+!IFDEF USE_IPV6
+CFLAGS = $(CFLAGS) /DUSE_IPV6
+!ENDIF
+
+!IFDEF USE_IDN
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES
+!ENDIF
+
+##############################################################
+# Runtime library configuration
+
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+
+######################
+# release
+
+!IF "$(CFG)" == "release"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl
+
+!IF "$(CFG)" == "release-ssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl
+
+!IF "$(CFG)" == "release-winssl"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib
+
+!IF "$(CFG)" == "release-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-winssl-zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll
+
+!IF "$(CFG)" == "release-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-zlib-dll
+
+!IF "$(CFG)" == "release-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# release-dll
+
+!IF "$(CFG)" == "release-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# release-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_REL)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)
+CC = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug
+
+!IF "$(CFG)" == "debug"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl
+
+!IF "$(CFG)" == "debug-ssl"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib
+
+!IF "$(CFG)" == "debug-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-zlib
+
+!IF "$(CFG)" == "debug-ssl-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-ssh2-zlib
+
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"
+LNK = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll
+
+!IF "$(CFG)" == "debug-ssl-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-zlib-dll
+
+!IF "$(CFG)" == "debug-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_STA_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)
+CFGSET = TRUE
+!ENDIF
+
+######################
+# debug-dll
+
+!IF "$(CFG)" == "debug-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LNK = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+######################
+# debug-dll-ssl-dll-zlib-dll
+
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"
+TARGET = $(LIBCURL_DYN_LIB_DBG)
+DIROBJ = $(CFG)
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"
+LNK = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
+CC = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)
+CFGSET = TRUE
+RESOURCE = $(DIROBJ)\libcurl.res
+!ENDIF
+
+#######################
+# Usage
+#
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""
+!MESSAGE Usage: nmake /f makefile.vc6 CFG=<config> <target>
+!MESSAGE where <config> is one of:
+!MESSAGE release - release static library
+!MESSAGE release-ssl - release static library with ssl
+!MESSAGE release-zlib - release static library with zlib
+!MESSAGE release-ssl-zlib - release static library with ssl and zlib
+!MESSAGE release-ssl-ssh2-zlib - release static library with ssl, ssh2 and zlib
+!MESSAGE release-ssl-dll - release static library with dynamic ssl
+!MESSAGE release-zlib-dll - release static library with dynamic zlib
+!MESSAGE release-ssl-dll-zlib-dll - release static library with dynamic ssl and dynamic zlib
+!MESSAGE release-dll - release dynamic library
+!MESSAGE release-dll-ssl-dll - release dynamic library with dynamic ssl
+!MESSAGE release-dll-zlib-dll - release dynamic library with dynamic zlib
+!MESSAGE release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE debug - debug static library
+!MESSAGE debug-ssl - debug static library with ssl
+!MESSAGE debug-zlib - debug static library with zlib
+!MESSAGE debug-ssl-zlib - debug static library with ssl and zlib
+!MESSAGE debug-ssl-ssh2-zlib - debug static library with ssl, ssh2 and zlib
+!MESSAGE debug-ssl-dll - debug static library with dynamic ssl
+!MESSAGE debug-zlib-dll - debug static library with dynamic zlib
+!MESSAGE debug-ssl-dll-zlib-dll - debug static library with dynamic ssl and dynamic zlib
+!MESSAGE debug-dll - debug dynamic library
+!MESSAGE debug-dll-ssl-dll - debug dynamic library with dynamic ssl
+!MESSAGE debug-dll-zlib-dll - debug dynamic library with dynamic zlib1
+!MESSAGE debug-dll-ssl-dll-zlib-dll - debug dynamic library with dynamic ssl and dynamic zlib
+!MESSAGE <target> can be left blank in which case all is assumed
+!ERROR please choose a valid configuration "$(CFG)"
+!ENDIF
+
+#######################
+# Only the clean target can be used if a config was not provided.
+#
+!IF "$(CFGSET)" == "FALSE"
+clean:
+ @-erase /s *.dll 2> NUL
+ @-erase /s *.exp 2> NUL
+ @-erase /s *.idb 2> NUL
+ @-erase /s *.lib 2> NUL
+ @-erase /s *.obj 2> NUL
+ @-erase /s *.pch 2> NUL
+ @-erase /s *.pdb 2> NUL
+ @-erase /s *.res 2> NUL
+!ELSE
+# A config was provided, so the library can be built.
+#
+X_OBJS= \
+ $(DIROBJ)\amigaos.obj \
+ $(DIROBJ)\asyn-ares.obj \
+ $(DIROBJ)\asyn-thread.obj \
+ $(DIROBJ)\axtls.obj \
+ $(DIROBJ)\base64.obj \
+ $(DIROBJ)\conncache.obj \
+ $(DIROBJ)\connect.obj \
+ $(DIROBJ)\content_encoding.obj \
+ $(DIROBJ)\cookie.obj \
+ $(DIROBJ)\curl_addrinfo.obj \
+ $(DIROBJ)\curl_des.obj \
+ $(DIROBJ)\curl_endian.obj \
+ $(DIROBJ)\curl_fnmatch.obj \
+ $(DIROBJ)\curl_gethostname.obj \
+ $(DIROBJ)\curl_gssapi.obj \
+ $(DIROBJ)\curl_memrchr.obj \
+ $(DIROBJ)\curl_multibyte.obj \
+ $(DIROBJ)\curl_ntlm.obj \
+ $(DIROBJ)\curl_ntlm_core.obj \
+ $(DIROBJ)\curl_ntlm_msgs.obj \
+ $(DIROBJ)\curl_ntlm_wb.obj \
+ $(DIROBJ)\curl_rtmp.obj \
+ $(DIROBJ)\curl_sasl.obj \
+ $(DIROBJ)\curl_sasl_gssapi.obj \
+ $(DIROBJ)\curl_sasl_sspi.obj \
+ $(DIROBJ)\curl_sspi.obj \
+ $(DIROBJ)\curl_threads.obj \
+ $(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
+ $(DIROBJ)\dict.obj \
+ $(DIROBJ)\dotdot.obj \
+ $(DIROBJ)\easy.obj \
+ $(DIROBJ)\escape.obj \
+ $(DIROBJ)\file.obj \
+ $(DIROBJ)\fileinfo.obj \
+ $(DIROBJ)\formdata.obj \
+ $(DIROBJ)\ftp.obj \
+ $(DIROBJ)\ftplistparser.obj \
+ $(DIROBJ)\getenv.obj \
+ $(DIROBJ)\getinfo.obj \
+ $(DIROBJ)\gopher.obj \
+ $(DIROBJ)\gtls.obj \
+ $(DIROBJ)\hash.obj \
+ $(DIROBJ)\hmac.obj \
+ $(DIROBJ)\hostasyn.obj \
+ $(DIROBJ)\hostcheck.obj \
+ $(DIROBJ)\hostip.obj \
+ $(DIROBJ)\hostip4.obj \
+ $(DIROBJ)\hostip6.obj \
+ $(DIROBJ)\hostsyn.obj \
+ $(DIROBJ)\http.obj \
+ $(DIROBJ)\http_chunks.obj \
+ $(DIROBJ)\http_digest.obj \
+ $(DIROBJ)\http_negotiate.obj \
+ $(DIROBJ)\http_negotiate_sspi.obj \
+ $(DIROBJ)\http_proxy.obj \
+ $(DIROBJ)\idn_win32.obj \
+ $(DIROBJ)\if2ip.obj \
+ $(DIROBJ)\imap.obj \
+ $(DIROBJ)\inet_ntop.obj \
+ $(DIROBJ)\inet_pton.obj \
+ $(DIROBJ)\krb5.obj \
+ $(DIROBJ)\ldap.obj \
+ $(DIROBJ)\llist.obj \
+ $(DIROBJ)\md4.obj \
+ $(DIROBJ)\md5.obj \
+ $(DIROBJ)\memdebug.obj \
+ $(DIROBJ)\mprintf.obj \
+ $(DIROBJ)\multi.obj \
+ $(DIROBJ)\netrc.obj \
+ $(DIROBJ)\non-ascii.obj \
+ $(DIROBJ)\nonblock.obj \
+ $(DIROBJ)\nss.obj \
+ $(DIROBJ)\openldap.obj \
+ $(DIROBJ)\parsedate.obj \
+ $(DIROBJ)\pingpong.obj \
+ $(DIROBJ)\pipeline.obj \
+ $(DIROBJ)\polarssl.obj \
+ $(DIROBJ)\polarssl_threadlock.obj \
+ $(DIROBJ)\pop3.obj \
+ $(DIROBJ)\progress.obj \
+ $(DIROBJ)\rawstr.obj \
+ $(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
+ $(DIROBJ)\security.obj \
+ $(DIROBJ)\select.obj \
+ $(DIROBJ)\sendf.obj \
+ $(DIROBJ)\share.obj \
+ $(DIROBJ)\slist.obj \
+ $(DIROBJ)\smb.obj \
+ $(DIROBJ)\smtp.obj \
+ $(DIROBJ)\socks.obj \
+ $(DIROBJ)\socks_gssapi.obj \
+ $(DIROBJ)\socks_sspi.obj \
+ $(DIROBJ)\speedcheck.obj \
+ $(DIROBJ)\splay.obj \
+ $(DIROBJ)\ssh.obj \
+ $(DIROBJ)\vtls.obj \
+ $(DIROBJ)\openssl.obj \
+ $(DIROBJ)\strdup.obj \
+ $(DIROBJ)\strequal.obj \
+ $(DIROBJ)\strerror.obj \
+ $(DIROBJ)\strtok.obj \
+ $(DIROBJ)\strtoofft.obj \
+ $(DIROBJ)\telnet.obj \
+ $(DIROBJ)\tftp.obj \
+ $(DIROBJ)\timeval.obj \
+ $(DIROBJ)\transfer.obj \
+ $(DIROBJ)\url.obj \
+ $(DIROBJ)\version.obj \
+ $(DIROBJ)\warnless.obj \
+ $(DIROBJ)\wildcard.obj \
+ $(RESOURCE)
+
+all : $(TARGET)
+
+$(TARGET): $(X_OBJS)
+ $(LNK) $(LFLAGS) $(X_OBJS)
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y
+ -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y
+ -xcopy $(DIROBJ)\*.exp . /y
+ -xcopy $(DIROBJ)\*.pdb . /y
+
+$(X_OBJS): $(DIROBJ)
+
+$(DIROBJ):
+ @if not exist "$(DIROBJ)" mkdir $(DIROBJ)
+
+.SUFFIXES: .c .obj .res
+
+{.\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+{.\vtls\}.c{$(DIROBJ)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+debug-dll\libcurl.res \
+debug-dll-ssl-dll\libcurl.res \
+debug-dll-zlib-dll\libcurl.res \
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc
+
+release-dll\libcurl.res \
+release-dll-ssl-dll\libcurl.res \
+release-dll-zlib-dll\libcurl.res \
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+ rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc
+!ENDIF # End of case where a config was provided.
diff --git a/lib/Makefile.vc8 b/lib/Makefile.vc8
index 0d10ac570..10732f9ba 100644
--- a/lib/Makefile.vc8
+++ b/lib/Makefile.vc8
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -65,11 +65,11 @@
!INCLUDE ..\winbuild\Makefile.msvc.names
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
!ENDIF
!IFNDEF ZLIB_PATH
@@ -90,7 +90,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
CCNODBG = cl.exe /O2 /DNDEBUG
CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1
-CFLAGSSSL = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
CFLAGSWINSSL = /DUSE_SCHANNEL
CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
@@ -427,7 +427,7 @@ CFGSET = TRUE
TARGET = $(LIBCURL_DYN_LIB_DBG)
DIROBJ = $(CFG)
LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
-CC = $(CCDEBUG) $(RTLIBD)
+CC = $(CCDEBUG) $(RTLIBD)
CFGSET = TRUE
RESOURCE = $(DIROBJ)\libcurl.res
!ENDIF
@@ -528,13 +528,12 @@ X_OBJS= \
$(DIROBJ)\asyn-thread.obj \
$(DIROBJ)\axtls.obj \
$(DIROBJ)\base64.obj \
- $(DIROBJ)\bundles.obj \
$(DIROBJ)\conncache.obj \
$(DIROBJ)\connect.obj \
$(DIROBJ)\content_encoding.obj \
$(DIROBJ)\cookie.obj \
$(DIROBJ)\curl_addrinfo.obj \
- $(DIROBJ)\curl_darwinssl.obj \
+ $(DIROBJ)\curl_des.obj \
$(DIROBJ)\curl_endian.obj \
$(DIROBJ)\curl_fnmatch.obj \
$(DIROBJ)\curl_gethostname.obj \
@@ -549,10 +548,10 @@ X_OBJS= \
$(DIROBJ)\curl_sasl.obj \
$(DIROBJ)\curl_sasl_gssapi.obj \
$(DIROBJ)\curl_sasl_sspi.obj \
- $(DIROBJ)\curl_schannel.obj \
$(DIROBJ)\curl_sspi.obj \
$(DIROBJ)\curl_threads.obj \
$(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
$(DIROBJ)\dict.obj \
$(DIROBJ)\dotdot.obj \
$(DIROBJ)\easy.obj \
@@ -607,6 +606,7 @@ X_OBJS= \
$(DIROBJ)\progress.obj \
$(DIROBJ)\rawstr.obj \
$(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
$(DIROBJ)\security.obj \
$(DIROBJ)\select.obj \
$(DIROBJ)\sendf.obj \
diff --git a/lib/Makefile.vc9 b/lib/Makefile.vc9
index 9f1b8d44a..0d9d951f8 100644
--- a/lib/Makefile.vc9
+++ b/lib/Makefile.vc9
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -65,11 +65,11 @@
!INCLUDE ..\winbuild\Makefile.msvc.names
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
!ENDIF
!IFNDEF ZLIB_PATH
@@ -90,7 +90,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
CCNODBG = cl.exe /O2 /DNDEBUG
CCDEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1
-CFLAGSSSL = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
+CFLAGSSSL = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
CFLAGSWINSSL = /DUSE_SCHANNEL
CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"
CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
@@ -427,7 +427,7 @@ CFGSET = TRUE
TARGET = $(LIBCURL_DYN_LIB_DBG)
DIROBJ = $(CFG)
LNK = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)
-CC = $(CCDEBUG) $(RTLIBD)
+CC = $(CCDEBUG) $(RTLIBD)
CFGSET = TRUE
RESOURCE = $(DIROBJ)\libcurl.res
!ENDIF
@@ -528,13 +528,12 @@ X_OBJS= \
$(DIROBJ)\asyn-thread.obj \
$(DIROBJ)\axtls.obj \
$(DIROBJ)\base64.obj \
- $(DIROBJ)\bundles.obj \
$(DIROBJ)\conncache.obj \
$(DIROBJ)\connect.obj \
$(DIROBJ)\content_encoding.obj \
$(DIROBJ)\cookie.obj \
$(DIROBJ)\curl_addrinfo.obj \
- $(DIROBJ)\curl_darwinssl.obj \
+ $(DIROBJ)\curl_des.obj \
$(DIROBJ)\curl_endian.obj \
$(DIROBJ)\curl_fnmatch.obj \
$(DIROBJ)\curl_gethostname.obj \
@@ -549,10 +548,10 @@ X_OBJS= \
$(DIROBJ)\curl_sasl.obj \
$(DIROBJ)\curl_sasl_gssapi.obj \
$(DIROBJ)\curl_sasl_sspi.obj \
- $(DIROBJ)\curl_schannel.obj \
$(DIROBJ)\curl_sspi.obj \
$(DIROBJ)\curl_threads.obj \
$(DIROBJ)\cyassl.obj \
+ $(DIROBJ)\darwinssl.obj \
$(DIROBJ)\dict.obj \
$(DIROBJ)\dotdot.obj \
$(DIROBJ)\easy.obj \
@@ -607,6 +606,7 @@ X_OBJS= \
$(DIROBJ)\progress.obj \
$(DIROBJ)\rawstr.obj \
$(DIROBJ)\rtsp.obj \
+ $(DIROBJ)\schannel.obj \
$(DIROBJ)\security.obj \
$(DIROBJ)\select.obj \
$(DIROBJ)\sendf.obj \
diff --git a/lib/README.ares b/lib/README.ares
deleted file mode 100644
index 8c77937eb..000000000
--- a/lib/README.ares
+++ /dev/null
@@ -1,69 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- How To Build libcurl to Use c-ares For Asynch Name Resolves
- ===========================================================
-
-c-ares:
- http://c-ares.haxx.se/
-
-NOTE
- The latest libcurl version requires c-ares 1.6.0 or later.
-
- Once upon the time libcurl built fine with the "original" ares. That is no
- longer true. You need to use c-ares.
-
-Build c-ares
-============
-
-1. unpack the c-ares archive
-2. cd c-ares-dir
-3. ./configure
-4. make
-5. make install
-
-Build libcurl to use c-ares in the curl source tree
-===================================================
-
-1. name or symlink the c-ares source directory 'ares' in the curl source
- directory
-2. ./configure --enable-ares
-
- Optionally, you can point out the c-ares install tree root with the the
- --enable-ares option.
-
-3. make
-
-Build libcurl to use an installed c-ares
-========================================
-
-1. ./configure --enable-ares=/path/to/ares/install
-2. make
-
-c-ares on win32
-===============
-(description brought by Dominick Meglio)
-
-First I compiled c-ares. I changed the default C runtime library to be the
-single-threaded rather than the multi-threaded (this seems to be required to
-prevent linking errors later on). Then I simply build the areslib project (the
-other projects adig/ahost seem to fail under MSVC).
-
-Next was libcurl. I opened lib/config-win32.h and I added a:
- #define USE_ARES 1
-
-Next thing I did was I added the path for the ares includes to the include
-path, and the libares.lib to the libraries.
-
-Lastly, I also changed libcurl to be single-threaded rather than
-multi-threaded, again this was to prevent some duplicate symbol errors. I'm
-not sure why I needed to change everything to single-threaded, but when I
-didn't I got redefinition errors for several CRT functions (malloc, stricmp,
-etc.)
-
-I would have modified the MSVC++ project files, but I only have VC.NET and it
-uses a different format than VC6.0 so I didn't want to go and change
-everything and remove VC6.0 support from libcurl.
diff --git a/lib/README.curl_off_t b/lib/README.curl_off_t
deleted file mode 100644
index 923b2774c..000000000
--- a/lib/README.curl_off_t
+++ /dev/null
@@ -1,68 +0,0 @@
-
- curl_off_t explained
- ====================
-
-curl_off_t is a data type provided by the external libcurl include headers. It
-is the type meant to be used for the curl_easy_setopt() options that end with
-LARGE. The type is 64bit large on most modern platforms.
-
-Transition from < 7.19.0 to >= 7.19.0
--------------------------------------
-
-Applications that used libcurl before 7.19.0 that are rebuilt with a libcurl
-that is 7.19.0 or later may or may not have to worry about anything of
-this. We have made a significant effort to make the transition really seamless
-and transparent.
-
-You have have to take notice if you are in one of the following situations:
-
-o Your app is using or will after the transition use a libcurl that is built
- with LFS (large file support) disabled even though your system otherwise
- supports it.
-
-o Your app is using or will after the transition use a libcurl that doesn't
- support LFS at all, but your system and compiler support 64bit data types.
-
-In both these cases, the curl_off_t type will now (after the transition) be
-64bit where it previously was 32bit. This will cause a binary incompatibility
-that you MAY need to deal with.
-
-Benefits
---------
-
-This new way has several benefits:
-
-o Platforms without LFS support can still use libcurl to do >32 bit file
- transfers and range operations etc as long as they have >32 bit data-types
- supported.
-
-o Applications will no longer easily build with the curl_off_t size
- mismatched, which has been a very frequent (and annoying) problem with
- libcurl <= 7.18.2
-
-Historically
-------------
-
-Previously, before 7.19.0, the curl_off_t type would be rather strongly
-connected to the size of the system off_t type, where currently curl_off_t is
-independent of that.
-
-The strong connection to off_t made it troublesome for application authors
-since when they did mistakes, they could get curl_off_t type of different
-sizes in the app vs libcurl, and that caused strange effects that were hard to
-track and detect by users of libcurl.
-
-SONAME
-------
-
-We opted to not bump the soname for the library unconditionally, simply
-because soname bumping is causing a lot of grief and moaning all over the
-community so we try to keep that at minimum. Also, our selected design path
-should be 100% backwards compatible for the vast majority of all libcurl
-users.
-
-Enforce SONAME bump
--------------------
-
-If configure doesn't detect your case where a bump is necessary, re-run it
-with the --enable-soname-bump command line option!
diff --git a/lib/README.curlx b/lib/README.curlx
deleted file mode 100644
index 5375b0d1d..000000000
--- a/lib/README.curlx
+++ /dev/null
@@ -1,61 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- Source Code Functions Apps Might Use
- ====================================
-
-The libcurl source code offers a few functions by source only. They are not
-part of the official libcurl API, but the source files might be useful for
-others so apps can optionally compile/build with these sources to gain
-additional functions.
-
-We provide them through a single header file for easy access for apps:
-"curlx.h"
-
- curlx_strtoofft()
-
- A macro that converts a string containing a number to a curl_off_t number.
- This might use the curlx_strtoll() function which is provided as source
- code in strtoofft.c. Note that the function is only provided if no
- strtoll() (or equivalent) function exist on your platform. If curl_off_t
- is only a 32 bit number on your platform, this macro uses strtol().
-
- curlx_tvnow()
-
- returns a struct timeval for the current time.
-
- curlx_tvdiff()
-
- returns the difference between two timeval structs, in number of
- milliseconds.
-
- curlx_tvdiff_secs()
-
- returns the same as curlx_tvdiff but with full usec resolution (as a
- double)
-
-FUTURE
-======
-
- Several functions will be removed from the public curl_ name space in a
- future libcurl release. They will then only become available as curlx_
- functions instead. To make the transition easier, we already today provide
- these functions with the curlx_ prefix to allow sources to get built properly
- with the new function names. The functions this concerns are:
-
- curlx_getenv
- curlx_strequal
- curlx_strnequal
- curlx_mvsnprintf
- curlx_msnprintf
- curlx_maprintf
- curlx_mvaprintf
- curlx_msprintf
- curlx_mprintf
- curlx_mfprintf
- curlx_mvsprintf
- curlx_mvprintf
- curlx_mvfprintf
diff --git a/lib/README.encoding b/lib/README.encoding
deleted file mode 100644
index 1012bb9ec..000000000
--- a/lib/README.encoding
+++ /dev/null
@@ -1,60 +0,0 @@
-
- Content Encoding Support for libcurl
-
-* About content encodings:
-
-HTTP/1.1 [RFC 2616] specifies that a client may request that a server encode
-its response. This is usually used to compress a response using one of a set
-of commonly available compression techniques. These schemes are `deflate' (the
-zlib algorithm), `gzip' and `compress' [sec 3.5, RFC 2616]. A client requests
-that the sever perform an encoding by including an Accept-Encoding header in
-the request document. The value of the header should be one of the recognized
-tokens `deflate', ... (there's a way to register new schemes/tokens, see sec
-3.5 of the spec). A server MAY honor the client's encoding request. When a
-response is encoded, the server includes a Content-Encoding header in the
-response. The value of the Content-Encoding header indicates which scheme was
-used to encode the data.
-
-A client may tell a server that it can understand several different encoding
-schemes. In this case the server may choose any one of those and use it to
-encode the response (indicating which one using the Content-Encoding header).
-It's also possible for a client to attach priorities to different schemes so
-that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
-information on the Accept-Encoding header.
-
-* Current support for content encoding:
-
-Support for the 'deflate' and 'gzip' content encoding are supported by
-libcurl. Both regular and chunked transfers should work fine. The library
-zlib is required for this feature. 'deflate' support was added by James
-Gallagher, and support for the 'gzip' encoding was added by Dan Fandrich.
-
-* The libcurl interface:
-
-To cause libcurl to request a content encoding use:
-
- curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, <string>)
-
-where <string> is the intended value of the Accept-Encoding header.
-
-Currently, libcurl only understands how to process responses that use the
-"deflate" or "gzip" Content-Encoding, so the only values for
-CURLOPT_ACCEPT_ENCODING that will work (besides "identity," which does
-nothing) are "deflate" and "gzip" If a response is encoded using the
-"compress" or methods, libcurl will return an error indicating that the
-response could not be decoded. If <string> is NULL no Accept-Encoding header
-is generated. If <string> is a zero-length string, then an Accept-Encoding
-header containing all supported encodings will be generated.
-
-The CURLOPT_ACCEPT_ENCODING must be set to any non-NULL value for content to
-be automatically decoded. If it is not set and the server still sends encoded
-content (despite not having been asked), the data is returned in its raw form
-and the Content-Encoding type is not checked.
-
-* The curl interface:
-
-Use the --compressed option with curl to cause it to ask servers to compress
-responses using any format supported by curl.
-
-James Gallagher <jgallagher@gso.uri.edu>
-Dan Fandrich <dan@coneharvesters.com>
diff --git a/lib/README.hostip b/lib/README.hostip
deleted file mode 100644
index d5688fff1..000000000
--- a/lib/README.hostip
+++ /dev/null
@@ -1,35 +0,0 @@
- hostip.c explained
- ==================
-
- The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
- source file are these:
-
- CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
- that. The host may not be able to resolve IPv6, but we don't really have to
- take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
- defined.
-
- CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
- name resolves. This can be Windows or *nix.
-
- CURLRES_THREADED - is defined if libcurl is built to use threading for
- asynchronous name resolves. The name resolve will be done in a new thread,
- and the supported asynch API will be the same as for ares-builds. This is
- the default under (native) Windows.
-
- If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
- libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
- defined.
-
- The host*.c sources files are split up like this:
-
- hostip.c - method-independent resolver functions and utility functions
- hostasyn.c - functions for asynchronous name resolves
- hostsyn.c - functions for synchronous name resolves
- asyn-ares.c - functions for asynchronous name resolves using c-ares
- asyn-thread.c - functions for asynchronous name resolves using threads
- hostip4.c - IPv4 specific functions
- hostip6.c - IPv6 specific functions
-
- The hostip.h is the single united header file for all this. It defines the
- CURLRES_* defines based on the config*.h and curl_setup.h defines.
diff --git a/lib/README.httpauth b/lib/README.httpauth
deleted file mode 100644
index 960504510..000000000
--- a/lib/README.httpauth
+++ /dev/null
@@ -1,74 +0,0 @@
-
-1. PUT/POST without a known auth to use (possibly no auth required):
-
- (When explicitly set to use a multi-pass auth when doing a POST/PUT,
- libcurl should immediately go the Content-Length: 0 bytes route to avoid
- the first send all data phase, step 2. If told to use a single-pass auth,
- goto step 3.)
-
- Issue the proper PUT/POST request immediately, with the correct
- Content-Length and Expect: headers.
-
- If a 100 response is received or the wait for one times out, start sending
- the request-body.
-
- If a 401 (or 407 when talking through a proxy) is received, then:
-
- If we have "more than just a little" data left to send, close the
- connection. Exactly what "more than just a little" means will have to be
- determined. Possibly the current transfer speed should be taken into
- account as well.
-
- NOTE: if the size of the POST data is less than MAX_INITIAL_POST_SIZE (when
- CURLOPT_POSTFIELDS is used), libcurl will send everything in one single
- write() (all request-headers and request-body) and thus it will
- unconditionally send the full post data here.
-
-2. PUT/POST with multi-pass auth but not yet completely negotiated:
-
- Send a PUT/POST request, we know that it will be rejected and thus we claim
- Content-Length zero to avoid having to send the request-body. (This seems
- to be what IE does.)
-
-3. PUT/POST as the last step in the auth negotiation, that is when we have
- what we believe is a completed negotiation:
-
- Send a full and proper PUT/POST request (again) with the proper
- Content-Length and a following request-body.
-
- NOTE: this may very well be the second (or even third) time the whole or at
- least parts of the request body is sent to the server. Since the data may
- be provided to libcurl with a callback, we need a way to tell the app that
- the upload is to be restarted so that the callback will provide data from
- the start again. This requires an API method/mechanism that libcurl
- doesn't have today. See below.
-
-Data Rewind
-
- It will be troublesome for some apps to deal with a rewind like this in all
- circumstances. I'm thinking for example when using 'curl' to upload data
- from stdin. If libcurl ends up having to rewind the reading for a request
- to succeed, of course a lack of this callback or if it returns failure, will
- cause the request to fail completely.
-
- The new callback is set with CURLOPT_IOCTLFUNCTION (in an attempt to add a
- more generic function that might be used for other IO-related controls in
- the future):
-
- curlioerr curl_ioctl(CURL *handle, curliocmd cmd, void *clientp);
-
- And in the case where the read is to be rewinded, it would be called with a
- cmd named CURLIOCMD_RESTARTREAD. The callback would then return CURLIOE_OK,
- if things are fine, or CURLIOE_FAILRESTART if not.
-
-Backwards Compatibility
-
- The approach used until now, that issues a HEAD on the given URL to trigger
- the auth negotiation could still be supported and encouraged, but it would
- be up to the app to first fetch a URL with GET/HEAD to negotiate on, since
- then a following PUT/POST wouldn't need to negotiate authentication and
- thus avoid double-sending data.
-
- Optionally, we keep the current approach if some option is set
- (CURLOPT_HEADBEFOREAUTH or similar), since it seems to work fairly well for
- POST on most servers.
diff --git a/lib/README.memoryleak b/lib/README.memoryleak
deleted file mode 100644
index 166177794..000000000
--- a/lib/README.memoryleak
+++ /dev/null
@@ -1,55 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- How To Track Down Suspected Memory Leaks in libcurl
- ===================================================
-
-Single-threaded
-
- Please note that this memory leak system is not adjusted to work in more
- than one thread. If you want/need to use it in a multi-threaded app. Please
- adjust accordingly.
-
-
-Build
-
- Rebuild libcurl with -DCURLDEBUG (usually, rerunning configure with
- --enable-debug fixes this). 'make clean' first, then 'make' so that all
- files actually are rebuilt properly. It will also make sense to build
- libcurl with the debug option (usually -g to the compiler) so that debugging
- it will be easier if you actually do find a leak in the library.
-
- This will create a library that has memory debugging enabled.
-
-Modify Your Application
-
- Add a line in your application code:
-
- curl_memdebug("dump");
-
- This will make the malloc debug system output a full trace of all resource
- using functions to the given file name. Make sure you rebuild your program
- and that you link with the same libcurl you built for this purpose as
- described above.
-
-Run Your Application
-
- Run your program as usual. Watch the specified memory trace file grow.
-
- Make your program exit and use the proper libcurl cleanup functions etc. So
- that all non-leaks are returned/freed properly.
-
-Analyze the Flow
-
- Use the tests/memanalyze.pl perl script to analyze the dump file:
-
- tests/memanalyze.pl dump
-
- This now outputs a report on what resources that were allocated but never
- freed etc. This report is very fine for posting to the list!
-
- If this doesn't produce any output, no leak was detected in libcurl. Then
- the leak is mostly likely to be in your code.
diff --git a/lib/README.multi_socket b/lib/README.multi_socket
deleted file mode 100644
index d91e1d9f2..000000000
--- a/lib/README.multi_socket
+++ /dev/null
@@ -1,53 +0,0 @@
-Implementation of the curl_multi_socket API
-
- The main ideas of the new API are simply:
-
- 1 - The application can use whatever event system it likes as it gets info
- from libcurl about what file descriptors libcurl waits for what action
- on. (The previous API returns fd_sets which is very select()-centric).
-
- 2 - When the application discovers action on a single socket, it calls
- libcurl and informs that there was action on this particular socket and
- libcurl can then act on that socket/transfer only and not care about
- any other transfers. (The previous API always had to scan through all
- the existing transfers.)
-
- The idea is that curl_multi_socket_action() calls a given callback with
- information about what socket to wait for what action on, and the callback
- only gets called if the status of that socket has changed.
-
- We also added a timer callback that makes libcurl call the application when
- the timeout value changes, and you set that with curl_multi_setopt() and the
- CURLMOPT_TIMERFUNCTION option. To get this to work, Internally, there's an
- added a struct to each easy handle in which we store an "expire time" (if
- any). The structs are then "splay sorted" so that we can add and remove
- times from the linked list and yet somewhat swiftly figure out both how long
- time there is until the next nearest timer expires and which timer (handle)
- we should take care of now. Of course, the upside of all this is that we get
- a curl_multi_timeout() that should also work with old-style applications
- that use curl_multi_perform().
-
- We created an internal "socket to easy handles" hash table that given
- a socket (file descriptor) return the easy handle that waits for action on
- that socket. This hash is made using the already existing hash code
- (previously only used for the DNS cache).
-
- To make libcurl able to report plain sockets in the socket callback, we had
- to re-organize the internals of the curl_multi_fdset() etc so that the
- conversion from sockets to fd_sets for that function is only done in the
- last step before the data is returned. I also had to extend c-ares to get a
- function that can return plain sockets, as that library too returned only
- fd_sets and that is no longer good enough. The changes done to c-ares are
- available in c-ares 1.3.1 and later.
-
- We have done a test runs with up to 9000 connections (with a single active
- one). The curl_multi_socket_action() invoke then takes less than 10
- microseconds in average (using the read-only-1-byte-at-a-time hack). We are
- now below the 60 microseconds "per socket action" goal (the extra 50 is the
- time libevent needs).
-
-Documentation
-
- http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
- http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
- http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
diff --git a/lib/README.pingpong b/lib/README.pingpong
deleted file mode 100644
index 69ba9aadb..000000000
--- a/lib/README.pingpong
+++ /dev/null
@@ -1,30 +0,0 @@
-Date: December 5, 2009
-
-Pingpong
-========
-
- Pingpong is just my (Daniel's) jestful collective name on the protocols that
- share a very similar kind of back-and-forth procedure with command and
- responses to and from the server. FTP was previously the only protocol in
- that family that libcurl supported, but when POP3, IMAP and SMTP joined the
- team I moved some of the internals into a separate pingpong module to be
- easier to get used by all these protocols to reduce code duplication and ease
- code re-use between these protocols.
-
-FTP
-
- In 7.20.0 we converted code to use the new pingpong code from previously
- having been all "native" FTP code.
-
-POP3
-
- There's no support in the documented URL format to specify the exact mail to
- get, but we support that as the path specified in the URL.
-
-IMAP
-
-SMTP
-
- There's no official URL syntax defined for SMTP, but we use only the generic
- one and we provide two additional libcurl options to specify receivers and
- sender of the actual mail.
diff --git a/lib/README.pipelining b/lib/README.pipelining
deleted file mode 100644
index e5bf6ec33..000000000
--- a/lib/README.pipelining
+++ /dev/null
@@ -1,44 +0,0 @@
-HTTP Pipelining with libcurl
-============================
-
-Background
-
-Since pipelining implies that one or more requests are sent to a server before
-the previous response(s) have been received, we only support it for multi
-interface use.
-
-Considerations
-
-When using the multi interface, you create one easy handle for each transfer.
-Bascially any number of handles can be created, added and used with the multi
-interface - simultaneously. It is an interface designed to allow many
-simultaneous transfers while still using a single thread. Pipelining does not
-change any of these details.
-
-API
-
-We've added a new option to curl_multi_setopt() called CURLMOPT_PIPELINING
-that enables "attempted pipelining" and then all easy handles used on that
-handle will attempt to use an existing pipeline.
-
-Details
-
-- A pipeline is only created if a previous connection exists to the same IP
- address that the new request is being made to use.
-
-- Pipelines are only supported for HTTP(S) as no other currently supported
- protocol has features resemembling this, but we still name this feature
- plain 'pipelining' to possibly one day support it for other protocols as
- well.
-
-- HTTP Pipelining is for GET and HEAD requests only.
-
-- When a pipeline is in use, we must take precautions so that when used easy
- handles (i.e those who still wait for a response) are removed from the multi
- handle, we must deal with the outstanding response nicely.
-
-- Explicitly asking for pipelining handle X and handle Y won't be supported.
- It isn't easy for an app to do this association. The lib should probably
- still resolve the second one properly to make sure that they actually _can_
- be considered for pipelining. Also, asking for explicit pipelining on handle
- X may be tricky when handle X get a closed connection.
diff --git a/lib/amigaos.c b/lib/amigaos.c
index 34f95e9b5..e3ff85f98 100644
--- a/lib/amigaos.c
+++ b/lib/amigaos.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -71,7 +71,7 @@ bool Curl_amiga_init()
}
#ifdef __libnix__
-ADD2EXIT(Curl_amiga_cleanup,-50);
+ADD2EXIT(Curl_amiga_cleanup, -50);
#endif
#endif /* __AMIGA__ && ! __ixemul__ */
diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c
index 4404b6c98..98ecdfd71 100644
--- a/lib/asyn-ares.c
+++ b/lib/asyn-ares.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -68,9 +68,7 @@
#include "connect.h"
#include "select.h"
#include "progress.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
# if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
(defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__))
@@ -166,7 +164,7 @@ void Curl_resolver_cleanup(void *resolver)
int Curl_resolver_duphandle(void **to, void *from)
{
/* Clone the ares channel for the new handle */
- if(ARES_SUCCESS != ares_dup((ares_channel*)to,(ares_channel)from))
+ if(ARES_SUCCESS != ares_dup((ares_channel*)to, (ares_channel)from))
return CURLE_FAILED_INIT;
return CURLE_OK;
}
@@ -188,8 +186,7 @@ void Curl_resolver_cancel(struct connectdata *conn)
*/
static void destroy_async_data (struct Curl_async *async)
{
- if(async->hostname)
- free(async->hostname);
+ free(async->hostname);
if(async->os_specific) {
struct ResolverResults *res = (struct ResolverResults *)async->os_specific;
@@ -388,7 +385,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
timeout_ms = 1000;
waitperform(conn, timeout_ms);
- Curl_resolver_is_resolved(conn,&temp_entry);
+ Curl_resolver_is_resolved(conn, &temp_entry);
if(conn->async.done)
break;
@@ -536,15 +533,15 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
bufp = strdup(hostname);
if(bufp) {
struct ResolverResults *res = NULL;
- Curl_safefree(conn->async.hostname);
+ free(conn->async.hostname);
conn->async.hostname = bufp;
conn->async.port = port;
conn->async.done = FALSE; /* not done */
conn->async.status = 0; /* clear */
conn->async.dns = NULL; /* clear */
- res = calloc(sizeof(struct ResolverResults),1);
+ res = calloc(sizeof(struct ResolverResults), 1);
if(!res) {
- Curl_safefree(conn->async.hostname);
+ free(conn->async.hostname);
conn->async.hostname = NULL;
return NULL;
}
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index 80b5e7851..bd47d5ad5 100644
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -69,11 +69,9 @@
#include "inet_ntop.h"
#include "curl_threads.h"
#include "connect.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
+
/* The last #include file should be: */
#include "memdebug.h"
@@ -192,13 +190,12 @@ void destroy_thread_sync_data(struct thread_sync_data * tsd)
free(tsd->mtx);
}
- if(tsd->hostname)
- free(tsd->hostname);
+ free(tsd->hostname);
if(tsd->res)
Curl_freeaddrinfo(tsd->res);
- memset(tsd,0,sizeof(*tsd));
+ memset(tsd, 0, sizeof(*tsd));
}
/* Initialize resolver thread synchronization data */
@@ -366,9 +363,7 @@ static void destroy_async_data (struct Curl_async *async)
}
async->os_specific = NULL;
- if(async->hostname)
- free(async->hostname);
-
+ free(async->hostname);
async->hostname = NULL;
}
@@ -398,7 +393,7 @@ static bool init_resolve_thread (struct connectdata *conn,
if(!init_thread_sync_data(td, hostname, port, hints))
goto err_exit;
- Curl_safefree(conn->async.hostname);
+ free(conn->async.hostname);
conn->async.hostname = strdup(hostname);
if(!conn->async.hostname)
goto err_exit;
diff --git a/lib/base64.c b/lib/base64.c
index 6b1eb7c9c..6b87eed40 100644
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -23,17 +23,14 @@
/* Base64 encoding/decoding */
#include "curl_setup.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "urldata.h" /* for the SessionHandle definition */
#include "warnless.h"
#include "curl_base64.h"
-#include "curl_memory.h"
#include "non-ascii.h"
-/* include memdebug.h last */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* ---- Base64 Encoding/Decoding Table --- */
@@ -152,7 +149,7 @@ CURLcode Curl_base64_decode(const char *src,
for(i = 0; i < numQuantums; i++) {
size_t result = decodeQuantum(pos, src);
if(!result) {
- Curl_safefree(newstr);
+ free(newstr);
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -255,8 +252,7 @@ static CURLcode base64_encode(const char *table64,
*output = '\0';
*outptr = base64data; /* return pointer to new data, allocated memory */
- if(convbuf)
- free(convbuf);
+ free(convbuf);
*outlen = strlen(base64data); /* return the length of the new data */
diff --git a/lib/bundles.c b/lib/bundles.c
deleted file mode 100644
index aadf02656..000000000
--- a/lib/bundles.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012, 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 http://curl.haxx.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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#include <curl/curl.h>
-
-#include "urldata.h"
-#include "url.h"
-#include "progress.h"
-#include "multiif.h"
-#include "bundles.h"
-#include "sendf.h"
-#include "rawstr.h"
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-static void conn_llist_dtor(void *user, void *element)
-{
- struct connectdata *data = element;
- (void)user;
-
- data->bundle = NULL;
-}
-
-CURLcode Curl_bundle_create(struct SessionHandle *data,
- struct connectbundle **cb_ptr)
-{
- (void)data;
- DEBUGASSERT(*cb_ptr == NULL);
- *cb_ptr = malloc(sizeof(struct connectbundle));
- if(!*cb_ptr)
- return CURLE_OUT_OF_MEMORY;
-
- (*cb_ptr)->num_connections = 0;
- (*cb_ptr)->server_supports_pipelining = FALSE;
-
- (*cb_ptr)->conn_list = Curl_llist_alloc((curl_llist_dtor) conn_llist_dtor);
- if(!(*cb_ptr)->conn_list) {
- Curl_safefree(*cb_ptr);
- return CURLE_OUT_OF_MEMORY;
- }
- return CURLE_OK;
-}
-
-void Curl_bundle_destroy(struct connectbundle *cb_ptr)
-{
- if(!cb_ptr)
- return;
-
- if(cb_ptr->conn_list) {
- Curl_llist_destroy(cb_ptr->conn_list, NULL);
- cb_ptr->conn_list = NULL;
- }
- Curl_safefree(cb_ptr);
-}
-
-/* Add a connection to a bundle */
-CURLcode Curl_bundle_add_conn(struct connectbundle *cb_ptr,
- struct connectdata *conn)
-{
- if(!Curl_llist_insert_next(cb_ptr->conn_list, cb_ptr->conn_list->tail, conn))
- return CURLE_OUT_OF_MEMORY;
-
- conn->bundle = cb_ptr;
-
- cb_ptr->num_connections++;
- return CURLE_OK;
-}
-
-/* Remove a connection from a bundle */
-int Curl_bundle_remove_conn(struct connectbundle *cb_ptr,
- struct connectdata *conn)
-{
- struct curl_llist_element *curr;
-
- curr = cb_ptr->conn_list->head;
- while(curr) {
- if(curr->ptr == conn) {
- Curl_llist_remove(cb_ptr->conn_list, curr, NULL);
- cb_ptr->num_connections--;
- conn->bundle = NULL;
- return 1; /* we removed a handle */
- }
- curr = curr->next;
- }
- return 0;
-}
diff --git a/lib/checksrc.pl b/lib/checksrc.pl
index f561492a7..8fad2cfcb 100755
--- a/lib/checksrc.pl
+++ b/lib/checksrc.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2011 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2011 - 2015, 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
@@ -26,13 +26,32 @@ my $indent = 2;
my $warnings;
my $errors;
+my $supressed; # whitelisted problems
my $file;
my $dir=".";
my $wlist;
+my $windows_os = $^O eq 'MSWin32' || $^O eq 'msys' || $^O eq 'cygwin';
+
+my %whitelist;
+
+sub readwhitelist {
+ open(W, "<$dir/checksrc.whitelist");
+ my @all=<W>;
+ for(@all) {
+ $windows_os ? $_ =~ s/\r?\n$// : chomp;
+ $whitelist{$_}=1;
+ }
+ close(W);
+}
sub checkwarn {
my ($num, $col, $file, $line, $msg, $error) = @_;
+ if($whitelist{$line}) {
+ $supressed++;
+ return;
+ }
+
my $w=$error?"error":"warning";
if($w) {
@@ -78,6 +97,8 @@ if(!$file) {
exit;
}
+readwhitelist();
+
do {
if("$wlist" !~ / $file /) {
my $fullname = $file;
@@ -100,7 +121,7 @@ sub scanfile {
my $copyright=0;
while(<R>) {
- chomp;
+ $windows_os ? $_ =~ s/\r?\n$// : chomp;
my $l = $_;
my $column = 0;
@@ -144,6 +165,49 @@ sub scanfile {
}
}
+ # check for "return(" without space
+ if($l =~ /^(.*)return\(/) {
+ if($1 =~ / *\#/) {
+ # this is a #if, treat it differently
+ }
+ else {
+ checkwarn($line, length($1)+6, $file, $l,
+ "return without space before paren");
+ }
+ }
+
+ # check for comma without space
+ if($l =~ /^(.*),[^ \n]/) {
+ my $pref=$1;
+ my $ign=0;
+ if($pref =~ / *\#/) {
+ # this is a #if, treat it differently
+ $ign=1;
+ }
+ elsif($pref =~ /\/\*/) {
+ # this is a comment
+ $ign=1;
+ }
+ elsif($pref =~ /[\"\']/) {
+ $ign = 1;
+ # There is a quote here, figure out whether the comma is
+ # within a string or '' or not.
+ if($pref =~ /\"/) {
+ # withing a string
+ }
+ elsif($pref =~ /\'$/) {
+ # a single letter
+ }
+ else {
+ $ign = 0;
+ }
+ }
+ if(!$ign) {
+ checkwarn($line, length($pref)+1, $file, $l,
+ "comma without following space");
+ }
+ }
+
# check for "} else"
if($l =~ /^(.*)\} *else/) {
checkwarn($line, length($1), $file, $l, "else after closing brace on same line");
@@ -153,12 +217,26 @@ sub scanfile {
checkwarn($line, length($1)+1, $file, $l, "missing space after close paren");
}
+ # check for space before the semicolon last in a line
+ if($l =~ /^(.*[^ ].*) ;$/) {
+ checkwarn($line, length($1), $file, $l, "space before last semicolon");
+ }
+
# scan for use of banned functions
if($l =~ /^(.*\W)(sprintf|vsprintf|strcat|strncat|gets)\s*\(/) {
checkwarn($line, length($1), $file, $l,
"use of $2 is banned");
}
+ # scan for use of non-binary fopen without the macro
+ if($l =~ /^(.*\W)fopen\s*\([^"]*\"([^"]*)/) {
+ my $mode = $2;
+ if($mode !~ /b/) {
+ checkwarn($line, length($1), $file, $l,
+ "use of non-binary fopen without FOPEN_* macro");
+ }
+ }
+
# check for open brace first on line but not first column
# only alert if previous line ended with a close paren and wasn't a cpp
# line
diff --git a/lib/checksrc.whitelist b/lib/checksrc.whitelist
new file mode 100644
index 000000000..e261b9da1
--- /dev/null
+++ b/lib/checksrc.whitelist
@@ -0,0 +1,10 @@
+ 227 Entering Passive Mode (a1,a2,a3,a4,p1,p2)
+ 228 Entering Long Passive Mode (4,4,a1,a2,a3,a4,2,p1,p2)
+ 150 ASCII data connection for /bin/ls (137.167.104.91,37445) (0 bytes).
+ 150 Opening ASCII mode data connection for [file] (0.0.0.0,0) (545 bytes)
+ * no_proxy=domain1.dom,host.domain2.dom
+ Default values are (0,0) initialized by calloc.
+ file = fopen(name, "r"); /* VMS */
+ return fopen(file, "r"); /* VMS */
+ return fopen(file, "r", "rfm=stmlf", "ctx=stm");
+ curl_memlog("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
diff --git a/lib/config-amigaos.h b/lib/config-amigaos.h
index 76d887755..04b18b744 100644
--- a/lib/config-amigaos.h
+++ b/lib/config-amigaos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -93,7 +93,6 @@
#define USE_MANUAL 1
#define USE_OPENSSL 1
-#define USE_SSLEAY 1
#define CURL_DISABLE_LDAP 1
#define OS "AmigaOS"
diff --git a/lib/config-dos.h b/lib/config-dos.h
index dd5b06db4..288bd1db3 100644
--- a/lib/config-dos.h
+++ b/lib/config-dos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -132,12 +132,11 @@
#define HAVE_LIBZ 1
#endif
-/* USE_SSLEAY on cmd-line */
-#ifdef USE_SSLEAY
+/* USE_OPENSSL on cmd-line */
+#ifdef USE_OPENSSL
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
#define HAVE_OPENSSL_ENGINE_H 1
#define OPENSSL_NO_KRB5 1
- #define USE_OPENSSL 1
#endif
/* to disable LDAP */
@@ -163,11 +162,6 @@
#define HAVE_TERMIOS_H 1
#define HAVE_VARIADIC_MACROS_GCC 1
- /* Because djgpp <= 2.03 doesn't have snprintf() etc. */
- #if (DJGPP_MINOR < 4)
- #define _MPRINTF_REPLACE
- #endif
-
#elif defined(__WATCOMC__)
#define HAVE_STRCASECMP 1
diff --git a/lib/config-mac.h b/lib/config-mac.h
index d89c38515..ee7a6590c 100644
--- a/lib/config-mac.h
+++ b/lib/config-mac.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -70,7 +70,6 @@
#define HAVE_SIG_ATOMIC_T 1
#ifdef MACOS_SSL_SUPPORT
-# define USE_SSLEAY 1
# define USE_OPENSSL 1
#endif
diff --git a/lib/config-symbian.h b/lib/config-symbian.h
index f7eaab92d..a40e3d8e0 100644
--- a/lib/config-symbian.h
+++ b/lib/config-symbian.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -69,7 +69,7 @@
/* #undef CURL_EXTERN_SYMBOL */
/* Use Windows LDAP implementation */
-/* #undef CURL_LDAP_WIN */
+/* #undef USE_WIN32_LDAP */
/* your Entropy Gathering Daemon socket pathname */
/* #undef EGD_SOCKET */
@@ -808,10 +808,4 @@
#define HAVE_ZLIB_H 1
#endif
-/* Enable appropriate definitions only when OpenSSL support is enabled */
-#ifdef USE_SSLEAY
-/* if OpenSSL is in use */
-#define USE_OPENSSL
-#endif
-
#endif /* HEADER_CURL_CONFIG_SYMBIAN_H */
diff --git a/lib/config-tpf.h b/lib/config-tpf.h
index 6ff701a9f..d6b8cc2f2 100644
--- a/lib/config-tpf.h
+++ b/lib/config-tpf.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -646,7 +646,7 @@
/* #undef USE_OPENSSL */
/* if SSL is enabled */
-/* #undef USE_SSLEAY */
+/* #undef USE_OPENSSL */
/* to enable SSPI support */
/* #undef USE_WINDOWS_SSPI */
diff --git a/lib/config-vxworks.h b/lib/config-vxworks.h
index 05220b581..d889efcd8 100644
--- a/lib/config-vxworks.h
+++ b/lib/config-vxworks.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -75,7 +75,7 @@
/* #undef CURL_EXTERN_SYMBOL */
/* Use Windows LDAP implementation */
-/* #undef CURL_LDAP_WIN */
+/* #undef USE_WIN32_LDAP */
/* your Entropy Gathering Daemon socket pathname */
/* #undef EGD_SOCKET */
@@ -883,9 +883,6 @@
/* if OpenSSL is in use */
#define USE_OPENSSL 1
-/* if SSL is enabled */
-#define USE_SSLEAY 1
-
/* Define to 1 if you are building a Windows target without large file
support. */
/* #undef USE_WIN32_LARGE_FILES */
diff --git a/lib/config-win32.h b/lib/config-win32.h
index 744e02271..e9a371212 100644
--- a/lib/config-win32.h
+++ b/lib/config-win32.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -678,30 +678,30 @@ Vista
/* ---------------------------------------------------------------- */
#if defined(CURL_HAS_NOVELL_LDAPSDK) || defined(CURL_HAS_MOZILLA_LDAPSDK)
-#undef CURL_LDAP_WIN
+#undef USE_WIN32_LDAP
#define HAVE_LDAP_SSL_H 1
#define HAVE_LDAP_URL_PARSE 1
#elif defined(CURL_HAS_OPENLDAP_LDAPSDK)
-#undef CURL_LDAP_WIN
+#undef USE_WIN32_LDAP
#define HAVE_LDAP_URL_PARSE 1
#else
#undef HAVE_LDAP_URL_PARSE
-#define CURL_LDAP_WIN 1
+#define USE_WIN32_LDAP 1
#endif
-#if defined(__WATCOMC__) && defined(CURL_LDAP_WIN)
+#if defined(__WATCOMC__) && defined(USE_WIN32_LDAP)
#if __WATCOMC__ < 1280
#define WINBERAPI __declspec(cdecl)
#define WINLDAPAPI __declspec(cdecl)
#endif
#endif
-#if defined(__POCC__) && defined(CURL_LDAP_WIN)
+#if defined(__POCC__) && defined(USE_WIN32_LDAP)
# define CURL_DISABLE_LDAP 1
#endif
/* Define to use the Windows crypto library. */
-#if !defined(USE_SSLEAY) && !defined(USE_NSS)
+#if !defined(USE_OPENSSL) && !defined(USE_NSS)
#define USE_WIN32_CRYPTO
#endif
diff --git a/lib/config-win32ce.h b/lib/config-win32ce.h
index a8ab0d34e..a723fd188 100644
--- a/lib/config-win32ce.h
+++ b/lib/config-win32ce.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -409,7 +409,7 @@
/* LDAP SUPPORT */
/* ---------------------------------------------------------------- */
-#define CURL_LDAP_WIN 1
+#define USE_WIN32_LDAP 1
#undef HAVE_LDAP_URL_PARSE
/* ---------------------------------------------------------------- */
@@ -443,6 +443,6 @@
#define ENOMEM 2
#define EAGAIN 3
-extern int stat(const char *path,struct stat *buffer );
+extern int stat(const char *path, struct stat *buffer);
#endif /* HEADER_CURL_CONFIG_WIN32CE_H */
diff --git a/lib/conncache.c b/lib/conncache.c
index fcfb15015..c712ed7b9 100644
--- a/lib/conncache.c
+++ b/lib/conncache.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -31,66 +31,134 @@
#include "multiif.h"
#include "sendf.h"
#include "rawstr.h"
-#include "bundles.h"
#include "conncache.h"
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
-static void free_bundle_hash_entry(void *freethis)
+static void conn_llist_dtor(void *user, void *element)
{
- struct connectbundle *b = (struct connectbundle *) freethis;
+ struct connectdata *data = element;
+ (void)user;
- Curl_bundle_destroy(b);
+ data->bundle = NULL;
}
-struct conncache *Curl_conncache_init(int size)
+static CURLcode bundle_create(struct SessionHandle *data,
+ struct connectbundle **cb_ptr)
{
- struct conncache *connc;
-
- connc = calloc(1, sizeof(struct conncache));
- if(!connc)
- return NULL;
+ (void)data;
+ DEBUGASSERT(*cb_ptr == NULL);
+ *cb_ptr = malloc(sizeof(struct connectbundle));
+ if(!*cb_ptr)
+ return CURLE_OUT_OF_MEMORY;
+
+ (*cb_ptr)->num_connections = 0;
+ (*cb_ptr)->multiuse = BUNDLE_UNKNOWN;
+
+ (*cb_ptr)->conn_list = Curl_llist_alloc((curl_llist_dtor) conn_llist_dtor);
+ if(!(*cb_ptr)->conn_list) {
+ Curl_safefree(*cb_ptr);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ return CURLE_OK;
+}
- connc->hash = Curl_hash_alloc(size, Curl_hash_str,
- Curl_str_key_compare, free_bundle_hash_entry);
+static void bundle_destroy(struct connectbundle *cb_ptr)
+{
+ if(!cb_ptr)
+ return;
- if(!connc->hash) {
- free(connc);
- return NULL;
+ if(cb_ptr->conn_list) {
+ Curl_llist_destroy(cb_ptr->conn_list, NULL);
+ cb_ptr->conn_list = NULL;
}
+ free(cb_ptr);
+}
+
+/* Add a connection to a bundle */
+static CURLcode bundle_add_conn(struct connectbundle *cb_ptr,
+ struct connectdata *conn)
+{
+ if(!Curl_llist_insert_next(cb_ptr->conn_list, cb_ptr->conn_list->tail, conn))
+ return CURLE_OUT_OF_MEMORY;
- return connc;
+ conn->bundle = cb_ptr;
+
+ cb_ptr->num_connections++;
+ return CURLE_OK;
}
-void Curl_conncache_destroy(struct conncache *connc)
+/* Remove a connection from a bundle */
+static int bundle_remove_conn(struct connectbundle *cb_ptr,
+ struct connectdata *conn)
{
- if(connc) {
- Curl_hash_destroy(connc->hash);
- connc->hash = NULL;
- free(connc);
+ struct curl_llist_element *curr;
+
+ curr = cb_ptr->conn_list->head;
+ while(curr) {
+ if(curr->ptr == conn) {
+ Curl_llist_remove(cb_ptr->conn_list, curr, NULL);
+ cb_ptr->num_connections--;
+ conn->bundle = NULL;
+ return 1; /* we removed a handle */
+ }
+ curr = curr->next;
}
+ return 0;
}
-struct connectbundle *Curl_conncache_find_bundle(struct conncache *connc,
- char *hostname)
+static void free_bundle_hash_entry(void *freethis)
{
- struct connectbundle *bundle = NULL;
+ struct connectbundle *b = (struct connectbundle *) freethis;
+
+ bundle_destroy(b);
+}
+int Curl_conncache_init(struct conncache *connc, int size)
+{
+ return Curl_hash_init(&connc->hash, size, Curl_hash_str,
+ Curl_str_key_compare, free_bundle_hash_entry);
+}
+
+void Curl_conncache_destroy(struct conncache *connc)
+{
if(connc)
- bundle = Curl_hash_pick(connc->hash, hostname, strlen(hostname)+1);
+ Curl_hash_destroy(&connc->hash);
+}
+
+/* returns an allocated key to find a bundle for this connection */
+static char *hashkey(struct connectdata *conn)
+{
+ return aprintf("%s:%d",
+ conn->bits.proxy?conn->proxy.name:conn->host.name,
+ conn->localport);
+}
+
+/* Look up the bundle with all the connections to the same host this
+ connectdata struct is setup to use. */
+struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
+ struct conncache *connc)
+{
+ struct connectbundle *bundle = NULL;
+ if(connc) {
+ char *key = hashkey(conn);
+ if(key) {
+ bundle = Curl_hash_pick(&connc->hash, key, strlen(key));
+ free(key);
+ }
+ }
return bundle;
}
static bool conncache_add_bundle(struct conncache *connc,
- char *hostname,
+ char *key,
struct connectbundle *bundle)
{
- void *p;
-
- p = Curl_hash_add(connc->hash, hostname, strlen(hostname)+1, bundle);
+ void *p = Curl_hash_add(&connc->hash, key, strlen(key), bundle);
return p?TRUE:FALSE;
}
@@ -104,14 +172,14 @@ static void conncache_remove_bundle(struct conncache *connc,
if(!connc)
return;
- Curl_hash_start_iterate(connc->hash, &iter);
+ Curl_hash_start_iterate(&connc->hash, &iter);
he = Curl_hash_next_element(&iter);
while(he) {
if(he->ptr == bundle) {
/* The bundle is destroyed by the hash destructor function,
free_bundle_hash_entry() */
- Curl_hash_delete(connc->hash, he->key, he->key_len);
+ Curl_hash_delete(&connc->hash, he->key, he->key_len);
return;
}
@@ -127,22 +195,31 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc,
struct connectbundle *new_bundle = NULL;
struct SessionHandle *data = conn->data;
- bundle = Curl_conncache_find_bundle(data->state.conn_cache,
- conn->host.name);
+ bundle = Curl_conncache_find_bundle(conn, data->state.conn_cache);
if(!bundle) {
- result = Curl_bundle_create(data, &new_bundle);
+ char *key;
+ int rc;
+
+ result = bundle_create(data, &new_bundle);
if(result)
return result;
- if(!conncache_add_bundle(data->state.conn_cache,
- conn->host.name, new_bundle)) {
- Curl_bundle_destroy(new_bundle);
+ key = hashkey(conn);
+ if(!key) {
+ bundle_destroy(new_bundle);
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ rc = conncache_add_bundle(data->state.conn_cache, key, new_bundle);
+ free(key);
+ if(!rc) {
+ bundle_destroy(new_bundle);
return CURLE_OUT_OF_MEMORY;
}
bundle = new_bundle;
}
- result = Curl_bundle_add_conn(bundle, conn);
+ result = bundle_add_conn(bundle, conn);
if(result) {
if(new_bundle)
conncache_remove_bundle(data->state.conn_cache, new_bundle);
@@ -167,7 +244,7 @@ void Curl_conncache_remove_conn(struct conncache *connc,
/* The bundle pointer can be NULL, since this function can be called
due to a failed connection attempt, before being added to a bundle */
if(bundle) {
- Curl_bundle_remove_conn(bundle, conn);
+ bundle_remove_conn(bundle, conn);
if(bundle->num_connections == 0) {
conncache_remove_bundle(connc, bundle);
}
@@ -199,7 +276,7 @@ void Curl_conncache_foreach(struct conncache *connc,
if(!connc)
return;
- Curl_hash_start_iterate(connc->hash, &iter);
+ Curl_hash_start_iterate(&connc->hash, &iter);
he = Curl_hash_next_element(&iter);
while(he) {
@@ -230,7 +307,7 @@ Curl_conncache_find_first_connection(struct conncache *connc)
struct curl_hash_element *he;
struct connectbundle *bundle;
- Curl_hash_start_iterate(connc->hash, &iter);
+ Curl_hash_start_iterate(&connc->hash, &iter);
he = Curl_hash_next_element(&iter);
while(he) {
diff --git a/lib/conncache.h b/lib/conncache.h
index d793f2482..59181bf3d 100644
--- a/lib/conncache.h
+++ b/lib/conncache.h
@@ -7,6 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
*
* This software is licensed as described in the file COPYING, which
@@ -23,18 +24,30 @@
***************************************************************************/
struct conncache {
- struct curl_hash *hash;
+ struct curl_hash hash;
size_t num_connections;
long next_connection_id;
struct timeval last_cleanup;
};
-struct conncache *Curl_conncache_init(int size);
+#define BUNDLE_NO_MULTIUSE -1
+#define BUNDLE_UNKNOWN 0 /* initial value */
+#define BUNDLE_PIPELINING 1
+#define BUNDLE_MULTIPLEX 2
+
+struct connectbundle {
+ int multiuse; /* supports multi-use */
+ size_t num_connections; /* Number of connections in the bundle */
+ struct curl_llist *conn_list; /* The connectdata members of the bundle */
+};
+
+int Curl_conncache_init(struct conncache *, int size);
void Curl_conncache_destroy(struct conncache *connc);
-struct connectbundle *Curl_conncache_find_bundle(struct conncache *connc,
- char *hostname);
+/* return the correct bundle, to a host or a proxy */
+struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
+ struct conncache *connc);
CURLcode Curl_conncache_add_conn(struct conncache *connc,
struct connectdata *conn);
diff --git a/lib/connect.c b/lib/connect.c
index 5a60d14ab..18ac32c32 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -56,15 +56,12 @@
#include <inet.h>
#endif
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "urldata.h"
#include "sendf.h"
#include "if2ip.h"
#include "strerror.h"
#include "connect.h"
-#include "curl_memory.h"
#include "select.h"
#include "url.h" /* for Curl_safefree() */
#include "multiif.h"
@@ -77,7 +74,8 @@
#include "conncache.h"
#include "multihandle.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#ifdef __SYMBIAN32__
@@ -542,6 +540,7 @@ static CURLcode trynextip(struct connectdata *conn,
int sockindex,
int tempindex)
{
+ const int other = tempindex ^ 1;
CURLcode result = CURLE_COULDNT_CONNECT;
/* First clean up after the failed socket.
@@ -560,20 +559,21 @@ static CURLcode trynextip(struct connectdata *conn,
family = conn->tempaddr[tempindex]->ai_family;
ai = conn->tempaddr[tempindex]->ai_next;
}
+#ifdef ENABLE_IPV6
else if(conn->tempaddr[0]) {
/* happy eyeballs - try the other protocol family */
int firstfamily = conn->tempaddr[0]->ai_family;
-#ifdef ENABLE_IPV6
family = (firstfamily == AF_INET) ? AF_INET6 : AF_INET;
-#else
- family = firstfamily;
-#endif
ai = conn->tempaddr[0]->ai_next;
}
+#endif
while(ai) {
- while(ai && ai->ai_family != family)
- ai = ai->ai_next;
+ if(conn->tempaddr[other]) {
+ /* we can safely skip addresses of the other protocol family */
+ while(ai && ai->ai_family != family)
+ ai = ai->ai_next;
+ }
if(ai) {
result = singleipconnect(conn, ai, &conn->tempsock[tempindex]);
@@ -749,6 +749,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
}
for(i=0; i<2; i++) {
+ const int other = i ^ 1;
if(conn->tempsock[i] == CURL_SOCKET_BAD)
continue;
@@ -778,7 +779,6 @@ CURLcode Curl_is_connected(struct connectdata *conn,
else if(rc == CURL_CSELECT_OUT) {
if(verifyconnect(conn->tempsock[i], &error)) {
/* we are connected with TCP, awesome! */
- int other = i ^ 1;
/* use this socket from now on */
conn->sock[sockindex] = conn->tempsock[i];
@@ -820,6 +820,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
data->state.os_errno = error;
SET_SOCKERRNO(error);
if(conn->tempaddr[i]) {
+ CURLcode status;
char ipaddress[MAX_IPADR_LEN];
Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
infof(data, "connect to %s port %ld failed: %s\n",
@@ -828,7 +829,11 @@ CURLcode Curl_is_connected(struct connectdata *conn,
conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
allow : allow / 2;
- result = trynextip(conn, sockindex, i);
+ status = trynextip(conn, sockindex, i);
+ if(status != CURLE_COULDNT_CONNECT
+ || conn->tempsock[other] == CURL_SOCKET_BAD)
+ /* the last attempt failed and no other sockets remain open */
+ result = status;
}
}
}
@@ -878,7 +883,7 @@ static void tcpnodelay(struct connectdata *conn,
infof(data, "Could not set TCP_NODELAY: %s\n",
Curl_strerror(conn, SOCKERRNO));
else
- infof(data,"TCP_NODELAY set\n");
+ infof(data, "TCP_NODELAY set\n");
#else
(void)conn;
(void)sockfd;
@@ -944,16 +949,21 @@ void Curl_sndbufset(curl_socket_t sockfd)
detectOsState = DETECT_OS_VISTA_OR_LATER;
}
#else
- ULONGLONG majorVersionMask;
+ ULONGLONG cm;
OSVERSIONINFOEX osver;
memset(&osver, 0, sizeof(osver));
osver.dwOSVersionInfoSize = sizeof(osver);
osver.dwMajorVersion = majorVersion;
- majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION,
- VER_GREATER_EQUAL);
- if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask))
+ cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+
+ if(VerifyVersionInfo(&osver, (VER_MAJORVERSION | VER_MINORVERSION |
+ VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR),
+ cm))
detectOsState = DETECT_OS_VISTA_OR_LATER;
else
detectOsState = DETECT_OS_PREVISTA;
@@ -1016,8 +1026,12 @@ static CURLcode singleipconnect(struct connectdata *conn,
}
infof(data, " Trying %s...\n", ipaddress);
+#ifdef ENABLE_IPV6
is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
- addr.socktype == SOCK_STREAM;
+ addr.socktype == SOCK_STREAM;
+#else
+ is_tcp = (addr.family == AF_INET) && addr.socktype == SOCK_STREAM;
+#endif
if(is_tcp && data->set.tcp_nodelay)
tcpnodelay(conn, sockfd);
@@ -1043,7 +1057,11 @@ static CURLcode singleipconnect(struct connectdata *conn,
}
/* possibly bind the local end to an IP, interface or port */
- if(addr.family == AF_INET || addr.family == AF_INET6) {
+ if(addr.family == AF_INET
+#ifdef ENABLE_IPV6
+ || addr.family == AF_INET6
+#endif
+ ) {
result = bindlocal(conn, sockfd, addr.family,
Curl_ipv6_scope((struct sockaddr*)&addr.sa_addr));
if(result) {
@@ -1098,7 +1116,7 @@ static CURLcode singleipconnect(struct connectdata *conn,
default:
/* unknown error, fallthrough and try another address! */
infof(data, "Immediate connect fail for %s: %s\n",
- ipaddress, Curl_strerror(conn,error));
+ ipaddress, Curl_strerror(conn, error));
data->state.os_errno = error;
/* connect failed */
@@ -1153,8 +1171,11 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
conn->tempaddr[0] = conn->tempaddr[0]->ai_next;
}
- if(conn->tempsock[0] == CURL_SOCKET_BAD)
+ if(conn->tempsock[0] == CURL_SOCKET_BAD) {
+ if(!result)
+ result = CURLE_COULDNT_CONNECT;
return result;
+ }
data->info.numconnects++; /* to track the number of connections made */
@@ -1189,15 +1210,20 @@ curl_socket_t Curl_getconnectinfo(struct SessionHandle *data,
DEBUGASSERT(data);
- /* this only works for an easy handle that has been used for
- curl_easy_perform()! */
- if(data->state.lastconnect && data->multi_easy) {
+ /* this works for an easy handle:
+ * - that has been used for curl_easy_perform()
+ * - that is associated with a multi handle, and whose connection
+ * was detached with CURLOPT_CONNECT_ONLY
+ */
+ if(data->state.lastconnect && (data->multi_easy || data->multi)) {
struct connectdata *c = data->state.lastconnect;
struct connfind find;
find.tofind = data->state.lastconnect;
find.found = FALSE;
- Curl_conncache_foreach(data->multi_easy->conn_cache, &find, conn_is_conn);
+ Curl_conncache_foreach(data->multi_easy?
+ &data->multi_easy->conn_cache:
+ &data->multi->conn_cache, &find, conn_is_conn);
if(!find.found) {
data->state.lastconnect = NULL;
@@ -1248,8 +1274,10 @@ int Curl_closesocket(struct connectdata *conn,
accept, then we MUST NOT call the callback but clear the accepted
status */
conn->sock_accepted[SECONDARYSOCKET] = FALSE;
- else
+ else {
+ Curl_multi_closed(conn, sock);
return conn->fclosesocket(conn->closesocket_client, sock);
+ }
}
if(conn)
@@ -1344,11 +1372,12 @@ void Curl_conncontrol(struct connectdata *conn, bool closeit,
#if defined(CURL_DISABLE_VERBOSE_STRINGS)
(void) reason;
#endif
+ if(closeit != conn->bits.close) {
+ infof(conn->data, "Marked for [%s]: %s\n", closeit?"closure":"keep alive",
+ reason);
- infof(conn->data, "Marked for [%s]: %s\n", closeit?"closure":"keep alive",
- reason);
-
- conn->bits.close = closeit; /* the only place in the source code that should
- assign this bit */
+ conn->bits.close = closeit; /* the only place in the source code that
+ should assign this bit */
+ }
}
#endif
diff --git a/lib/cookie.c b/lib/cookie.c
index 0b9c8d337..22730cff4 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -84,44 +84,33 @@ Example set of cookies:
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "urldata.h"
#include "cookie.h"
#include "strequal.h"
#include "strtok.h"
#include "sendf.h"
#include "slist.h"
-#include "curl_memory.h"
#include "share.h"
#include "strtoofft.h"
#include "rawstr.h"
#include "curl_memrchr.h"
#include "inet_pton.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
static void freecookie(struct Cookie *co)
{
- if(co->expirestr)
- free(co->expirestr);
- if(co->domain)
- free(co->domain);
- if(co->path)
- free(co->path);
- if(co->spath)
- free(co->spath);
- if(co->name)
- free(co->name);
- if(co->value)
- free(co->value);
- if(co->maxage)
- free(co->maxage);
- if(co->version)
- free(co->version);
-
+ free(co->expirestr);
+ free(co->domain);
+ free(co->path);
+ free(co->spath);
+ free(co->name);
+ free(co->value);
+ free(co->maxage);
+ free(co->version);
free(co);
}
@@ -236,11 +225,14 @@ static char *sanitize_cookie_path(const char *cookie_path)
return NULL;
/* some stupid site sends path attribute with '"'. */
+ len = strlen(new_path);
if(new_path[0] == '\"') {
- memmove((void *)new_path, (const void *)(new_path + 1), strlen(new_path));
+ memmove((void *)new_path, (const void *)(new_path + 1), len);
+ len--;
}
- if(new_path[strlen(new_path) - 1] == '\"') {
- new_path[strlen(new_path) - 1] = 0x0;
+ if(len && (new_path[len - 1] == '\"')) {
+ new_path[len - 1] = 0x0;
+ len--;
}
/* RFC6265 5.2.4 The Path Attribute */
@@ -252,8 +244,7 @@ static char *sanitize_cookie_path(const char *cookie_path)
}
/* convert /hoge/ to /hoge */
- len = strlen(new_path);
- if(1 < len && new_path[len - 1] == '/') {
+ if(len && new_path[len - 1] == '/') {
new_path[len - 1] = 0x0;
}
@@ -298,8 +289,7 @@ void Curl_cookie_loadfiles(struct SessionHandle *data)
*/
static void strstore(char **str, const char *newstr)
{
- if(*str)
- free(*str);
+ free(*str);
*str = strdup(newstr);
}
@@ -419,7 +409,7 @@ Curl_cookie_add(struct SessionHandle *data,
do {
/* we have a <what>=<this> pair or a stand-alone word here */
name[0]=what[0]=0; /* init the buffers */
- if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n =]=%"
+ if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n =] =%"
MAX_COOKIE_LINE_TXT "[^;\r\n]",
name, what)) {
/* Use strstore() below to properly deal with received cookie
@@ -834,21 +824,13 @@ Curl_cookie_add(struct SessionHandle *data,
/* then free all the old pointers */
free(clist->name);
- if(clist->value)
- free(clist->value);
- if(clist->domain)
- free(clist->domain);
- if(clist->path)
- free(clist->path);
- if(clist->spath)
- free(clist->spath);
- if(clist->expirestr)
- free(clist->expirestr);
-
- if(clist->version)
- free(clist->version);
- if(clist->maxage)
- free(clist->maxage);
+ free(clist->value);
+ free(clist->domain);
+ free(clist->path);
+ free(clist->spath);
+ free(clist->expirestr);
+ free(clist->version);
+ free(clist->maxage);
*clist = *co; /* then store all the new data */
@@ -932,7 +914,7 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
fp = NULL;
}
else
- fp = file?fopen(file, "r"):NULL;
+ fp = file?fopen(file, FOPEN_READTEXT):NULL;
c->newsession = newsession; /* new session? */
@@ -969,7 +951,7 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
return c;
fail:
- Curl_safefree(line);
+ free(line);
if(!inc)
/* Only clean up if we allocated it here, as the original could still be in
* use by a share handle */
@@ -1216,8 +1198,7 @@ void Curl_cookie_clearsess(struct CookieInfo *cookies)
void Curl_cookie_cleanup(struct CookieInfo *c)
{
if(c) {
- if(c->filename)
- free(c->filename);
+ free(c->filename);
Curl_cookie_freelist(c->cookies, TRUE);
free(c); /* free the base struct as well */
}
@@ -1281,7 +1262,7 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
use_stdout=TRUE;
}
else {
- out = fopen(dumphere, "w");
+ out = fopen(dumphere, FOPEN_WRITETEXT);
if(!out)
return 1; /* failure */
}
@@ -1293,9 +1274,10 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
"# http://curl.haxx.se/docs/http-cookies.html\n"
"# This file was generated by libcurl! Edit at your own risk.\n\n",
out);
- co = c->cookies;
- while(co) {
+ for(co = c->cookies; co; co = co->next) {
+ if(!co->domain)
+ continue;
format_ptr = get_netscape_format(co);
if(format_ptr == NULL) {
fprintf(out, "#\n# Fatal libcurl error\n");
@@ -1305,7 +1287,6 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
}
fprintf(out, "%s\n", format_ptr);
free(format_ptr);
- co=co->next;
}
}
@@ -1326,10 +1307,9 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data)
(data->cookies->numcookies == 0))
return NULL;
- c = data->cookies->cookies;
-
- while(c) {
- /* fill the list with _all_ the cookies we know */
+ for(c = data->cookies->cookies; c; c = c->next) {
+ if(!c->domain)
+ continue;
line = get_netscape_format(c);
if(!line) {
curl_slist_free_all(list);
@@ -1342,7 +1322,6 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data)
return NULL;
}
list = beg;
- c = c->next;
}
return list;
diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c
index 1e359d5c7..6627a6b96 100644
--- a/lib/curl_addrinfo.c
+++ b/lib/curl_addrinfo.c
@@ -50,15 +50,12 @@
#include "curl_addrinfo.h"
#include "inet_pton.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
+
/* The last #include file should be: */
#include "memdebug.h"
-
/*
* Curl_freeaddrinfo()
*
@@ -83,13 +80,8 @@ Curl_freeaddrinfo(Curl_addrinfo *cahead)
Curl_addrinfo *ca;
for(ca = cahead; ca != NULL; ca = canext) {
-
- if(ca->ai_addr)
- free(ca->ai_addr);
-
- if(ca->ai_canonname)
- free(ca->ai_canonname);
-
+ free(ca->ai_addr);
+ free(ca->ai_canonname);
canext = ca->ai_next;
free(ca);
diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake
index 87be9c717..5376aa7e1 100644
--- a/lib/curl_config.h.cmake
+++ b/lib/curl_config.h.cmake
@@ -53,7 +53,7 @@
#endif
/* Use Windows LDAP implementation */
-#cmakedefine CURL_LDAP_WIN 1
+#cmakedefine USE_WIN32_LDAP 1
/* when not building a shared library */
#cmakedefine CURL_STATICLIB 1
@@ -909,9 +909,6 @@
/* if OpenSSL is in use */
#cmakedefine USE_OPENSSL 1
-/* if SSL is enabled */
-#cmakedefine USE_SSLEAY 1
-
/* if Unix domain sockets are enabled */
#cmakedefine USE_UNIX_SOCKETS
diff --git a/lib/curl_config.h.in b/lib/curl_config.h.in
index 1318afcca..feb582ecd 100644
--- a/lib/curl_config.h.in
+++ b/lib/curl_config.h.in
@@ -69,9 +69,6 @@
/* Definition to make a library symbol externally visible. */
#undef CURL_EXTERN_SYMBOL
-/* Use Windows LDAP implementation */
-#undef CURL_LDAP_WIN
-
/* your Entropy Gathering Daemon socket pathname */
#undef EGD_SOCKET
@@ -123,6 +120,9 @@
/* Define to 1 if bool is an available type. */
#undef HAVE_BOOL_T
+/* Define to 1 if using BoringSSL. */
+#undef HAVE_BORINGSSL
+
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
#undef HAVE_CLOCK_GETTIME_MONOTONIC
@@ -144,6 +144,12 @@
/* Define to 1 if you have the <cyassl/error-ssl.h> header file. */
#undef HAVE_CYASSL_ERROR_SSL_H
+/* Define to 1 if you have the <cyassl/options.h> header file. */
+#undef HAVE_CYASSL_OPTIONS_H
+
+/* Define to 1 if you have the `DES_set_odd_parity' function. */
+#undef HAVE_DES_SET_ODD_PARITY
+
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
@@ -388,6 +394,9 @@
/* Define to 1 if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE
+/* Define to 1 if using libressl. */
+#undef HAVE_LIBRESSL
+
/* Define to 1 if you have the <librtmp/rtmp.h> header file. */
#undef HAVE_LIBRTMP_RTMP_H
@@ -470,6 +479,9 @@
/* Define to 1 if you have the <openssl/rsa.h> header file. */
#undef HAVE_OPENSSL_RSA_H
+/* if you have the function SRP_Calc_client_key */
+#undef HAVE_OPENSSL_SRP
+
/* Define to 1 if you have the <openssl/ssl.h> header file. */
#undef HAVE_OPENSSL_SSL_H
@@ -578,9 +590,6 @@
/* Define to 1 if you have the <socket.h> header file. */
#undef HAVE_SOCKET_H
-/* if you have the function SRP_Calc_client_key */
-#undef HAVE_SSLEAY_SRP
-
/* Define to 1 if you have the `SSLv2_client_method' function. */
#undef HAVE_SSLV2_CLIENT_METHOD
@@ -945,9 +954,6 @@
/* to enable Windows native SSL/TLS support */
#undef USE_SCHANNEL
-/* if SSL is enabled */
-#undef USE_SSLEAY
-
/* if you want POSIX threaded DNS lookup */
#undef USE_THREADS_POSIX
@@ -964,6 +970,9 @@
*/
#undef USE_WIN32_LARGE_FILES
+/* Use Windows LDAP implementation */
+#undef USE_WIN32_LDAP
+
/* Define to 1 if you are building a Windows target without large file
support. */
#undef USE_WIN32_SMALL_FILES
@@ -971,9 +980,6 @@
/* to enable SSPI support */
#undef USE_WINDOWS_SSPI
-/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-#undef USE_YASSLEMUL
-
/* Version number of package */
#undef VERSION
diff --git a/lib/curl_des.c b/lib/curl_des.c
new file mode 100644
index 000000000..42c1df956
--- /dev/null
+++ b/lib/curl_des.c
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2015, Steve Holme, <steve_holme@hotmail.com>.
+ *
+ * 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if defined(USE_NTLM) && (!defined(USE_OPENSSL) || defined(HAVE_BORINGSSL))
+
+#include "curl_des.h"
+
+/*
+ * Curl_des_set_odd_parity()
+ *
+ * This is used to apply odd parity to the given byte array. It is typically
+ * used by when a cryptography engines doesn't have it's own version.
+ *
+ * The function is a port of the Java based oddParity() function over at:
+ *
+ * http://davenport.sourceforge.net/ntlm.html
+ *
+ * Parameters:
+ *
+ * bytes [in/out] - The data whose parity bits are to be adjusted for
+ * odd parity.
+ * len [out] - The length of the data.
+ */
+void Curl_des_set_odd_parity(unsigned char *bytes, size_t len)
+{
+ size_t i;
+
+ for(i = 0; i < len; i++) {
+ unsigned char b = bytes[i];
+
+ bool needs_parity = (((b >> 7) ^ (b >> 6) ^ (b >> 5) ^
+ (b >> 4) ^ (b >> 3) ^ (b >> 2) ^
+ (b >> 1)) & 0x01) == 0;
+
+ if(needs_parity)
+ bytes[i] |= 0x01;
+ else
+ bytes[i] &= 0xfe;
+ }
+}
+
+#endif /* USE_NTLM && (!USE_OPENSSL || HAVE_BORINGSSL) */
diff --git a/lib/curl_des.h b/lib/curl_des.h
new file mode 100644
index 000000000..b855db4c1
--- /dev/null
+++ b/lib/curl_des.h
@@ -0,0 +1,34 @@
+#ifndef HEADER_CURL_DES_H
+#define HEADER_CURL_DES_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2015, Steve Holme, <steve_holme@hotmail.com>.
+ *
+ * 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if defined(USE_NTLM) && (!defined(USE_OPENSSL) || defined(HAVE_BORINGSSL))
+
+/* Applies odd parity to the given byte array */
+void Curl_des_set_odd_parity(unsigned char *bytes, size_t length);
+
+#endif /* USE_NTLM && (!USE_OPENSSL || HAVE_BORINGSSL) */
+
+#endif /* HEADER_CURL_DES_H */
diff --git a/lib/curl_endian.c b/lib/curl_endian.c
index 14a28834d..bcd66ed84 100644
--- a/lib/curl_endian.c
+++ b/lib/curl_endian.c
@@ -62,6 +62,7 @@ unsigned int Curl_read32_le(unsigned char *buf)
((unsigned int)buf[2] << 16) | ((unsigned int)buf[3] << 24);
}
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
/*
* Curl_read64_le()
*
@@ -97,6 +98,8 @@ unsigned __int64 Curl_read64_le(unsigned char *buf)
}
#endif
+#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
+
/*
* Curl_read16_be()
*
@@ -135,6 +138,7 @@ unsigned int Curl_read32_be(unsigned char *buf)
((unsigned int)buf[2] << 8) | ((unsigned int)buf[3]);
}
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
/*
* Curl_read64_be()
*
@@ -170,6 +174,8 @@ unsigned __int64 Curl_read64_be(unsigned char *buf)
}
#endif
+#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
+
/*
* Curl_write16_le()
*
@@ -227,4 +233,4 @@ void Curl_write64_le(const __int64 value, unsigned char *buffer)
Curl_write32_le((int)value, buffer);
Curl_write32_le((int)(value >> 32), buffer + 4);
}
-#endif
+#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
diff --git a/lib/curl_fnmatch.c b/lib/curl_fnmatch.c
index 63f67b9aa..1e53918d8 100644
--- a/lib/curl_fnmatch.c
+++ b/lib/curl_fnmatch.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -23,11 +23,8 @@
#include "curl_setup.h"
#include "curl_fnmatch.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
+
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/curl_gssapi.c b/lib/curl_gssapi.c
index 2cd14fff0..9baece5ad 100644
--- a/lib/curl_gssapi.c
+++ b/lib/curl_gssapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2015, 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
@@ -27,9 +27,9 @@
#include "curl_gssapi.h"
#include "sendf.h"
-static const char spnego_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
+static char spnego_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
gss_OID_desc Curl_spnego_mech_oid = { 6, &spnego_oid_bytes };
-static const char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
+static char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
gss_OID_desc Curl_krb5_mech_oid = { 9, &krb5_oid_bytes };
OM_uint32 Curl_gss_init_sec_context(
diff --git a/lib/curl_gssapi.h b/lib/curl_gssapi.h
index 35e4b2484..19aab64e6 100644
--- a/lib/curl_gssapi.h
+++ b/lib/curl_gssapi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2015, 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
@@ -59,6 +59,17 @@ OM_uint32 Curl_gss_init_sec_context(
void Curl_gss_log_error(struct SessionHandle *data, OM_uint32 status,
const char *prefix);
+/* Provide some definitions missing in old headers */
+#ifdef HAVE_OLD_GSSMIT
+#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
+#define NCOMPAT 1
+#endif
+
+/* Define our privacy and integrity protection values */
+#define GSSAUTH_P_NONE 1
+#define GSSAUTH_P_INTEGRITY 2
+#define GSSAUTH_P_PRIVACY 4
+
#endif /* HAVE_GSSAPI */
#endif /* HEADER_CURL_GSSAPI_H */
diff --git a/lib/curl_memory.h b/lib/curl_memory.h
index e3cdc721c..bc744ccd8 100644
--- a/lib/curl_memory.h
+++ b/lib/curl_memory.h
@@ -28,6 +28,9 @@
* File curl_memory.h must be included by _all_ *.c source files
* that use memory related functions strdup, malloc, calloc, realloc
* or free, and given source file is used to build libcurl library.
+ * It should be included immediately before memdebug.h as the last files
+ * included to avoid undesired interaction with other memory function
+ * headers in dependent libraries.
*
* There is nearly no exception to above rule. All libcurl source
* files in 'lib' subdirectory as well as those living deep inside
diff --git a/lib/curl_memrchr.c b/lib/curl_memrchr.c
index a71c2bb4a..6722c6a20 100644
--- a/lib/curl_memrchr.c
+++ b/lib/curl_memrchr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -21,13 +21,9 @@
***************************************************************************/
#include "curl_setup.h"
-
#include "curl_memrchr.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
+
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c
index 6e657228c..403d00537 100644
--- a/lib/curl_multibyte.c
+++ b/lib/curl_multibyte.c
@@ -23,18 +23,15 @@
#include "curl_setup.h"
#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
- defined(CURL_LDAP_WIN)) && defined(UNICODE))
+ defined(USE_WIN32_LDAP)) && defined(UNICODE))
/*
* MultiByte conversions using Windows kernel32 library.
*/
#include "curl_multibyte.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
+
/* The last #include file should be: */
#include "memdebug.h"
@@ -50,7 +47,8 @@ wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8)
if(str_w) {
if(MultiByteToWideChar(CP_UTF8, 0, str_utf8, -1, str_w,
str_w_len) == 0) {
- Curl_safefree(str_w);
+ free(str_w);
+ return NULL;
}
}
}
@@ -71,7 +69,8 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
if(str_utf8) {
if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, str_utf8_len,
NULL, FALSE) == 0) {
- Curl_safefree(str_utf8);
+ free(str_utf8);
+ return NULL;
}
}
}
@@ -80,4 +79,4 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
return str_utf8;
}
-#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */
+#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || USE_WIN32_LDAP) && UNICODE) */
diff --git a/lib/curl_multibyte.h b/lib/curl_multibyte.h
index d0247557c..dc7ed4c39 100644
--- a/lib/curl_multibyte.h
+++ b/lib/curl_multibyte.h
@@ -24,7 +24,7 @@
#include "curl_setup.h"
#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
- defined(CURL_LDAP_WIN)) && defined(UNICODE))
+ defined(USE_WIN32_LDAP)) && defined(UNICODE))
/*
* MultiByte conversions using Windows kernel32 library.
@@ -33,11 +33,11 @@
wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8);
char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w);
-#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */
+#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || USE_WIN32_LDAP) && UNICODE) */
#if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI) || \
- defined(CURL_LDAP_WIN)
+ defined(USE_WIN32_LDAP)
/*
* Macros Curl_convert_UTF8_to_tchar(), Curl_convert_tchar_to_UTF8()
@@ -87,6 +87,6 @@ typedef union {
#endif /* UNICODE */
-#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || CURL_LDAP_WIN */
+#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || USE_WIN32_LDAP */
#endif /* HEADER_CURL_MULTIBYTE_H */
diff --git a/lib/curl_ntlm.c b/lib/curl_ntlm.c
index c77f055d4..f9ddf506d 100644
--- a/lib/curl_ntlm.c
+++ b/lib/curl_ntlm.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -41,10 +41,7 @@
#include "curl_ntlm_wb.h"
#include "curl_sasl.h"
#include "url.h"
-#include "curl_memory.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#if defined(USE_NSS)
#include "vtls/nssg.h"
@@ -52,7 +49,8 @@
#include "curl_sspi.h"
#endif
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#if DEBUG_ME
@@ -86,7 +84,11 @@ CURLcode Curl_input_ntlm(struct connectdata *conn,
ntlm->state = NTLMSTATE_TYPE2; /* We got a type-2 message */
}
else {
- if(ntlm->state == NTLMSTATE_TYPE3) {
+ if(ntlm->state == NTLMSTATE_LAST) {
+ infof(conn->data, "NTLM auth restarted\n");
+ Curl_http_ntlm_cleanup(conn);
+ }
+ else if(ntlm->state == NTLMSTATE_TYPE3) {
infof(conn->data, "NTLM handshake rejected\n");
Curl_http_ntlm_cleanup(conn);
ntlm->state = NTLMSTATE_NONE;
@@ -175,7 +177,7 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
return result;
if(base64) {
- Curl_safefree(*allocuserpwd);
+ free(*allocuserpwd);
*allocuserpwd = aprintf("%sAuthorization: NTLM %s\r\n",
proxy ? "Proxy-" : "",
base64);
@@ -195,7 +197,7 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
return result;
if(base64) {
- Curl_safefree(*allocuserpwd);
+ free(*allocuserpwd);
*allocuserpwd = aprintf("%sAuthorization: NTLM %s\r\n",
proxy ? "Proxy-" : "",
base64);
@@ -213,6 +215,9 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
case NTLMSTATE_TYPE3:
/* connection is already authenticated,
* don't send a header in future requests */
+ ntlm->state = NTLMSTATE_LAST;
+
+ case NTLMSTATE_LAST:
Curl_safefree(*allocuserpwd);
authp->done = TRUE;
break;
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index 2aaea4db8..2e5b573fd 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -33,7 +33,7 @@
#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
# ifdef USE_OPENSSL
# include <openssl/des.h>
@@ -101,17 +101,16 @@
#include "urldata.h"
#include "non-ascii.h"
#include "rawstr.h"
-#include "curl_memory.h"
#include "curl_ntlm_core.h"
#include "curl_md5.h"
#include "curl_hmac.h"
#include "warnless.h"
#include "curl_endian.h"
+#include "curl_des.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#define NTLM_HMAC_MD5_LEN (16)
@@ -133,7 +132,7 @@ static void extend_key_56_to_64(const unsigned char *key_56, char *key)
key[7] = (unsigned char) ((key_56[6] << 1) & 0xFF);
}
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
/*
* Turns a 56 bit key into the 64 bit, odd parity key and sets the key. The
* key schedule ks is also set.
@@ -143,8 +142,17 @@ static void setup_des_key(const unsigned char *key_56,
{
DES_cblock key;
+ /* Expand the 56-bit key to 64-bits */
extend_key_56_to_64(key_56, (char *) key);
+
+ /* Set the key parity to odd */
+#if defined(HAVE_BORINGSSL)
+ Curl_des_set_odd_parity((unsigned char *) &key, sizeof(key));
+#else
DES_set_odd_parity(&key);
+#endif
+
+ /* Set the key */
DES_set_key(&key, ks);
}
@@ -154,8 +162,15 @@ static void setup_des_key(const unsigned char *key_56,
struct des_ctx *des)
{
char key[8];
+
+ /* Expand the 56-bit key to 64-bits */
extend_key_56_to_64(key_56, key);
- des_set_key(des, (const uint8_t*)key);
+
+ /* Set the key parity to odd */
+ Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+ /* Set the key */
+ des_set_key(des, (const uint8_t *) key);
}
#elif defined(USE_GNUTLS)
@@ -167,8 +182,15 @@ static void setup_des_key(const unsigned char *key_56,
gcry_cipher_hd_t *des)
{
char key[8];
+
+ /* Expand the 56-bit key to 64-bits */
extend_key_56_to_64(key_56, key);
- gcry_cipher_setkey(*des, key, 8);
+
+ /* Set the key parity to odd */
+ Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+ /* Set the key */
+ gcry_cipher_setkey(*des, key, sizeof(key));
}
#elif defined(USE_NSS)
@@ -196,16 +218,21 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
if(!slot)
return FALSE;
- /* expand the 56 bit key to 64 bit and wrap by NSS */
+ /* Expand the 56-bit key to 64-bits */
extend_key_56_to_64(key_56, key);
+
+ /* Set the key parity to odd */
+ Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+ /* Import the key */
key_item.data = (unsigned char *)key;
- key_item.len = /* hard-wired */ 8;
+ key_item.len = sizeof(key);
symkey = PK11_ImportSymKey(slot, mech, PK11_OriginUnwrap, CKA_ENCRYPT,
&key_item, NULL);
if(!symkey)
goto fail;
- /* create DES encryption context */
+ /* Create the DES encryption context */
param = PK11_ParamFromIV(mech, /* no IV in ECB mode */ NULL);
if(!param)
goto fail;
@@ -213,7 +240,7 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
if(!ctx)
goto fail;
- /* perform the encryption */
+ /* Perform the encryption */
if(SECSuccess == PK11_CipherOp(ctx, out, &out_len, /* outbuflen */ 8,
(unsigned char *)in, /* inbuflen */ 8)
&& SECSuccess == PK11_Finalize(ctx))
@@ -240,10 +267,17 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
size_t out_len;
CCCryptorStatus err;
+ /* Expand the 56-bit key to 64-bits */
extend_key_56_to_64(key_56, key);
+
+ /* Set the key parity to odd */
+ Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+ /* Perform the encryption */
err = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionECBMode, key,
kCCKeySizeDES, NULL, in, 8 /* inbuflen */, out,
8 /* outbuflen */, &out_len);
+
return err == kCCSuccess;
}
@@ -255,10 +289,19 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
char key[8];
_CIPHER_Control_T ctl;
+ /* Setup the cipher control structure */
ctl.Func_ID = ENCRYPT_ONLY;
- ctl.Data_Len = 8;
+ ctl.Data_Len = sizeof(key);
+
+ /* Expand the 56-bit key to 64-bits */
extend_key_56_to_64(key_56, ctl.Crypto_Key);
+
+ /* Set the key parity to odd */
+ Curl_des_set_odd_parity((unsigned char *) ctl.Crypto_Key, ctl.Data_Len);
+
+ /* Perform the encryption */
_CIPHER((_SPCPTR *) &out, &ctl, (_SPCPTR *) &in);
+
return TRUE;
}
@@ -281,13 +324,19 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
CRYPT_VERIFYCONTEXT))
return FALSE;
+ /* Setup the key blob structure */
memset(&blob, 0, sizeof(blob));
- extend_key_56_to_64(key_56, blob.key);
blob.hdr.bType = PLAINTEXTKEYBLOB;
blob.hdr.bVersion = 2;
blob.hdr.aiKeyAlg = CALG_DES;
blob.len = sizeof(blob.key);
+ /* Expand the 56-bit key to 64-bits */
+ extend_key_56_to_64(key_56, blob.key);
+
+ /* Set the key parity to odd */
+ Curl_des_set_odd_parity((unsigned char *) blob.key, sizeof(blob.key));
+
/* Import the key */
if(!CryptImportKey(hprov, (BYTE *) &blob, sizeof(blob), 0, 0, &hkey)) {
CryptReleaseContext(hprov, 0);
@@ -317,7 +366,7 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
const unsigned char *plaintext,
unsigned char *results)
{
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
DES_key_schedule ks;
setup_des_key(keys, DESKEY(ks));
@@ -392,7 +441,7 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
{
/* Create LanManager hashed password. */
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
DES_key_schedule ks;
setup_des_key(pw, DESKEY(ks));
@@ -459,6 +508,7 @@ static void ascii_uppercase_to_unicode_le(unsigned char *dest,
/*
* Set up nt hashed passwords
+ * @unittest: 1600
*/
CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
const char *password,
@@ -482,7 +532,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
{
/* Create NT hashed password. */
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
MD4_CTX MD4pw;
MD4_Init(&MD4pw);
MD4_Update(&MD4pw, pw, 2 * len);
@@ -568,7 +618,7 @@ CURLcode Curl_ntlm_core_mk_ntlmv2_hash(const char *user, size_t userlen,
result = Curl_hmac_md5(ntlmhash, 16, identity, curlx_uztoui(identity_len),
ntlmv2hash);
- Curl_safefree(identity);
+ free(identity);
return result;
}
@@ -655,8 +705,7 @@ CURLcode Curl_ntlm_core_mk_ntlmv2_resp(unsigned char *ntlmv2hash,
result = Curl_hmac_md5(ntlmv2hash, NTLM_HMAC_MD5_LEN, ptr + 8,
NTLMv2_BLOB_LEN + 8, hmac_output);
if(result) {
- Curl_safefree(ptr);
-
+ free(ptr);
return result;
}
diff --git a/lib/curl_ntlm_core.h b/lib/curl_ntlm_core.h
index c1689666c..3a763592a 100644
--- a/lib/curl_ntlm_core.h
+++ b/lib/curl_ntlm_core.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -28,7 +28,7 @@
#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
# if !defined(OPENSSL_VERSION_NUMBER) && \
!defined(HEADER_SSL_H) && !defined(HEADER_MD5_H)
# error "curl_ntlm_core.h shall not be included before OpenSSL headers."
diff --git a/lib/curl_ntlm_msgs.c b/lib/curl_ntlm_msgs.c
index 865954d3b..7f07decb8 100644
--- a/lib/curl_ntlm_msgs.c
+++ b/lib/curl_ntlm_msgs.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -41,7 +41,6 @@
#include "curl_gethostname.h"
#include "curl_multibyte.h"
#include "warnless.h"
-#include "curl_memory.h"
#include "vtls/vtls.h"
@@ -53,11 +52,10 @@
#include "curl_ntlm_msgs.h"
#include "curl_sasl.h"
#include "curl_endian.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* "NTLMSSP" signature is always in ASCII regardless of the platform */
@@ -593,11 +591,11 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
memcpy(tmp, &ntlm->nonce[0], 8);
memcpy(tmp + 8, entropy, 8);
- Curl_ssl_md5sum(tmp, 16, md5sum, MD5_DIGEST_LENGTH);
-
- /* We shall only use the first 8 bytes of md5sum, but the des
- code in Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
- result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+ result = Curl_ssl_md5sum(tmp, 16, md5sum, MD5_DIGEST_LENGTH);
+ if(!result)
+ /* We shall only use the first 8 bytes of md5sum, but the des code in
+ Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
+ result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
if(result)
return result;
@@ -760,7 +758,7 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
ntlm_print_hex(stderr, (char *)&ntlmbuf[ntrespoff], ntresplen);
});
- Curl_safefree(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
+ free(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
#endif
diff --git a/lib/curl_ntlm_wb.c b/lib/curl_ntlm_wb.c
index 5e2d79cb4..b2a5fb343 100644
--- a/lib/curl_ntlm_wb.c
+++ b/lib/curl_ntlm_wb.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -51,12 +51,10 @@
#include "curl_ntlm_wb.h"
#include "url.h"
#include "strerror.h"
-#include "curl_memory.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#if DEBUG_ME
@@ -107,9 +105,9 @@ void Curl_ntlm_wb_cleanup(struct connectdata *conn)
conn->ntlm_auth_hlpr_pid = 0;
}
- Curl_safefree(conn->challenge_header);
+ free(conn->challenge_header);
conn->challenge_header = NULL;
- Curl_safefree(conn->response_header);
+ free(conn->response_header);
conn->response_header = NULL;
}
@@ -246,13 +244,13 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
sclose(sockfds[1]);
conn->ntlm_auth_hlpr_socket = sockfds[0];
conn->ntlm_auth_hlpr_pid = child_pid;
- Curl_safefree(domain);
- Curl_safefree(ntlm_auth_alloc);
+ free(domain);
+ free(ntlm_auth_alloc);
return CURLE_OK;
done:
- Curl_safefree(domain);
- Curl_safefree(ntlm_auth_alloc);
+ free(domain);
+ free(ntlm_auth_alloc);
return CURLE_REMOTE_ACCESS_DENIED;
}
@@ -308,7 +306,7 @@ static CURLcode ntlm_wb_response(struct connectdata *conn,
if(state == NTLMSTATE_TYPE1 &&
len_out == 3 &&
buf[0] == 'P' && buf[1] == 'W')
- return CURLE_REMOTE_ACCESS_DENIED;
+ goto done;
/* invalid response */
if(len_out < 4)
goto done;
@@ -391,12 +389,12 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
if(res)
return res;
- Curl_safefree(*allocuserpwd);
+ free(*allocuserpwd);
*allocuserpwd = aprintf("%sAuthorization: %s\r\n",
proxy ? "Proxy-" : "",
conn->response_header);
DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd));
- Curl_safefree(conn->response_header);
+ free(conn->response_header);
conn->response_header = NULL;
break;
case NTLMSTATE_TYPE2:
@@ -409,7 +407,7 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
if(res)
return res;
- Curl_safefree(*allocuserpwd);
+ free(*allocuserpwd);
*allocuserpwd = aprintf("%sAuthorization: %s\r\n",
proxy ? "Proxy-" : "",
conn->response_header);
@@ -421,10 +419,8 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
case NTLMSTATE_TYPE3:
/* connection is already authenticated,
* don't send a header in future requests */
- if(*allocuserpwd) {
- free(*allocuserpwd);
- *allocuserpwd=NULL;
- }
+ free(*allocuserpwd);
+ *allocuserpwd=NULL;
authp->done = TRUE;
break;
}
diff --git a/lib/curl_printf.h b/lib/curl_printf.h
new file mode 100644
index 000000000..086923f1d
--- /dev/null
+++ b/lib/curl_printf.h
@@ -0,0 +1,56 @@
+#ifndef HEADER_CURL_PRINTF_H
+#define HEADER_CURL_PRINTF_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+
+/*
+ * This header should be included by ALL code in libcurl that uses any
+ * *rintf() functions.
+ */
+
+#include <curl/mprintf.h>
+
+# undef printf
+# undef fprintf
+# undef snprintf
+# undef vprintf
+# undef vfprintf
+# undef vsnprintf
+# undef aprintf
+# undef vaprintf
+# define printf curl_mprintf
+# define fprintf curl_mfprintf
+# define snprintf curl_msnprintf
+# define vprintf curl_mvprintf
+# define vfprintf curl_mvfprintf
+# define vsnprintf curl_mvsnprintf
+# define aprintf curl_maprintf
+# define vaprintf curl_mvaprintf
+
+/* We define away the sprintf functions unconditonally since we don't want
+ internal code to be using them, intentionally or by mistake!*/
+# undef sprintf
+# undef vsprintf
+# define sprintf sprintf_was_used
+# define vsprintf vsprintf_was_used
+
+#endif /* HEADER_CURL_PRINTF_H */
diff --git a/lib/curl_rtmp.c b/lib/curl_rtmp.c
index d1d79c38f..293897288 100644
--- a/lib/curl_rtmp.c
+++ b/lib/curl_rtmp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
*
* This software is licensed as described in the file COPYING, which
@@ -32,10 +32,6 @@
#include "warnless.h"
#include <curl/curl.h>
#include <librtmp/rtmp.h>
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -201,7 +197,7 @@ static CURLcode rtmp_setup_connection(struct connectdata *conn)
static CURLcode rtmp_connect(struct connectdata *conn, bool *done)
{
RTMP *r = conn->proto.generic;
- SET_RCVTIMEO(tv,10);
+ SET_RCVTIMEO(tv, 10);
r->m_sb.sb_socket = conn->sock[FIRSTSOCKET];
diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c
index b944aa2df..68646bc1a 100644
--- a/lib/curl_sasl.c
+++ b/lib/curl_sasl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -39,17 +39,34 @@
#include "curl_hmac.h"
#include "curl_sasl.h"
#include "warnless.h"
-#include "curl_memory.h"
#include "strtok.h"
+#include "strequal.h"
#include "rawstr.h"
+#include "sendf.h"
#include "non-ascii.h" /* included for Curl_convert_... prototypes */
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
+/* Supported mechanisms */
+const struct {
+ const char *name; /* Name */
+ size_t len; /* Name length */
+ unsigned int bit; /* Flag bit */
+} mechtable[] = {
+ { "LOGIN", 5, SASL_MECH_LOGIN },
+ { "PLAIN", 5, SASL_MECH_PLAIN },
+ { "CRAM-MD5", 8, SASL_MECH_CRAM_MD5 },
+ { "DIGEST-MD5", 10, SASL_MECH_DIGEST_MD5 },
+ { "GSSAPI", 6, SASL_MECH_GSSAPI },
+ { "EXTERNAL", 8, SASL_MECH_EXTERNAL },
+ { "NTLM", 4, SASL_MECH_NTLM },
+ { "XOAUTH2", 7, SASL_MECH_XOAUTH2 },
+ { ZERO_NULL, 0, 0 }
+};
+
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && !defined(USE_WINDOWS_SSPI)
#define DIGEST_QOP_VALUE_AUTH (1 << 0)
#define DIGEST_QOP_VALUE_AUTH_INT (1 << 1)
@@ -59,9 +76,6 @@
#define DIGEST_QOP_VALUE_STRING_AUTH_INT "auth-int"
#define DIGEST_QOP_VALUE_STRING_AUTH_CONF "auth-conf"
-#define DIGEST_MAX_VALUE_LENGTH 256
-#define DIGEST_MAX_CONTENT_LENGTH 1024
-
/* The CURL_OUTPUT_DIGEST_CONV macro below is for non-ASCII machines.
It converts digest text to ASCII so the MD5 will be correct for
what ultimately goes over the network.
@@ -73,13 +87,16 @@
return result; \
}
+#endif
+
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
/*
- * Return 0 on success and then the buffers are filled in fine.
+ * Returns 0 on success and then the buffers are filled in fine.
*
* Non-zero means failure to parse.
*/
-static int sasl_digest_get_pair(const char *str, char *value, char *content,
- const char **endptr)
+int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
+ const char **endptr)
{
int c;
bool starts_with_quote = FALSE;
@@ -140,7 +157,9 @@ static int sasl_digest_get_pair(const char *str, char *value, char *content,
return 0; /* all is fine! */
}
+#endif
+#if !defined(CURL_DISABLE_CRYPTO_AUTH) && !defined(USE_WINDOWS_SSPI)
/* Convert md5 chunk to RFC2617 (section 3.1.3) -suitable ascii string*/
static void sasl_digest_md5_to_ascii(unsigned char *source, /* 16 bytes */
unsigned char *dest) /* 33 bytes */
@@ -234,7 +253,7 @@ static CURLcode sasl_digest_get_qop_values(const char *options, int *value)
token = strtok_r(NULL, ",", &tok_buf);
}
- Curl_safefree(tmp);
+ free(tmp);
return CURLE_OK;
}
@@ -248,7 +267,7 @@ static CURLcode sasl_digest_get_qop_values(const char *options, int *value)
*
* Parameters:
*
- * serivce [in] - The service type such as www, smtp, pop or imap.
+ * service [in] - The service type such as www, smtp, pop or imap.
* host [in] - The host name or realm.
*
* Returns a pointer to the newly allocated SPN.
@@ -261,7 +280,7 @@ char *Curl_sasl_build_spn(const char *service, const char *host)
#endif
/*
- * Curl_sasl_create_plain_message()
+ * sasl_create_plain_message()
*
* This is used to generate an already encoded PLAIN message ready
* for sending to the recipient.
@@ -277,10 +296,10 @@ char *Curl_sasl_build_spn(const char *service, const char *host)
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
- const char *userp,
- const char *passwdp,
- char **outptr, size_t *outlen)
+static CURLcode sasl_create_plain_message(struct SessionHandle *data,
+ const char *userp,
+ const char *passwdp,
+ char **outptr, size_t *outlen)
{
CURLcode result;
char *plainauth;
@@ -307,12 +326,12 @@ CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
/* Base64 encode the reply */
result = Curl_base64_encode(data, plainauth, 2 * ulen + plen + 2, outptr,
outlen);
- Curl_safefree(plainauth);
+ free(plainauth);
return result;
}
/*
- * Curl_sasl_create_login_message()
+ * sasl_create_login_message()
*
* This is used to generate an already encoded LOGIN message containing the
* user name or password ready for sending to the recipient.
@@ -327,9 +346,9 @@ CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
- const char *valuep, char **outptr,
- size_t *outlen)
+static CURLcode sasl_create_login_message(struct SessionHandle *data,
+ const char *valuep, char **outptr,
+ size_t *outlen)
{
size_t vlen = strlen(valuep);
@@ -349,9 +368,33 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
return Curl_base64_encode(data, valuep, vlen, outptr, outlen);
}
+/*
+ * sasl_create_external_message()
+ *
+ * This is used to generate an already encoded EXTERNAL message containing
+ * the user name ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data [in] - The session handle.
+ * user [in] - The user name.
+ * outptr [in/out] - The address where a pointer to newly allocated memory
+ * holding the result will be stored upon completion.
+ * outlen [out] - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+static CURLcode sasl_create_external_message(struct SessionHandle *data,
+ const char *user, char **outptr,
+ size_t *outlen)
+{
+ /* This is the same formatting as the login message. */
+ return sasl_create_login_message(data, user, outptr, outlen);
+}
+
#ifndef CURL_DISABLE_CRYPTO_AUTH
/*
- * Curl_sasl_decode_cram_md5_message()
+ * sasl_decode_cram_md5_message()
*
* This is used to decode an already encoded CRAM-MD5 challenge message.
*
@@ -364,8 +407,8 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
- size_t *outlen)
+static CURLcode sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
+ size_t *outlen)
{
CURLcode result = CURLE_OK;
size_t chlg64len = strlen(chlg64);
@@ -381,7 +424,7 @@ CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
}
/*
- * Curl_sasl_create_cram_md5_message()
+ * sasl_create_cram_md5_message()
*
* This is used to generate an already encoded CRAM-MD5 response message ready
* for sending to the recipient.
@@ -398,11 +441,11 @@ CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
- const char *chlg,
- const char *userp,
- const char *passwdp,
- char **outptr, size_t *outlen)
+static CURLcode sasl_create_cram_md5_message(struct SessionHandle *data,
+ const char *chlg,
+ const char *userp,
+ const char *passwdp,
+ char **outptr, size_t *outlen)
{
CURLcode result = CURLE_OK;
size_t chlglen = 0;
@@ -440,7 +483,7 @@ CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
/* Base64 encode the response */
result = Curl_base64_encode(data, response, 0, outptr, outlen);
- Curl_safefree(response);
+ free(response);
return result;
}
@@ -490,7 +533,7 @@ static CURLcode sasl_decode_digest_md5_message(const char *chlg64,
/* Retrieve nonce string from the challenge */
if(!sasl_digest_get_key_value((char *)chlg, "nonce=\"", nonce, nlen, '\"')) {
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -502,17 +545,17 @@ static CURLcode sasl_decode_digest_md5_message(const char *chlg64,
/* Retrieve algorithm string from the challenge */
if(!sasl_digest_get_key_value((char *)chlg, "algorithm=", alg, alen, ',')) {
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
/* Retrieve qop-options string from the challenge */
if(!sasl_digest_get_key_value((char *)chlg, "qop=\"", qop, qlen, '\"')) {
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_OK;
}
@@ -634,7 +677,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
/* Calculate H(A2) */
ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
if(!ctxt) {
- Curl_safefree(spn);
+ free(spn);
return CURLE_OUT_OF_MEMORY;
}
@@ -652,7 +695,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
/* Now calculate the response hash */
ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
if(!ctxt) {
- Curl_safefree(spn);
+ free(spn);
return CURLE_OUT_OF_MEMORY;
}
@@ -685,14 +728,14 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
"qop=%s",
userp, realm, nonce,
cnonce, nonceCount, spn, resp_hash_hex, qop);
- Curl_safefree(spn);
+ free(spn);
if(!response)
return CURLE_OUT_OF_MEMORY;
/* Base64 encode the response */
result = Curl_base64_encode(data, response, 0, outptr, outlen);
- Curl_safefree(response);
+ free(response);
return result;
}
@@ -735,7 +778,7 @@ CURLcode Curl_sasl_decode_digest_http_message(const char *chlg,
chlg++;
/* Extract a value=content pair */
- if(!sasl_digest_get_pair(chlg, value, content, &chlg)) {
+ if(!Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) {
if(Curl_raw_equal(value, "nonce")) {
digest->nonce = strdup(content);
if(!digest->nonce)
@@ -906,7 +949,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
Curl_md5it(md5buf, md5this);
- Curl_safefree(md5this);
+ free(md5this);
sasl_digest_md5_to_ascii(md5buf, ha1);
if(digest->algo == CURLDIGESTALGO_MD5SESS) {
@@ -917,7 +960,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
CURL_OUTPUT_DIGEST_CONV(data, tmp); /* convert on non-ASCII machines */
Curl_md5it(md5buf, (unsigned char *)tmp);
- Curl_safefree(tmp);
+ free(tmp);
sasl_digest_md5_to_ascii(md5buf, ha1);
}
@@ -941,7 +984,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
TODO: replace md5 of empty string with entity-body for PUT/POST */
unsigned char *md5this2 = (unsigned char *)
aprintf("%s:%s", md5this, "d41d8cd98f00b204e9800998ecf8427e");
- Curl_safefree(md5this);
+ free(md5this);
md5this = md5this2;
}
@@ -950,7 +993,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
Curl_md5it(md5buf, md5this);
- Curl_safefree(md5this);
+ free(md5this);
sasl_digest_md5_to_ascii(md5buf, ha2);
if(digest->qop) {
@@ -974,7 +1017,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
Curl_md5it(md5buf, md5this);
- Curl_safefree(md5this);
+ free(md5this);
sasl_digest_md5_to_ascii(md5buf, request_digest);
/* for test case 64 (snooped from a Mozilla 1.3a request)
@@ -1029,7 +1072,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
uripath,
request_digest);
}
- Curl_safefree(userp_quoted);
+ free(userp_quoted);
if(!response)
return CURLE_OUT_OF_MEMORY;
@@ -1110,7 +1153,7 @@ void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
#endif /* USE_NTLM && !USE_WINDOWS_SSPI*/
/*
- * Curl_sasl_create_xoauth2_message()
+ * sasl_create_xoauth2_message()
*
* This is used to generate an already encoded OAuth 2.0 message ready for
* sending to the recipient.
@@ -1126,10 +1169,10 @@ void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
- const char *user,
- const char *bearer,
- char **outptr, size_t *outlen)
+static CURLcode sasl_create_xoauth2_message(struct SessionHandle *data,
+ const char *user,
+ const char *bearer,
+ char **outptr, size_t *outlen)
{
CURLcode result = CURLE_OK;
char *xoauth = NULL;
@@ -1142,7 +1185,7 @@ CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
/* Base64 encode the reply */
result = Curl_base64_encode(data, xoauth, strlen(xoauth), outptr, outlen);
- Curl_safefree(xoauth);
+ free(xoauth);
return result;
}
@@ -1180,3 +1223,447 @@ void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused)
(void)authused;
#endif
}
+
+/*
+ * Curl_sasl_decode_mech()
+ *
+ * Convert a SASL mechanism name into a token.
+ *
+ * Parameters:
+ *
+ * ptr [in] - The mechanism string.
+ * maxlen [in] - Maximum mechanism string length.
+ * len [out] - If not NULL, effective name length.
+ *
+ * Returns the SASL mechanism token or 0 if no match.
+ */
+unsigned int Curl_sasl_decode_mech(const char *ptr, size_t maxlen, size_t *len)
+{
+ unsigned int i;
+ char c;
+
+ for(i = 0; mechtable[i].name; i++) {
+ if(maxlen >= mechtable[i].len &&
+ !memcmp(ptr, mechtable[i].name, mechtable[i].len)) {
+ if(len)
+ *len = mechtable[i].len;
+
+ if(maxlen == mechtable[i].len)
+ return mechtable[i].bit;
+
+ c = ptr[mechtable[i].len];
+ if(!ISUPPER(c) && !ISDIGIT(c) && c != '-' && c != '_')
+ return mechtable[i].bit;
+ }
+ }
+
+ return 0;
+}
+
+/*
+ * Curl_sasl_parse_url_auth_option()
+ *
+ * Parse the URL login options.
+ */
+CURLcode Curl_sasl_parse_url_auth_option(struct SASL *sasl,
+ const char *value, size_t len)
+{
+ CURLcode result = CURLE_OK;
+ unsigned int mechbit;
+ size_t mechlen;
+
+ if(!len)
+ return CURLE_URL_MALFORMAT;
+
+ if(sasl->resetprefs) {
+ sasl->resetprefs = FALSE;
+ sasl->prefmech = SASL_AUTH_NONE;
+ }
+
+ if(strnequal(value, "*", len))
+ sasl->prefmech = SASL_AUTH_DEFAULT;
+ else if((mechbit = Curl_sasl_decode_mech(value, len, &mechlen)) &&
+ mechlen == len)
+ sasl->prefmech |= mechbit;
+ else
+ result = CURLE_URL_MALFORMAT;
+
+ return result;
+}
+
+/*
+ * Curl_sasl_init()
+ *
+ * Initializes the SASL structure.
+ */
+void Curl_sasl_init(struct SASL *sasl, const struct SASLproto *params)
+{
+ sasl->params = params; /* Set protocol dependent parameters */
+ sasl->state = SASL_STOP; /* Not yet running */
+ sasl->authmechs = SASL_AUTH_NONE; /* No known authentication mechanism yet */
+ sasl->prefmech = SASL_AUTH_DEFAULT; /* Prefer all mechanisms */
+ sasl->authused = SASL_AUTH_NONE; /* No the authentication mechanism used */
+ sasl->resetprefs = TRUE; /* Reset prefmech upon AUTH parsing. */
+ sasl->mutual_auth = FALSE; /* No mutual authentication (GSSAPI only) */
+ sasl->force_ir = FALSE; /* Respect external option */
+}
+
+/*
+ * state()
+ *
+ * This is the ONLY way to change SASL state!
+ */
+static void state(struct SASL *sasl, struct connectdata *conn,
+ saslstate newstate)
+{
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+ /* for debug purposes */
+ static const char * const names[]={
+ "STOP",
+ "PLAIN",
+ "LOGIN",
+ "LOGIN_PASSWD",
+ "EXTERNAL",
+ "CRAMMD5",
+ "DIGESTMD5",
+ "DIGESTMD5_RESP",
+ "NTLM",
+ "NTLM_TYPE2MSG",
+ "GSSAPI",
+ "GSSAPI_TOKEN",
+ "GSSAPI_NO_DATA",
+ "XOAUTH2",
+ "CANCEL",
+ "FINAL",
+ /* LAST */
+ };
+
+ if(sasl->state != newstate)
+ infof(conn->data, "SASL %p state change from %s to %s\n",
+ (void *)sasl, names[sasl->state], names[newstate]);
+#else
+ (void) conn;
+#endif
+
+ sasl->state = newstate;
+}
+
+/*
+ * Curl_sasl_can_authenticate()
+ *
+ * Check if we have enough auth data and capabilities to authenticate.
+ */
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn)
+{
+ /* Have credentials been provided? */
+ if(conn->bits.user_passwd)
+ return TRUE;
+
+ /* EXTERNAL can authenticate without a user name and/or password */
+ if(sasl->authmechs & sasl->prefmech & SASL_MECH_EXTERNAL)
+ return TRUE;
+
+ return FALSE;
+}
+
+/*
+ * Curl_sasl_start()
+ *
+ * Calculate the required login details for SASL authentication.
+ */
+CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn,
+ bool force_ir, saslprogress *progress)
+{
+ CURLcode result = CURLE_OK;
+ struct SessionHandle *data = conn->data;
+ unsigned int enabledmechs;
+ const char *mech = NULL;
+ char *resp = NULL;
+ size_t len = 0;
+ saslstate state1 = SASL_STOP;
+ saslstate state2 = SASL_FINAL;
+
+ sasl->force_ir = force_ir; /* Latch for future use */
+ sasl->authused = 0; /* No mechanism used yet */
+ enabledmechs = sasl->authmechs & sasl->prefmech;
+ *progress = SASL_IDLE;
+
+ /* Calculate the supported authentication mechanism, by decreasing order of
+ security, as well as the initial response where appropriate */
+ if((enabledmechs & SASL_MECH_EXTERNAL) && !conn->passwd[0]) {
+ mech = SASL_MECH_STRING_EXTERNAL;
+ state1 = SASL_EXTERNAL;
+ sasl->authused = SASL_MECH_EXTERNAL;
+
+ if(force_ir || data->set.sasl_ir)
+ result = sasl_create_external_message(data, conn->user, &resp, &len);
+ }
+ else if(conn->bits.user_passwd) {
+#if defined(USE_KERBEROS5)
+ if(enabledmechs & SASL_MECH_GSSAPI) {
+ sasl->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
+ mech = SASL_MECH_STRING_GSSAPI;
+ state1 = SASL_GSSAPI;
+ state2 = SASL_GSSAPI_TOKEN;
+ sasl->authused = SASL_MECH_GSSAPI;
+
+ if(force_ir || data->set.sasl_ir)
+ result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+ conn->passwd,
+ sasl->params->service,
+ sasl->mutual_auth,
+ NULL, &conn->krb5,
+ &resp, &len);
+ }
+ else
+#endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+ if(enabledmechs & SASL_MECH_DIGEST_MD5) {
+ mech = SASL_MECH_STRING_DIGEST_MD5;
+ state1 = SASL_DIGESTMD5;
+ sasl->authused = SASL_MECH_DIGEST_MD5;
+ }
+ else if(enabledmechs & SASL_MECH_CRAM_MD5) {
+ mech = SASL_MECH_STRING_CRAM_MD5;
+ state1 = SASL_CRAMMD5;
+ sasl->authused = SASL_MECH_CRAM_MD5;
+ }
+ else
+#endif
+#ifdef USE_NTLM
+ if(enabledmechs & SASL_MECH_NTLM) {
+ mech = SASL_MECH_STRING_NTLM;
+ state1 = SASL_NTLM;
+ state2 = SASL_NTLM_TYPE2MSG;
+ sasl->authused = SASL_MECH_NTLM;
+
+ if(force_ir || data->set.sasl_ir)
+ result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+ &conn->ntlm, &resp, &len);
+ }
+ else
+#endif
+ if((enabledmechs & SASL_MECH_XOAUTH2) || conn->xoauth2_bearer) {
+ mech = SASL_MECH_STRING_XOAUTH2;
+ state1 = SASL_XOAUTH2;
+ sasl->authused = SASL_MECH_XOAUTH2;
+
+ if(force_ir || data->set.sasl_ir)
+ result = sasl_create_xoauth2_message(data, conn->user,
+ conn->xoauth2_bearer,
+ &resp, &len);
+ }
+ else if(enabledmechs & SASL_MECH_LOGIN) {
+ mech = SASL_MECH_STRING_LOGIN;
+ state1 = SASL_LOGIN;
+ state2 = SASL_LOGIN_PASSWD;
+ sasl->authused = SASL_MECH_LOGIN;
+
+ if(force_ir || data->set.sasl_ir)
+ result = sasl_create_login_message(data, conn->user, &resp, &len);
+ }
+ else if(enabledmechs & SASL_MECH_PLAIN) {
+ mech = SASL_MECH_STRING_PLAIN;
+ state1 = SASL_PLAIN;
+ sasl->authused = SASL_MECH_PLAIN;
+
+ if(force_ir || data->set.sasl_ir)
+ result = sasl_create_plain_message(data, conn->user, conn->passwd,
+ &resp, &len);
+ }
+ }
+
+ if(!result) {
+ if(resp && sasl->params->maxirlen &&
+ strlen(mech) + len > sasl->params->maxirlen) {
+ free(resp);
+ resp = NULL;
+ }
+
+ if(mech) {
+ result = sasl->params->sendauth(conn, mech, resp);
+ if(!result) {
+ *progress = SASL_INPROGRESS;
+ state(sasl, conn, resp? state2: state1);
+ }
+ }
+ }
+
+ free(resp);
+
+ return result;
+}
+
+/*
+ * Curl_sasl_continue()
+ *
+ * Continue the authentication.
+ */
+CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn,
+ int code, saslprogress *progress)
+{
+ CURLcode result = CURLE_OK;
+ struct SessionHandle *data = conn->data;
+ saslstate newstate = SASL_FINAL;
+ char *resp = NULL;
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+ char *serverdata;
+ char *chlg = NULL;
+ size_t chlglen = 0;
+#endif
+ size_t len = 0;
+
+ *progress = SASL_INPROGRESS;
+
+ if(sasl->state == SASL_FINAL) {
+ if(code != sasl->params->finalcode)
+ result = CURLE_LOGIN_DENIED;
+ *progress = SASL_DONE;
+ state(sasl, conn, SASL_STOP);
+ return result;
+ }
+
+ if(sasl->state != SASL_CANCEL && code != sasl->params->contcode) {
+ *progress = SASL_DONE;
+ state(sasl, conn, SASL_STOP);
+ return CURLE_LOGIN_DENIED;
+ }
+
+ switch(sasl->state) {
+ case SASL_STOP:
+ *progress = SASL_DONE;
+ return result;
+ case SASL_PLAIN:
+ result = sasl_create_plain_message(data, conn->user, conn->passwd, &resp,
+ &len);
+ break;
+ case SASL_LOGIN:
+ result = sasl_create_login_message(data, conn->user, &resp, &len);
+ newstate = SASL_LOGIN_PASSWD;
+ break;
+ case SASL_LOGIN_PASSWD:
+ result = sasl_create_login_message(data, conn->passwd, &resp, &len);
+ break;
+ case SASL_EXTERNAL:
+ result = sasl_create_external_message(data, conn->user, &resp, &len);
+ break;
+
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+ case SASL_CRAMMD5:
+ sasl->params->getmessage(data->state.buffer, &serverdata);
+ result = sasl_decode_cram_md5_message(serverdata, &chlg, &chlglen);
+ if(!result)
+ result = sasl_create_cram_md5_message(data, chlg, conn->user,
+ conn->passwd, &resp, &len);
+ free(chlg);
+ break;
+ case SASL_DIGESTMD5:
+ sasl->params->getmessage(data->state.buffer, &serverdata);
+ result = Curl_sasl_create_digest_md5_message(data, serverdata,
+ conn->user, conn->passwd,
+ sasl->params->service,
+ &resp, &len);
+ newstate = SASL_DIGESTMD5_RESP;
+ break;
+ case SASL_DIGESTMD5_RESP:
+ if(!(resp = strdup("")))
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+#endif
+
+#ifdef USE_NTLM
+ case SASL_NTLM:
+ /* Create the type-1 message */
+ result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+ &conn->ntlm, &resp, &len);
+ newstate = SASL_NTLM_TYPE2MSG;
+ break;
+ case SASL_NTLM_TYPE2MSG:
+ /* Decode the type-2 message */
+ sasl->params->getmessage(data->state.buffer, &serverdata);
+ result = Curl_sasl_decode_ntlm_type2_message(data, serverdata,
+ &conn->ntlm);
+ if(!result)
+ result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
+ conn->passwd, &conn->ntlm,
+ &resp, &len);
+ break;
+#endif
+
+#if defined(USE_KERBEROS5)
+ case SASL_GSSAPI:
+ result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+ conn->passwd,
+ sasl->params->service,
+ sasl->mutual_auth, NULL,
+ &conn->krb5,
+ &resp, &len);
+ newstate = SASL_GSSAPI_TOKEN;
+ break;
+ case SASL_GSSAPI_TOKEN:
+ sasl->params->getmessage(data->state.buffer, &serverdata);
+ if(sasl->mutual_auth) {
+ /* Decode the user token challenge and create the optional response
+ message */
+ result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
+ sasl->mutual_auth,
+ serverdata, &conn->krb5,
+ &resp, &len);
+ newstate = SASL_GSSAPI_NO_DATA;
+ }
+ else
+ /* Decode the security challenge and create the response message */
+ result = Curl_sasl_create_gssapi_security_message(data, serverdata,
+ &conn->krb5,
+ &resp, &len);
+ break;
+ case SASL_GSSAPI_NO_DATA:
+ sasl->params->getmessage(data->state.buffer, &serverdata);
+ /* Decode the security challenge and create the response message */
+ result = Curl_sasl_create_gssapi_security_message(data, serverdata,
+ &conn->krb5,
+ &resp, &len);
+ break;
+#endif
+
+ case SASL_XOAUTH2:
+ /* Create the authorisation message */
+ result = sasl_create_xoauth2_message(data, conn->user,
+ conn->xoauth2_bearer, &resp, &len);
+ break;
+ case SASL_CANCEL:
+ /* Remove the offending mechanism from the supported list */
+ sasl->authmechs ^= sasl->authused;
+
+ /* Start an alternative SASL authentication */
+ result = Curl_sasl_start(sasl, conn, sasl->force_ir, progress);
+ newstate = sasl->state; /* Use state from Curl_sasl_start() */
+ break;
+ default:
+ failf(data, "Unsupported SASL authentication mechanism");
+ result = CURLE_UNSUPPORTED_PROTOCOL; /* Should not happen */
+ break;
+ }
+
+ switch(result) {
+ case CURLE_BAD_CONTENT_ENCODING:
+ /* Cancel dialog */
+ result = sasl->params->sendcont(conn, "*");
+ newstate = SASL_CANCEL;
+ break;
+ case CURLE_OK:
+ if(resp)
+ result = sasl->params->sendcont(conn, resp);
+ break;
+ default:
+ newstate = SASL_STOP; /* Stop on error */
+ *progress = SASL_DONE;
+ break;
+ }
+
+ free(resp);
+
+ state(sasl, conn, newstate);
+
+ return result;
+}
diff --git a/lib/curl_sasl.h b/lib/curl_sasl.h
index 41ef859a2..117d60e32 100644
--- a/lib/curl_sasl.h
+++ b/lib/curl_sasl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -39,10 +39,6 @@ struct ntlmdata;
struct kerberos5data;
#endif
-/* Authentication mechanism values */
-#define SASL_AUTH_NONE 0
-#define SASL_AUTH_ANY ~0U
-
/* Authentication mechanism flags */
#define SASL_MECH_LOGIN (1 << 0)
#define SASL_MECH_PLAIN (1 << 1)
@@ -53,6 +49,12 @@ struct kerberos5data;
#define SASL_MECH_NTLM (1 << 6)
#define SASL_MECH_XOAUTH2 (1 << 7)
+/* Authentication mechanism values */
+#define SASL_AUTH_NONE 0
+#define SASL_AUTH_ANY ~0U
+#define SASL_AUTH_DEFAULT (SASL_AUTH_ANY & \
+ ~(SASL_MECH_EXTERNAL | SASL_MECH_XOAUTH2))
+
/* Authentication mechanism strings */
#define SASL_MECH_STRING_LOGIN "LOGIN"
#define SASL_MECH_STRING_PLAIN "PLAIN"
@@ -63,11 +65,70 @@ struct kerberos5data;
#define SASL_MECH_STRING_NTLM "NTLM"
#define SASL_MECH_STRING_XOAUTH2 "XOAUTH2"
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+#define DIGEST_MAX_VALUE_LENGTH 256
+#define DIGEST_MAX_CONTENT_LENGTH 1024
+#endif
+
enum {
CURLDIGESTALGO_MD5,
CURLDIGESTALGO_MD5SESS
};
+/* SASL machine states */
+typedef enum {
+ SASL_STOP,
+ SASL_PLAIN,
+ SASL_LOGIN,
+ SASL_LOGIN_PASSWD,
+ SASL_EXTERNAL,
+ SASL_CRAMMD5,
+ SASL_DIGESTMD5,
+ SASL_DIGESTMD5_RESP,
+ SASL_NTLM,
+ SASL_NTLM_TYPE2MSG,
+ SASL_GSSAPI,
+ SASL_GSSAPI_TOKEN,
+ SASL_GSSAPI_NO_DATA,
+ SASL_XOAUTH2,
+ SASL_CANCEL,
+ SASL_FINAL
+} saslstate;
+
+/* Progress indicator */
+typedef enum {
+ SASL_IDLE,
+ SASL_INPROGRESS,
+ SASL_DONE
+} saslprogress;
+
+/* Protocol dependent SASL parameters */
+struct SASLproto {
+ const char *service; /* The service name */
+ int contcode; /* Code to receive when continuation is expected */
+ int finalcode; /* Code to receive upon authentication success */
+ size_t maxirlen; /* Maximum initial response length */
+ CURLcode (*sendauth)(struct connectdata *conn,
+ const char *mech, const char *ir);
+ /* Send authentication command */
+ CURLcode (*sendcont)(struct connectdata *conn, const char *contauth);
+ /* Send authentication continuation */
+ void (*getmessage)(char *buffer, char **outptr);
+ /* Get SASL response message */
+};
+
+/* Per-connection parameters */
+struct SASL {
+ const struct SASLproto *params; /* Protocol dependent parameters */
+ saslstate state; /* Current machine state */
+ unsigned int authmechs; /* Accepted authentication mechanisms */
+ unsigned int prefmech; /* Preferred authentication mechanism */
+ unsigned int authused; /* Auth mechanism used for the connection */
+ bool resetprefs; /* For URL auth option parsing. */
+ bool mutual_auth; /* Mutual authentication enabled (GSSAPI only) */
+ bool force_ir; /* Protocol always supports initial response */
+};
+
/* This is used to test whether the line starts with the given mechanism */
#define sasl_mech_equal(line, wordlen, mech) \
(wordlen == (sizeof(mech) - 1) / sizeof(char) && \
@@ -80,29 +141,15 @@ char *Curl_sasl_build_spn(const char *service, const char *instance);
TCHAR *Curl_sasl_build_spn(const char *service, const char *instance);
#endif
-/* This is used to generate a base64 encoded PLAIN authentication message */
-CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
- const char *userp,
- const char *passwdp,
- char **outptr, size_t *outlen);
+/* This is used to extract the realm from a challenge message */
+int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
+ const char **endptr);
-/* This is used to generate a base64 encoded LOGIN authentication message
- containing either the user name or password details */
-CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
- const char *valuep, char **outptr,
- size_t *outlen);
+#if defined(HAVE_GSSAPI)
+char *Curl_sasl_build_gssapi_spn(const char *service, const char *host);
+#endif
#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* This is used to decode a base64 encoded CRAM-MD5 challange message */
-CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
- size_t *outlen);
-
-/* This is used to generate a base64 encoded CRAM-MD5 response message */
-CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
- const char *chlg,
- const char *user,
- const char *passwdp,
- char **outptr, size_t *outlen);
/* This is used to generate a base64 encoded DIGEST-MD5 response message */
CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
@@ -178,15 +225,30 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
void Curl_sasl_gssapi_cleanup(struct kerberos5data *krb5);
#endif /* USE_KERBEROS5 */
-/* This is used to generate a base64 encoded XOAUTH2 authentication message
- containing the user name and bearer token */
-CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
- const char *user,
- const char *bearer,
- char **outptr, size_t *outlen);
-
/* This is used to cleanup any libraries or curl modules used by the sasl
functions */
void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused);
+/* Convert a mechanism name to a token */
+unsigned int Curl_sasl_decode_mech(const char *ptr,
+ size_t maxlen, size_t *len);
+
+/* Parse the URL login options */
+CURLcode Curl_sasl_parse_url_auth_option(struct SASL *sasl,
+ const char *value, size_t len);
+
+/* Initializes an SASL structure */
+void Curl_sasl_init(struct SASL *sasl, const struct SASLproto *params);
+
+/* Check if we have enough auth data and capabilities to authenticate */
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn);
+
+/* Calculate the required login details for SASL authentication */
+CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn,
+ bool force_ir, saslprogress *progress);
+
+/* Continue an SASL authentication */
+CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn,
+ int code, saslprogress *progress);
+
#endif /* HEADER_CURL_SASL_H */
diff --git a/lib/curl_sasl_gssapi.c b/lib/curl_sasl_gssapi.c
index 6dda0e907..3c6f3ce32 100644
--- a/lib/curl_sasl_gssapi.c
+++ b/lib/curl_sasl_gssapi.c
@@ -5,7 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2015, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2015, 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
@@ -26,28 +27,17 @@
#if defined(HAVE_GSSAPI) && defined(USE_KERBEROS5)
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
-
-#define GSSAUTH_P_NONE 1
-#define GSSAUTH_P_INTEGRITY 2
-#define GSSAUTH_P_PRIVACY 4
-
#include <curl/curl.h>
#include "curl_sasl.h"
#include "urldata.h"
#include "curl_base64.h"
#include "curl_gssapi.h"
-#include "curl_memory.h"
#include "sendf.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -62,7 +52,7 @@
*
* Returns a pointer to the newly allocated SPN.
*/
-static char *Curl_sasl_build_gssapi_spn(const char *service, const char *host)
+char *Curl_sasl_build_gssapi_spn(const char *service, const char *host)
{
/* Generate and return our SPN */
return aprintf("%s@%s", service, host);
@@ -126,12 +116,16 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
/* Import the SPN */
gss_major_status = gss_import_name(&gss_minor_status, &spn_token,
- gss_nt_service_name, &krb5->spn);
+ GSS_C_NT_HOSTBASED_SERVICE, &krb5->spn);
if(GSS_ERROR(gss_major_status)) {
Curl_gss_log_error(data, gss_minor_status, "gss_import_name() failed: ");
+ free(spn);
+
return CURLE_OUT_OF_MEMORY;
}
+
+ free(spn);
}
else {
/* Decode the base-64 encoded challenge message */
@@ -164,7 +158,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
mutual_auth,
NULL);
- Curl_safefree(input_token.value);
+ free(input_token.value);
if(GSS_ERROR(gss_major_status)) {
if(output_token.value)
@@ -250,7 +244,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
Curl_gss_log_error(data, gss_minor_status,
"gss_inquire_context() failed: ");
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_OUT_OF_MEMORY;
}
@@ -261,7 +255,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
if(GSS_ERROR(gss_major_status)) {
Curl_gss_log_error(data, gss_minor_status, "gss_display_name() failed: ");
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_OUT_OF_MEMORY;
}
@@ -277,7 +271,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
Curl_gss_log_error(data, gss_minor_status, "gss_unwrap() failed: ");
gss_release_buffer(&gss_status, &username_token);
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -287,7 +281,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
infof(data, "GSSAPI handshake failure (invalid security data)\n");
gss_release_buffer(&gss_status, &username_token);
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -295,7 +289,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
/* Copy the data out and free the challenge as it is not required anymore */
memcpy(&indata, output_token.value, 4);
gss_release_buffer(&gss_status, &output_token);
- Curl_safefree(chlg);
+ free(chlg);
/* Extract the security layer */
sec_layer = indata & 0x000000FF;
@@ -350,7 +344,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
if(GSS_ERROR(gss_major_status)) {
Curl_gss_log_error(data, gss_minor_status, "gss_wrap() failed: ");
- Curl_safefree(message);
+ free(message);
return CURLE_OUT_OF_MEMORY;
}
@@ -363,7 +357,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
gss_release_buffer(&gss_status, &output_token);
/* Free the message buffer */
- Curl_safefree(message);
+ free(message);
return result;
}
diff --git a/lib/curl_sasl_sspi.c b/lib/curl_sasl_sspi.c
index 0509b7555..b149530ff 100644
--- a/lib/curl_sasl_sspi.c
+++ b/lib/curl_sasl_sspi.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (C) 2014 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
- * Copyright (C) 2014, 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
@@ -36,15 +36,14 @@
#include "urldata.h"
#include "curl_base64.h"
#include "warnless.h"
-#include "curl_memory.h"
#include "curl_multibyte.h"
#include "sendf.h"
#include "strdup.h"
+#include "curl_printf.h"
+#include "rawstr.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -80,7 +79,7 @@ TCHAR *Curl_sasl_build_spn(const char *service, const char *host)
/* Allocate our TCHAR based SPN */
tchar_spn = Curl_convert_UTF8_to_tchar(utf8_spn);
if(!tchar_spn) {
- Curl_safefree(utf8_spn);
+ free(utf8_spn);
return NULL;
}
@@ -156,7 +155,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_DIGEST),
&SecurityPackage);
if(status != SEC_E_OK) {
- Curl_safefree(input_token);
+ free(input_token);
return CURLE_NOT_BUILT_IN;
}
@@ -169,7 +168,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
/* Allocate our response buffer */
output_token = malloc(token_max);
if(!output_token) {
- Curl_safefree(input_token);
+ free(input_token);
return CURLE_OUT_OF_MEMORY;
}
@@ -177,8 +176,8 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
/* Generate our SPN */
spn = Curl_sasl_build_spn(service, data->easy_conn->host.name);
if(!spn) {
- Curl_safefree(output_token);
- Curl_safefree(input_token);
+ free(output_token);
+ free(input_token);
return CURLE_OUT_OF_MEMORY;
}
@@ -187,9 +186,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
/* Populate our identity structure */
result = Curl_create_sspi_identity(userp, passwdp, &identity);
if(result) {
- Curl_safefree(spn);
- Curl_safefree(output_token);
- Curl_safefree(input_token);
+ free(spn);
+ free(output_token);
+ free(input_token);
return result;
}
@@ -210,9 +209,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
if(status != SEC_E_OK) {
Curl_sspi_free_identity(p_identity);
- Curl_safefree(spn);
- Curl_safefree(output_token);
- Curl_safefree(input_token);
+ free(spn);
+ free(output_token);
+ free(input_token);
return CURLE_LOGIN_DENIED;
}
@@ -245,9 +244,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
s_pSecFn->FreeCredentialsHandle(&credentials);
Curl_sspi_free_identity(p_identity);
- Curl_safefree(spn);
- Curl_safefree(output_token);
- Curl_safefree(input_token);
+ free(spn);
+ free(output_token);
+ free(input_token);
return CURLE_RECV_ERROR;
}
@@ -264,18 +263,86 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
Curl_sspi_free_identity(p_identity);
/* Free the SPN */
- Curl_safefree(spn);
+ free(spn);
/* Free the response buffer */
- Curl_safefree(output_token);
+ free(output_token);
/* Free the decoded challenge message */
- Curl_safefree(input_token);
+ free(input_token);
return result;
}
/*
+* Curl_override_sspi_http_realm()
+*
+* This is used to populate the domain in a SSPI identity structure
+* The realm is extracted from the challenge message and used as the
+* domain if it is not already explicitly set.
+*
+* Parameters:
+*
+* chlg [in] - The challenge message.
+* identity [in/out] - The identity structure.
+*
+* Returns CURLE_OK on success.
+*/
+CURLcode Curl_override_sspi_http_realm(const char *chlg,
+ SEC_WINNT_AUTH_IDENTITY *identity)
+{
+ xcharp_u domain, dup_domain;
+
+ /* If domain is blank or unset, check challenge message for realm */
+ if(!identity->Domain || !identity->DomainLength) {
+ for(;;) {
+ char value[DIGEST_MAX_VALUE_LENGTH];
+ char content[DIGEST_MAX_CONTENT_LENGTH];
+
+ /* Pass all additional spaces here */
+ while(*chlg && ISSPACE(*chlg))
+ chlg++;
+
+ /* Extract a value=content pair */
+ if(!Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) {
+ if(Curl_raw_equal(value, "realm")) {
+
+ /* Setup identity's domain and length */
+ domain.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)content);
+ if(!domain.tchar_ptr)
+ return CURLE_OUT_OF_MEMORY;
+ dup_domain.tchar_ptr = _tcsdup(domain.tchar_ptr);
+ if(!dup_domain.tchar_ptr) {
+ Curl_unicodefree(domain.tchar_ptr);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ identity->Domain = dup_domain.tbyte_ptr;
+ identity->DomainLength = curlx_uztoul(_tcslen(dup_domain.tchar_ptr));
+ dup_domain.tchar_ptr = NULL;
+
+ Curl_unicodefree(domain.tchar_ptr);
+ }
+ else {
+ /* unknown specifier, ignore it! */
+ }
+ }
+ else
+ break; /* we're done here */
+
+ /* Pass all additional spaces here */
+ while(*chlg && ISSPACE(*chlg))
+ chlg++;
+
+ /* Allow the list to be comma-separated */
+ if(',' == *chlg)
+ chlg++;
+ }
+ }
+
+ return CURLE_OK;
+}
+
+/*
* Curl_sasl_decode_digest_http_message()
*
* This is used to decode a HTTP DIGEST challenge message into the seperate
@@ -376,6 +443,11 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
if(Curl_create_sspi_identity(userp, passwdp, &identity))
return CURLE_OUT_OF_MEMORY;
+ /* Populate our identity domain */
+ if(Curl_override_sspi_http_realm((const char*)digest->input_token,
+ &identity))
+ return CURLE_OUT_OF_MEMORY;
+
/* Allow proper cleanup of the identity structure */
p_identity = &identity;
}
@@ -390,7 +462,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
p_identity, NULL, NULL,
&credentials, &expiry);
if(status != SEC_E_OK) {
- Curl_safefree(output_token);
+ free(output_token);
return CURLE_LOGIN_DENIED;
}
@@ -430,7 +502,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
s_pSecFn->FreeCredentialsHandle(&credentials);
- Curl_safefree(output_token);
+ free(output_token);
return CURLE_OUT_OF_MEMORY;
}
@@ -440,7 +512,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
s_pSecFn->DeleteSecurityContext(&context);
s_pSecFn->FreeCredentialsHandle(&credentials);
- Curl_safefree(output_token);
+ free(output_token);
return CURLE_OUT_OF_MEMORY;
}
@@ -461,7 +533,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
Curl_sspi_free_identity(p_identity);
/* Free the response buffer */
- Curl_safefree(output_token);
+ free(output_token);
return CURLE_OK;
}
@@ -912,7 +984,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
&expiry);
if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_RECV_ERROR;
}
@@ -930,7 +1002,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
}
/* Free the decoded challenge */
- Curl_safefree(chlg);
+ free(chlg);
return result;
}
@@ -1001,7 +1073,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
SECPKG_ATTR_SIZES,
&sizes);
if(status != SEC_E_OK) {
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_OUT_OF_MEMORY;
}
@@ -1011,7 +1083,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
SECPKG_CRED_ATTR_NAMES,
&names);
if(status != SEC_E_OK) {
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_RECV_ERROR;
}
@@ -1032,7 +1104,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
if(status != SEC_E_OK) {
infof(data, "GSSAPI handshake failure (empty security message)\n");
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -1041,7 +1113,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
if(input_buf[1].cbBuffer != 4) {
infof(data, "GSSAPI handshake failure (invalid security data)\n");
- Curl_safefree(chlg);
+ free(chlg);
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -1049,7 +1121,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
/* Copy the data out and free the challenge as it is not required anymore */
memcpy(&indata, input_buf[1].pvBuffer, 4);
s_pSecFn->FreeContextBuffer(input_buf[1].pvBuffer);
- Curl_safefree(chlg);
+ free(chlg);
/* Extract the security layer */
sec_layer = indata & 0x000000FF;
@@ -1076,7 +1148,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
/* Convert the user name to UTF8 when operating with Unicode */
user_name = Curl_convert_tchar_to_UTF8(names.sUserName);
if(!user_name) {
- Curl_safefree(trailer);
+ free(trailer);
return CURLE_OUT_OF_MEMORY;
}
@@ -1085,7 +1157,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
messagelen = sizeof(outdata) + strlen(user_name) + 1;
message = malloc(messagelen);
if(!message) {
- Curl_safefree(trailer);
+ free(trailer);
Curl_unicodefree(user_name);
return CURLE_OUT_OF_MEMORY;
@@ -1104,8 +1176,8 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
/* Allocate the padding */
padding = malloc(sizes.cbBlockSize);
if(!padding) {
- Curl_safefree(message);
- Curl_safefree(trailer);
+ free(message);
+ free(trailer);
return CURLE_OUT_OF_MEMORY;
}
@@ -1128,9 +1200,9 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
status = s_pSecFn->EncryptMessage(krb5->context, KERB_WRAP_NO_ENCRYPT,
&wrap_desc, 0);
if(status != SEC_E_OK) {
- Curl_safefree(padding);
- Curl_safefree(message);
- Curl_safefree(trailer);
+ free(padding);
+ free(message);
+ free(trailer);
return CURLE_OUT_OF_MEMORY;
}
@@ -1140,9 +1212,9 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
wrap_buf[2].cbBuffer;
appdata = malloc(appdatalen);
if(!appdata) {
- Curl_safefree(padding);
- Curl_safefree(message);
- Curl_safefree(trailer);
+ free(padding);
+ free(message);
+ free(trailer);
return CURLE_OUT_OF_MEMORY;
}
@@ -1159,10 +1231,10 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
outlen);
/* Free all of our local buffers */
- Curl_safefree(appdata);
- Curl_safefree(padding);
- Curl_safefree(message);
- Curl_safefree(trailer);
+ free(appdata);
+ free(padding);
+ free(message);
+ free(trailer);
return result;
}
diff --git a/lib/curl_setup.h b/lib/curl_setup.h
index b046b77d3..ab0c13940 100644
--- a/lib/curl_setup.h
+++ b/lib/curl_setup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -190,6 +190,9 @@
# ifndef CURL_DISABLE_GOPHER
# define CURL_DISABLE_GOPHER
# endif
+# ifndef CURL_DISABLE_SMB
+# define CURL_DISABLE_SMB
+# endif
#endif
/*
@@ -601,7 +604,7 @@ int netware_init(void);
#define LIBIDN_REQUIRED_VERSION "0.4.1"
-#if defined(USE_GNUTLS) || defined(USE_SSLEAY) || defined(USE_NSS) || \
+#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
defined(USE_POLARSSL) || defined(USE_AXTLS) || \
defined(USE_CYASSL) || defined(USE_SCHANNEL) || \
defined(USE_DARWINSSL) || defined(USE_GSKIT)
@@ -622,12 +625,17 @@ int netware_init(void);
/* Single point where USE_NTLM definition might be defined */
#if !defined(CURL_DISABLE_NTLM) && !defined(CURL_DISABLE_CRYPTO_AUTH)
-#if defined(USE_SSLEAY) || defined(USE_WINDOWS_SSPI) || \
+#if defined(USE_OPENSSL) || defined(USE_WINDOWS_SSPI) || \
defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_DARWINSSL) || \
defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
+
+#ifdef HAVE_BORINGSSL /* BoringSSL is not NTLM capable */
+#undef USE_NTLM
+#else
#define USE_NTLM
#endif
#endif
+#endif
/* non-configure builds may define CURL_WANTS_CA_BUNDLE_ENV */
#if defined(CURL_WANTS_CA_BUNDLE_ENV) && !defined(CURL_CA_BUNDLE)
@@ -699,4 +707,24 @@ int netware_init(void);
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
+/* In Windows the default file mode is text but an application can override it.
+Therefore we specify it explicitly. https://github.com/bagder/curl/pull/258
+*/
+#if defined(WIN32) || defined(MSDOS)
+#define FOPEN_READTEXT "rt"
+#define FOPEN_WRITETEXT "wt"
+#elif defined(__CYGWIN__)
+/* Cygwin has specific behavior we need to address when WIN32 is not defined.
+https://cygwin.com/cygwin-ug-net/using-textbinary.html
+For write we want our output to have line endings of LF and be compatible with
+other Cygwin utilities. For read we want to handle input that may have line
+endings either CRLF or LF so 't' is appropriate.
+*/
+#define FOPEN_READTEXT "rt"
+#define FOPEN_WRITETEXT "w"
+#else
+#define FOPEN_READTEXT "r"
+#define FOPEN_WRITETEXT "w"
+#endif
+
#endif /* HEADER_CURL_SETUP_H */
diff --git a/lib/curl_sspi.c b/lib/curl_sspi.c
index f09d28827..070424dd1 100644
--- a/lib/curl_sspi.c
+++ b/lib/curl_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -25,17 +25,12 @@
#ifdef USE_WINDOWS_SSPI
#include <curl/curl.h>
-
#include "curl_sspi.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
#include "curl_multibyte.h"
#include "warnless.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* We use our own typedef here since some headers might lack these */
@@ -98,20 +93,25 @@ CURLcode Curl_sspi_global_init(void)
osver.dwPlatformId == platformId)
securityDll = TRUE;
#else
- ULONGLONG majorVersionMask;
- ULONGLONG platformIdMask;
+ ULONGLONG cm;
OSVERSIONINFOEX osver;
memset(&osver, 0, sizeof(osver));
osver.dwOSVersionInfoSize = sizeof(osver);
osver.dwMajorVersion = majorVersion;
osver.dwPlatformId = platformId;
- majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
- platformIdMask = VerSetConditionMask(0, VER_PLATFORMID, VER_EQUAL);
+
+ cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_PLATFORMID, VER_EQUAL);
/* Verify the major version number == 4 and platform id == WIN_NT */
- if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask) &&
- VerifyVersionInfo(&osver, VER_PLATFORMID, platformIdMask))
+ if(VerifyVersionInfo(&osver, (VER_MAJORVERSION | VER_MINORVERSION |
+ VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
+ VER_PLATFORMID),
+ cm))
securityDll = TRUE;
#endif
@@ -224,7 +224,7 @@ CURLcode Curl_create_sspi_identity(const char *userp, const char *passwdp,
Curl_unicodefree(useranddomain.tchar_ptr);
- /* Setup ntlm identity's password and length */
+ /* Setup the identity's password and length */
passwd.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)passwdp);
if(!passwd.tchar_ptr)
return CURLE_OUT_OF_MEMORY;
diff --git a/lib/curl_sspi.h b/lib/curl_sspi.h
index 7fa308c5a..8655715e2 100644
--- a/lib/curl_sspi.h
+++ b/lib/curl_sspi.h
@@ -43,6 +43,10 @@
CURLcode Curl_sspi_global_init(void);
void Curl_sspi_global_cleanup(void);
+/* This is used to populate the domain in a SSPI identity structure */
+CURLcode Curl_override_sspi_http_realm(const char *chlg,
+ SEC_WINNT_AUTH_IDENTITY *identity);
+
/* This is used to generate an SSPI identity structure */
CURLcode Curl_create_sspi_identity(const char *userp, const char *passwdp,
SEC_WINNT_AUTH_IDENTITY *identity);
diff --git a/lib/curl_threads.c b/lib/curl_threads.c
index 5b7013914..f9b812ea0 100644
--- a/lib/curl_threads.c
+++ b/lib/curl_threads.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -33,10 +33,6 @@
#endif
#include "curl_threads.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -77,8 +73,8 @@ curl_thread_t Curl_thread_create(unsigned int (*func) (void*), void *arg)
return t;
err:
- Curl_safefree(t);
- Curl_safefree(ac);
+ free(t);
+ free(ac);
return curl_thread_t_null;
}
diff --git a/lib/curlx.h b/lib/curlx.h
index 9dc90a004..979e7d7a1 100644
--- a/lib/curlx.h
+++ b/lib/curlx.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -90,8 +90,7 @@
#ifdef ENABLE_CURLX_PRINTF
/* If this define is set, we define all "standard" printf() functions to use
the curlx_* version instead. It makes the source code transparent and
- easier to understand/patch. Undefine them first in case _MPRINTF_REPLACE
- is set. */
+ easier to understand/patch. Undefine them first. */
# undef printf
# undef fprintf
# undef sprintf
diff --git a/lib/dict.c b/lib/dict.c
index 86ddfb9e2..06d76992e 100644
--- a/lib/dict.c
+++ b/lib/dict.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -57,10 +57,6 @@
#include "strequal.h"
#include "dict.h"
#include "rawstr.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -101,7 +97,7 @@ static char *unescape_word(struct SessionHandle *data, const char *inputbuff)
char *dictp;
char *ptr;
int len;
- char byte;
+ char ch;
int olen=0;
newp = curl_easy_unescape(data, inputbuff, 0, &len);
@@ -113,13 +109,13 @@ static char *unescape_word(struct SessionHandle *data, const char *inputbuff)
/* According to RFC2229 section 2.2, these letters need to be escaped with
\[letter] */
for(ptr = newp;
- (byte = *ptr) != 0;
+ (ch = *ptr) != 0;
ptr++) {
- if((byte <= 32) || (byte == 127) ||
- (byte == '\'') || (byte == '\"') || (byte == '\\')) {
+ if((ch <= 32) || (ch == 127) ||
+ (ch == '\'') || (ch == '\"') || (ch == '\\')) {
dictp[olen++] = '\\';
}
- dictp[olen++] = byte;
+ dictp[olen++] = ch;
}
dictp[olen]=0;
}
diff --git a/lib/easy.c b/lib/easy.c
index 619312b79..316acb1d1 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -60,7 +60,6 @@
#include "hostip.h"
#include "share.h"
#include "strdup.h"
-#include "curl_memory.h"
#include "progress.h"
#include "easyif.h"
#include "select.h"
@@ -75,11 +74,10 @@
#include "multiif.h"
#include "sigpipe.h"
#include "ssh.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* win32_cleanup() is for win32 socket cleanup functionality, the opposite
diff --git a/lib/escape.c b/lib/escape.c
index 9923e64cf..24abb930b 100644
--- a/lib/escape.c
+++ b/lib/escape.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -27,16 +27,14 @@
#include <curl/curl.h>
-#include "curl_memory.h"
#include "urldata.h"
#include "warnless.h"
#include "non-ascii.h"
#include "escape.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* Portable character check (remember EBCDIC). Do not use isalnum() because
@@ -229,6 +227,5 @@ char *curl_easy_unescape(CURL *handle, const char *string, int length,
the library's memory system */
void curl_free(void *p)
{
- if(p)
- free(p);
+ free(p);
}
diff --git a/lib/file.c b/lib/file.c
index dd2c56498..175b10731 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -59,14 +59,12 @@
#include "getinfo.h"
#include "transfer.h"
#include "url.h"
-#include "curl_memory.h"
#include "parsedate.h" /* for the week day and month names */
#include "warnless.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#if defined(WIN32) || defined(MSDOS) || defined(__EMX__) || \
@@ -317,8 +315,6 @@ static CURLcode file_upload(struct connectdata *conn)
* Since FILE: doesn't do the full init, we need to provide some extra
* assignments here.
*/
- conn->fread_func = data->set.fread_func;
- conn->fread_in = data->set.in;
conn->data->req.upload_fromhere = buf;
if(!dir)
diff --git a/lib/fileinfo.c b/lib/fileinfo.c
index 8c8ee981a..0904937aa 100644
--- a/lib/fileinfo.c
+++ b/lib/fileinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2010-2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2015, 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
@@ -24,10 +24,6 @@
#include "strdup.h"
#include "fileinfo.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/firefox-db2pem.sh b/lib/firefox-db2pem.sh
index 14ac57606..3f5fe75ff 100644
--- a/lib/firefox-db2pem.sh
+++ b/lib/firefox-db2pem.sh
@@ -6,7 +6,7 @@
# * | (__| |_| | _ <| |___
# * \___|\___/|_| \_\_____|
# *
-# * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 1998 - 2015, 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
@@ -24,7 +24,7 @@
# It extracts all ca certs it finds in the local Firefox database and converts
# them all into PEM format.
#
-db=`ls -1d $HOME/.mozilla/firefox/*default`
+db=`ls -1d $HOME/.mozilla/firefox/*default*`
out=$1
if test -z "$out"; then
diff --git a/lib/formdata.c b/lib/formdata.c
index 73d3b6d72..9e8ce4ea0 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -34,14 +34,12 @@
#include "formdata.h"
#include "vtls/vtls.h"
#include "strequal.h"
-#include "curl_memory.h"
#include "sendf.h"
#include "strdup.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#ifndef HAVE_BASENAME
@@ -417,7 +415,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
else {
form = AddFormInfo(fname, NULL, current_form);
if(!form) {
- Curl_safefree(fname);
+ free(fname);
return_value = CURL_FORMADD_MEMORY;
}
else {
@@ -506,7 +504,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
else {
form = AddFormInfo(NULL, type, current_form);
if(!form) {
- Curl_safefree(type);
+ free(type);
return_value = CURL_FORMADD_MEMORY;
}
else {
@@ -713,7 +711,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
now by the httppost linked list */
while(first_form) {
FormInfo *ptr = first_form->more;
- Curl_safefree(first_form);
+ free(first_form);
first_form = ptr;
}
@@ -758,7 +756,7 @@ curl_off_t VmsRealFileSize(const char * name,
int ret_stat;
FILE * file;
- file = fopen(name, "r");
+ file = fopen(name, "r"); /* VMS */
if(file == NULL)
return 0;
@@ -971,19 +969,16 @@ void curl_formfree(struct curl_httppost *form)
next=form->next; /* the following form line */
/* recurse to sub-contents */
- if(form->more)
- curl_formfree(form->more);
+ curl_formfree(form->more);
- if(!(form->flags & HTTPPOST_PTRNAME) && form->name)
+ if(!(form->flags & HTTPPOST_PTRNAME))
free(form->name); /* free the name */
if(!(form->flags &
- (HTTPPOST_PTRCONTENTS|HTTPPOST_BUFFER|HTTPPOST_CALLBACK)) &&
- form->contents)
+ (HTTPPOST_PTRCONTENTS|HTTPPOST_BUFFER|HTTPPOST_CALLBACK))
+ )
free(form->contents); /* free the contents */
- if(form->contenttype)
- free(form->contenttype); /* free the content type */
- if(form->showfilename)
- free(form->showfilename); /* free the faked file name */
+ free(form->contenttype); /* free the content type */
+ free(form->showfilename); /* free the faked file name */
free(form); /* free the struct */
} while((form = next) != NULL); /* continue */
@@ -1073,7 +1068,7 @@ static CURLcode formdata_add_filename(const struct curl_httppost *file,
/* filename need be escaped */
filename_escaped = malloc(strlen(filename)*2+1);
if(!filename_escaped) {
- Curl_safefree(filebasename);
+ free(filebasename);
return CURLE_OUT_OF_MEMORY;
}
p0 = filename_escaped;
@@ -1089,8 +1084,8 @@ static CURLcode formdata_add_filename(const struct curl_httppost *file,
result = AddFormDataf(form, size,
"; filename=\"%s\"",
filename);
- Curl_safefree(filename_escaped);
- Curl_safefree(filebasename);
+ free(filename_escaped);
+ free(filebasename);
return result;
}
@@ -1140,7 +1135,7 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
boundary);
if(result) {
- Curl_safefree(boundary);
+ free(boundary);
return result;
}
/* we DO NOT include that line in the total size of the POST, since it'll be
@@ -1183,7 +1178,7 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
/* If used, this is a link to more file names, we must then do
the magic to include several files with the same field name */
- Curl_safefree(fileboundary);
+ free(fileboundary);
fileboundary = formboundary(data);
if(!fileboundary) {
result = CURLE_OUT_OF_MEMORY;
@@ -1336,15 +1331,15 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
if(result) {
Curl_formclean(&firstform);
- Curl_safefree(fileboundary);
- Curl_safefree(boundary);
+ free(fileboundary);
+ free(boundary);
return result;
}
*sizep = size;
- Curl_safefree(fileboundary);
- Curl_safefree(boundary);
+ free(fileboundary);
+ free(boundary);
*finalform = firstform;
@@ -1390,7 +1385,7 @@ static FILE * vmsfopenread(const char *file, const char *mode) {
case FAB$C_VAR:
case FAB$C_VFC:
case FAB$C_STMCR:
- return fopen(file, "r");
+ return fopen(file, "r"); /* VMS */
break;
default:
return fopen(file, "r", "rfm=stmlf", "ctx=stm");
diff --git a/lib/ftp.c b/lib/ftp.c
index 2f4351e0c..fade092e4 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -77,9 +77,7 @@
#include "warnless.h"
#include "http_proxy.h"
#include "non-ascii.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -285,19 +283,17 @@ static void freedirs(struct ftp_conn *ftpc)
int i;
if(ftpc->dirs) {
for(i=0; i < ftpc->dirdepth; i++) {
- if(ftpc->dirs[i]) {
- free(ftpc->dirs[i]);
- ftpc->dirs[i]=NULL;
- }
+ free(ftpc->dirs[i]);
+ ftpc->dirs[i]=NULL;
}
free(ftpc->dirs);
ftpc->dirs = NULL;
ftpc->dirdepth = 0;
}
- if(ftpc->file) {
- free(ftpc->file);
- ftpc->file = NULL;
- }
+ Curl_safefree(ftpc->file);
+
+ /* no longer of any use */
+ Curl_safefree(ftpc->newhost);
}
/* Returns non-zero if the given string contains CR (\r) or LF (\n),
@@ -1105,7 +1101,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
if(getsockname(conn->sock[FIRSTSOCKET], sa, &sslen)) {
failf(data, "getsockname() failed: %s",
Curl_strerror(conn, SOCKERRNO) );
- Curl_safefree(addr);
+ free(addr);
return CURLE_FTP_PORT_FAILED;
}
switch(sa->sa_family) {
@@ -1137,11 +1133,11 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
if(res == NULL) {
failf(data, "failed to resolve the address provided to PORT: %s", host);
- Curl_safefree(addr);
+ free(addr);
return CURLE_FTP_PORT_FAILED;
}
- Curl_safefree(addr);
+ free(addr);
host = NULL;
/* step 2, create a socket for the requested address */
@@ -1495,13 +1491,13 @@ static CURLcode ftp_state_list(struct connectdata *conn)
The other ftp_filemethods will CWD into dir/dir/ first and
then just do LIST (in that case: nothing to do here)
*/
- char *cmd,*lstArg,*slashPos;
+ char *cmd, *lstArg, *slashPos;
lstArg = NULL;
if((data->set.ftp_filemethod == FTPFILE_NOCWD) &&
data->state.path &&
data->state.path[0] &&
- strchr(data->state.path,'/')) {
+ strchr(data->state.path, '/')) {
lstArg = strdup(data->state.path);
if(!lstArg)
@@ -1511,7 +1507,7 @@ static CURLcode ftp_state_list(struct connectdata *conn)
if(lstArg[strlen(lstArg) - 1] != '/') {
/* chop off the file part if format is dir/dir/file */
- slashPos = strrchr(lstArg,'/');
+ slashPos = strrchr(lstArg, '/');
if(slashPos)
*(slashPos+1) = '\0';
}
@@ -1525,16 +1521,13 @@ static CURLcode ftp_state_list(struct connectdata *conn)
lstArg? lstArg: "" );
if(!cmd) {
- if(lstArg)
- free(lstArg);
+ free(lstArg);
return CURLE_OUT_OF_MEMORY;
}
result = Curl_pp_sendf(&conn->proto.ftpc.pp, "%s", cmd);
- if(lstArg)
- free(lstArg);
-
+ free(lstArg);
free(cmd);
if(result)
@@ -1677,8 +1670,8 @@ static CURLcode ftp_state_ul_setup(struct connectdata *conn,
BUFSIZE : curlx_sotouz(data->state.resume_from - passed);
size_t actuallyread =
- conn->fread_func(data->state.buffer, 1, readthisamountnow,
- conn->fread_in);
+ data->set.fread_func(data->state.buffer, 1, readthisamountnow,
+ data->set.in);
passed += actuallyread;
if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
@@ -1815,6 +1808,13 @@ static CURLcode ftp_state_quote(struct connectdata *conn,
static CURLcode ftp_epsv_disable(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
+
+ if(conn->bits.ipv6) {
+ /* We can't disable EPSV when doing IPv6, so this is instead a fail */
+ failf(conn->data, "Failed EPSV attempt, exiting\n");
+ return CURLE_FTP_WEIRD_SERVER_REPLY;
+ }
+
infof(conn->data, "Failed EPSV attempt. Disabling EPSV\n");
/* disable it for next transfer */
conn->bits.ftp_use_epsv = FALSE;
@@ -1887,7 +1887,7 @@ static CURLcode proxy_magic(struct connectdata *conn,
memset(&http_proxy, 0, sizeof(http_proxy));
data->req.protop = &http_proxy;
- result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, newhost, newport);
+ result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, newhost, newport, TRUE);
data->req.protop = ftp_save;
@@ -1906,6 +1906,22 @@ static CURLcode proxy_magic(struct connectdata *conn,
return result;
}
+static char *control_address(struct connectdata *conn)
+{
+ /* Returns the control connection IP address.
+ If a proxy tunnel is used, returns the original host name instead, because
+ the effective control connection address is the proxy address,
+ not the ftp host. */
+ if(conn->bits.tunnel_proxy ||
+ conn->proxytype == CURLPROXY_SOCKS5 ||
+ conn->proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
+ conn->proxytype == CURLPROXY_SOCKS4 ||
+ conn->proxytype == CURLPROXY_SOCKS4A)
+ return conn->host.name;
+
+ return conn->ip_addr_str;
+}
+
static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
int ftpcode)
{
@@ -1917,6 +1933,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
unsigned short connectport; /* the local port connect() should use! */
char *str=&data->state.buffer[4]; /* start on the first letter */
+ /* if we come here again, make sure the former name is cleared */
+ Curl_safefree(ftpc->newhost);
+
if((ftpc->count1 == 0) &&
(ftpcode == 229)) {
/* positive EPSV response */
@@ -1925,12 +1944,12 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
unsigned int num;
char separator[4];
ptr++;
- if(5 == sscanf(ptr, "%c%c%c%u%c",
- &separator[0],
- &separator[1],
- &separator[2],
- &num,
- &separator[3])) {
+ if(5 == sscanf(ptr, "%c%c%c%u%c",
+ &separator[0],
+ &separator[1],
+ &separator[2],
+ &num,
+ &separator[3])) {
const char sep1 = separator[0];
int i;
@@ -1948,19 +1967,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
}
if(ptr) {
ftpc->newport = (unsigned short)(num & 0xffff);
-
- if(conn->bits.tunnel_proxy ||
- conn->proxytype == CURLPROXY_SOCKS5 ||
- conn->proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
- conn->proxytype == CURLPROXY_SOCKS4 ||
- conn->proxytype == CURLPROXY_SOCKS4A)
- /* proxy tunnel -> use other host info because ip_addr_str is the
- proxy address not the ftp host */
- snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s",
- conn->host.name);
- else
- /* use the same IP we are already connected to */
- snprintf(ftpc->newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
+ ftpc->newhost = strdup(control_address(conn));
+ if(!ftpc->newhost)
+ return CURLE_OUT_OF_MEMORY;
}
}
else
@@ -1988,8 +1997,8 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
*/
while(*str) {
if(6 == sscanf(str, "%d,%d,%d,%d,%d,%d",
- &ip[0], &ip[1], &ip[2], &ip[3],
- &port[0], &port[1]))
+ &ip[0], &ip[1], &ip[2], &ip[3],
+ &port[0], &port[1]))
break;
str++;
}
@@ -2001,26 +2010,19 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
/* we got OK from server */
if(data->set.ftp_skip_ip) {
- /* told to ignore the remotely given IP but instead use the one we used
+ /* told to ignore the remotely given IP but instead use the host we used
for the control connection */
- infof(data, "Skips %d.%d.%d.%d for data connection, uses %s instead\n",
+ infof(data, "Skip %d.%d.%d.%d for data connection, re-use %s instead\n",
ip[0], ip[1], ip[2], ip[3],
- conn->ip_addr_str);
- if(conn->bits.tunnel_proxy ||
- conn->proxytype == CURLPROXY_SOCKS5 ||
- conn->proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
- conn->proxytype == CURLPROXY_SOCKS4 ||
- conn->proxytype == CURLPROXY_SOCKS4A)
- /* proxy tunnel -> use other host info because ip_addr_str is the
- proxy address not the ftp host */
- snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s", conn->host.name);
- else
- snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s",
- conn->ip_addr_str);
+ conn->host.name);
+ ftpc->newhost = strdup(control_address(conn));
}
else
- snprintf(ftpc->newhost, sizeof(ftpc->newhost),
- "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
+ ftpc->newhost = aprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
+
+ if(!ftpc->newhost)
+ return CURLE_OUT_OF_MEMORY;
+
ftpc->newport = (unsigned short)(((port[0]<<8) + port[1]) & 0xffff);
}
else if(ftpc->count1 == 0) {
@@ -2071,9 +2073,8 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
conn->bits.tcpconnect[SECONDARYSOCKET] = FALSE;
result = Curl_connecthost(conn, addr);
- Curl_resolv_unlock(data, addr); /* we're done using this address */
-
if(result) {
+ Curl_resolv_unlock(data, addr); /* we're done using this address */
if(ftpc->count1 == 0 && ftpcode == 229)
return ftp_epsv_disable(conn);
@@ -2089,8 +2090,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
if(data->set.verbose)
/* this just dumps information about this second connection */
- ftp_pasv_verbose(conn, conn->ip_addr, ftpc->newhost, connectport);
+ ftp_pasv_verbose(conn, addr->addr, ftpc->newhost, connectport);
+ Curl_resolv_unlock(data, addr); /* we're done using this address */
conn->bits.do_more = TRUE;
state(conn, FTP_STOP); /* this phase is completed */
@@ -2105,7 +2107,9 @@ static CURLcode ftp_state_port_resp(struct connectdata *conn,
ftpport fcmd = (ftpport)ftpc->count1;
CURLcode result = CURLE_OK;
- if(ftpcode != 200) {
+ /* The FTP spec tells a positive response should have code 200.
+ Be more permissive here to tolerate deviant servers. */
+ if(ftpcode / 100 != 2) {
/* the command failed */
if(EPRT == fcmd) {
@@ -3269,8 +3273,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
}
/* now store a copy of the directory we are in */
- if(ftpc->prevpath)
- free(ftpc->prevpath);
+ free(ftpc->prevpath);
if(data->set.wildcardmatch) {
if(data->set.chunk_end && ftpc->file) {
@@ -3319,7 +3322,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
/* shut down the socket to inform the server we're done */
#ifdef _WIN32_WCE
- shutdown(conn->sock[SECONDARYSOCKET],2); /* SD_BOTH */
+ shutdown(conn->sock[SECONDARYSOCKET], 2); /* SD_BOTH */
#endif
if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) {
@@ -3642,7 +3645,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
if(conn->tunnel_state[SECONDARYSOCKET] == TUNNEL_CONNECT) {
/* As we're in TUNNEL_CONNECT state now, we know the proxy name and port
aren't used so we blank their arguments. TODO: make this nicer */
- result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0);
+ result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0, FALSE);
return result;
}
@@ -3816,7 +3819,7 @@ static void wc_data_dtor(void *ptr)
struct ftp_wc_tmpdata *tmp = ptr;
if(tmp)
Curl_ftp_parselist_data_free(&tmp->parser);
- Curl_safefree(tmp);
+ free(tmp);
}
static CURLcode init_wc_data(struct connectdata *conn)
@@ -3870,7 +3873,7 @@ static CURLcode init_wc_data(struct connectdata *conn)
ftp_tmp->parser = Curl_ftp_parselist_data_alloc();
if(!ftp_tmp->parser) {
Curl_safefree(wildcard->pattern);
- Curl_safefree(ftp_tmp);
+ free(ftp_tmp);
return CURLE_OUT_OF_MEMORY;
}
@@ -4096,7 +4099,7 @@ CURLcode Curl_ftpsendf(struct connectdata *conn,
result = Curl_convert_to_network(conn->data, s, write_len);
/* Curl_convert_to_network calls failf if unsuccessful */
if(result)
- return(result);
+ return result;
for(;;) {
#ifdef HAVE_GSSAPI
@@ -4195,14 +4198,10 @@ static CURLcode ftp_disconnect(struct connectdata *conn, bool dead_connection)
}
freedirs(ftpc);
- if(ftpc->prevpath) {
- free(ftpc->prevpath);
- ftpc->prevpath = NULL;
- }
- if(ftpc->server_os) {
- free(ftpc->server_os);
- ftpc->server_os = NULL;
- }
+ free(ftpc->prevpath);
+ ftpc->prevpath = NULL;
+ free(ftpc->server_os);
+ ftpc->server_os = NULL;
Curl_pp_disconnect(pp);
diff --git a/lib/ftp.h b/lib/ftp.h
index b6bfc0287..833447bcb 100644
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -147,11 +147,10 @@ struct ftp_conn {
curl_off_t known_filesize; /* file size is different from -1, if wildcard
LIST parsing was done and wc_statemach set
it */
- /* newhost must be able to hold a full IP-style address in ASCII, which
- in the IPv6 case means 5*8-1 = 39 letters */
-#define NEWHOST_BUFSIZE 48
- char newhost[NEWHOST_BUFSIZE]; /* this is the pair to connect the DATA... */
- unsigned short newport; /* connection to */
+ /* newhost is the (allocated) IP addr or host name to connect the data
+ connection to */
+ char *newhost; /* this is the pair to connect the DATA... */
+ unsigned short newport; /* connection to */
};
diff --git a/lib/ftplistparser.c b/lib/ftplistparser.c
index 9aacad914..17e0a66f8 100644
--- a/lib/ftplistparser.c
+++ b/lib/ftplistparser.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -49,10 +49,6 @@
#include "ftp.h"
#include "ftplistparser.h"
#include "curl_fnmatch.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -191,8 +187,7 @@ struct ftp_parselist_data *Curl_ftp_parselist_data_alloc(void)
void Curl_ftp_parselist_data_free(struct ftp_parselist_data **pl_data)
{
- if(*pl_data)
- free(*pl_data);
+ free(*pl_data);
*pl_data = NULL;
}
diff --git a/lib/getinfo.c b/lib/getinfo.c
index 0ffdd74a0..910f520ed 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -27,12 +27,12 @@
#include "urldata.h"
#include "getinfo.h"
-#include "curl_memory.h"
#include "vtls/vtls.h"
#include "connect.h" /* Curl_getconnectinfo() */
#include "progress.h"
-/* Make this the last #include */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -58,8 +58,7 @@ CURLcode Curl_initinfo(struct SessionHandle *data)
info->filetime = -1; /* -1 is an illegal time and thus means unknown */
info->timecond = FALSE;
- if(info->contenttype)
- free(info->contenttype);
+ free(info->contenttype);
info->contenttype = NULL;
info->header_size = 0;
@@ -306,7 +305,7 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
break; /* no SSL session found */
/* Return the TLS session information from the relevant backend */
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
internals = conn->ssl[sockindex].ctx;
#endif
#ifdef USE_GNUTLS
diff --git a/lib/gopher.c b/lib/gopher.c
index f3fd06533..954cad8e0 100644
--- a/lib/gopher.c
+++ b/lib/gopher.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -36,10 +36,6 @@
#include "select.h"
#include "url.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -124,7 +120,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
if(!result) { /* Which may not have written it all! */
result = Curl_client_write(conn, CLIENTWRITE_HEADER, sel, amount);
if(result) {
- Curl_safefree(sel_org);
+ free(sel_org);
return result;
}
k -= amount;
@@ -134,7 +130,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
}
else {
failf(data, "Failed sending Gopher request");
- Curl_safefree(sel_org);
+ free(sel_org);
return result;
}
/* Don't busyloop. The entire loop thing is a work-around as it causes a
@@ -149,7 +145,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
Curl_socket_ready(CURL_SOCKET_BAD, sockfd, 100);
}
- Curl_safefree(sel_org);
+ free(sel_org);
/* We can use Curl_sendf to send the terminal \r\n relatively safely and
save allocing another string/doing another _write loop. */
diff --git a/lib/hash.c b/lib/hash.c
index 4a12e1a7b..c46760ae1 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -24,10 +24,6 @@
#include "hash.h"
#include "llist.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -93,32 +89,6 @@ Curl_hash_init(struct curl_hash *h,
}
}
-struct curl_hash *
-Curl_hash_alloc(int slots,
- hash_function hfunc,
- comp_function comparator,
- curl_hash_dtor dtor)
-{
- struct curl_hash *h;
-
- if(!slots || !hfunc || !comparator ||!dtor) {
- return NULL; /* failure */
- }
-
- h = malloc(sizeof(struct curl_hash));
- if(h) {
- if(Curl_hash_init(h, slots, hfunc, comparator, dtor)) {
- /* failure */
- free(h);
- h = NULL;
- }
- }
-
- return h;
-}
-
-
-
static struct curl_hash_element *
mk_hash_element(const void *key, size_t key_len, const void *p)
{
@@ -242,8 +212,11 @@ Curl_hash_apply(curl_hash *h, void *user,
}
#endif
+/* Destroys all the entries in the given hash and resets its attributes,
+ * prepping the given hash for [static|dynamic] deallocation.
+ */
void
-Curl_hash_clean(struct curl_hash *h)
+Curl_hash_destroy(struct curl_hash *h)
{
int i;
@@ -257,6 +230,17 @@ Curl_hash_clean(struct curl_hash *h)
h->slots = 0;
}
+/* Removes all the entries in the given hash.
+ *
+ * @unittest: 1602
+ */
+void
+Curl_hash_clean(struct curl_hash *h)
+{
+ Curl_hash_clean_with_criterium(h, NULL, NULL);
+}
+
+/* Cleans all entries that pass the comp function criteria. */
void
Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
int (*comp)(void *, void *))
@@ -276,7 +260,7 @@ Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
struct curl_hash_element *he = le->ptr;
lnext = le->next;
/* ask the callback function if we shall remove this entry or not */
- if(comp(user, he->ptr)) {
+ if(comp == NULL || comp(user, he->ptr)) {
Curl_llist_remove(list, le, (void *) h);
--h->size; /* one less entry in the hash now */
}
@@ -285,17 +269,6 @@ Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
}
}
-void
-Curl_hash_destroy(struct curl_hash *h)
-{
- if(!h)
- return;
-
- Curl_hash_clean(h);
-
- free(h);
-}
-
size_t Curl_hash_str(void* key, size_t key_length, size_t slots_num)
{
const char* key_str = (const char *) key;
@@ -310,16 +283,11 @@ size_t Curl_hash_str(void* key, size_t key_length, size_t slots_num)
return (h % slots_num);
}
-size_t Curl_str_key_compare(void*k1, size_t key1_len, void*k2, size_t key2_len)
+size_t Curl_str_key_compare(void *k1, size_t key1_len,
+ void *k2, size_t key2_len)
{
- char *key1 = (char *)k1;
- char *key2 = (char *)k2;
-
- if(key1_len == key2_len &&
- *key1 == *key2 &&
- memcmp(key1, key2, key1_len) == 0) {
+ if((key1_len == key2_len) && !memcmp(k1, k2, key1_len))
return 1;
- }
return 0;
}
diff --git a/lib/hash.h b/lib/hash.h
index aa935d4eb..b13a236bb 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -74,22 +74,16 @@ int Curl_hash_init(struct curl_hash *h,
comp_function comparator,
curl_hash_dtor dtor);
-struct curl_hash *Curl_hash_alloc(int slots,
- hash_function hfunc,
- comp_function comparator,
- curl_hash_dtor dtor);
-
void *Curl_hash_add(struct curl_hash *h, void *key, size_t key_len, void *p);
int Curl_hash_delete(struct curl_hash *h, void *key, size_t key_len);
void *Curl_hash_pick(struct curl_hash *, void * key, size_t key_len);
void Curl_hash_apply(struct curl_hash *h, void *user,
void (*cb)(void *user, void *ptr));
int Curl_hash_count(struct curl_hash *h);
+void Curl_hash_destroy(struct curl_hash *h);
void Curl_hash_clean(struct curl_hash *h);
void Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
int (*comp)(void *, void *));
-void Curl_hash_destroy(struct curl_hash *h);
-
size_t Curl_hash_str(void* key, size_t key_length, size_t slots_num);
size_t Curl_str_key_compare(void*k1, size_t key1_len, void*k2,
size_t key2_len);
diff --git a/lib/hmac.c b/lib/hmac.c
index dace82037..0d2d5f45d 100644
--- a/lib/hmac.c
+++ b/lib/hmac.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -27,10 +27,6 @@
#ifndef CURL_DISABLE_CRYPTO_AUTH
#include "curl_hmac.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/hostasyn.c b/lib/hostasyn.c
index 3cf800430..17b8be072 100644
--- a/lib/hostasyn.c
+++ b/lib/hostasyn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -47,10 +47,6 @@
#include "share.h"
#include "strerror.h"
#include "url.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -123,21 +119,21 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
CURLcode Curl_async_resolved(struct connectdata *conn,
bool *protocol_done)
{
- CURLcode code;
+ CURLcode result;
if(conn->async.dns) {
conn->dns_entry = conn->async.dns;
conn->async.dns = NULL;
}
- code = Curl_setup_conn(conn, protocol_done);
+ result = Curl_setup_conn(conn, protocol_done);
- if(code)
+ if(result)
/* We're not allowed to return failure with memory left allocated
in the connectdata struct, free those here */
Curl_disconnect(conn, FALSE); /* close the connection */
- return code;
+ return result;
}
/*
diff --git a/lib/hostcheck.c b/lib/hostcheck.c
index 21af8fa1c..62a26e4f2 100644
--- a/lib/hostcheck.c
+++ b/lib/hostcheck.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -22,7 +22,7 @@
#include "curl_setup.h"
-#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_GSKIT)
+#if defined(USE_OPENSSL) || defined(USE_AXTLS) || defined(USE_GSKIT)
/* these backends use functions from this file */
#ifdef HAVE_NETINET_IN_H
@@ -144,4 +144,4 @@ int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)
return res;
}
-#endif /* SSLEAY or AXTLS or GSKIT */
+#endif /* OPENSSL or AXTLS or GSKIT */
diff --git a/lib/hostip.c b/lib/hostip.c
index 2ea0ab648..82f3897f9 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -56,10 +56,7 @@
#include "url.h"
#include "inet_ntop.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -140,11 +137,7 @@ struct curl_hash *Curl_global_host_cache_init(void)
void Curl_global_host_cache_dtor(void)
{
if(host_cache_initialized) {
- /* first make sure that any custom "CURLOPT_RESOLVE" names are
- cleared off */
- Curl_hostcache_clean(NULL, &hostname_cache);
- /* then free the remaining hash completely */
- Curl_hash_clean(&hostname_cache);
+ Curl_hash_destroy(&hostname_cache);
host_cache_initialized = 0;
}
}
@@ -237,7 +230,8 @@ hostcache_timestamp_remove(void *datap, void *hc)
(struct hostcache_prune_data *) datap;
struct Curl_dns_entry *c = (struct Curl_dns_entry *) hc;
- return !c->inuse && (data->now - c->timestamp >= data->cache_timeout);
+ return (0 != c->timestamp)
+ && (data->now - c->timestamp >= data->cache_timeout);
}
/*
@@ -283,40 +277,54 @@ void Curl_hostcache_prune(struct SessionHandle *data)
Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
}
-/*
- * Check if the entry should be pruned. Assumes a locked cache.
- */
-static int
-remove_entry_if_stale(struct SessionHandle *data, struct Curl_dns_entry *dns)
+#ifdef HAVE_SIGSETJMP
+/* Beware this is a global and unique instance. This is used to store the
+ return address that we can jump back to from inside a signal handler. This
+ is not thread-safe stuff. */
+sigjmp_buf curl_jmpenv;
+#endif
+
+/* lookup address, returns entry if found and not stale */
+static struct Curl_dns_entry *
+fetch_addr(struct connectdata *conn,
+ const char *hostname,
+ int port)
{
- struct hostcache_prune_data user;
+ char *entry_id = NULL;
+ struct Curl_dns_entry *dns = NULL;
+ size_t entry_len;
+ struct SessionHandle *data = conn->data;
- if(!dns || (data->set.dns_cache_timeout == -1) || !data->dns.hostcache ||
- dns->inuse)
- /* cache forever means never prune, and NULL hostcache means we can't do
- it, if it still is in use then we leave it */
- return 0;
+ /* Create an entry id, based upon the hostname and port */
+ entry_id = create_hostcache_id(hostname, port);
+ /* If we can't create the entry id, fail */
+ if(!entry_id)
+ return dns;
- time(&user.now);
- user.cache_timeout = data->set.dns_cache_timeout;
+ entry_len = strlen(entry_id);
- if(!hostcache_timestamp_remove(&user,dns) )
- return 0;
+ /* See if its already in our dns cache */
+ dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1);
- Curl_hash_clean_with_criterium(data->dns.hostcache,
- (void *) &user,
- hostcache_timestamp_remove);
+ if(dns && (data->set.dns_cache_timeout != -1)) {
+ /* See whether the returned entry is stale. Done before we release lock */
+ struct hostcache_prune_data user;
- return 1;
-}
+ time(&user.now);
+ user.cache_timeout = data->set.dns_cache_timeout;
+ if(hostcache_timestamp_remove(&user, dns)) {
+ infof(data, "Hostname in DNS cache was stale, zapped\n");
+ dns = NULL; /* the memory deallocation is being handled by the hash */
+ Curl_hash_delete(data->dns.hostcache, entry_id, entry_len+1);
+ }
+ }
-#ifdef HAVE_SIGSETJMP
-/* Beware this is a global and unique instance. This is used to store the
- return address that we can jump back to from inside a signal handler. This
- is not thread-safe stuff. */
-sigjmp_buf curl_jmpenv;
-#endif
+ /* free the allocated entry_id again */
+ free(entry_id);
+
+ return dns;
+}
/*
* Curl_fetch_addr() fetches a 'Curl_dns_entry' already in the DNS cache.
@@ -328,38 +336,27 @@ sigjmp_buf curl_jmpenv;
* lookups for the same hostname requested by different handles.
*
* Returns the Curl_dns_entry entry pointer or NULL if not in the cache.
+ *
+ * The returned data *MUST* be "unlocked" with Curl_resolv_unlock() after
+ * use, or we'll leak memory!
*/
struct Curl_dns_entry *
Curl_fetch_addr(struct connectdata *conn,
const char *hostname,
int port)
{
- char *entry_id = NULL;
- struct Curl_dns_entry *dns = NULL;
- size_t entry_len;
struct SessionHandle *data = conn->data;
- int stale;
-
- /* Create an entry id, based upon the hostname and port */
- entry_id = create_hostcache_id(hostname, port);
- /* If we can't create the entry id, fail */
- if(!entry_id)
- return dns;
+ struct Curl_dns_entry *dns = NULL;
- entry_len = strlen(entry_id);
+ if(data->share)
+ Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
- /* See if its already in our dns cache */
- dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1);
+ dns = fetch_addr(conn, hostname, port);
- /* free the allocated entry_id again */
- free(entry_id);
+ if(dns) dns->inuse++; /* we use it! */
- /* See whether the returned entry is stale. Done before we release lock */
- stale = remove_entry_if_stale(data, dns);
- if(stale) {
- infof(data, "Hostname in DNS cache was stale, zapped\n");
- dns = NULL; /* the memory deallocation is being handled by the hash */
- }
+ if(data->share)
+ Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
return dns;
}
@@ -398,11 +395,11 @@ Curl_cache_addr(struct SessionHandle *data,
return NULL;
}
- dns->inuse = 0; /* init to not used */
+ dns->inuse = 1; /* the cache has the first reference */
dns->addr = addr; /* this is the address(es) */
time(&dns->timestamp);
if(dns->timestamp == 0)
- dns->timestamp = 1; /* zero indicates that entry isn't in hash table */
+ dns->timestamp = 1; /* zero indicates CURLOPT_RESOLVE entry */
/* Store the resolved data in our DNS cache. */
dns2 = Curl_hash_add(data->dns.hostcache, entry_id, entry_len+1,
@@ -458,7 +455,7 @@ int Curl_resolv(struct connectdata *conn,
if(data->share)
Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
- dns = Curl_fetch_addr(conn, hostname, port);
+ dns = fetch_addr(conn, hostname, port);
if(dns) {
infof(data, "Hostname %s was found in DNS cache\n", hostname);
@@ -610,32 +607,6 @@ int Curl_resolv_timeout(struct connectdata *conn,
we want to wait less than one second we must bail out already now. */
return CURLRESOLV_TIMEDOUT;
- /*************************************************************
- * Set signal handler to catch SIGALRM
- * Store the old value to be able to set it back later!
- *************************************************************/
-#ifdef HAVE_SIGACTION
- sigaction(SIGALRM, NULL, &sigact);
- keep_sigact = sigact;
- keep_copysig = TRUE; /* yes, we have a copy */
- sigact.sa_handler = alarmfunc;
-#ifdef SA_RESTART
- /* HPUX doesn't have SA_RESTART but defaults to that behaviour! */
- sigact.sa_flags &= ~SA_RESTART;
-#endif
- /* now set the new struct */
- sigaction(SIGALRM, &sigact, NULL);
-#else /* HAVE_SIGACTION */
- /* no sigaction(), revert to the much lamer signal() */
-#ifdef HAVE_SIGNAL
- keep_sigact = signal(SIGALRM, alarmfunc);
-#endif
-#endif /* HAVE_SIGACTION */
-
- /* alarm() makes a signal get sent when the timeout fires off, and that
- will abort system calls */
- prev_alarm = alarm(curlx_sltoui(timeout/1000L));
-
/* This allows us to time-out from the name resolver, as the timeout
will generate a signal and we will siglongjmp() from that here.
This technique has problems (see alarmfunc).
@@ -648,6 +619,33 @@ int Curl_resolv_timeout(struct connectdata *conn,
rc = CURLRESOLV_ERROR;
goto clean_up;
}
+ else {
+ /*************************************************************
+ * Set signal handler to catch SIGALRM
+ * Store the old value to be able to set it back later!
+ *************************************************************/
+#ifdef HAVE_SIGACTION
+ sigaction(SIGALRM, NULL, &sigact);
+ keep_sigact = sigact;
+ keep_copysig = TRUE; /* yes, we have a copy */
+ sigact.sa_handler = alarmfunc;
+#ifdef SA_RESTART
+ /* HPUX doesn't have SA_RESTART but defaults to that behaviour! */
+ sigact.sa_flags &= ~SA_RESTART;
+#endif
+ /* now set the new struct */
+ sigaction(SIGALRM, &sigact, NULL);
+#else /* HAVE_SIGACTION */
+ /* no sigaction(), revert to the much lamer signal() */
+#ifdef HAVE_SIGNAL
+ keep_sigact = signal(SIGALRM, alarmfunc);
+#endif
+#endif /* HAVE_SIGACTION */
+
+ /* alarm() makes a signal get sent when the timeout fires off, and that
+ will abort system calls */
+ prev_alarm = alarm(curlx_sltoui(timeout/1000L));
+ }
#else
#ifndef CURLRES_ASYNCH
@@ -719,54 +717,37 @@ clean_up:
*/
void Curl_resolv_unlock(struct SessionHandle *data, struct Curl_dns_entry *dns)
{
- DEBUGASSERT(dns && (dns->inuse>0));
-
if(data && data->share)
Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
- dns->inuse--;
- /* only free if nobody is using AND it is not in hostcache (timestamp ==
- 0) */
- if(dns->inuse == 0 && dns->timestamp == 0) {
- Curl_freeaddrinfo(dns->addr);
- free(dns);
- }
+ freednsentry(dns);
if(data && data->share)
Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
}
/*
- * File-internal: free a cache dns entry.
+ * File-internal: release cache dns entry reference, free if inuse drops to 0
*/
static void freednsentry(void *freethis)
{
- struct Curl_dns_entry *p = (struct Curl_dns_entry *) freethis;
+ struct Curl_dns_entry *dns = (struct Curl_dns_entry *) freethis;
+ DEBUGASSERT(dns && (dns->inuse>0));
- /* mark the entry as not in hostcache */
- p->timestamp = 0;
- if(p->inuse == 0) {
- Curl_freeaddrinfo(p->addr);
- free(p);
+ dns->inuse--;
+ if(dns->inuse == 0) {
+ Curl_freeaddrinfo(dns->addr);
+ free(dns);
}
}
/*
- * Curl_mk_dnscache() creates a new DNS cache and returns the handle for it.
+ * Curl_mk_dnscache() inits a new DNS cache and returns success/failure.
*/
-struct curl_hash *Curl_mk_dnscache(void)
+int Curl_mk_dnscache(struct curl_hash *hash)
{
- return Curl_hash_alloc(7, Curl_hash_str, Curl_str_key_compare, freednsentry);
-}
-
-static int hostcache_inuse(void *data, void *hc)
-{
- struct Curl_dns_entry *c = (struct Curl_dns_entry *) hc;
-
- if(c->inuse == 1)
- Curl_resolv_unlock(data, c);
-
- return 1; /* free all entries */
+ return Curl_hash_init(hash, 7, Curl_hash_str, Curl_str_key_compare,
+ freednsentry);
}
/*
@@ -779,11 +760,13 @@ static int hostcache_inuse(void *data, void *hc)
void Curl_hostcache_clean(struct SessionHandle *data,
struct curl_hash *hash)
{
- /* Entries added to the hostcache with the CURLOPT_RESOLVE function are
- * still present in the cache with the inuse counter set to 1. Detect them
- * and cleanup!
- */
- Curl_hash_clean_with_criterium(hash, data, hostcache_inuse);
+ if(data && data->share)
+ Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
+
+ Curl_hash_clean(hash);
+
+ if(data && data->share)
+ Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
}
@@ -798,18 +781,52 @@ CURLcode Curl_loadhostpairs(struct SessionHandle *data)
if(!hostp->data)
continue;
if(hostp->data[0] == '-') {
- /* TODO: mark an entry for removal */
+ char *entry_id;
+ size_t entry_len;
+
+ if(2 != sscanf(hostp->data + 1, "%255[^:]:%d", hostname, &port)) {
+ infof(data, "Couldn't parse CURLOPT_RESOLVE removal entry '%s'!\n",
+ hostp->data);
+ continue;
+ }
+
+ /* Create an entry id, based upon the hostname and port */
+ entry_id = create_hostcache_id(hostname, port);
+ /* If we can't create the entry id, fail */
+ if(!entry_id) {
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ entry_len = strlen(entry_id);
+
+ if(data->share)
+ Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
+
+ /* delete entry, ignore if it didn't exist */
+ Curl_hash_delete(data->dns.hostcache, entry_id, entry_len+1);
+
+ if(data->share)
+ Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
+
+ /* free the allocated entry_id again */
+ free(entry_id);
}
- else if(3 == sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port,
- address)) {
+ else {
struct Curl_dns_entry *dns;
Curl_addrinfo *addr;
char *entry_id;
size_t entry_len;
+ if(3 != sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port,
+ address)) {
+ infof(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'!\n",
+ hostp->data);
+ continue;
+ }
+
addr = Curl_str2addr(address, port);
if(!addr) {
- infof(data, "Resolve %s found illegal!\n", hostp->data);
+ infof(data, "Address in '%s' found illegal!\n", hostp->data);
continue;
}
@@ -832,9 +849,16 @@ CURLcode Curl_loadhostpairs(struct SessionHandle *data)
/* free the allocated entry_id again */
free(entry_id);
- if(!dns)
+ if(!dns) {
/* if not in the cache already, put this host in the cache */
dns = Curl_cache_addr(data, addr, hostname, port);
+ if(dns) {
+ dns->timestamp = 0; /* mark as added by CURLOPT_RESOLVE */
+ /* release the returned reference; the cache itself will keep the
+ * entry alive: */
+ dns->inuse--;
+ }
+ }
else
/* this is a duplicate, free it again */
Curl_freeaddrinfo(addr);
diff --git a/lib/hostip.h b/lib/hostip.h
index e1e880eab..d5b44bc9e 100644
--- a/lib/hostip.h
+++ b/lib/hostip.h
@@ -65,11 +65,10 @@ void Curl_global_host_cache_dtor(void);
struct Curl_dns_entry {
Curl_addrinfo *addr;
- /* timestamp == 0 -- entry not in hostcache
- timestamp != 0 -- entry is in hostcache */
+ /* timestamp == 0 -- CURLOPT_RESOLVE entry, doesn't timeout */
time_t timestamp;
- long inuse; /* use-counter, make very sure you decrease this
- when you're done using the address you received */
+ /* use-counter, use Curl_resolv_unlock to release reference */
+ long inuse;
};
/*
@@ -125,8 +124,8 @@ void Curl_resolv_unlock(struct SessionHandle *data,
/* for debugging purposes only: */
void Curl_scan_cache_used(void *user, void *ptr);
-/* make a new dns cache and return the handle */
-struct curl_hash *Curl_mk_dnscache(void);
+/* init a new dns cache and return success */
+int Curl_mk_dnscache(struct curl_hash *hash);
/* prune old entries from the DNS cache */
void Curl_hostcache_prune(struct SessionHandle *data);
@@ -175,6 +174,9 @@ const char *Curl_printable_address(const Curl_addrinfo *ip,
* Curl_fetch_addr() fetches a 'Curl_dns_entry' already in the DNS cache.
*
* Returns the Curl_dns_entry entry pointer or NULL if not in the cache.
+ *
+ * The returned data *MUST* be "unlocked" with Curl_resolv_unlock() after
+ * use, or we'll leak memory!
*/
struct Curl_dns_entry *
Curl_fetch_addr(struct connectdata *conn,
diff --git a/lib/hostip4.c b/lib/hostip4.c
index 3a05d1077..37b036911 100644
--- a/lib/hostip4.c
+++ b/lib/hostip4.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -48,10 +48,7 @@
#include "strerror.h"
#include "url.h"
#include "inet_pton.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/hostip6.c b/lib/hostip6.c
index bb723912a..6ab131a8c 100644
--- a/lib/hostip6.c
+++ b/lib/hostip6.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -49,10 +49,7 @@
#include "url.h"
#include "inet_pton.h"
#include "connect.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/hostsyn.c b/lib/hostsyn.c
index 4ad3c63da..fb1de35ce 100644
--- a/lib/hostsyn.c
+++ b/lib/hostsyn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -47,10 +47,6 @@
#include "share.h"
#include "strerror.h"
#include "url.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/http.c b/lib/http.c
index ee0a9a481..9817d72af 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -63,7 +63,6 @@
#include "share.h"
#include "hostip.h"
#include "http.h"
-#include "curl_memory.h"
#include "select.h"
#include "parsedate.h" /* for the week day and month names */
#include "strtoofft.h"
@@ -73,15 +72,14 @@
#include "http_proxy.h"
#include "warnless.h"
#include "non-ascii.h"
-#include "bundles.h"
+#include "conncache.h"
#include "pipeline.h"
#include "http2.h"
#include "connect.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -155,12 +153,18 @@ CURLcode Curl_http_setup_conn(struct connectdata *conn)
{
/* allocate the HTTP-specific struct for the SessionHandle, only to survive
during this request */
+ struct HTTP *http;
DEBUGASSERT(conn->data->req.protop == NULL);
- conn->data->req.protop = calloc(1, sizeof(struct HTTP));
- if(!conn->data->req.protop)
+ http = calloc(1, sizeof(struct HTTP));
+ if(!http)
return CURLE_OUT_OF_MEMORY;
+ conn->data->req.protop = http;
+
+ Curl_http2_setup_conn(conn);
+ Curl_http2_setup_req(conn->data);
+
return CURLE_OK;
}
@@ -303,7 +307,7 @@ static CURLcode http_output_basic(struct connectdata *conn, bool proxy)
if(!authorization)
return CURLE_REMOTE_ACCESS_DENIED;
- Curl_safefree(*userp);
+ free(*userp);
*userp = aprintf("%sAuthorization: Basic %s\r\n",
proxy?"Proxy-":"",
authorization);
@@ -347,82 +351,6 @@ static bool pickoneauth(struct auth *pick)
return picked;
}
-/* whether to complete request (for authentication) in current connection */
-static bool complete_request(struct connectdata *conn,
- curl_off_t remaining_bytes)
-{
-#if defined(USE_NTLM) || defined(USE_SPNEGO)
- struct SessionHandle *data = conn->data;
- bool have_ntlm_or_negotiate = FALSE;
- bool auth_started = FALSE;
-
- /* don't reset connection when we're in NTLM or Negotiate authentication;
- * those authenticate the connection - creating a new connection breaks the
- * authentication.
- */
-
-#if defined(USE_NTLM)
- /* proxy NTLM authentication */
- if((data->state.authproxy.picked == CURLAUTH_NTLM) ||
- (data->state.authproxy.picked == CURLAUTH_NTLM_WB)) {
- have_ntlm_or_negotiate = TRUE;
- auth_started = auth_started
- || (conn->proxyntlm.state != NTLMSTATE_NONE);
- }
-
- /* normal NTLM authentication */
- if((data->state.authhost.picked == CURLAUTH_NTLM) ||
- (data->state.authhost.picked == CURLAUTH_NTLM_WB)) {
- have_ntlm_or_negotiate = TRUE;
- auth_started = auth_started
- || (conn->ntlm.state != NTLMSTATE_NONE);
- }
-#endif
-
-#if defined(USE_SPNEGO)
- /* proxy Negotiate authentication */
- if(data->state.authproxy.picked == CURLAUTH_NEGOTIATE) {
- have_ntlm_or_negotiate = TRUE;
- auth_started = auth_started
- || (data->state.proxyneg.state != GSS_AUTHNONE);
- }
-
- /* normal Negotiate authentication */
- if(data->state.authhost.picked == CURLAUTH_NEGOTIATE) {
- have_ntlm_or_negotiate = TRUE;
- auth_started = auth_started
- || (data->state.negotiate.state != GSS_AUTHNONE);
- }
-#endif
-
- if(have_ntlm_or_negotiate) {
- if(remaining_bytes < 2000 || auth_started) {
- /* NTLM/Negotiation has started *OR* there is just a little (<2K)
- * data left to send, keep on sending.
- */
-
- /* rewind data when completely done sending! */
- if(!conn->bits.authneg) {
- conn->bits.rewindaftersend = TRUE;
- infof(data, "Rewind stream after send\n");
- }
-
- return TRUE;
- }
-
- infof(data, "NTLM/Negotiate send, close instead of sending %"
- CURL_FORMAT_CURL_OFF_T " bytes\n",
- remaining_bytes);
- }
-#else
- /* unused parameters: */
- (void)conn;
- (void)remaining_bytes;
-#endif
-
- return FALSE;
-}
-
/*
* Curl_http_perhapsrewind()
*
@@ -481,8 +409,8 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
/* figure out how much data we are expected to send */
switch(data->set.httpreq) {
case HTTPREQ_POST:
- if(data->set.postfieldsize != -1)
- expectsend = data->set.postfieldsize;
+ if(data->state.infilesize != -1)
+ expectsend = data->state.infilesize;
else if(data->set.postfields)
expectsend = (curl_off_t)strlen(data->set.postfields);
break;
@@ -501,12 +429,36 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
conn->bits.rewindaftersend = FALSE; /* default */
if((expectsend == -1) || (expectsend > bytessent)) {
- if(conn->bits.close)
- /* this is already marked to get closed */
- return CURLE_OK;
+#if defined(USE_NTLM)
+ /* There is still data left to send */
+ if((data->state.authproxy.picked == CURLAUTH_NTLM) ||
+ (data->state.authhost.picked == CURLAUTH_NTLM) ||
+ (data->state.authproxy.picked == CURLAUTH_NTLM_WB) ||
+ (data->state.authhost.picked == CURLAUTH_NTLM_WB)) {
+ if(((expectsend - bytessent) < 2000) ||
+ (conn->ntlm.state != NTLMSTATE_NONE) ||
+ (conn->proxyntlm.state != NTLMSTATE_NONE)) {
+ /* The NTLM-negotiation has started *OR* there is just a little (<2K)
+ data left to send, keep on sending. */
+
+ /* rewind data when completely done sending! */
+ if(!conn->bits.authneg) {
+ conn->bits.rewindaftersend = TRUE;
+ infof(data, "Rewind stream after send\n");
+ }
- if(complete_request(conn, (curl_off_t)(expectsend - bytessent)))
- return CURLE_OK;
+ return CURLE_OK;
+ }
+
+ if(conn->bits.close)
+ /* this is already marked to get closed */
+ return CURLE_OK;
+
+ infof(data, "NTLM send, close instead of sending %"
+ CURL_FORMAT_CURL_OFF_T " bytes\n",
+ (curl_off_t)(expectsend - bytessent));
+ }
+#endif
/* This is not NTLM or many bytes left to send: close */
connclose(conn, "Mid-auth HTTP and much data left to send");
@@ -517,7 +469,7 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
}
if(bytessent)
- /* we rewind now at once since we already sent something */
+ /* we rewind now at once since if we already sent something */
return Curl_readrewind(conn);
return CURLE_OK;
@@ -733,7 +685,7 @@ Curl_http_output_auth(struct connectdata *conn,
if((conn->bits.httpproxy && conn->bits.proxy_user_passwd) ||
conn->bits.user_passwd)
- /* continue please */ ;
+ /* continue please */;
else {
authhost->done = TRUE;
authproxy->done = TRUE;
@@ -834,14 +786,13 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
while(*auth) {
#ifdef USE_SPNEGO
if(checkprefix("Negotiate", auth)) {
- int neg;
*availp |= CURLAUTH_NEGOTIATE;
authp->avail |= CURLAUTH_NEGOTIATE;
if(authp->picked == CURLAUTH_NEGOTIATE) {
if(negdata->state == GSS_AUTHSENT || negdata->state == GSS_AUTHNONE) {
- neg = Curl_input_negotiate(conn, proxy, auth);
- if(neg == 0) {
+ CURLcode result = Curl_input_negotiate(conn, proxy, auth);
+ if(!result) {
DEBUGASSERT(!data->req.newurl);
data->req.newurl = strdup(data->change.url);
if(!data->req.newurl)
@@ -1050,8 +1001,8 @@ static size_t readmoredata(char *buffer,
/* move backup data into focus and continue on that */
http->postdata = http->backup.postdata;
http->postsize = http->backup.postsize;
- conn->fread_func = http->backup.fread_func;
- conn->fread_in = http->backup.fread_in;
+ conn->data->set.fread_func = http->backup.fread_func;
+ conn->data->set.in = http->backup.fread_in;
http->sending++; /* move one step up */
@@ -1082,6 +1033,16 @@ Curl_send_buffer *Curl_add_buffer_init(void)
}
/*
+ * Curl_add_buffer_free() frees all associated resources.
+ */
+void Curl_add_buffer_free(Curl_send_buffer *buff)
+{
+ if(buff) /* deal with NULL input */
+ free(buff->buffer);
+ free(buff);
+}
+
+/*
* Curl_add_buffer_send() sends a header buffer and frees all associated
* memory. Body data may be appended to the header data if desired.
*
@@ -1127,9 +1088,7 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
/* Curl_convert_to_network calls failf if unsuccessful */
if(result) {
/* conversion failed, free memory and return to the caller */
- if(in->buffer)
- free(in->buffer);
- free(in);
+ Curl_add_buffer_free(in);
return result;
}
@@ -1198,14 +1157,14 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
ptr = in->buffer + amount;
/* backup the currently set pointers */
- http->backup.fread_func = conn->fread_func;
- http->backup.fread_in = conn->fread_in;
+ http->backup.fread_func = conn->data->set.fread_func;
+ http->backup.fread_in = conn->data->set.in;
http->backup.postdata = http->postdata;
http->backup.postsize = http->postsize;
/* set the new pointers for the request-sending */
- conn->fread_func = (curl_read_callback)readmoredata;
- conn->fread_in = (void *)conn;
+ conn->data->set.fread_func = (curl_read_callback)readmoredata;
+ conn->data->set.in = (void *)conn;
http->postdata = ptr;
http->postsize = (curl_off_t)size;
@@ -1228,12 +1187,10 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
*/
return CURLE_SEND_ERROR;
else
- conn->writechannel_inuse = FALSE;
+ Curl_pipeline_leave_write(conn);
}
}
- if(in->buffer)
- free(in->buffer);
- free(in);
+ Curl_add_buffer_free(in);
return result;
}
@@ -1256,8 +1213,7 @@ CURLcode Curl_add_bufferf(Curl_send_buffer *in, const char *fmt, ...)
return result;
}
/* If we failed, we cleanup the whole buffer and return error */
- if(in->buffer)
- free(in->buffer);
+ free(in->buffer);
free(in);
return CURLE_OUT_OF_MEMORY;
}
@@ -1437,7 +1393,7 @@ static CURLcode https_connecting(struct connectdata *conn, bool *done)
}
#endif
-#if defined(USE_SSLEAY) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
+#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
defined(USE_DARWINSSL) || defined(USE_POLARSSL) || defined(USE_NSS)
/* This function is for OpenSSL, GnuTLS, darwinssl, schannel and polarssl only.
It should be made to query the generic SSL layer instead. */
@@ -1476,7 +1432,7 @@ static int https_getsock(struct connectdata *conn,
return GETSOCK_BLANK;
}
#endif /* USE_SSL */
-#endif /* USE_SSLEAY || USE_GNUTLS || USE_SCHANNEL */
+#endif /* USE_OPENSSL || USE_GNUTLS || USE_SCHANNEL */
/*
* Curl_http_done() gets called from Curl_done() after a single HTTP request
@@ -1487,19 +1443,26 @@ CURLcode Curl_http_done(struct connectdata *conn,
CURLcode status, bool premature)
{
struct SessionHandle *data = conn->data;
- struct HTTP *http =data->req.protop;
+ struct HTTP *http = data->req.protop;
+#ifdef USE_NGHTTP2
+ struct http_conn *httpc = &conn->proto.httpc;
+#endif
Curl_unencode_cleanup(conn);
#ifdef USE_SPNEGO
if(data->state.proxyneg.state == GSS_AUTHSENT ||
- data->state.negotiate.state == GSS_AUTHSENT)
+ data->state.negotiate.state == GSS_AUTHSENT) {
+ /* add forbid re-use if http-code != 401/407 as a WA only needed for
+ * 401/407 that signal auth failure (empty) otherwise state will be RECV
+ * with current code */
+ if((data->req.httpcode != 401) && (data->req.httpcode != 407))
+ connclose(conn, "Negotiate transfer completed");
Curl_cleanup_negotiate(data);
+ }
#endif
/* set the proper values (possibly modified on POST) */
- conn->fread_func = data->set.fread_func; /* restore */
- conn->fread_in = data->set.in; /* restore */
conn->seek_func = data->set.seek_func; /* restore */
conn->seek_client = data->set.seek_client; /* restore */
@@ -1507,13 +1470,27 @@ CURLcode Curl_http_done(struct connectdata *conn,
return CURLE_OK;
if(http->send_buffer) {
- Curl_send_buffer *buff = http->send_buffer;
-
- free(buff->buffer);
- free(buff);
+ Curl_add_buffer_free(http->send_buffer);
http->send_buffer = NULL; /* clear the pointer */
}
+#ifdef USE_NGHTTP2
+ if(http->header_recvbuf) {
+ DEBUGF(infof(data, "free header_recvbuf!!\n"));
+ Curl_add_buffer_free(http->header_recvbuf);
+ http->header_recvbuf = NULL; /* clear the pointer */
+ for(; http->push_headers_used > 0; --http->push_headers_used) {
+ free(http->push_headers[http->push_headers_used - 1]);
+ }
+ free(http->push_headers);
+ http->push_headers = NULL;
+ }
+ if(http->stream_id) {
+ nghttp2_session_set_stream_user_data(httpc->h2, http->stream_id, 0);
+ http->stream_id = 0;
+ }
+#endif
+
if(HTTPREQ_POST_FORM == data->set.httpreq) {
data->req.bytecount = http->readbytecount + http->writebytecount;
@@ -1576,10 +1553,11 @@ static CURLcode expect100(struct SessionHandle *data,
const char *ptr;
data->state.expect100header = FALSE; /* default to false unless it is set
to TRUE below */
- if(use_http_1_1plus(data, conn)) {
- /* if not doing HTTP 1.0 or disabled explicitly, we add a Expect:
- 100-continue to the headers which actually speeds up post operations
- (as there is one packet coming back from the web server) */
+ if(use_http_1_1plus(data, conn) &&
+ (conn->httpversion != 20)) {
+ /* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
+ Expect: 100-continue to the headers which actually speeds up post
+ operations (as there is one packet coming back from the web server) */
ptr = Curl_checkheaders(conn, "Expect:");
if(ptr) {
data->state.expect100header =
@@ -1798,7 +1776,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
if(conn->httpversion < 20) { /* unless the connection is re-used and already
http2 */
switch(conn->negnpn) {
- case NPN_HTTP2:
+ case CURL_HTTP_VERSION_2_0:
+ conn->httpversion = 20; /* we know we're on HTTP/2 now */
result = Curl_http2_init(conn);
if(result)
return result;
@@ -1811,7 +1790,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
if(result)
return result;
break;
- case NPN_HTTP1_1:
+ case CURL_HTTP_VERSION_1_1:
/* continue with HTTP/1.1 when explicitly requested */
break;
default:
@@ -1829,10 +1808,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
http = data->req.protop;
if(!data->state.this_is_a_follow) {
- /* this is not a followed location, get the original host name */
- if(data->state.first_host)
- /* Free to avoid leaking memory on multiple requests*/
- free(data->state.first_host);
+ /* Free to avoid leaking memory on multiple requests*/
+ free(data->state.first_host);
data->state.first_host = strdup(conn->host.name);
if(!data->state.first_host)
@@ -1876,7 +1853,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
it might have been used in the proxy connect, but if we have got a header
with the user-agent string specified, we erase the previously made string
here. */
- if(Curl_checkheaders(conn, "User-Agent:") && conn->allocptr.uagent) {
+ if(Curl_checkheaders(conn, "User-Agent:")) {
free(conn->allocptr.uagent);
conn->allocptr.uagent=NULL;
}
@@ -2019,7 +1996,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
}
#endif
- conn->allocptr.host = NULL;
+ if(strcmp("Host:", ptr)) {
+ conn->allocptr.host = aprintf("%s\r\n", ptr);
+ if(!conn->allocptr.host)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ else
+ /* when clearing the header */
+ conn->allocptr.host = NULL;
}
else {
/* When building Host: headers, we must put the host name within
@@ -2214,8 +2198,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
!Curl_checkheaders(conn, "Range:")) {
/* if a line like this was already allocated, free the previous one */
- if(conn->allocptr.rangeline)
- free(conn->allocptr.rangeline);
+ free(conn->allocptr.rangeline);
conn->allocptr.rangeline = aprintf("Range: bytes=%s\r\n",
data->state.range);
}
@@ -2223,8 +2206,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
!Curl_checkheaders(conn, "Content-Range:")) {
/* if a line like this was already allocated, free the previous one */
- if(conn->allocptr.rangeline)
- free(conn->allocptr.rangeline);
+ free(conn->allocptr.rangeline);
if(data->set.set_resume_from < 0) {
/* Upload resume was asked for, but we don't know the size of the
@@ -2288,11 +2270,11 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
Curl_add_bufferf(req_buffer,
"%s" /* ftp typecode (;type=x) */
" HTTP/%s\r\n" /* HTTP version */
+ "%s" /* host */
"%s" /* proxyuserpwd */
"%s" /* userpwd */
"%s" /* range */
"%s" /* user agent */
- "%s" /* host */
"%s" /* accept */
"%s" /* TE: */
"%s" /* accept-encoding */
@@ -2302,6 +2284,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
ftp_typecode,
httpstring,
+ (conn->allocptr.host?conn->allocptr.host:""),
conn->allocptr.proxyuserpwd?
conn->allocptr.proxyuserpwd:"",
conn->allocptr.userpwd?conn->allocptr.userpwd:"",
@@ -2311,7 +2294,6 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
*data->set.str[STRING_USERAGENT] &&
conn->allocptr.uagent)?
conn->allocptr.uagent:"",
- (conn->allocptr.host?conn->allocptr.host:""),
http->p_accept?http->p_accept:"",
conn->allocptr.te?conn->allocptr.te:"",
(data->set.str[STRING_ENCODING] &&
@@ -2327,20 +2309,12 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
te
);
- /*
- * Free userpwd for Negotiate/NTLM. Cannot reuse as it is associated with
- * the connection and shouldn't be repeated over it either.
- */
- switch (data->state.authhost.picked) {
- case CURLAUTH_NEGOTIATE:
- case CURLAUTH_NTLM:
- case CURLAUTH_NTLM_WB:
- Curl_safefree(conn->allocptr.userpwd);
- break;
- }
+ /* clear userpwd to avoid re-using credentials from re-used connections */
+ Curl_safefree(conn->allocptr.userpwd);
/*
- * Same for proxyuserpwd
+ * Free proxyuserpwd for Negotiate/NTLM. Cannot reuse as it is associated
+ * with the connection and shouldn't be repeated over it either.
*/
switch (data->state.authproxy.picked) {
case CURLAUTH_NEGOTIATE:
@@ -2460,14 +2434,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
/* Get the currently set callback function pointer and store that in the
form struct since we might want the actual user-provided callback later
- on. The conn->fread_func pointer itself will be changed for the
+ on. The data->set.fread_func pointer itself will be changed for the
multipart case to the function that returns a multipart formatted
stream. */
- http->form.fread_func = conn->fread_func;
+ http->form.fread_func = data->set.fread_func;
/* Set the read function to read from the generated form data */
- conn->fread_func = (curl_read_callback)Curl_FormReader;
- conn->fread_in = &http->form;
+ data->set.fread_func = (curl_read_callback)Curl_FormReader;
+ data->set.in = &http->form;
http->sending = HTTPSEND_BODY;
@@ -2587,8 +2561,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
postsize = 0;
else {
/* figure out the size of the postfields */
- postsize = (data->set.postfieldsize != -1)?
- data->set.postfieldsize:
+ postsize = (data->state.infilesize != -1)?
+ data->state.infilesize:
(data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1);
}
@@ -2685,8 +2659,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
http->sending = HTTPSEND_BODY;
- conn->fread_func = (curl_read_callback)readmoredata;
- conn->fread_in = (void *)conn;
+ data->set.fread_func = (curl_read_callback)readmoredata;
+ data->set.in = (void *)conn;
/* set the upload size to the progress meter */
Curl_pgrsSetUploadSize(data, http->postsize);
@@ -2711,7 +2685,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
return result;
}
- else if(data->set.postfieldsize) {
+ else if(data->state.infilesize) {
/* set the upload size to the progress meter */
Curl_pgrsSetUploadSize(data, postsize?postsize:-1);
@@ -3102,6 +3076,19 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
}
}
+ /* At this point we have some idea about the fate of the connection.
+ If we are closing the connection it may result auth failure. */
+#if defined(USE_NTLM)
+ if(conn->bits.close &&
+ (((data->req.httpcode == 401) &&
+ (conn->ntlm.state == NTLMSTATE_TYPE2)) ||
+ ((data->req.httpcode == 407) &&
+ (conn->proxyntlm.state == NTLMSTATE_TYPE2)))) {
+ infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n");
+ data->state.authproblem = TRUE;
+ }
+#endif
+
/*
* When all the headers have been parsed, see if we should give
* up and return an error.
@@ -3379,28 +3366,23 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
}
else if(conn->httpversion == 20 ||
(k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
- /* Don't enable pipelining for HTTP/2 or upgraded connection. For
- HTTP/2, we do not support multiplexing. In general, requests
- cannot be pipelined in upgraded connection, since it is now
- different protocol. */
- DEBUGF(infof(data,
- "HTTP 2 or upgraded connection do not support "
- "pipelining for now\n"));
+ DEBUGF(infof(data, "HTTP/2 found, allow multiplexing\n"));
+
+ /* HTTP/2 cannot blacklist multiplexing since it is a core
+ functionality of the protocol */
+ conn->bundle->multiuse = BUNDLE_MULTIPLEX;
}
else if(conn->httpversion >= 11 &&
!conn->bits.close) {
- struct connectbundle *cb_ptr;
-
/* If HTTP version is >= 1.1 and connection is persistent
server supports pipelining. */
DEBUGF(infof(data,
"HTTP 1.1 or later with persistent connection, "
"pipelining supported\n"));
/* Activate pipelining if needed */
- cb_ptr = conn->bundle;
- if(cb_ptr) {
+ if(conn->bundle) {
if(!Curl_pipeline_site_blacklisted(data, conn))
- cb_ptr->server_supports_pipelining = TRUE;
+ conn->bundle->multiuse = BUNDLE_PIPELINING;
}
}
@@ -3479,14 +3461,17 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
}
}
else if(checkprefix("Server:", k->p)) {
- char *server_name = Curl_copy_header_value(k->p);
-
- /* Turn off pipelining if the server version is blacklisted */
- if(conn->bundle && conn->bundle->server_supports_pipelining) {
- if(Curl_pipeline_server_blacklisted(data, server_name))
- conn->bundle->server_supports_pipelining = FALSE;
+ if(conn->httpversion < 20) {
+ /* only do this for non-h2 servers */
+ char *server_name = Curl_copy_header_value(k->p);
+
+ /* Turn off pipelining if the server version is blacklisted */
+ if(conn->bundle && (conn->bundle->multiuse == BUNDLE_PIPELINING)) {
+ if(Curl_pipeline_server_blacklisted(data, server_name))
+ conn->bundle->multiuse = BUNDLE_NO_MULTIUSE;
+ }
+ free(server_name);
}
- Curl_safefree(server_name);
}
else if((conn->httpversion == 10) &&
conn->bits.httpproxy &&
@@ -3583,14 +3568,6 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
k->auto_decoding = GZIP;
start += 6;
}
- else if(checkprefix("compress", start)) {
- k->auto_decoding = COMPRESS;
- start += 8;
- }
- else if(checkprefix("x-compress", start)) {
- k->auto_decoding = COMPRESS;
- start += 10;
- }
else
/* unknown! */
break;
@@ -3623,9 +3600,6 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
else if(checkprefix("gzip", start)
|| checkprefix("x-gzip", start))
k->auto_decoding = GZIP;
- else if(checkprefix("compress", start)
- || checkprefix("x-compress", start))
- k->auto_decoding = COMPRESS;
}
else if(checkprefix("Content-Range:", k->p)) {
/* Content-Range: bytes [num]-
@@ -3691,7 +3665,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
result = Curl_http_input_auth(conn, proxy, auth);
- Curl_safefree(auth);
+ free(auth);
if(result)
return result;
diff --git a/lib/http.h b/lib/http.h
index 907755a8a..fe4f39bc6 100644
--- a/lib/http.h
+++ b/lib/http.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -60,6 +60,7 @@ struct Curl_send_buffer {
typedef struct Curl_send_buffer Curl_send_buffer;
Curl_send_buffer *Curl_add_buffer_init(void);
+void Curl_add_buffer_free(Curl_send_buffer *buff);
CURLcode Curl_add_bufferf(Curl_send_buffer *in, const char *fmt, ...);
CURLcode Curl_add_buffer(Curl_send_buffer *in, const void *inptr, size_t size);
CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
@@ -152,42 +153,69 @@ struct HTTP {
void *send_buffer; /* used if the request couldn't be sent in one chunk,
points to an allocated send_buffer struct */
+
+#ifdef USE_NGHTTP2
+ /*********** for HTTP/2 we store stream-local data here *************/
+ int32_t stream_id; /* stream we are interested in */
+
+ bool bodystarted;
+ /* We store non-final and final response headers here, per-stream */
+ Curl_send_buffer *header_recvbuf;
+ size_t nread_header_recvbuf; /* number of bytes in header_recvbuf fed into
+ upper layer */
+ int status_code; /* HTTP status code */
+ const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
+ size_t pauselen; /* the number of bytes left in data */
+ bool closed; /* TRUE on HTTP2 stream close */
+ uint32_t error_code; /* HTTP/2 error code */
+
+ char *mem; /* points to a buffer in memory to store received data */
+ size_t len; /* size of the buffer 'mem' points to */
+ size_t memlen; /* size of data copied to mem */
+
+ const uint8_t *upload_mem; /* points to a buffer to read from */
+ size_t upload_len; /* size of the buffer 'upload_mem' points to */
+ curl_off_t upload_left; /* number of bytes left to upload */
+
+ char **push_headers; /* allocated array */
+ size_t push_headers_used; /* number of entries filled in */
+ size_t push_headers_alloc; /* number of entries allocated */
+#endif
};
typedef int (*sending)(void); /* Curl_send */
typedef int (*recving)(void); /* Curl_recv */
+#ifdef USE_NGHTTP2
+/* h2 settings for this connection */
+struct h2settings {
+ uint32_t max_concurrent_streams;
+ bool enable_push;
+};
+#endif
+
+
struct http_conn {
#ifdef USE_NGHTTP2
#define H2_BINSETTINGS_LEN 80
nghttp2_session *h2;
uint8_t binsettings[H2_BINSETTINGS_LEN];
size_t binlen; /* length of the binsettings data */
- char *mem; /* points to a buffer in memory to store */
- size_t len; /* size of the buffer 'mem' points to */
- bool bodystarted;
sending send_underlying; /* underlying send Curl_send callback */
recving recv_underlying; /* underlying recv Curl_recv callback */
- bool closed; /* TRUE on HTTP2 stream close */
- Curl_send_buffer *header_recvbuf; /* store response headers. We
- store non-final and final
- response headers into it. */
- size_t nread_header_recvbuf; /* number of bytes in header_recvbuf
- fed into upper layer */
- int32_t stream_id; /* stream we are interested in */
- const uint8_t *data; /* pointer to data chunk, received in
- on_data_chunk */
- size_t datalen; /* the number of bytes left in data */
char *inbuf; /* buffer to receive data from underlying socket */
+ size_t inbuflen; /* number of bytes filled in inbuf */
+ size_t nread_inbuf; /* number of bytes read from in inbuf */
/* We need separate buffer for transmission and reception because we
may call nghttp2_session_send() after the
nghttp2_session_mem_recv() but mem buffer is still not full. In
this case, we wrongly sends the content of mem buffer if we share
them for both cases. */
- const uint8_t *upload_mem; /* points to a buffer to read from */
- size_t upload_len; /* size of the buffer 'upload_mem' points to */
- size_t upload_left; /* number of bytes left to upload */
- int status_code; /* HTTP status code */
+ int32_t pause_stream_id; /* stream ID which paused
+ nghttp2_session_mem_recv */
+
+ /* this is a hash of all individual streams (SessionHandle structs) */
+ struct h2settings settings;
#else
int unused; /* prevent a compiler warning */
#endif
diff --git a/lib/http2.c b/lib/http2.c
index dac9ab4a1..0024add8a 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -23,22 +23,24 @@
#include "curl_setup.h"
#ifdef USE_NGHTTP2
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include <nghttp2/nghttp2.h>
#include "urldata.h"
#include "http2.h"
#include "http.h"
#include "sendf.h"
#include "curl_base64.h"
-#include "curl_memory.h"
#include "rawstr.h"
#include "multiif.h"
+#include "conncache.h"
+#include "url.h"
-/* include memdebug.h last */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
+#define MIN(x,y) ((x)<(y)?(x):(y))
+
#if (NGHTTP2_VERSION_NUM < 0x000600)
#error too old nghttp2 version, upgrade!
#endif
@@ -50,7 +52,7 @@ static int http2_perform_getsock(const struct connectdata *conn,
sockets */
int numsocks)
{
- const struct http_conn *httpc = &conn->proto.httpc;
+ const struct http_conn *c = &conn->proto.httpc;
int bitmap = GETSOCK_BLANK;
(void)numsocks;
@@ -58,10 +60,10 @@ static int http2_perform_getsock(const struct connectdata *conn,
because of renegotiation. */
sock[0] = conn->sock[FIRSTSOCKET];
- if(nghttp2_session_want_read(httpc->h2))
+ if(nghttp2_session_want_read(c->h2))
bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
- if(nghttp2_session_want_write(httpc->h2))
+ if(nghttp2_session_want_write(c->h2))
bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
return bitmap;
@@ -78,23 +80,54 @@ static int http2_getsock(struct connectdata *conn,
static CURLcode http2_disconnect(struct connectdata *conn,
bool dead_connection)
{
- struct http_conn *httpc = &conn->proto.httpc;
+ struct HTTP *http = conn->data->req.protop;
+ struct http_conn *c = &conn->proto.httpc;
(void)dead_connection;
- infof(conn->data, "HTTP/2 DISCONNECT starts now\n");
-
- nghttp2_session_del(httpc->h2);
+ DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT starts now\n"));
- Curl_safefree(httpc->header_recvbuf->buffer);
- Curl_safefree(httpc->header_recvbuf);
+ nghttp2_session_del(c->h2);
+ Curl_safefree(c->inbuf);
- Curl_safefree(httpc->inbuf);
+ if(http) {
+ Curl_add_buffer_free(http->header_recvbuf);
+ http->header_recvbuf = NULL; /* clear the pointer */
+ for(; http->push_headers_used > 0; --http->push_headers_used) {
+ free(http->push_headers[http->push_headers_used - 1]);
+ }
+ free(http->push_headers);
+ http->push_headers = NULL;
+ }
- infof(conn->data, "HTTP/2 DISCONNECT done\n");
+ DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT done\n"));
return CURLE_OK;
}
+/* called from Curl_http_setup_conn */
+void Curl_http2_setup_req(struct SessionHandle *data)
+{
+ struct HTTP *http = data->req.protop;
+
+ http->nread_header_recvbuf = 0;
+ http->bodystarted = FALSE;
+ http->status_code = -1;
+ http->pausedata = NULL;
+ http->pauselen = 0;
+ http->error_code = NGHTTP2_NO_ERROR;
+ http->closed = FALSE;
+ http->mem = data->state.buffer;
+ http->len = BUFSIZE;
+ http->memlen = 0;
+}
+
+/* called from Curl_http_setup_conn */
+void Curl_http2_setup_conn(struct connectdata *conn)
+{
+ conn->proto.httpc.settings.max_concurrent_streams =
+ DEFAULT_MAX_CONCURRENT_STREAMS;
+}
+
/*
* HTTP2 handler interface. This isn't added to the general list of protocols
* but will be used at run-time when the protocol is dynamically switched from
@@ -104,7 +137,7 @@ const struct Curl_handler Curl_handler_http2 = {
"HTTP2", /* scheme */
ZERO_NULL, /* setup_connection */
Curl_http, /* do_it */
- ZERO_NULL, /* done */
+ Curl_http_done, /* done */
ZERO_NULL, /* do_more */
ZERO_NULL, /* connect_it */
ZERO_NULL, /* connecting */
@@ -124,7 +157,7 @@ const struct Curl_handler Curl_handler_http2_ssl = {
"HTTP2", /* scheme */
ZERO_NULL, /* setup_connection */
Curl_http, /* do_it */
- ZERO_NULL, /* done */
+ Curl_http_done, /* done */
ZERO_NULL, /* do_more */
ZERO_NULL, /* connect_it */
ZERO_NULL, /* connecting */
@@ -160,15 +193,15 @@ static ssize_t send_callback(nghttp2_session *h2,
void *userp)
{
struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *httpc = &conn->proto.httpc;
+ struct http_conn *c = &conn->proto.httpc;
ssize_t written;
CURLcode result = CURLE_OK;
(void)h2;
(void)flags;
- written = ((Curl_send*)httpc->send_underlying)(conn, FIRSTSOCKET,
- data, length, &result);
+ written = ((Curl_send*)c->send_underlying)(conn, FIRSTSOCKET,
+ data, length, &result);
if(result == CURLE_AGAIN) {
return NGHTTP2_ERR_WOULDBLOCK;
@@ -185,25 +218,205 @@ static ssize_t send_callback(nghttp2_session *h2,
return written;
}
+
+/* We pass a pointer to this struct in the push callback, but the contents of
+ the struct are hidden from the user. */
+struct curl_pushheaders {
+ struct SessionHandle *data;
+ const nghttp2_push_promise *frame;
+};
+
+/*
+ * push header access function. Only to be used from within the push callback
+ */
+char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num)
+{
+ /* Verify that we got a good easy handle in the push header struct, mostly to
+ detect rubbish input fast(er). */
+ if(!h || !GOOD_EASY_HANDLE(h->data))
+ return NULL;
+ else {
+ struct HTTP *stream = h->data->req.protop;
+ if(num < stream->push_headers_used)
+ return stream->push_headers[num];
+ }
+ return NULL;
+}
+
+/*
+ * push header access function. Only to be used from within the push callback
+ */
+char *curl_pushheader_byname(struct curl_pushheaders *h, const char *header)
+{
+ /* Verify that we got a good easy handle in the push header struct,
+ mostly to detect rubbish input fast(er). Also empty header name
+ is just a rubbish too. We have to allow ":" at the beginning of
+ the header, but header == ":" must be rejected. If we have ':' in
+ the middle of header, it could be matched in middle of the value,
+ this is because we do prefix match.*/
+ if(!h || !GOOD_EASY_HANDLE(h->data) || !header || !header[0] ||
+ Curl_raw_equal(header, ":") || strchr(header + 1, ':'))
+ return NULL;
+ else {
+ struct HTTP *stream = h->data->req.protop;
+ size_t len = strlen(header);
+ size_t i;
+ for(i=0; i<stream->push_headers_used; i++) {
+ if(!strncmp(header, stream->push_headers[i], len)) {
+ /* sub-match, make sure that it us followed by a colon */
+ if(stream->push_headers[i][len] != ':')
+ continue;
+ return &stream->push_headers[i][len+1];
+ }
+ }
+ }
+ return NULL;
+}
+
+static CURL *duphandle(struct SessionHandle *data)
+{
+ struct SessionHandle *second = curl_easy_duphandle(data);
+ if(second) {
+ /* setup the request struct */
+ struct HTTP *http = calloc(1, sizeof(struct HTTP));
+ if(!http) {
+ (void)Curl_close(second);
+ second = NULL;
+ }
+ else {
+ second->req.protop = http;
+ http->header_recvbuf = Curl_add_buffer_init();
+ if(!http->header_recvbuf) {
+ free(http);
+ (void)Curl_close(second);
+ second = NULL;
+ }
+ else
+ Curl_http2_setup_req(second);
+ }
+ }
+ return second;
+}
+
+
+static int push_promise(struct SessionHandle *data,
+ struct connectdata *conn,
+ const nghttp2_push_promise *frame)
+{
+ int rv;
+ DEBUGF(infof(data, "PUSH_PROMISE received, stream %u!\n",
+ frame->promised_stream_id));
+ if(data->multi->push_cb) {
+ struct HTTP *stream;
+ struct curl_pushheaders heads;
+ CURLMcode rc;
+ struct http_conn *httpc;
+ size_t i;
+ /* clone the parent */
+ CURL *newhandle = duphandle(data);
+ if(!newhandle) {
+ infof(data, "failed to duplicate handle\n");
+ rv = 1; /* FAIL HARD */
+ goto fail;
+ }
+
+ heads.data = data;
+ heads.frame = frame;
+ /* ask the application */
+ DEBUGF(infof(data, "Got PUSH_PROMISE, ask application!\n"));
+
+ stream = data->req.protop;
+ if(!stream) {
+ failf(data, "Internal NULL stream!\n");
+ rv = 1;
+ goto fail;
+ }
+
+ rv = data->multi->push_cb(data, newhandle,
+ stream->push_headers_used, &heads,
+ data->multi->push_userp);
+
+ /* free the headers again */
+ for(i=0; i<stream->push_headers_used; i++)
+ free(stream->push_headers[i]);
+ free(stream->push_headers);
+ stream->push_headers = NULL;
+
+ if(rv) {
+ /* denied, kill off the new handle again */
+ (void)Curl_close(newhandle);
+ goto fail;
+ }
+
+ /* approved, add to the multi handle and immediately switch to PERFORM
+ state with the given connection !*/
+ rc = Curl_multi_add_perform(data->multi, newhandle, conn);
+ if(rc) {
+ infof(data, "failed to add handle to multi\n");
+ Curl_close(newhandle);
+ rv = 1;
+ goto fail;
+ }
+
+ httpc = &conn->proto.httpc;
+ nghttp2_session_set_stream_user_data(httpc->h2,
+ frame->promised_stream_id, newhandle);
+ }
+ else {
+ DEBUGF(infof(data, "Got PUSH_PROMISE, ignore it!\n"));
+ rv = 1;
+ }
+ fail:
+ return rv;
+}
+
static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *c = &conn->proto.httpc;
+ struct connectdata *conn = NULL;
+ struct http_conn *httpc = NULL;
+ struct SessionHandle *data_s = NULL;
+ struct HTTP *stream = NULL;
+ static int lastStream = -1;
int rv;
size_t left, ncopy;
+ int32_t stream_id = frame->hd.stream_id;
- (void)session;
- (void)frame;
- infof(conn->data, "on_frame_recv() was called with header %x\n",
- frame->hd.type);
+ (void)userp;
+
+ if(!stream_id) {
+ /* stream ID zero is for connection-oriented stuff */
+ return 0;
+ }
+ data_s = nghttp2_session_get_stream_user_data(session,
+ frame->hd.stream_id);
+ if(lastStream != frame->hd.stream_id) {
+ lastStream = frame->hd.stream_id;
+ }
+ if(!data_s) {
+ DEBUGF(infof(conn->data,
+ "No SessionHandle associated with stream: %x\n",
+ stream_id));
+ return 0;
+ }
+
+ stream = data_s->req.protop;
+ if(!stream)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+ DEBUGF(infof(data_s, "on_frame_recv() header %x stream %x\n",
+ frame->hd.type, stream_id));
+
+ conn = data_s->easy_conn;
+ assert(conn);
+ assert(conn->data == data_s);
+ httpc = &conn->proto.httpc;
switch(frame->hd.type) {
case NGHTTP2_DATA:
- /* If body started, then receiving DATA is illegal. */
- if(!c->bodystarted) {
+ /* If body started on this stream, then receiving DATA is illegal. */
+ if(!stream->bodystarted) {
rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->hd.stream_id,
- NGHTTP2_PROTOCOL_ERROR);
+ stream_id, NGHTTP2_PROTOCOL_ERROR);
if(nghttp2_is_fatal(rv)) {
return NGHTTP2_ERR_CALLBACK_FAILURE;
@@ -214,74 +427,96 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
if(frame->headers.cat == NGHTTP2_HCAT_REQUEST)
break;
- if(c->bodystarted) {
- /* Only valid HEADERS after body started is trailer header,
- which is not fully supported in this code. If HEADERS is not
- trailer, then it is a PROTOCOL_ERROR. */
- if((frame->hd.flags & NGHTTP2_FLAG_END_STREAM) == 0) {
- rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->hd.stream_id,
- NGHTTP2_PROTOCOL_ERROR);
-
- if(nghttp2_is_fatal(rv)) {
- return NGHTTP2_ERR_CALLBACK_FAILURE;
- }
- }
+ if(stream->bodystarted) {
+ /* Only valid HEADERS after body started is trailer HEADERS. We
+ ignores trailer HEADERS for now. nghttp2 guarantees that it
+ has END_STREAM flag set. */
break;
}
- if(c->status_code == -1) {
- /* No :status header field means PROTOCOL_ERROR. */
- rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->hd.stream_id,
- NGHTTP2_PROTOCOL_ERROR);
-
- if(nghttp2_is_fatal(rv)) {
- return NGHTTP2_ERR_CALLBACK_FAILURE;
- }
-
- break;
- }
+ /* nghttp2 guarantees that :status is received, and we store it to
+ stream->status_code */
+ DEBUGASSERT(stream->status_code != -1);
/* Only final status code signals the end of header */
- if(c->status_code / 100 != 1) {
- c->bodystarted = TRUE;
+ if(stream->status_code / 100 != 1) {
+ stream->bodystarted = TRUE;
+ stream->status_code = -1;
}
- c->status_code = -1;
+ Curl_add_buffer(stream->header_recvbuf, "\r\n", 2);
+
+ left = stream->header_recvbuf->size_used - stream->nread_header_recvbuf;
+ ncopy = MIN(stream->len, left);
- Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+ memcpy(&stream->mem[stream->memlen],
+ stream->header_recvbuf->buffer + stream->nread_header_recvbuf,
+ ncopy);
+ stream->nread_header_recvbuf += ncopy;
- left = c->header_recvbuf->size_used - c->nread_header_recvbuf;
- ncopy = c->len < left ? c->len : left;
+ DEBUGF(infof(data_s, "Store %zu bytes headers from stream %u at %p\n",
+ ncopy, stream_id, stream->mem));
- memcpy(c->mem, c->header_recvbuf->buffer + c->nread_header_recvbuf, ncopy);
- c->nread_header_recvbuf += ncopy;
+ stream->len -= ncopy;
+ stream->memlen += ncopy;
- c->mem += ncopy;
- c->len -= ncopy;
+ data_s->state.drain++;
+ Curl_expire(data_s, 1);
break;
case NGHTTP2_PUSH_PROMISE:
- rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->push_promise.promised_stream_id,
- NGHTTP2_CANCEL);
- if(nghttp2_is_fatal(rv)) {
- return rv;
+ rv = push_promise(data_s, conn, &frame->push_promise);
+ if(rv) { /* deny! */
+ rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+ frame->push_promise.promised_stream_id,
+ NGHTTP2_CANCEL);
+ if(nghttp2_is_fatal(rv)) {
+ return rv;
+ }
}
break;
+ case NGHTTP2_SETTINGS:
+ {
+ uint32_t max_conn = httpc->settings.max_concurrent_streams;
+ DEBUGF(infof(conn->data, "Got SETTINGS for stream %u!\n", stream_id));
+ httpc->settings.max_concurrent_streams =
+ nghttp2_session_get_remote_settings(
+ session, NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS);
+ httpc->settings.enable_push =
+ nghttp2_session_get_remote_settings(
+ session, NGHTTP2_SETTINGS_ENABLE_PUSH);
+ DEBUGF(infof(conn->data, "MAX_CONCURRENT_STREAMS == %d\n",
+ httpc->settings.max_concurrent_streams));
+ DEBUGF(infof(conn->data, "ENABLE_PUSH == %s\n",
+ httpc->settings.enable_push?"TRUE":"false"));
+ if(max_conn != httpc->settings.max_concurrent_streams) {
+ /* only signal change if the value actually changed */
+ infof(conn->data,
+ "Connection state changed (MAX_CONCURRENT_STREAMS updated)!\n");
+ Curl_multi_connchanged(conn->data->multi);
+ }
+ }
+ break;
+ default:
+ DEBUGF(infof(conn->data, "Got frame type %x for stream %u!\n",
+ frame->hd.type, stream_id));
+ break;
}
return 0;
}
static int on_invalid_frame_recv(nghttp2_session *session,
const nghttp2_frame *frame,
- uint32_t error_code, void *userp)
+ int lib_error_code, void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- (void)session;
- (void)frame;
- infof(conn->data, "on_invalid_frame_recv() was called, error_code = %d\n",
- error_code);
+ struct SessionHandle *data_s = NULL;
+ (void)userp;
+
+ data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+ if(data_s) {
+ DEBUGF(infof(data_s,
+ "on_invalid_frame_recv() was called, error=%d:%s\n",
+ lib_error_code, nghttp2_strerror(lib_error_code)));
+ }
return 0;
}
@@ -289,30 +524,50 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
int32_t stream_id,
const uint8_t *data, size_t len, void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *c = &conn->proto.httpc;
+ struct HTTP *stream;
+ struct SessionHandle *data_s;
size_t nread;
(void)session;
(void)flags;
(void)data;
- infof(conn->data, "on_data_chunk_recv() "
- "len = %u, stream = %x\n", len, stream_id);
+ (void)userp;
- if(stream_id != c->stream_id) {
- return 0;
- }
+ DEBUGASSERT(stream_id); /* should never be a zero stream ID here */
- nread = c->len < len ? c->len : len;
- memcpy(c->mem, data, nread);
+ /* get the stream from the hash based on Stream ID */
+ data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+ if(!data_s)
+ /* Receiving a Stream ID not in the hash should not happen, this is an
+ internal error more than anything else! */
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+ stream = data_s->req.protop;
+ if(!stream)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+ nread = MIN(stream->len, len);
+ memcpy(&stream->mem[stream->memlen], data, nread);
+
+ stream->len -= nread;
+ stream->memlen += nread;
- c->mem += nread;
- c->len -= nread;
+ data_s->state.drain++;
+ Curl_expire(data_s, 1); /* TODO: fix so that this can be set to 0 for
+ immediately? */
- infof(conn->data, "%zu data written\n", nread);
+ DEBUGF(infof(data_s, "%zu data received for stream %u "
+ "(%zu left in buffer %p, total %zu)\n",
+ nread, stream_id,
+ stream->len, stream->mem,
+ stream->memlen));
if(nread < len) {
- c->data = data + nread;
- c->datalen = len - nread;
+ stream->pausedata = data + nread;
+ stream->pauselen = len - nread;
+ DEBUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - %zu bytes out of buffer"
+ ", stream %u\n",
+ len - nread, stream_id));
+ data_s->easy_conn->proto.httpc.pause_stream_id = stream_id;
return NGHTTP2_ERR_PAUSE;
}
return 0;
@@ -322,59 +577,89 @@ static int before_frame_send(nghttp2_session *session,
const nghttp2_frame *frame,
void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- (void)session;
- (void)frame;
- infof(conn->data, "before_frame_send() was called\n");
+ struct SessionHandle *data_s;
+ (void)userp;
+
+ data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+ if(data_s) {
+ DEBUGF(infof(data_s, "before_frame_send() was called\n"));
+ }
+
return 0;
}
static int on_frame_send(nghttp2_session *session,
const nghttp2_frame *frame,
void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- (void)session;
- (void)frame;
- infof(conn->data, "on_frame_send() was called\n");
+ struct SessionHandle *data_s;
+ (void)userp;
+
+ data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+ if(data_s) {
+ DEBUGF(infof(data_s, "on_frame_send() was called, length = %zd\n",
+ frame->hd.length));
+ }
return 0;
}
static int on_frame_not_send(nghttp2_session *session,
const nghttp2_frame *frame,
int lib_error_code, void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- (void)session;
- (void)frame;
- infof(conn->data, "on_frame_not_send() was called, lib_error_code = %d\n",
- lib_error_code);
+ struct SessionHandle *data_s;
+ (void)userp;
+
+ data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+ if(data_s) {
+ DEBUGF(infof(data_s,
+ "on_frame_not_send() was called, lib_error_code = %d\n",
+ lib_error_code));
+ }
return 0;
}
static int on_stream_close(nghttp2_session *session, int32_t stream_id,
uint32_t error_code, void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *c = &conn->proto.httpc;
+ struct SessionHandle *data_s;
+ struct HTTP *stream;
(void)session;
(void)stream_id;
- infof(conn->data, "on_stream_close() was called, error_code = %d\n",
- error_code);
-
- if(stream_id != c->stream_id) {
- return 0;
- }
+ (void)userp;
+
+ if(stream_id) {
+ /* get the stream from the hash based on Stream ID, stream ID zero is for
+ connection-oriented stuff */
+ data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+ if(!data_s) {
+ /* We could get stream ID not in the hash. For example, if we
+ decided to reject stream (e.g., PUSH_PROMISE). */
+ return 0;
+ }
+ DEBUGF(infof(data_s, "on_stream_close(), error_code = %d, stream %u\n",
+ error_code, stream_id));
+ stream = data_s->req.protop;
+ if(!stream)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
- c->closed = TRUE;
+ stream->error_code = error_code;
+ stream->closed = TRUE;
+ /* remove the entry from the hash as the stream is now gone */
+ nghttp2_session_set_stream_user_data(session, stream_id, 0);
+ DEBUGF(infof(data_s, "Removed stream %u hash!\n", stream_id));
+ }
return 0;
}
static int on_begin_headers(nghttp2_session *session,
const nghttp2_frame *frame, void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- (void)session;
- (void)frame;
- infof(conn->data, "on_begin_headers() was called\n");
+ struct SessionHandle *data_s = NULL;
+ (void)userp;
+
+ data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+ if(data_s) {
+ DEBUGF(infof(data_s, "on_begin_headers() was called\n"));
+ }
return 0;
}
@@ -405,8 +690,6 @@ static int decode_status_code(const uint8_t *value, size_t len)
return res;
}
-static const char STATUS[] = ":status";
-
/* frame->hd.type is either NGHTTP2_HEADERS or NGHTTP2_PUSH_PROMISE */
static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
const uint8_t *name, size_t namelen,
@@ -414,93 +697,94 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
uint8_t flags,
void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *c = &conn->proto.httpc;
- int rv;
- int goodname;
- int goodheader;
+ struct HTTP *stream;
+ struct SessionHandle *data_s;
+ int32_t stream_id = frame->hd.stream_id;
- (void)session;
- (void)frame;
(void)flags;
+ (void)userp;
- if(frame->hd.stream_id != c->stream_id) {
- return 0;
+ DEBUGASSERT(stream_id); /* should never be a zero stream ID here */
+
+ /* get the stream from the hash based on Stream ID */
+ data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+ if(!data_s)
+ /* Receiving a Stream ID not in the hash should not happen, this is an
+ internal error more than anything else! */
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+ stream = data_s->req.protop;
+ if(!stream) {
+ failf(data_s, "Internal NULL stream! 5\n");
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
}
- if(c->bodystarted) {
+ if(stream->bodystarted)
/* Ignore trailer or HEADERS not mapped to HTTP semantics. The
consequence is handled in on_frame_recv(). */
return 0;
- }
-
- goodname = nghttp2_check_header_name(name, namelen);
- goodheader = nghttp2_check_header_value(value, valuelen);
-
- if(!goodname || !goodheader) {
- infof(conn->data, "Detected bad incoming header %s%s, reset stream!\n",
- goodname?"":"name",
- goodheader?"":"value");
+ /* Store received PUSH_PROMISE headers to be used when the subsequent
+ PUSH_PROMISE callback comes */
+ if(frame->hd.type == NGHTTP2_PUSH_PROMISE) {
+ char *h;
- rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->hd.stream_id,
- NGHTTP2_PROTOCOL_ERROR);
-
- if(nghttp2_is_fatal(rv)) {
- return NGHTTP2_ERR_CALLBACK_FAILURE;
+ if(!stream->push_headers) {
+ stream->push_headers_alloc = 10;
+ stream->push_headers = malloc(stream->push_headers_alloc *
+ sizeof(char *));
+ stream->push_headers_used = 0;
}
-
- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
- }
-
- if(namelen == sizeof(":status") - 1 &&
- memcmp(STATUS, name, namelen) == 0) {
-
- /* :status must appear exactly once. */
- if(c->status_code != -1 ||
- (c->status_code = decode_status_code(value, valuelen)) == -1) {
-
- rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->hd.stream_id,
- NGHTTP2_PROTOCOL_ERROR);
- if(nghttp2_is_fatal(rv)) {
- return NGHTTP2_ERR_CALLBACK_FAILURE;
+ else if(stream->push_headers_used ==
+ stream->push_headers_alloc) {
+ char **headp;
+ stream->push_headers_alloc *= 2;
+ headp = realloc(stream->push_headers,
+ stream->push_headers_alloc * sizeof(char *));
+ if(!headp) {
+ free(stream->push_headers);
+ stream->push_headers = NULL;
+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
}
-
- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+ stream->push_headers = headp;
}
-
- Curl_add_buffer(c->header_recvbuf, "HTTP/2.0 ", 9);
- Curl_add_buffer(c->header_recvbuf, value, valuelen);
- Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
-
+ h = aprintf("%s:%s", name, value);
+ if(h)
+ stream->push_headers[stream->push_headers_used++] = h;
return 0;
}
- else {
- /* Here we are sure that namelen > 0 because of
- nghttp2_check_header_name(). Pseudo header other than :status
- is illegal. */
- if(c->status_code == -1 || name[0] == ':') {
- rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
- frame->hd.stream_id,
- NGHTTP2_PROTOCOL_ERROR);
- if(nghttp2_is_fatal(rv)) {
- return NGHTTP2_ERR_CALLBACK_FAILURE;
- }
- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
- }
+ if(namelen == sizeof(":status") - 1 &&
+ memcmp(":status", name, namelen) == 0) {
+ /* nghttp2 guarantees :status is received first and only once, and
+ value is 3 digits status code, and decode_status_code always
+ succeeds. */
+ stream->status_code = decode_status_code(value, valuelen);
+ DEBUGASSERT(stream->status_code != -1);
+
+ Curl_add_buffer(stream->header_recvbuf, "HTTP/2.0 ", 9);
+ Curl_add_buffer(stream->header_recvbuf, value, valuelen);
+ Curl_add_buffer(stream->header_recvbuf, "\r\n", 2);
+ data_s->state.drain++;
+ Curl_expire(data_s, 1);
+
+ DEBUGF(infof(data_s, "h2 status: HTTP/2 %03d\n",
+ stream->status_code));
+ return 0;
+ }
- /* convert to a HTTP1-style header */
- Curl_add_buffer(c->header_recvbuf, name, namelen);
- Curl_add_buffer(c->header_recvbuf, ":", 1);
- Curl_add_buffer(c->header_recvbuf, value, valuelen);
- Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+ /* nghttp2 guarantees that namelen > 0, and :status was already
+ received, and this is not pseudo-header field . */
+ /* convert to a HTTP1-style header */
+ Curl_add_buffer(stream->header_recvbuf, name, namelen);
+ Curl_add_buffer(stream->header_recvbuf, ":", 1);
+ Curl_add_buffer(stream->header_recvbuf, value, valuelen);
+ Curl_add_buffer(stream->header_recvbuf, "\r\n", 2);
+ data_s->state.drain++;
+ Curl_expire(data_s, 1);
- infof(conn->data, "got http2 header: %.*s: %.*s\n",
- namelen, name, valuelen, value);
- }
+ DEBUGF(infof(data_s, "h2 header: %.*s: %.*s\n", namelen, name, valuelen,
+ value));
return 0; /* 0 is successful */
}
@@ -512,26 +796,45 @@ static ssize_t data_source_read_callback(nghttp2_session *session,
nghttp2_data_source *source,
void *userp)
{
- struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *c = &conn->proto.httpc;
+ struct SessionHandle *data_s;
+ struct HTTP *stream = NULL;
size_t nread;
- (void)session;
- (void)stream_id;
(void)source;
+ (void)userp;
+
+ if(stream_id) {
+ /* get the stream from the hash based on Stream ID, stream ID zero is for
+ connection-oriented stuff */
+ data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+ if(!data_s)
+ /* Receiving a Stream ID not in the hash should not happen, this is an
+ internal error more than anything else! */
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+ stream = data_s->req.protop;
+ if(!stream)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ }
+ else
+ return NGHTTP2_ERR_INVALID_ARGUMENT;
- nread = c->upload_len < length ? c->upload_len : length;
+ nread = MIN(stream->upload_len, length);
if(nread > 0) {
- memcpy(buf, c->upload_mem, nread);
- c->upload_mem += nread;
- c->upload_len -= nread;
- c->upload_left -= nread;
+ memcpy(buf, stream->upload_mem, nread);
+ stream->upload_mem += nread;
+ stream->upload_len -= nread;
+ stream->upload_left -= nread;
}
- if(c->upload_left == 0)
+ if(stream->upload_left == 0)
*data_flags = 1;
else if(nread == 0)
return NGHTTP2_ERR_DEFERRED;
+ DEBUGF(infof(data_s, "data_source_read_callback: "
+ "returns %zu bytes stream %u\n",
+ nread, stream_id));
+
return nread;
}
@@ -543,7 +846,7 @@ static nghttp2_settings_entry settings[] = {
{ NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, NGHTTP2_INITIAL_WINDOW_SIZE },
};
-#define H2_BUFSIZE 4096
+#define H2_BUFSIZE 32768
/*
* Initialize nghttp2 for a Curl connection
@@ -595,8 +898,7 @@ CURLcode Curl_http2_init(struct connectdata *conn)
nghttp2_session_callbacks_set_on_header_callback(callbacks, on_header);
/* The nghttp2 session is not yet setup, do it */
- rc = nghttp2_session_client_new(&conn->proto.httpc.h2,
- callbacks, conn);
+ rc = nghttp2_session_client_new(&conn->proto.httpc.h2, callbacks, conn);
nghttp2_session_callbacks_del(callbacks);
@@ -604,6 +906,11 @@ CURLcode Curl_http2_init(struct connectdata *conn)
failf(conn->data, "Couldn't initialize nghttp2!");
return CURLE_OUT_OF_MEMORY; /* most likely at least */
}
+
+ if(rc) {
+ failf(conn->data, "Couldn't init stream hash!");
+ return CURLE_OUT_OF_MEMORY; /* most likely at least */
+ }
}
return CURLE_OK;
}
@@ -630,14 +937,6 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
struct SingleRequest *k = &conn->data->req;
uint8_t *binsettings = conn->proto.httpc.binsettings;
- result = Curl_http2_init(conn);
- if(result)
- return result;
-
- result = Curl_http2_setup(conn);
- if(result)
- return result;
-
/* As long as we have a fixed set of settings, we don't have to dynamically
* figure out the base64 strings since it'll always be the same. However,
* the settings will likely not be fixed every time in the future.
@@ -663,13 +962,32 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
"Upgrade: %s\r\n"
"HTTP2-Settings: %s\r\n",
NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, base64);
- Curl_safefree(base64);
+ free(base64);
k->upgr101 = UPGR101_REQUESTED;
return result;
}
+static ssize_t http2_handle_stream_close(struct http_conn *httpc,
+ struct SessionHandle *data,
+ struct HTTP *stream, CURLcode *err) {
+ if(httpc->pause_stream_id == stream->stream_id) {
+ httpc->pause_stream_id = 0;
+ }
+ /* Reset to FALSE to prevent infinite loop in readwrite_data
+ function. */
+ stream->closed = FALSE;
+ if(stream->error_code != NGHTTP2_NO_ERROR) {
+ failf(data, "HTTP/2 stream %u was not closed cleanly: error_code = %d",
+ stream->stream_id, stream->error_code);
+ *err = CURLE_HTTP2;
+ return -1;
+ }
+ DEBUGF(infof(data, "http2_recv returns 0, http2_handle_stream_close\n"));
+ return 0;
+}
+
/*
* If the read would block (EWOULDBLOCK) we return -1. Otherwise we return
* a regular CURLcode value.
@@ -681,103 +999,184 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
ssize_t rv;
ssize_t nread;
struct http_conn *httpc = &conn->proto.httpc;
+ struct SessionHandle *data = conn->data;
+ struct HTTP *stream = data->req.protop;
(void)sockindex; /* we always do HTTP2 on sockindex 0 */
- if(httpc->closed) {
- /* Reset to FALSE to prevent infinite loop in readwrite_data
- function. */
- httpc->closed = FALSE;
- return 0;
+ /* If stream is closed, return 0 to signal the http routine to close
+ the connection. We need to handle stream closure here,
+ otherwise, we may be going to read from underlying connection,
+ and gets EAGAIN, and we will get stuck there. */
+ if(stream->memlen == 0 && stream->closed) {
+ return http2_handle_stream_close(httpc, data, stream, err);
}
/* Nullify here because we call nghttp2_session_send() and they
might refer to the old buffer. */
- httpc->upload_mem = NULL;
- httpc->upload_len = 0;
+ stream->upload_mem = NULL;
+ stream->upload_len = 0;
- if(httpc->bodystarted &&
- httpc->nread_header_recvbuf < httpc->header_recvbuf->size_used) {
+ /*
+ * At this point 'stream' is just in the SessionHandle the connection
+ * identifies as its owner at this time.
+ */
+
+ if(stream->bodystarted &&
+ stream->nread_header_recvbuf < stream->header_recvbuf->size_used) {
+ /* If there is body data pending for this stream to return, do that */
size_t left =
- httpc->header_recvbuf->size_used - httpc->nread_header_recvbuf;
- size_t ncopy = len < left ? len : left;
- memcpy(mem, httpc->header_recvbuf->buffer + httpc->nread_header_recvbuf,
+ stream->header_recvbuf->size_used - stream->nread_header_recvbuf;
+ size_t ncopy = MIN(len, left);
+ memcpy(mem, stream->header_recvbuf->buffer + stream->nread_header_recvbuf,
ncopy);
- httpc->nread_header_recvbuf += ncopy;
+ stream->nread_header_recvbuf += ncopy;
+
+ infof(data, "http2_recv: Got %d bytes from header_recvbuf\n",
+ (int)ncopy);
return ncopy;
}
- if(httpc->data) {
- nread = len < httpc->datalen ? len : httpc->datalen;
- memcpy(mem, httpc->data, nread);
-
- httpc->data += nread;
- httpc->datalen -= nread;
-
- infof(conn->data, "%zu data written\n", nread);
- if(httpc->datalen == 0) {
- httpc->data = NULL;
- httpc->datalen = 0;
+ infof(data, "http2_recv: %d bytes buffer at %p (stream %u)\n",
+ len, mem, stream->stream_id);
+
+ if((data->state.drain) && stream->memlen) {
+ DEBUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u!! (%p => %p)\n",
+ stream->memlen, stream->stream_id,
+ stream->mem, mem));
+ if(mem != stream->mem) {
+ /* if we didn't get the same buffer this time, we must move the data to
+ the beginning */
+ memmove(mem, stream->mem, stream->memlen);
+ stream->len = len - stream->memlen;
+ stream->mem = mem;
}
- return nread;
}
+ else if(stream->pausedata) {
+ nread = MIN(len, stream->pauselen);
+ memcpy(mem, stream->pausedata, nread);
- conn->proto.httpc.mem = mem;
- conn->proto.httpc.len = len;
+ stream->pausedata += nread;
+ stream->pauselen -= nread;
- infof(conn->data, "http2_recv: %d bytes buffer\n",
- conn->proto.httpc.len);
+ infof(data, "%zu data bytes written\n", nread);
+ if(stream->pauselen == 0) {
+ DEBUGF(infof(data, "Unpaused by stream %u\n", stream->stream_id));
+ assert(httpc->pause_stream_id == stream->stream_id);
+ httpc->pause_stream_id = 0;
- nread = ((Curl_recv*)httpc->recv_underlying)(conn, FIRSTSOCKET,
- httpc->inbuf, H2_BUFSIZE,
- &result);
- if(result == CURLE_AGAIN) {
- *err = result;
+ stream->pausedata = NULL;
+ stream->pauselen = 0;
+ }
+ infof(data, "http2_recv: returns unpaused %zd bytes on stream %u\n",
+ nread, stream->stream_id);
+ return nread;
+ }
+ else if(httpc->pause_stream_id) {
+ /* If a stream paused nghttp2_session_mem_recv previously, and has
+ not processed all data, it still refers to the buffer in
+ nghttp2_session. If we call nghttp2_session_mem_recv(), we may
+ overwrite that buffer. To avoid that situation, just return
+ here with CURLE_AGAIN. This could be busy loop since data in
+ socket is not read. But it seems that usually streams are
+ notified with its drain property, and socket is read again
+ quickly. */
+ *err = CURLE_AGAIN;
return -1;
}
+ else {
+ char *inbuf;
+ /* remember where to store incoming data for this stream and how big the
+ buffer is */
+ stream->mem = mem;
+ stream->len = len;
+ stream->memlen = 0;
+
+ if(httpc->inbuflen == 0) {
+ nread = ((Curl_recv *)httpc->recv_underlying)(
+ conn, FIRSTSOCKET, httpc->inbuf, H2_BUFSIZE, &result);
+
+ if(result == CURLE_AGAIN) {
+ *err = result;
+ return -1;
+ }
- if(nread == -1) {
- failf(conn->data, "Failed receiving HTTP2 data");
- *err = result;
- return 0;
- }
+ if(nread == -1) {
+ failf(data, "Failed receiving HTTP2 data");
+ *err = result;
+ return 0;
+ }
- infof(conn->data, "nread=%zd\n", nread);
+ if(nread == 0) {
+ failf(data, "Unexpected EOF");
+ *err = CURLE_RECV_ERROR;
+ return -1;
+ }
- if(nread == 0) {
- failf(conn->data, "EOF");
- return 0;
- }
+ DEBUGF(infof(data, "nread=%zd\n", nread));
- rv = nghttp2_session_mem_recv(httpc->h2,
- (const uint8_t *)httpc->inbuf, nread);
+ httpc->inbuflen = nread;
+ inbuf = httpc->inbuf;
+ }
+ else {
+ nread = httpc->inbuflen - httpc->nread_inbuf;
+ inbuf = httpc->inbuf + httpc->nread_inbuf;
- if(nghttp2_is_fatal((int)rv)) {
- failf(conn->data, "nghttp2_session_mem_recv() returned %d:%s\n",
- rv, nghttp2_strerror((int)rv));
- *err = CURLE_RECV_ERROR;
- return 0;
- }
- infof(conn->data, "nghttp2_session_mem_recv() returns %zd\n", rv);
- /* Always send pending frames in nghttp2 session, because
- nghttp2_session_mem_recv() may queue new frame */
- rv = nghttp2_session_send(httpc->h2);
- if(rv != 0) {
- *err = CURLE_SEND_ERROR;
- return 0;
+ DEBUGF(infof(data, "Use data left in connection buffer, nread=%zd\n",
+ nread));
+ }
+ rv = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)inbuf, nread);
+
+ if(nghttp2_is_fatal((int)rv)) {
+ failf(data, "nghttp2_session_mem_recv() returned %d:%s\n",
+ rv, nghttp2_strerror((int)rv));
+ *err = CURLE_RECV_ERROR;
+ return 0;
+ }
+ DEBUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", rv));
+ if(nread == rv) {
+ DEBUGF(infof(data, "All data in connection buffer processed\n"));
+ httpc->inbuflen = 0;
+ httpc->nread_inbuf = 0;
+ }
+ else {
+ httpc->nread_inbuf += rv;
+ DEBUGF(infof(data, "%zu bytes left in connection buffer\n",
+ httpc->inbuflen - httpc->nread_inbuf));
+ }
+ /* Always send pending frames in nghttp2 session, because
+ nghttp2_session_mem_recv() may queue new frame */
+ rv = nghttp2_session_send(httpc->h2);
+ if(rv != 0) {
+ *err = CURLE_SEND_ERROR;
+ return 0;
+ }
}
- if(len != httpc->len) {
- return len - conn->proto.httpc.len;
+ if(stream->memlen) {
+ ssize_t retlen = stream->memlen;
+ infof(data, "http2_recv: returns %zd for stream %u\n",
+ retlen, stream->stream_id);
+ stream->memlen = 0;
+
+ if(httpc->pause_stream_id == stream->stream_id) {
+ /* data for this stream is returned now, but this stream caused a pause
+ already so we need it called again asap */
+ DEBUGF(infof(data, "Data returned for PAUSED stream %u\n",
+ stream->stream_id));
+ }
+ else
+ data->state.drain = 0; /* this stream is hereby drained */
+
+ return retlen;
}
/* If stream is closed, return 0 to signal the http routine to close
the connection */
- if(httpc->closed) {
- /* Reset to FALSE to prevent infinite loop in readwrite_data
- function. */
- httpc->closed = FALSE;
- return 0;
+ if(stream->closed) {
+ return http2_handle_stream_close(httpc, data, stream, err);
}
*err = CURLE_AGAIN;
+ DEBUGF(infof(data, "http2_recv returns AGAIN for stream %u\n",
+ stream->stream_id));
return -1;
}
@@ -796,6 +1195,7 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
*/
int rv;
struct http_conn *httpc = &conn->proto.httpc;
+ struct HTTP *stream = conn->data->req.protop;
nghttp2_nv *nva;
size_t nheader;
size_t i;
@@ -804,23 +1204,41 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
char *end;
nghttp2_data_provider data_prd;
int32_t stream_id;
+ nghttp2_session *h2 = httpc->h2;
(void)sockindex;
- infof(conn->data, "http2_send len=%zu\n", len);
+ DEBUGF(infof(conn->data, "http2_send len=%zu\n", len));
- if(httpc->stream_id != -1) {
+ if(stream->stream_id != -1) {
/* If stream_id != -1, we have dispatched request HEADERS, and now
are going to send or sending request body in DATA frame */
- httpc->upload_mem = mem;
- httpc->upload_len = len;
- nghttp2_session_resume_data(httpc->h2, httpc->stream_id);
- rv = nghttp2_session_send(httpc->h2);
+ stream->upload_mem = mem;
+ stream->upload_len = len;
+ nghttp2_session_resume_data(h2, stream->stream_id);
+ rv = nghttp2_session_send(h2);
if(nghttp2_is_fatal(rv)) {
*err = CURLE_SEND_ERROR;
return -1;
}
- return len - httpc->upload_len;
+ len -= stream->upload_len;
+
+ /* Nullify here because we call nghttp2_session_send() and they
+ might refer to the old buffer. */
+ stream->upload_mem = NULL;
+ stream->upload_len = 0;
+
+ if(stream->upload_left) {
+ /* we are sure that we have more data to send here. Calling the
+ following API will make nghttp2_session_want_write() return
+ nonzero if remote window allows it, which then libcurl checks
+ socket is writable or not. See http2_perform_getsock(). */
+ nghttp2_session_resume_data(h2, stream->stream_id);
+ }
+
+ DEBUGF(infof(conn->data, "http2_send returns %zu for stream %u\n", len,
+ stream->stream_id));
+ return len;
}
/* Calculate number of headers contained in [mem, mem + len) */
@@ -843,6 +1261,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
}
/* Extract :method, :path from request line */
end = strchr(hdbuf, ' ');
+ if(!end)
+ goto fail;
nva[0].name = (unsigned char *)":method";
nva[0].namelen = (uint16_t)strlen((char *)nva[0].name);
nva[0].value = (unsigned char *)hdbuf;
@@ -852,6 +1272,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
hdbuf = end + 1;
end = strchr(hdbuf, ' ');
+ if(!end)
+ goto fail;
nva[1].name = (unsigned char *)":path";
nva[1].namelen = (uint16_t)strlen((char *)nva[1].name);
nva[1].value = (unsigned char *)hdbuf;
@@ -868,13 +1290,16 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
nva[2].flags = NGHTTP2_NV_FLAG_NONE;
hdbuf = strchr(hdbuf, 0x0a);
+ if(!hdbuf)
+ goto fail;
++hdbuf;
authority_idx = 0;
for(i = 3; i < nheader; ++i) {
end = strchr(hdbuf, ':');
- assert(end);
+ if(!end)
+ goto fail;
if(end - hdbuf == 4 && Curl_raw_nequal("host", hdbuf, 4)) {
authority_idx = i;
nva[i].name = (unsigned char *)":authority";
@@ -887,7 +1312,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
hdbuf = end + 1;
for(; *hdbuf == ' '; ++hdbuf);
end = strchr(hdbuf, 0x0d);
- assert(end);
+ if(!end)
+ goto fail;
nva[i].value = (unsigned char *)hdbuf;
nva[i].valuelen = (uint16_t)(end - hdbuf);
nva[i].flags = NGHTTP2_NV_FLAG_NONE;
@@ -899,11 +1325,15 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
if(nva[i].namelen == 14 &&
Curl_raw_nequal("content-length", (char*)nva[i].name, 14)) {
size_t j;
+ stream->upload_left = 0;
for(j = 0; j < nva[i].valuelen; ++j) {
- httpc->upload_left *= 10;
- httpc->upload_left += nva[i].value[j] - '0';
+ stream->upload_left *= 10;
+ stream->upload_left += nva[i].value[j] - '0';
}
- infof(conn->data, "request content-length=%zu\n", httpc->upload_left);
+ DEBUGF(infof(conn->data,
+ "request content-length=%"
+ CURL_FORMAT_CURL_OFF_T
+ "\n", stream->upload_left));
}
}
@@ -922,31 +1352,34 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
case HTTPREQ_PUT:
data_prd.read_callback = data_source_read_callback;
data_prd.source.ptr = NULL;
- stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
- &data_prd, NULL);
+ stream_id = nghttp2_submit_request(h2, NULL, nva, nheader,
+ &data_prd, conn->data);
break;
default:
- stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
- NULL, NULL);
+ stream_id = nghttp2_submit_request(h2, NULL, nva, nheader,
+ NULL, conn->data);
}
Curl_safefree(nva);
if(stream_id < 0) {
+ DEBUGF(infof(conn->data, "http2_send() send error\n"));
*err = CURLE_SEND_ERROR;
return -1;
}
- httpc->stream_id = stream_id;
+ infof(conn->data, "Using Stream ID: %x (easy handle %p)\n",
+ stream_id, conn->data);
+ stream->stream_id = stream_id;
- rv = nghttp2_session_send(httpc->h2);
+ rv = nghttp2_session_send(h2);
if(rv != 0) {
*err = CURLE_SEND_ERROR;
return -1;
}
- if(httpc->stream_id != -1) {
+ if(stream->stream_id != -1) {
/* If whole HEADERS frame was sent off to the underlying socket,
the nghttp2 library calls data_source_read_callback. But only
it found that no data available, so it deferred the DATA
@@ -955,36 +1388,59 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
writable socket check is performed. To workaround this, we
issue nghttp2_session_resume_data() here to bring back DATA
transmission from deferred state. */
- nghttp2_session_resume_data(httpc->h2, httpc->stream_id);
+ nghttp2_session_resume_data(h2, stream->stream_id);
}
return len;
+
+ fail:
+ free(nva);
+ *err = CURLE_SEND_ERROR;
+ return -1;
}
CURLcode Curl_http2_setup(struct connectdata *conn)
{
+ CURLcode result;
struct http_conn *httpc = &conn->proto.httpc;
+ struct HTTP *stream = conn->data->req.protop;
+
+ stream->stream_id = -1;
+
+ if(!stream->header_recvbuf)
+ stream->header_recvbuf = Curl_add_buffer_init();
+
+ if((conn->handler == &Curl_handler_http2_ssl) ||
+ (conn->handler == &Curl_handler_http2))
+ return CURLE_OK; /* already done */
+
if(conn->handler->flags & PROTOPT_SSL)
conn->handler = &Curl_handler_http2_ssl;
else
conn->handler = &Curl_handler_http2;
- infof(conn->data, "Using HTTP2\n");
- httpc->bodystarted = FALSE;
- httpc->closed = FALSE;
- httpc->header_recvbuf = Curl_add_buffer_init();
- httpc->nread_header_recvbuf = 0;
- httpc->data = NULL;
- httpc->datalen = 0;
- httpc->upload_left = 0;
- httpc->upload_mem = NULL;
- httpc->upload_len = 0;
- httpc->stream_id = -1;
- httpc->status_code = -1;
+ result = Curl_http2_init(conn);
+ if(result)
+ return result;
+
+ infof(conn->data, "Using HTTP2, server supports multi-use\n");
+ stream->upload_left = 0;
+ stream->upload_mem = NULL;
+ stream->upload_len = 0;
+ httpc->inbuflen = 0;
+ httpc->nread_inbuf = 0;
+
+ httpc->pause_stream_id = 0;
+
+ conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
conn->httpversion = 20;
+ conn->bundle->multiuse = BUNDLE_MULTIPLEX;
- return 0;
+ infof(conn->data, "Connection state changed (HTTP/2 confirmed)\n");
+ Curl_multi_connchanged(conn->data->multi);
+
+ return CURLE_OK;
}
CURLcode Curl_http2_switched(struct connectdata *conn,
@@ -993,30 +1449,22 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
CURLcode result;
struct http_conn *httpc = &conn->proto.httpc;
int rv;
+ ssize_t nproc;
struct SessionHandle *data = conn->data;
+ struct HTTP *stream = conn->data->req.protop;
+
+ result = Curl_http2_setup(conn);
+ if(result)
+ return result;
httpc->recv_underlying = (recving)conn->recv[FIRSTSOCKET];
httpc->send_underlying = (sending)conn->send[FIRSTSOCKET];
conn->recv[FIRSTSOCKET] = http2_recv;
conn->send[FIRSTSOCKET] = http2_send;
- rv = (int) ((Curl_send*)httpc->send_underlying)
- (conn, FIRSTSOCKET,
- NGHTTP2_CLIENT_CONNECTION_PREFACE,
- NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN,
- &result);
- if(result)
- /* TODO: This may get CURLE_AGAIN */
- return result;
-
- if(rv != 24) {
- failf(data, "Only sent partial HTTP2 packet");
- return CURLE_SEND_ERROR;
- }
-
if(conn->data->req.upgr101 == UPGR101_RECEIVED) {
/* stream 1 is opened implicitly on upgrade */
- httpc->stream_id = 1;
+ stream->stream_id = 1;
/* queue SETTINGS frame (again) */
rv = nghttp2_session_upgrade(httpc->h2, httpc->binsettings,
httpc->binlen, NULL);
@@ -1025,10 +1473,14 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
nghttp2_strerror(rv), rv);
return CURLE_HTTP2;
}
+
+ nghttp2_session_set_stream_user_data(httpc->h2,
+ stream->stream_id,
+ conn->data);
}
else {
/* stream ID is unknown at this point */
- httpc->stream_id = -1;
+ stream->stream_id = -1;
rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE, NULL, 0);
if(rv != 0) {
failf(data, "nghttp2_submit_settings() failed: %s(%d)",
@@ -1037,10 +1489,48 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
}
}
- rv = (int)nghttp2_session_mem_recv(httpc->h2, (const uint8_t*)mem, nread);
+ /* we are going to copy mem to httpc->inbuf. This is required since
+ mem is part of buffer pointed by stream->mem, and callbacks
+ called by nghttp2_session_mem_recv() will write stream specific
+ data into stream->mem, overwriting data already there. */
+ if(H2_BUFSIZE < nread) {
+ failf(data, "connection buffer size is too small to store data following "
+ "HTTP Upgrade response header: buflen=%zu, datalen=%zu",
+ H2_BUFSIZE, nread);
+ return CURLE_HTTP2;
+ }
+
+ infof(conn->data, "Copying HTTP/2 data in stream buffer to connection buffer"
+ " after upgrade: len=%zu\n",
+ nread);
+
+ memcpy(httpc->inbuf, mem, nread);
+ httpc->inbuflen = nread;
- if(rv != (int)nread) {
+ nproc = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)httpc->inbuf,
+ httpc->inbuflen);
+
+ if(nghttp2_is_fatal((int)nproc)) {
failf(data, "nghttp2_session_mem_recv() failed: %s(%d)",
+ nghttp2_strerror((int)nproc), (int)nproc);
+ return CURLE_HTTP2;
+ }
+
+ DEBUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", nproc));
+
+ if((ssize_t)nread == nproc) {
+ httpc->inbuflen = 0;
+ httpc->nread_inbuf = 0;
+ }
+ else {
+ httpc->nread_inbuf += nproc;
+ }
+
+ /* Try to send some frames since we may read SETTINGS already. */
+ rv = nghttp2_session_send(httpc->h2);
+
+ if(rv != 0) {
+ failf(data, "nghttp2_session_send() failed: %s(%d)",
nghttp2_strerror(rv), rv);
return CURLE_HTTP2;
}
@@ -1048,4 +1538,25 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
return CURLE_OK;
}
-#endif
+#else /* !USE_NGHTTP2 */
+
+/* Satisfy external references even if http2 is not compiled in. */
+
+#define CURL_DISABLE_TYPECHECK
+#include <curl/curl.h>
+
+char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num)
+{
+ (void) h;
+ (void) num;
+ return NULL;
+}
+
+char *curl_pushheader_byname(struct curl_pushheaders *h, const char *header)
+{
+ (void) h;
+ (void) header;
+ return NULL;
+}
+
+#endif /* USE_NGHTTP2 */
diff --git a/lib/http2.h b/lib/http2.h
index a2e4eb7c2..bb7ad9c4c 100644
--- a/lib/http2.h
+++ b/lib/http2.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -26,6 +26,11 @@
#ifdef USE_NGHTTP2
#include "http.h"
+
+/* value for MAX_CONCURRENT_STREAMS we use until we get an updated setting
+ from the peer */
+#define DEFAULT_MAX_CONCURRENT_STREAMS 13
+
/*
* Store nghttp2 version info in this buffer, Prefix with a space. Return
* total length written.
@@ -39,12 +44,17 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
CURLcode Curl_http2_setup(struct connectdata *conn);
CURLcode Curl_http2_switched(struct connectdata *conn,
const char *data, size_t nread);
+/* called from Curl_http_setup_conn */
+void Curl_http2_setup_conn(struct connectdata *conn);
+void Curl_http2_setup_req(struct SessionHandle *data);
#else /* USE_NGHTTP2 */
#define Curl_http2_init(x) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_send_request(x) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_request_upgrade(x,y) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_setup(x) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_switched(x,y,z) CURLE_UNSUPPORTED_PROTOCOL
+#define Curl_http2_setup_conn(x)
+#define Curl_http2_setup_req(x)
#endif
#endif /* HEADER_CURL_HTTP2_H */
diff --git a/lib/http_chunks.c b/lib/http_chunks.c
index 61a6098a7..7e91b37dc 100644
--- a/lib/http_chunks.c
+++ b/lib/http_chunks.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -29,15 +29,12 @@
#include "content_encoding.h"
#include "http.h"
-#include "curl_memory.h"
#include "non-ascii.h" /* for Curl_convert_to_network prototype */
#include "strtoofft.h"
#include "warnless.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -158,7 +155,7 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
if(result) {
/* Curl_convert_from_network calls failf if unsuccessful */
/* Treat it as a bad hex character */
- return CHUNKE_ILLEGAL_HEX ;
+ return CHUNKE_ILLEGAL_HEX;
}
ch->datasize=curlx_strtoofft(ch->hexbuffer, &endptr, 16);
@@ -221,7 +218,6 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
(ssize_t)piece);
break;
- case COMPRESS:
default:
failf (conn->data,
"Unrecognized content encoding type. "
diff --git a/lib/http_digest.c b/lib/http_digest.c
index ba59e5d14..929e2c60f 100644
--- a/lib/http_digest.c
+++ b/lib/http_digest.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -28,12 +28,10 @@
#include "rawstr.h"
#include "curl_sasl.h"
#include "http_digest.h"
-#include "curl_memory.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* Test example headers:
diff --git a/lib/http_negotiate.c b/lib/http_negotiate.c
index 97d0cb762..a1baf29c3 100644
--- a/lib/http_negotiate.c
+++ b/lib/http_negotiate.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -22,14 +22,7 @@
#include "curl_setup.h"
-#ifdef HAVE_GSSAPI
-
-#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
-
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
+#if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
#include "urldata.h"
#include "sendf.h"
@@ -37,52 +30,24 @@
#include "rawstr.h"
#include "curl_base64.h"
#include "http_negotiate.h"
-#include "curl_memory.h"
+#include "curl_sasl.h"
#include "url.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
-static int
-get_gss_name(struct connectdata *conn, bool proxy, gss_name_t *server)
-{
- OM_uint32 major_status, minor_status;
- gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
- char name[2048];
- const char* service = "HTTP";
-
- token.length = strlen(service) + 1 + strlen(proxy ? conn->proxy.name :
- conn->host.name) + 1;
- if(token.length + 1 > sizeof(name))
- return EMSGSIZE;
-
- snprintf(name, sizeof(name), "%s@%s", service, proxy ? conn->proxy.name :
- conn->host.name);
-
- token.value = (void *) name;
- major_status = gss_import_name(&minor_status,
- &token,
- GSS_C_NT_HOSTBASED_SERVICE,
- server);
-
- return GSS_ERROR(major_status) ? -1 : 0;
-}
-
-/* returning zero (0) means success, everything else is treated as "failure"
- with no care exactly what the failure was */
-int Curl_input_negotiate(struct connectdata *conn, bool proxy,
- const char *header)
+CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
+ const char *header)
{
struct SessionHandle *data = conn->data;
struct negotiatedata *neg_ctx = proxy?&data->state.proxyneg:
&data->state.negotiate;
OM_uint32 major_status, minor_status, discard_st;
+ gss_buffer_desc spn_token = GSS_C_EMPTY_BUFFER;
gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
- int ret;
size_t len;
size_t rawlen = 0;
CURLcode result;
@@ -92,12 +57,36 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
* rejected it (since we're again here). Exit with an error since we
* can't invent anything better */
Curl_cleanup_negotiate(data);
- return -1;
+ return CURLE_LOGIN_DENIED;
}
- if(neg_ctx->server_name == NULL &&
- (ret = get_gss_name(conn, proxy, &neg_ctx->server_name)))
- return ret;
+ if(!neg_ctx->server_name) {
+ /* Generate our SPN */
+ char *spn = Curl_sasl_build_gssapi_spn(
+ proxy ? data->set.str[STRING_PROXY_SERVICE_NAME] :
+ data->set.str[STRING_SERVICE_NAME],
+ proxy ? conn->proxy.name : conn->host.name);
+ if(!spn)
+ return CURLE_OUT_OF_MEMORY;
+
+ /* Populate the SPN structure */
+ spn_token.value = spn;
+ spn_token.length = strlen(spn);
+
+ /* Import the SPN */
+ major_status = gss_import_name(&minor_status, &spn_token,
+ GSS_C_NT_HOSTBASED_SERVICE,
+ &neg_ctx->server_name);
+ if(GSS_ERROR(major_status)) {
+ Curl_gss_log_error(data, minor_status, "gss_import_name() failed: ");
+
+ free(spn);
+
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ free(spn);
+ }
header += strlen("Negotiate");
while(*header && ISSPACE(*header))
@@ -107,8 +96,15 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
if(len > 0) {
result = Curl_base64_decode(header, (unsigned char **)&input_token.value,
&rawlen);
- if(result || rawlen == 0)
- return -1;
+ if(result)
+ return result;
+
+ if(!rawlen) {
+ infof(data, "Negotiate handshake failure (empty challenge message)\n");
+
+ return CURLE_BAD_CONTENT_ENCODING;
+ }
+
input_token.length = rawlen;
DEBUGASSERT(input_token.value != NULL);
@@ -132,19 +128,19 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
gss_release_buffer(&discard_st, &output_token);
Curl_gss_log_error(conn->data, minor_status,
"gss_init_sec_context() failed: ");
- return -1;
+ return CURLE_OUT_OF_MEMORY;
}
if(!output_token.value || !output_token.length) {
if(output_token.value)
gss_release_buffer(&discard_st, &output_token);
- return -1;
+ return CURLE_OUT_OF_MEMORY;
}
neg_ctx->output_token = output_token;
- return 0;
-}
+ return CURLE_OK;
+}
CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
{
@@ -185,7 +181,7 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
conn->allocptr.userpwd = userp;
}
- Curl_safefree(encoded);
+ free(encoded);
return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
}
@@ -211,6 +207,4 @@ void Curl_cleanup_negotiate(struct SessionHandle *data)
cleanup(&data->state.proxyneg);
}
-#endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */
-
-#endif /* HAVE_GSSAPI */
+#endif /* HAVE_GSSAPI && !CURL_DISABLE_HTTP && USE_SPNEGO */
diff --git a/lib/http_negotiate.h b/lib/http_negotiate.h
index f7efe8cdd..a8eb98016 100644
--- a/lib/http_negotiate.h
+++ b/lib/http_negotiate.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -25,8 +25,8 @@
#ifdef USE_SPNEGO
/* this is for Negotiate header input */
-int Curl_input_negotiate(struct connectdata *conn, bool proxy,
- const char *header);
+CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
+ const char *header);
/* this is for creating Negotiate header output */
CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy);
diff --git a/lib/http_negotiate_sspi.c b/lib/http_negotiate_sspi.c
index d651ac9c8..a50ea96f1 100644
--- a/lib/http_negotiate_sspi.c
+++ b/lib/http_negotiate_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -33,30 +33,27 @@
#include "curl_base64.h"
#include "curl_sasl.h"
#include "http_negotiate.h"
-#include "curl_memory.h"
#include "curl_multibyte.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
-/* returning zero (0) means success, everything else is treated as "failure"
- with no care exactly what the failure was */
-int Curl_input_negotiate(struct connectdata *conn, bool proxy,
- const char *header)
+CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
+ const char *header)
{
+ struct SessionHandle *data = conn->data;
BYTE *input_token = NULL;
SecBufferDesc out_buff_desc;
SecBuffer out_sec_buff;
SecBufferDesc in_buff_desc;
SecBuffer in_sec_buff;
- unsigned long context_attributes;
- TimeStamp expiry;
- int ret;
+ SECURITY_STATUS status;
+ unsigned long attrs;
+ TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
size_t len = 0, input_token_len = 0;
- CURLcode error;
+ CURLcode result;
/* Point to the username and password */
const char *userp;
@@ -68,12 +65,12 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
if(proxy) {
userp = conn->proxyuser;
passwdp = conn->proxypasswd;
- neg_ctx = &conn->data->state.proxyneg;
+ neg_ctx = &data->state.proxyneg;
}
else {
userp = conn->user;
passwdp = conn->passwd;
- neg_ctx = &conn->data->state.negotiate;
+ neg_ctx = &data->state.negotiate;
}
/* Not set means empty */
@@ -87,29 +84,31 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
/* We finished successfully our part of authentication, but server
* rejected it (since we're again here). Exit with an error since we
* can't invent anything better */
- Curl_cleanup_negotiate(conn->data);
- return -1;
+ Curl_cleanup_negotiate(data);
+ return CURLE_LOGIN_DENIED;
}
if(!neg_ctx->server_name) {
/* Check proxy auth requested but no given proxy name */
if(proxy && !conn->proxy.name)
- return -1;
+ return CURLE_BAD_FUNCTION_ARGUMENT;
/* Generate our SPN */
- neg_ctx->server_name = Curl_sasl_build_spn("HTTP",
- proxy ? conn->proxy.name :
- conn->host.name);
+ neg_ctx->server_name = Curl_sasl_build_spn(
+ proxy ? data->set.str[STRING_PROXY_SERVICE_NAME] :
+ data->set.str[STRING_SERVICE_NAME],
+ proxy ? conn->proxy.name : conn->host.name);
if(!neg_ctx->server_name)
- return -1;
+ return CURLE_OUT_OF_MEMORY;
}
if(!neg_ctx->output_token) {
PSecPkgInfo SecurityPackage;
- ret = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NEGOTIATE),
- &SecurityPackage);
- if(ret != SEC_E_OK)
- return -1;
+ status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *)
+ TEXT(SP_NAME_NEGOTIATE),
+ &SecurityPackage);
+ if(status != SEC_E_OK)
+ return CURLE_NOT_BUILT_IN;
/* Allocate input and output buffers according to the max token size
as indicated by the security package */
@@ -129,7 +128,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
if(neg_ctx->context) {
/* The server rejected our authentication and hasn't suppled any more
negotiation mechanisms */
- return -1;
+ return CURLE_LOGIN_DENIED;
}
/* We have to acquire credentials and allocate memory for the context */
@@ -137,13 +136,13 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
neg_ctx->context = malloc(sizeof(CtxtHandle));
if(!neg_ctx->credentials || !neg_ctx->context)
- return -1;
+ return CURLE_OUT_OF_MEMORY;
if(userp && *userp) {
/* Populate our identity structure */
- error = Curl_create_sspi_identity(userp, passwdp, &neg_ctx->identity);
- if(error)
- return -1;
+ result = Curl_create_sspi_identity(userp, passwdp, &neg_ctx->identity);
+ if(result)
+ return result;
/* Allow proper cleanup of the identity structure */
neg_ctx->p_identity = &neg_ctx->identity;
@@ -160,14 +159,21 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
neg_ctx->p_identity, NULL, NULL,
neg_ctx->credentials, &expiry);
if(neg_ctx->status != SEC_E_OK)
- return -1;
+ return CURLE_LOGIN_DENIED;
}
else {
- error = Curl_base64_decode(header,
- (unsigned char **)&input_token,
- &input_token_len);
- if(error || !input_token_len)
- return -1;
+ result = Curl_base64_decode(header,
+ (unsigned char **)&input_token,
+ &input_token_len);
+ if(result)
+ return result;
+
+ if(!input_token_len) {
+ infof(data,
+ "Negotiate handshake failure (empty challenge message)\n");
+
+ return CURLE_BAD_CONTENT_ENCODING;
+ }
}
/* Setup the "output" security buffer */
@@ -200,28 +206,27 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
0,
neg_ctx->context,
&out_buff_desc,
- &context_attributes,
+ &attrs,
&expiry);
- Curl_safefree(input_token);
+ free(input_token);
if(GSS_ERROR(neg_ctx->status))
- return -1;
+ return CURLE_OUT_OF_MEMORY;
if(neg_ctx->status == SEC_I_COMPLETE_NEEDED ||
neg_ctx->status == SEC_I_COMPLETE_AND_CONTINUE) {
neg_ctx->status = s_pSecFn->CompleteAuthToken(neg_ctx->context,
&out_buff_desc);
if(GSS_ERROR(neg_ctx->status))
- return -1;
+ return CURLE_RECV_ERROR;
}
neg_ctx->output_token_length = out_sec_buff.cbBuffer;
- return 0;
+ return CURLE_OK;
}
-
CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
{
struct negotiatedata *neg_ctx = proxy?&conn->data->state.proxyneg:
diff --git a/lib/http_proxy.c b/lib/http_proxy.c
index 72123ed99..4373d6284 100644
--- a/lib/http_proxy.c
+++ b/lib/http_proxy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -35,10 +35,7 @@
#include "progress.h"
#include "non-ascii.h"
#include "connect.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curlx.h"
#include "curl_memory.h"
@@ -71,10 +68,11 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
conn->data->req.protop = &http_proxy;
connkeep(conn, "HTTP proxy CONNECT");
result = Curl_proxyCONNECT(conn, FIRSTSOCKET,
- conn->host.name, conn->remote_port);
+ conn->host.name, conn->remote_port, FALSE);
conn->data->req.protop = prot_save;
if(CURLE_OK != result)
return result;
+ Curl_safefree(conn->allocptr.proxyuserpwd);
#else
return CURLE_NOT_BUILT_IN;
#endif
@@ -87,12 +85,16 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
* Curl_proxyCONNECT() requires that we're connected to a HTTP proxy. This
* function will issue the necessary commands to get a seamless tunnel through
* this proxy. After that, the socket can be used just as a normal socket.
+ *
+ * 'blocking' set to TRUE means that this function will do the entire CONNECT
+ * + response in a blocking fashion. Should be avoided!
*/
CURLcode Curl_proxyCONNECT(struct connectdata *conn,
int sockindex,
const char *hostname,
- int remote_port)
+ int remote_port,
+ bool blocking)
{
int subversion=0;
struct SessionHandle *data=conn->data;
@@ -123,13 +125,11 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
infof(data, "Establish HTTP proxy tunnel to %s:%hu\n",
hostname, remote_port);
- if(data->req.newurl) {
/* This only happens if we've looped here due to authentication
reasons, and we don't really use the newly cloned URL here
then. Just free() it. */
- free(data->req.newurl);
- data->req.newurl = NULL;
- }
+ free(data->req.newurl);
+ data->req.newurl = NULL;
/* initialize a dynamic send-buffer */
req_buffer = Curl_add_buffer_init();
@@ -139,7 +139,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
host_port = aprintf("%s:%hu", hostname, remote_port);
if(!host_port) {
- free(req_buffer);
+ Curl_add_buffer_free(req_buffer);
return CURLE_OUT_OF_MEMORY;
}
@@ -159,7 +159,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
hostname, conn->bits.ipv6_ip?"]":"",
remote_port);
if(!hostheader) {
- free(req_buffer);
+ Curl_add_buffer_free(req_buffer);
return CURLE_OUT_OF_MEMORY;
}
@@ -167,7 +167,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
host = aprintf("Host: %s\r\n", hostheader);
if(!host) {
free(hostheader);
- free(req_buffer);
+ Curl_add_buffer_free(req_buffer);
return CURLE_OUT_OF_MEMORY;
}
}
@@ -216,7 +216,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
failf(data, "Failed sending CONNECT to proxy");
}
- Curl_safefree(req_buffer);
+ Curl_add_buffer_free(req_buffer);
if(result)
return result;
@@ -229,12 +229,14 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
return CURLE_RECV_ERROR;
}
- if(0 == Curl_socket_ready(tunnelsocket, CURL_SOCKET_BAD, 0))
- /* return so we'll be called again polling-style */
- return CURLE_OK;
- else {
- DEBUGF(infof(data,
- "Read response immediately from proxy CONNECT\n"));
+ if(!blocking) {
+ if(0 == Curl_socket_ready(tunnelsocket, CURL_SOCKET_BAD, 0))
+ /* return so we'll be called again polling-style */
+ return CURLE_OK;
+ else {
+ DEBUGF(infof(data,
+ "Read response immediately from proxy CONNECT\n"));
+ }
}
/* at this point, the tunnel_connecting phase is over. */
@@ -285,7 +287,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
/* proxy auth was requested and there was proxy auth available,
then deem this as "mere" proxy disconnect */
conn->bits.proxy_connect_closed = TRUE;
- infof(data, "Proxy CONNECT connection closed");
+ infof(data, "Proxy CONNECT connection closed\n");
}
else {
error = SELECT_ERROR;
@@ -467,7 +469,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
result = Curl_http_input_auth(conn, proxy, auth);
- Curl_safefree(auth);
+ free(auth);
if(result)
return result;
@@ -554,11 +556,8 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
infof(data, "Connect me again please\n");
}
else {
- if(data->req.newurl) {
- /* this won't be used anymore for the CONNECT so free it now */
- free(data->req.newurl);
- data->req.newurl = NULL;
- }
+ free(data->req.newurl);
+ data->req.newurl = NULL;
/* failure, close this connection to avoid re-use */
connclose(conn, "proxy CONNECT failure");
Curl_closesocket(conn, conn->sock[sockindex]);
diff --git a/lib/http_proxy.h b/lib/http_proxy.h
index 2b5e9c9b4..9c4f0207d 100644
--- a/lib/http_proxy.h
+++ b/lib/http_proxy.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -26,7 +26,8 @@
/* ftp can use this as well */
CURLcode Curl_proxyCONNECT(struct connectdata *conn,
int tunnelsocket,
- const char *hostname, int remote_port);
+ const char *hostname, int remote_port,
+ bool blocking);
/* Default proxy timeout in milliseconds */
#define PROXY_TIMEOUT (3600*1000)
@@ -34,7 +35,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
CURLcode Curl_proxy_connect(struct connectdata *conn);
#else
-#define Curl_proxyCONNECT(x,y,z,w) CURLE_NOT_BUILT_IN
+#define Curl_proxyCONNECT(x,y,z,w,v) CURLE_NOT_BUILT_IN
#define Curl_proxy_connect(x) CURLE_OK
#endif
diff --git a/lib/if2ip.c b/lib/if2ip.c
index 389feed1c..6e6f9692e 100644
--- a/lib/if2ip.c
+++ b/lib/if2ip.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -53,9 +53,7 @@
#include "inet_ntop.h"
#include "strequal.h"
#include "if2ip.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
diff --git a/lib/imap.c b/lib/imap.c
index 767ac804b..e6d83f2cf 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -80,9 +80,7 @@
#include "rawstr.h"
#include "curl_sasl.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -105,10 +103,12 @@ static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...);
static CURLcode imap_parse_url_options(struct connectdata *conn);
static CURLcode imap_parse_url_path(struct connectdata *conn);
static CURLcode imap_parse_custom_request(struct connectdata *conn);
-static CURLcode imap_calc_sasl_details(struct connectdata *conn,
- const char **mech,
- char **initresp, size_t *len,
- imapstate *state1, imapstate *state2);
+static CURLcode imap_perform_authenticate(struct connectdata *conn,
+ const char *mech,
+ const char *initresp);
+static CURLcode imap_continue_authenticate(struct connectdata *conn,
+ const char *resp);
+static void imap_get_message(char *buffer, char** outptr);
/*
* IMAP protocol handler.
@@ -131,7 +131,7 @@ const struct Curl_handler Curl_handler_imap = {
ZERO_NULL, /* readwrite */
PORT_IMAP, /* defport */
CURLPROTO_IMAP, /* protocol */
- PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD /* flags */
+ PROTOPT_CLOSEACTION /* flags */
};
#ifdef USE_SSL
@@ -156,8 +156,7 @@ const struct Curl_handler Curl_handler_imaps = {
ZERO_NULL, /* readwrite */
PORT_IMAPS, /* defport */
CURLPROTO_IMAPS, /* protocol */
- PROTOPT_CLOSEACTION | PROTOPT_SSL |
- PROTOPT_NEEDSPWD /* flags */
+ PROTOPT_CLOSEACTION | PROTOPT_SSL /* flags */
};
#endif
@@ -213,6 +212,18 @@ static const struct Curl_handler Curl_handler_imaps_proxy = {
#endif
#endif
+/* SASL parameters for the imap protocol */
+static const struct SASLproto saslimap = {
+ "imap", /* The service name */
+ '+', /* Code received when continuation is expected */
+ 'O', /* Code to receive upon authentication success */
+ 0, /* Maximum initial response length (no max) */
+ imap_perform_authenticate, /* Send authentication command */
+ imap_continue_authenticate, /* Send authentication continuation */
+ imap_get_message /* Get SASL response message */
+};
+
+
#ifdef USE_SSL
static void imap_to_imaps(struct connectdata *conn)
{
@@ -353,16 +364,7 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
(len >= 2 && !memcmp("+ ", line, 2))) {
switch(imapc->state) {
/* States which are interested in continuation responses */
- case IMAP_AUTHENTICATE_PLAIN:
- case IMAP_AUTHENTICATE_LOGIN:
- case IMAP_AUTHENTICATE_LOGIN_PASSWD:
- case IMAP_AUTHENTICATE_CRAMMD5:
- case IMAP_AUTHENTICATE_DIGESTMD5:
- case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
- case IMAP_AUTHENTICATE_NTLM:
- case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
- case IMAP_AUTHENTICATE_XOAUTH2:
- case IMAP_AUTHENTICATE_FINAL:
+ case IMAP_AUTHENTICATE:
case IMAP_APPEND:
*resp = '+';
break;
@@ -425,20 +427,7 @@ static void state(struct connectdata *conn, imapstate newstate)
"CAPABILITY",
"STARTTLS",
"UPGRADETLS",
- "AUTHENTICATE_PLAIN",
- "AUTHENTICATE_LOGIN",
- "AUTHENTICATE_LOGIN_PASSWD",
- "AUTHENTICATE_CRAMMD5",
- "AUTHENTICATE_DIGESTMD5",
- "AUTHENTICATE_DIGESTMD5_RESP",
- "AUTHENTICATE_NTLM",
- "AUTHENTICATE_NTLM_TYPE2MSG",
- "AUTHENTICATE_GSSAPI",
- "AUTHENTICATE_GSSAPI_TOKEN",
- "AUTHENTICATE_GSSAPI_NO_DATA",
- "AUTHENTICATE_XOAUTH2",
- "AUTHENTICATE_CANCEL",
- "AUTHENTICATE_FINAL",
+ "AUTHENTICATE",
"LOGIN",
"LIST",
"SELECT",
@@ -471,9 +460,9 @@ static CURLcode imap_perform_capability(struct connectdata *conn)
CURLcode result = CURLE_OK;
struct imap_conn *imapc = &conn->proto.imapc;
- imapc->authmechs = 0; /* No known authentication mechanisms yet */
- imapc->authused = 0; /* Clear the authentication mechanism used */
- imapc->tls_supported = FALSE; /* Clear the TLS capability */
+ imapc->sasl.authmechs = SASL_AUTH_NONE; /* No known auth. mechanisms yet */
+ imapc->sasl.authused = SASL_AUTH_NONE; /* Clear the auth. mechanism used */
+ imapc->tls_supported = FALSE; /* Clear the TLS capability */
/* Send the CAPABILITY command */
result = imap_sendf(conn, "CAPABILITY");
@@ -558,8 +547,8 @@ static CURLcode imap_perform_login(struct connectdata *conn)
result = imap_sendf(conn, "LOGIN %s %s", user ? user : "",
passwd ? passwd : "");
- Curl_safefree(user);
- Curl_safefree(passwd);
+ free(user);
+ free(passwd);
if(!result)
state(conn, IMAP_LOGIN);
@@ -576,24 +565,17 @@ static CURLcode imap_perform_login(struct connectdata *conn)
*/
static CURLcode imap_perform_authenticate(struct connectdata *conn,
const char *mech,
- const char *initresp,
- imapstate state1, imapstate state2)
+ const char *initresp)
{
CURLcode result = CURLE_OK;
if(initresp) {
/* Send the AUTHENTICATE command with the initial response */
result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);
-
- if(!result)
- state(conn, state2);
}
else {
/* Send the AUTHENTICATE command */
result = imap_sendf(conn, "AUTHENTICATE %s", mech);
-
- if(!result)
- state(conn, state1);
}
return result;
@@ -601,6 +583,20 @@ static CURLcode imap_perform_authenticate(struct connectdata *conn,
/***********************************************************************
*
+ * imap_continue_authenticate()
+ *
+ * Sends SASL continuation data or cancellation.
+ */
+static CURLcode imap_continue_authenticate(struct connectdata *conn,
+ const char *resp)
+{
+ struct imap_conn *imapc = &conn->proto.imapc;
+
+ return Curl_pp_sendf(&imapc->pp, "%s", resp);
+}
+
+/***********************************************************************
+ *
* imap_perform_authentication()
*
* Initiates the authentication sequence, with the appropriate SASL
@@ -611,31 +607,22 @@ static CURLcode imap_perform_authentication(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
struct imap_conn *imapc = &conn->proto.imapc;
- const char *mech = NULL;
- char *initresp = NULL;
- size_t len = 0;
- imapstate state1 = IMAP_STOP;
- imapstate state2 = IMAP_STOP;
+ saslprogress progress;
- /* Check we have a username and password to authenticate with and end the
+ /* Check we have enough data to authenticate with and end the
connect phase if we don't */
- if(!conn->bits.user_passwd) {
+ if(!Curl_sasl_can_authenticate(&imapc->sasl, conn)) {
state(conn, IMAP_STOP);
-
return result;
}
/* Calculate the SASL login details */
- result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
- &state2);
+ result = Curl_sasl_start(&imapc->sasl, conn, imapc->ir_supported, &progress);
if(!result) {
- if(mech && (imapc->preftype & IMAP_TYPE_SASL)) {
- /* Perform SASL based authentication */
- result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
- }
- else if((!imapc->login_disabled) &&
- (imapc->preftype & IMAP_TYPE_CLEARTEXT))
+ if(progress == SASL_INPROGRESS)
+ state(conn, IMAP_AUTHENTICATE);
+ else if(!imapc->login_disabled && (imapc->preftype & IMAP_TYPE_CLEARTEXT))
/* Perform clear text authentication */
result = imap_perform_login(conn);
else {
@@ -645,8 +632,6 @@ static CURLcode imap_perform_authentication(struct connectdata *conn)
}
}
- Curl_safefree(initresp);
-
return result;
}
@@ -676,7 +661,7 @@ static CURLcode imap_perform_list(struct connectdata *conn)
/* Send the LIST command */
result = imap_sendf(conn, "LIST \"%s\" *", mailbox);
- Curl_safefree(mailbox);
+ free(mailbox);
}
if(!result)
@@ -717,7 +702,7 @@ static CURLcode imap_perform_select(struct connectdata *conn)
/* Send the SELECT command */
result = imap_sendf(conn, "SELECT %s", mailbox);
- Curl_safefree(mailbox);
+ free(mailbox);
if(!result)
state(conn, IMAP_SELECT);
@@ -792,7 +777,7 @@ static CURLcode imap_perform_append(struct connectdata *conn)
result = imap_sendf(conn, "APPEND %s (\\Seen) {%" CURL_FORMAT_CURL_OFF_T "}",
mailbox, conn->data->state.infilesize);
- Curl_safefree(mailbox);
+ free(mailbox);
if(!result)
state(conn, IMAP_APPEND);
@@ -914,26 +899,16 @@ static CURLcode imap_state_capability_resp(struct connectdata *conn,
/* Do we have a SASL based authentication mechanism? */
else if(wordlen > 5 && !memcmp(line, "AUTH=", 5)) {
+ size_t llen;
+ unsigned int mechbit;
+
line += 5;
wordlen -= 5;
/* Test the word for a matching authentication mechanism */
- if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
- imapc->authmechs |= SASL_MECH_LOGIN;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
- imapc->authmechs |= SASL_MECH_PLAIN;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
- imapc->authmechs |= SASL_MECH_CRAM_MD5;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
- imapc->authmechs |= SASL_MECH_DIGEST_MD5;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
- imapc->authmechs |= SASL_MECH_GSSAPI;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
- imapc->authmechs |= SASL_MECH_EXTERNAL;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
- imapc->authmechs |= SASL_MECH_NTLM;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
- imapc->authmechs |= SASL_MECH_XOAUTH2;
+ if((mechbit = Curl_sasl_decode_mech(line, wordlen, &llen)) &&
+ llen == wordlen)
+ imapc->sasl.authmechs |= mechbit;
}
line += wordlen;
@@ -986,569 +961,36 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
return result;
}
-/* For AUTHENTICATE PLAIN (without initial response) responses */
-static CURLcode imap_state_auth_plain_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *plainauth = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied. %c", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the authorisation message */
- result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
- &plainauth, &len);
- if(!result && plainauth) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", plainauth);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
- }
- }
-
- Curl_safefree(plainauth);
-
- return result;
-}
-
-/* For AUTHENTICATE LOGIN (without initial response) responses */
-static CURLcode imap_state_auth_login_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *authuser = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the user message */
- result = Curl_sasl_create_login_message(data, conn->user,
- &authuser, &len);
- if(!result && authuser) {
- /* Send the user */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authuser);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_LOGIN_PASSWD);
- }
- }
-
- Curl_safefree(authuser);
-
- return result;
-}
-
-/* For AUTHENTICATE LOGIN user entry responses */
-static CURLcode imap_state_auth_login_password_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *authpasswd = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the password message */
- result = Curl_sasl_create_login_message(data, conn->passwd,
- &authpasswd, &len);
- if(!result && authpasswd) {
- /* Send the password */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authpasswd);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
- }
- }
-
- Curl_safefree(authpasswd);
-
- return result;
-}
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* For AUTHENTICATE CRAM-MD5 responses */
-static CURLcode imap_state_auth_cram_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlg = NULL;
- char *chlg64 = NULL;
- char *rplyb64 = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- return CURLE_LOGIN_DENIED;
- }
-
- /* Get the challenge message */
- imap_get_message(data->state.buffer, &chlg64);
-
- /* Decode the challenge message */
- result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
- if(result) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_CANCEL);
- }
- else {
- /* Create the response message */
- result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
- conn->passwd, &rplyb64, &len);
- if(!result && rplyb64) {
- /* Send the response */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
- }
- }
-
- Curl_safefree(chlg);
- Curl_safefree(rplyb64);
-
- return result;
-}
-
-/* For AUTHENTICATE DIGEST-MD5 challenge responses */
-static CURLcode imap_state_auth_digest_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlg64 = NULL;
- char *rplyb64 = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- return CURLE_LOGIN_DENIED;
- }
-
- /* Get the challenge message */
- imap_get_message(data->state.buffer, &chlg64);
-
- /* Create the response message */
- result = Curl_sasl_create_digest_md5_message(data, chlg64,
- conn->user, conn->passwd,
- "imap", &rplyb64, &len);
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_CANCEL);
- }
- }
- else {
- /* Send the response */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_DIGESTMD5_RESP);
- }
-
- Curl_safefree(rplyb64);
-
- return result;
-}
-
-/* For AUTHENTICATE DIGEST-MD5 challenge-response responses */
-static CURLcode imap_state_auth_digest_resp_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Authentication failed: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Send an empty response */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "");
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
- }
-
- return result;
-}
-#endif
-
-#ifdef USE_NTLM
-/* For AUTHENTICATE NTLM (without initial response) responses */
-static CURLcode imap_state_auth_ntlm_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *type1msg = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the type-1 message */
- result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
- &conn->ntlm,
- &type1msg, &len);
- if(!result && type1msg) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type1msg);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_NTLM_TYPE2MSG);
- }
- }
-
- Curl_safefree(type1msg);
-
- return result;
-}
-
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *type2msg = NULL;
- char *type3msg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- imap_get_message(data->state.buffer, &type2msg);
-
- /* Decode the type-2 message */
- result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
- if(result) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_CANCEL);
- }
- else {
- /* Create the type-3 message */
- result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
- conn->passwd, &conn->ntlm,
- &type3msg, &len);
- if(!result && type3msg) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type3msg);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
- }
- }
- }
-
- Curl_safefree(type3msg);
-
- return result;
-}
-#endif
-
-#if defined(USE_KERBEROS5)
-/* For AUTHENTICATE GSSAPI (without initial response) responses */
-static CURLcode imap_state_auth_gssapi_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct imap_conn *imapc = &conn->proto.imapc;
- size_t len = 0;
- char *respmsg = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the initial response message */
- result = Curl_sasl_create_gssapi_user_message(data, conn->user,
- conn->passwd, "imap",
- imapc->mutual_auth,
- NULL, &conn->krb5,
- &respmsg, &len);
- if(!result && respmsg) {
- /* Send the message */
- result = Curl_pp_sendf(&imapc->pp, "%s", respmsg);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_GSSAPI_TOKEN);
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-
-/* For AUTHENTICATE GSSAPI user token responses */
-static CURLcode imap_state_auth_gssapi_token_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
+/* For SASL authentication responses */
+static CURLcode imap_state_auth_resp(struct connectdata *conn,
+ int imapcode,
+ imapstate instate)
{
CURLcode result = CURLE_OK;
struct SessionHandle *data = conn->data;
struct imap_conn *imapc = &conn->proto.imapc;
- char *chlgmsg = NULL;
- char *respmsg = NULL;
- size_t len = 0;
+ saslprogress progress;
(void)instate; /* no use for this yet */
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- imap_get_message(data->state.buffer, &chlgmsg);
-
- if(imapc->mutual_auth)
- /* Decode the user token challenge and create the optional response
- message */
- result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
- imapc->mutual_auth,
- chlgmsg, &conn->krb5,
- &respmsg, &len);
- else
- /* Decode the security challenge and create the response message */
- result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
- &conn->krb5,
- &respmsg, &len);
-
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&imapc->pp, "%s", "*");
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_CANCEL);
- }
- }
- else {
- /* Send the response */
- if(respmsg)
- result = Curl_pp_sendf(&imapc->pp, "%s", respmsg);
- else
- result = Curl_pp_sendf(&imapc->pp, "%s", "");
-
- if(!result)
- state(conn, (imapc->mutual_auth ? IMAP_AUTHENTICATE_GSSAPI_NO_DATA :
- IMAP_AUTHENTICATE_FINAL));
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-
-/* For AUTHENTICATE GSSAPI no data responses */
-static CURLcode imap_state_auth_gssapi_no_data_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlgmsg = NULL;
- char *respmsg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- imap_get_message(data->state.buffer, &chlgmsg);
-
- /* Decode the security challenge and create the response message */
- result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
- &conn->krb5,
- &respmsg, &len);
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_CANCEL);
- }
- }
- else {
- /* Send the response */
- if(respmsg) {
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", respmsg);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
+ result = Curl_sasl_continue(&imapc->sasl, conn, imapcode, &progress);
+ if(!result)
+ switch(progress) {
+ case SASL_DONE:
+ state(conn, IMAP_STOP); /* Authenticated */
+ break;
+ case SASL_IDLE: /* No mechanism left after cancellation */
+ if((!imapc->login_disabled) && (imapc->preftype & IMAP_TYPE_CLEARTEXT))
+ /* Perform clear text authentication */
+ result = imap_perform_login(conn);
+ else {
+ failf(data, "Authentication cancelled");
+ result = CURLE_LOGIN_DENIED;
}
+ break;
+ default:
+ break;
}
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-#endif
-
-/* For AUTHENTICATE XOAUTH2 (without initial response) responses */
-static CURLcode imap_state_auth_xoauth2_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *xoauth = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != '+') {
- failf(data, "Access denied: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the authorisation message */
- result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
- conn->xoauth2_bearer,
- &xoauth, &len);
- if(!result && xoauth) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", xoauth);
-
- if(!result)
- state(conn, IMAP_AUTHENTICATE_FINAL);
- }
- }
-
- Curl_safefree(xoauth);
-
- return result;
-}
-
-/* For AUTHENTICATE cancellation responses */
-static CURLcode imap_state_auth_cancel_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct imap_conn *imapc = &conn->proto.imapc;
- const char *mech = NULL;
- char *initresp = NULL;
- size_t len = 0;
- imapstate state1 = IMAP_STOP;
- imapstate state2 = IMAP_STOP;
-
- (void)imapcode;
- (void)instate; /* no use for this yet */
-
- /* Remove the offending mechanism from the supported list */
- imapc->authmechs ^= imapc->authused;
-
- /* Calculate alternative SASL login details */
- result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
- &state2);
-
- if(!result) {
- /* Do we have any mechanisms left or can we fallback to clear text? */
- if(mech) {
- /* Retry SASL based authentication */
- result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
-
- Curl_safefree(initresp);
- }
- else if((!imapc->login_disabled) &&
- (imapc->preftype & IMAP_TYPE_CLEARTEXT))
- /* Perform clear text authentication */
- result = imap_perform_login(conn);
- else {
- failf(data, "Authentication cancelled");
-
- result = CURLE_LOGIN_DENIED;
- }
- }
-
- return result;
-}
-
-/* For final responses in the AUTHENTICATE sequence */
-static CURLcode imap_state_auth_final_resp(struct connectdata *conn,
- int imapcode,
- imapstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
-
- (void)instate; /* no use for this yet */
-
- if(imapcode != 'O') {
- failf(data, "Authentication failed: %d", imapcode);
- result = CURLE_LOGIN_DENIED;
- }
- else
- /* End of connect phase */
- state(conn, IMAP_STOP);
return result;
}
@@ -1872,69 +1314,8 @@ static CURLcode imap_statemach_act(struct connectdata *conn)
result = imap_state_starttls_resp(conn, imapcode, imapc->state);
break;
- case IMAP_AUTHENTICATE_PLAIN:
- result = imap_state_auth_plain_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_LOGIN:
- result = imap_state_auth_login_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_LOGIN_PASSWD:
- result = imap_state_auth_login_password_resp(conn, imapcode,
- imapc->state);
- break;
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
- case IMAP_AUTHENTICATE_CRAMMD5:
- result = imap_state_auth_cram_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_DIGESTMD5:
- result = imap_state_auth_digest_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
- result = imap_state_auth_digest_resp_resp(conn, imapcode, imapc->state);
- break;
-#endif
-
-#ifdef USE_NTLM
- case IMAP_AUTHENTICATE_NTLM:
- result = imap_state_auth_ntlm_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
- result = imap_state_auth_ntlm_type2msg_resp(conn, imapcode,
- imapc->state);
- break;
-#endif
-
-#if defined(USE_KERBEROS5)
- case IMAP_AUTHENTICATE_GSSAPI:
- result = imap_state_auth_gssapi_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_GSSAPI_TOKEN:
- result = imap_state_auth_gssapi_token_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_GSSAPI_NO_DATA:
- result = imap_state_auth_gssapi_no_data_resp(conn, imapcode,
- imapc->state);
- break;
-#endif
-
- case IMAP_AUTHENTICATE_XOAUTH2:
- result = imap_state_auth_xoauth2_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_CANCEL:
- result = imap_state_auth_cancel_resp(conn, imapcode, imapc->state);
- break;
-
- case IMAP_AUTHENTICATE_FINAL:
- result = imap_state_auth_final_resp(conn, imapcode, imapc->state);
+ case IMAP_AUTHENTICATE:
+ result = imap_state_auth_resp(conn, imapcode, imapc->state);
break;
case IMAP_LOGIN:
@@ -2061,7 +1442,7 @@ static CURLcode imap_connect(struct connectdata *conn, bool *done)
/* Set the default preferred authentication type and mechanism */
imapc->preftype = IMAP_TYPE_ANY;
- imapc->prefmech = SASL_AUTH_ANY;
+ Curl_sasl_init(&imapc->sasl, &saslimap);
/* Initialise the pingpong layer */
Curl_pp_init(pp);
@@ -2274,7 +1655,7 @@ static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection)
Curl_pp_disconnect(&imapc->pp);
/* Cleanup the SASL module */
- Curl_sasl_cleanup(conn, imapc->authused);
+ Curl_sasl_cleanup(conn, imapc->sasl.authused);
/* Cleanup our connection based variables */
Curl_safefree(imapc->mailbox);
@@ -2419,7 +1800,7 @@ static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...)
result = Curl_pp_vsendf(&imapc->pp, taggedfmt, ap);
va_end(ap);
- Curl_safefree(taggedfmt);
+ free(taggedfmt);
return result;
}
@@ -2548,69 +1929,42 @@ static CURLcode imap_parse_url_options(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
struct imap_conn *imapc = &conn->proto.imapc;
- const char *options = conn->options;
- const char *ptr = options;
- bool reset = TRUE;
+ const char *ptr = conn->options;
+
+ imapc->sasl.resetprefs = TRUE;
- while(ptr && *ptr) {
+ while(!result && ptr && *ptr) {
const char *key = ptr;
+ const char *value;
while(*ptr && *ptr != '=')
ptr++;
- if(strnequal(key, "AUTH", 4)) {
- size_t len = 0;
- const char *value = ++ptr;
+ value = ptr + 1;
- if(reset) {
- reset = FALSE;
- imapc->preftype = IMAP_TYPE_NONE;
- imapc->prefmech = SASL_AUTH_NONE;
- }
-
- while(*ptr && *ptr != ';') {
- ptr++;
- len++;
- }
-
- if(strnequal(value, "*", len)) {
- imapc->preftype = IMAP_TYPE_ANY;
- imapc->prefmech = SASL_AUTH_ANY;
- }
- else if(strnequal(value, SASL_MECH_STRING_LOGIN, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_LOGIN;
- }
- else if(strnequal(value, SASL_MECH_STRING_PLAIN, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_PLAIN;
- }
- else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_CRAM_MD5;
- }
- else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_DIGEST_MD5;
- }
- else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_GSSAPI;
- }
- else if(strnequal(value, SASL_MECH_STRING_NTLM, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_NTLM;
- }
- else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len)) {
- imapc->preftype = IMAP_TYPE_SASL;
- imapc->prefmech |= SASL_MECH_XOAUTH2;
- }
+ while(*ptr && *ptr != ';')
+ ptr++;
- if(*ptr == ';')
- ptr++;
- }
+ if(strnequal(key, "AUTH=", 5))
+ result = Curl_sasl_parse_url_auth_option(&imapc->sasl,
+ value, ptr - value);
else
result = CURLE_URL_MALFORMAT;
+
+ if(*ptr == ';')
+ ptr++;
+ }
+
+ switch(imapc->sasl.prefmech) {
+ case SASL_AUTH_NONE:
+ imapc->preftype = IMAP_TYPE_NONE;
+ break;
+ case SASL_AUTH_DEFAULT:
+ imapc->preftype = IMAP_TYPE_ANY;
+ break;
+ default:
+ imapc->preftype = IMAP_TYPE_SASL;
+ break;
}
return result;
@@ -2677,7 +2031,7 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
/* Decode the value parameter */
result = Curl_urldecode(data, begin, ptr - begin, &value, &valuelen, TRUE);
if(result) {
- Curl_safefree(name);
+ free(name);
return result;
}
@@ -2716,14 +2070,14 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
value = NULL;
}
else {
- Curl_safefree(name);
- Curl_safefree(value);
+ free(name);
+ free(value);
return CURLE_URL_MALFORMAT;
}
- Curl_safefree(name);
- Curl_safefree(value);
+ free(name);
+ free(value);
}
/* Does the URL contain a query parameter? Only valid when we have a mailbox
@@ -2785,108 +2139,4 @@ static CURLcode imap_parse_custom_request(struct connectdata *conn)
return result;
}
-/***********************************************************************
- *
- * imap_calc_sasl_details()
- *
- * Calculate the required login details for SASL authentication.
- */
-static CURLcode imap_calc_sasl_details(struct connectdata *conn,
- const char **mech,
- char **initresp, size_t *len,
- imapstate *state1, imapstate *state2)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct imap_conn *imapc = &conn->proto.imapc;
-
- /* Calculate the supported authentication mechanism, by decreasing order of
- security, as well as the initial response where appropriate */
-#if defined(USE_KERBEROS5)
- if((imapc->authmechs & SASL_MECH_GSSAPI) &&
- (imapc->prefmech & SASL_MECH_GSSAPI)) {
- imapc->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
-
- *mech = SASL_MECH_STRING_GSSAPI;
- *state1 = IMAP_AUTHENTICATE_GSSAPI;
- *state2 = IMAP_AUTHENTICATE_GSSAPI_TOKEN;
- imapc->authused = SASL_MECH_GSSAPI;
-
- if(imapc->ir_supported || data->set.sasl_ir)
- result = Curl_sasl_create_gssapi_user_message(data, conn->user,
- conn->passwd, "imap",
- imapc->mutual_auth,
- NULL, &conn->krb5,
- initresp, len);
- }
- else
-#endif
-#ifndef CURL_DISABLE_CRYPTO_AUTH
- if((imapc->authmechs & SASL_MECH_DIGEST_MD5) &&
- (imapc->prefmech & SASL_MECH_DIGEST_MD5)) {
- *mech = SASL_MECH_STRING_DIGEST_MD5;
- *state1 = IMAP_AUTHENTICATE_DIGESTMD5;
- imapc->authused = SASL_MECH_DIGEST_MD5;
- }
- else if((imapc->authmechs & SASL_MECH_CRAM_MD5) &&
- (imapc->prefmech & SASL_MECH_CRAM_MD5)) {
- *mech = SASL_MECH_STRING_CRAM_MD5;
- *state1 = IMAP_AUTHENTICATE_CRAMMD5;
- imapc->authused = SASL_MECH_CRAM_MD5;
- }
- else
-#endif
-#ifdef USE_NTLM
- if((imapc->authmechs & SASL_MECH_NTLM) &&
- (imapc->prefmech & SASL_MECH_NTLM)) {
- *mech = SASL_MECH_STRING_NTLM;
- *state1 = IMAP_AUTHENTICATE_NTLM;
- *state2 = IMAP_AUTHENTICATE_NTLM_TYPE2MSG;
- imapc->authused = SASL_MECH_NTLM;
-
- if(imapc->ir_supported || data->set.sasl_ir)
- result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
- &conn->ntlm,
- initresp, len);
- }
- else
-#endif
- if(((imapc->authmechs & SASL_MECH_XOAUTH2) &&
- (imapc->prefmech & SASL_MECH_XOAUTH2) &&
- (imapc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
- *mech = SASL_MECH_STRING_XOAUTH2;
- *state1 = IMAP_AUTHENTICATE_XOAUTH2;
- *state2 = IMAP_AUTHENTICATE_FINAL;
- imapc->authused = SASL_MECH_XOAUTH2;
-
- if(imapc->ir_supported || data->set.sasl_ir)
- result = Curl_sasl_create_xoauth2_message(data, conn->user,
- conn->xoauth2_bearer,
- initresp, len);
- }
- else if((imapc->authmechs & SASL_MECH_LOGIN) &&
- (imapc->prefmech & SASL_MECH_LOGIN)) {
- *mech = SASL_MECH_STRING_LOGIN;
- *state1 = IMAP_AUTHENTICATE_LOGIN;
- *state2 = IMAP_AUTHENTICATE_LOGIN_PASSWD;
- imapc->authused = SASL_MECH_LOGIN;
-
- if(imapc->ir_supported || data->set.sasl_ir)
- result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
- }
- else if((imapc->authmechs & SASL_MECH_PLAIN) &&
- (imapc->prefmech & SASL_MECH_PLAIN)) {
- *mech = SASL_MECH_STRING_PLAIN;
- *state1 = IMAP_AUTHENTICATE_PLAIN;
- *state2 = IMAP_AUTHENTICATE_FINAL;
- imapc->authused = SASL_MECH_PLAIN;
-
- if(imapc->ir_supported || data->set.sasl_ir)
- result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
- initresp, len);
- }
-
- return result;
-}
-
#endif /* CURL_DISABLE_IMAP */
diff --git a/lib/imap.h b/lib/imap.h
index 768fc4b8c..3189daa3c 100644
--- a/lib/imap.h
+++ b/lib/imap.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2015, 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
@@ -23,6 +23,7 @@
***************************************************************************/
#include "pingpong.h"
+#include "curl_sasl.h"
/****************************************************************************
* IMAP unique setup
@@ -35,20 +36,7 @@ typedef enum {
IMAP_STARTTLS,
IMAP_UPGRADETLS, /* asynchronously upgrade the connection to SSL/TLS
(multi mode only) */
- IMAP_AUTHENTICATE_PLAIN,
- IMAP_AUTHENTICATE_LOGIN,
- IMAP_AUTHENTICATE_LOGIN_PASSWD,
- IMAP_AUTHENTICATE_CRAMMD5,
- IMAP_AUTHENTICATE_DIGESTMD5,
- IMAP_AUTHENTICATE_DIGESTMD5_RESP,
- IMAP_AUTHENTICATE_NTLM,
- IMAP_AUTHENTICATE_NTLM_TYPE2MSG,
- IMAP_AUTHENTICATE_GSSAPI,
- IMAP_AUTHENTICATE_GSSAPI_TOKEN,
- IMAP_AUTHENTICATE_GSSAPI_NO_DATA,
- IMAP_AUTHENTICATE_XOAUTH2,
- IMAP_AUTHENTICATE_CANCEL,
- IMAP_AUTHENTICATE_FINAL,
+ IMAP_AUTHENTICATE,
IMAP_LOGIN,
IMAP_LIST,
IMAP_SELECT,
@@ -83,16 +71,13 @@ struct imap_conn {
struct pingpong pp;
imapstate state; /* Always use imap.c:state() to change state! */
bool ssldone; /* Is connect() over SSL done? */
- unsigned int authmechs; /* Accepted authentication mechanisms */
+ struct SASL sasl; /* SASL-related parameters */
unsigned int preftype; /* Preferred authentication type */
- unsigned int prefmech; /* Preferred authentication mechanism */
- unsigned int authused; /* Auth mechanism used for the connection */
int cmdid; /* Last used command ID */
char resptag[5]; /* Response tag to wait for */
bool tls_supported; /* StartTLS capability supported by server */
bool login_disabled; /* LOGIN command disabled by server */
bool ir_supported; /* Initial response supported by server */
- bool mutual_auth; /* Mutual authentication enabled (GSSAPI only) */
char *mailbox; /* The last selected mailbox */
char *mailbox_uidvalidity; /* UIDVALIDITY parsed from select response */
};
diff --git a/lib/inet_ntop.c b/lib/inet_ntop.c
index c32715005..da9a3ab43 100644
--- a/lib/inet_ntop.c
+++ b/lib/inet_ntop.c
@@ -32,8 +32,7 @@
#include <arpa/inet.h>
#endif
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "inet_ntop.h"
diff --git a/lib/inet_ntop.h b/lib/inet_ntop.h
index db28ed807..cc4bdbb89 100644
--- a/lib/inet_ntop.h
+++ b/lib/inet_ntop.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -31,7 +31,7 @@ char *Curl_inet_ntop(int af, const void *addr, char *buf, size_t size);
#include <arpa/inet.h>
#endif
#define Curl_inet_ntop(af,addr,buf,size) \
- inet_ntop(af,addr,buf,(curl_socklen_t)size)
+ inet_ntop(af, addr, buf, (curl_socklen_t)size)
#endif
#endif /* HEADER_CURL_INET_NTOP_H */
diff --git a/lib/krb5.c b/lib/krb5.c
index a0d7bb4f0..ad7dd67af 100644
--- a/lib/krb5.c
+++ b/lib/krb5.c
@@ -1,8 +1,8 @@
/* GSSAPI/krb5 support for FTP - loosely based on old krb4.c
*
- * Copyright (c) 1995, 1996, 1997, 1998, 1999, 2013 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
- * Copyright (c) 2004 - 2014 Daniel Stenberg
+ * Copyright (c) 2004 - 2015 Daniel Stenberg
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,13 +34,7 @@
#include "curl_setup.h"
-#ifndef CURL_DISABLE_FTP
-#ifdef HAVE_GSSAPI
-
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
+#if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_FTP)
#ifdef HAVE_NETDB_H
#include <netdb.h>
@@ -52,13 +46,11 @@
#include "curl_gssapi.h"
#include "sendf.h"
#include "curl_sec.h"
-#include "curl_memory.h"
#include "warnless.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#define LOCAL_ADDR (&conn->local_addr)
@@ -254,7 +246,8 @@ krb5_auth(void *app_data, struct connectdata *conn)
result = Curl_base64_encode(data, (char *)output_buffer.value,
output_buffer.length, &p, &base64_sz);
if(result) {
- Curl_infof(data,"base64-encoding: %s\n", curl_easy_strerror(result));
+ Curl_infof(data, "base64-encoding: %s\n",
+ curl_easy_strerror(result));
ret = AUTH_CONTINUE;
break;
}
@@ -286,7 +279,8 @@ krb5_auth(void *app_data, struct connectdata *conn)
(unsigned char **)&_gssresp.value,
&_gssresp.length);
if(result) {
- Curl_failf(data,"base64-decoding: %s", curl_easy_strerror(result));
+ Curl_failf(data, "base64-decoding: %s",
+ curl_easy_strerror(result));
ret = AUTH_CONTINUE;
break;
}
@@ -335,5 +329,4 @@ struct Curl_sec_client_mech Curl_krb5_client_mech = {
krb5_decode
};
-#endif /* HAVE_GSSAPI */
-#endif /* CURL_DISABLE_FTP */
+#endif /* HAVE_GSSAPI && !CURL_DISABLE_FTP */
diff --git a/lib/ldap.c b/lib/ldap.c
index f27fa9008..4d9128226 100644
--- a/lib/ldap.c
+++ b/lib/ldap.c
@@ -35,7 +35,7 @@
* OpenLDAP library versions, USE_OPENLDAP shall not be defined.
*/
-#ifdef CURL_LDAP_WIN /* Use Windows LDAP implementation. */
+#ifdef USE_WIN32_LDAP /* Use Windows LDAP implementation. */
# include <winldap.h>
# ifndef LDAP_VENDOR_NAME
# error Your Platform SDK is NOT sufficient for LDAP support! \
@@ -54,6 +54,15 @@
# endif /* HAVE_LDAP_SSL && HAVE_LDAP_SSL_H */
#endif
+/* These are macros in both <wincrypt.h> (in above <winldap.h>) and typedefs
+ * in BoringSSL's <openssl/x509.h>
+ */
+#ifdef HAVE_BORINGSSL
+# undef X509_NAME
+# undef X509_CERT_PAIR
+# undef X509_EXTENSIONS
+#endif
+
#include "urldata.h"
#include <curl/curl.h>
#include "sendf.h"
@@ -63,15 +72,14 @@
#include "strequal.h"
#include "strtok.h"
#include "curl_ldap.h"
-#include "curl_memory.h"
#include "curl_multibyte.h"
#include "curl_base64.h"
#include "rawstr.h"
#include "connect.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#ifndef HAVE_LDAP_URL_PARSE
@@ -81,7 +89,7 @@
typedef struct {
char *lud_host;
int lud_port;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
TCHAR *lud_dn;
TCHAR **lud_attrs;
#else
@@ -89,7 +97,7 @@ typedef struct {
char **lud_attrs;
#endif
int lud_scope;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
TCHAR *lud_filter;
#else
char *lud_filter;
@@ -192,9 +200,9 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
size_t val_b64_sz = 0;
curl_off_t dlsize = 0;
#ifdef LDAP_OPT_NETWORK_TIMEOUT
- struct timeval ldap_timeout = {10,0}; /* 10 sec connection/search timeout */
+ struct timeval ldap_timeout = {10, 0}; /* 10 sec connection/search timeout */
#endif
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
TCHAR *host = NULL;
TCHAR *user = NULL;
TCHAR *passwd = NULL;
@@ -226,7 +234,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
infof(data, "LDAP local: trying to establish %s connection\n",
ldap_ssl ? "encrypted" : "cleartext");
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
host = Curl_convert_UTF8_to_tchar(conn->host.name);
if(!host) {
result = CURLE_OUT_OF_MEMORY;
@@ -259,7 +267,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
if(ldap_ssl) {
#ifdef HAVE_LDAP_SSL
-#ifdef CURL_LDAP_WIN
+#ifdef USE_WIN32_LDAP
/* Win32 LDAP SDK doesn't support insecure mode without CA! */
server = ldap_sslinit(host, (int)conn->port, 1);
ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
@@ -392,7 +400,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
goto quit;
}
}
-#ifdef CURL_LDAP_WIN
+#ifdef USE_WIN32_LDAP
ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
#endif
@@ -421,7 +429,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
entryIterator;
entryIterator = ldap_next_entry(server, entryIterator), num++) {
BerElement *ber = NULL;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
TCHAR *attribute;
#else
char *attribute; /*! suspicious that this isn't 'const' */
@@ -432,7 +440,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
{
char *name;
size_t name_len;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
TCHAR *dn = ldap_get_dn(server, entryIterator);
name = Curl_convert_tchar_to_UTF8(dn);
if(!name) {
@@ -449,7 +457,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
if(result) {
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(name);
#endif
ldap_memfree(dn);
@@ -460,7 +468,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *) name,
name_len);
if(result) {
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(name);
#endif
ldap_memfree(dn);
@@ -470,7 +478,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
if(result) {
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(name);
#endif
ldap_memfree(dn);
@@ -480,7 +488,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
dlsize += name_len + 5;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(name);
#endif
ldap_memfree(dn);
@@ -492,7 +500,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
attribute = ldap_next_attribute(server, entryIterator, ber)) {
BerValue **vals;
size_t attr_len;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
char *attr = Curl_convert_tchar_to_UTF8(attribute);
if(!attr) {
if(ber)
@@ -513,7 +521,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -527,7 +535,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
(char *) attr, attr_len);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -540,7 +548,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -562,7 +570,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
&val_b64_sz);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -578,7 +586,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
free(val_b64);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -596,7 +604,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
vals[i]->bv_len);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -612,7 +620,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
if(result) {
ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -630,7 +638,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
}
/* Free the attribute as we are done with it */
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(attr);
#endif
ldap_memfree(attribute);
@@ -662,7 +670,7 @@ quit:
ldapssl_client_deinit();
#endif /* HAVE_LDAP_SSL && CURL_HAS_NOVELL_LDAPSDK */
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
Curl_unicodefree(passwd);
Curl_unicodefree(user);
Curl_unicodefree(host);
@@ -802,7 +810,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
goto quit;
}
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
/* Convert the unescaped string to a tchar */
ludp->lud_dn = Curl_convert_UTF8_to_tchar(unescaped);
@@ -840,13 +848,13 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
}
/* Allocate our array (+1 for the NULL entry) */
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
ludp->lud_attrs = calloc(count + 1, sizeof(TCHAR *));
#else
ludp->lud_attrs = calloc(count + 1, sizeof(char *));
#endif
if(!ludp->lud_attrs) {
- Curl_safefree(attributes);
+ free(attributes);
rc = LDAP_NO_MEMORY;
@@ -861,14 +869,14 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
/* Unescape the attribute */
unescaped = curl_easy_unescape(conn->data, attributes[i], 0, NULL);
if(!unescaped) {
- Curl_safefree(attributes);
+ free(attributes);
rc = LDAP_NO_MEMORY;
goto quit;
}
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
/* Convert the unescaped string to a tchar */
ludp->lud_attrs[i] = Curl_convert_UTF8_to_tchar(unescaped);
@@ -876,7 +884,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
Curl_unicodefree(unescaped);
if(!ludp->lud_attrs[i]) {
- Curl_safefree(attributes);
+ free(attributes);
rc = LDAP_NO_MEMORY;
@@ -889,7 +897,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
ludp->lud_attrs_dups++;
}
- Curl_safefree(attributes);
+ free(attributes);
}
p = q;
@@ -934,7 +942,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
goto quit;
}
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
/* Convert the unescaped string to a tchar */
ludp->lud_filter = Curl_convert_UTF8_to_tchar(unescaped);
@@ -959,7 +967,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
}
quit:
- Curl_safefree(path);
+ free(path);
return rc;
}
@@ -990,11 +998,8 @@ static void _ldap_free_urldesc (LDAPURLDesc *ludp)
if(!ludp)
return;
- if(ludp->lud_dn)
- free(ludp->lud_dn);
-
- if(ludp->lud_filter)
- free(ludp->lud_filter);
+ free(ludp->lud_dn);
+ free(ludp->lud_filter);
if(ludp->lud_attrs) {
for(i = 0; i < ludp->lud_attrs_dups; i++)
diff --git a/lib/libcurl.plist b/lib/libcurl.plist
index cb602712c..bc66d1977 100644
--- a/lib/libcurl.plist
+++ b/lib/libcurl.plist
@@ -15,7 +15,7 @@
<string>se.haxx.curl.libcurl</string>
<key>CFBundleVersion</key>
- <string>7.40.0</string>
+ <string>7.44.0</string>
<key>CFBundleName</key>
<string>libcurl</string>
@@ -27,9 +27,9 @@
<string>????</string>
<key>CFBundleShortVersionString</key>
- <string>libcurl 7.40.0</string>
+ <string>libcurl 7.44.0</string>
<key>CFBundleGetInfoString</key>
- <string>libcurl.plist 7.40.0</string>
+ <string>libcurl.plist 7.44.0</string>
</dict>
</plist>
diff --git a/lib/md4.c b/lib/md4.c
index fd0c6d4ab..60f73a28b 100644
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -1,23 +1,38 @@
-/*-
- Copyright (C) 1990-2, RSA Data Security, Inc. All rights reserved.
-
- License to copy and use this software is granted provided that it
- is identified as the "RSA Data Security, Inc. MD4 Message-Digest
- Algorithm" in all material mentioning or referencing this software
- or this function.
-
- License is also granted to make and use derivative works provided
- that such works are identified as "derived from the RSA Data
- Security, Inc. MD4 Message-Digest Algorithm" in all material
- mentioning or referencing the derived work.
-
- RSA Data Security, Inc. makes no representations concerning either
- the merchantability of this software or the suitability of this
- software for any particular purpose. It is provided "as is"
- without express or implied warranty of any kind.
-
- These notices must be retained in any copies of any part of this
- documentation and/or software.
+/*
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
+ * MD4 Message-Digest Algorithm (RFC 1320).
+ *
+ * Homepage:
+ http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4
+ *
+ * Author:
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
+ *
+ * This software was written by Alexander Peslyak in 2001. No copyright is
+ * claimed, and the software is hereby placed in the public domain. In case
+ * this attempt to disclaim copyright and place the software in the public
+ * domain is deemed null and void, then the software is Copyright (c) 2001
+ * Alexander Peslyak and it is hereby released to the general public under the
+ * following terms:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted.
+ *
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
+ *
+ * (This is a heavily cut-down "BSD license".)
+ *
+ * This differs from Colin Plumb's older public domain implementation in that
+ * no exactly 32-bit integer data type is required (any 32-bit or wider
+ * unsigned integer data type will do), there's no compile-time endianness
+ * configuration, and the function prototypes match OpenSSL's. No code from
+ * Colin Plumb's implementation has been reused; this comment merely compares
+ * the properties of the two independent implementations.
+ *
+ * The primary goals of this implementation are portability and ease of use.
+ * It is meant to be fast, but not as fast as possible. Some known
+ * optimizations are not included to reduce source code size and avoid
+ * compile-time configuration.
*/
#include "curl_setup.h"
@@ -29,254 +44,261 @@
#include "curl_md4.h"
#include "warnless.h"
-typedef unsigned int UINT4;
+#ifndef HAVE_OPENSSL
-typedef struct MD4Context {
- UINT4 state[4]; /* state (ABCD) */
- UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
- unsigned char buffer[64]; /* input buffer */
+#include <string.h>
+
+/* Any 32-bit or wider unsigned integer data type will do */
+typedef unsigned int MD4_u32plus;
+
+typedef struct {
+ MD4_u32plus lo, hi;
+ MD4_u32plus a, b, c, d;
+ unsigned char buffer[64];
+ MD4_u32plus block[16];
} MD4_CTX;
-/* Constants for MD4Transform routine.
- */
-#define S11 3
-#define S12 7
-#define S13 11
-#define S14 19
-#define S21 3
-#define S22 5
-#define S23 9
-#define S24 13
-#define S31 3
-#define S32 9
-#define S33 11
-#define S34 15
-
-static void MD4Transform(UINT4 [4], const unsigned char [64]);
-static void Encode(unsigned char *, UINT4 *, unsigned int);
-static void Decode(UINT4 *, const unsigned char *, unsigned int);
-
-static unsigned char PADDING[64] = {
- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* F, G and H are basic MD4 functions.
- */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
+static void MD4_Init(MD4_CTX *ctx);
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size);
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx);
-/* ROTATE_LEFT rotates x left n bits.
+/*
+ * The basic MD4 functions.
+ *
+ * F and G are optimized compared to their RFC 1320 definitions, with the
+ * optimization for F borrowed from Colin Plumb's MD5 implementation.
*/
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG and HH are transformations for rounds 1, 2 and 3 */
-/* Rotation is separate from addition to prevent recomputation */
-#define FF(a, b, c, d, x, s) { \
- (a) += F ((b), (c), (d)) + (x); \
- (a) = ROTATE_LEFT ((a), (s)); \
- }
-#define GG(a, b, c, d, x, s) { \
- (a) += G ((b), (c), (d)) + (x) + (UINT4)0x5a827999; \
- (a) = ROTATE_LEFT ((a), (s)); \
- }
-#define HH(a, b, c, d, x, s) { \
- (a) += H ((b), (c), (d)) + (x) + (UINT4)0x6ed9eba1; \
- (a) = ROTATE_LEFT ((a), (s)); \
- }
+#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
+#define G(x, y, z) (((x) & ((y) | (z))) | ((y) & (z)))
+#define H(x, y, z) ((x) ^ (y) ^ (z))
-/* MD4 initialization. Begins an MD4 operation, writing a new context.
+/*
+ * The MD4 transformation for all three rounds.
*/
-static void MD4Init(MD4_CTX *context)
+#define STEP(f, a, b, c, d, x, s) \
+ (a) += f((b), (c), (d)) + (x); \
+ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s))));
+
+/*
+ * SET reads 4 input bytes in little-endian byte order and stores them
+ * in a properly aligned word in host byte order.
+ *
+ * The check for little-endian architectures that tolerate unaligned
+ * memory accesses is just an optimization. Nothing will break if it
+ * doesn't work.
+ */
+#if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
+#define SET(n) \
+ (*(MD4_u32plus *)&ptr[(n) * 4])
+#define GET(n) \
+ SET(n)
+#else
+#define SET(n) \
+ (ctx->block[(n)] = \
+ (MD4_u32plus)ptr[(n) * 4] | \
+ ((MD4_u32plus)ptr[(n) * 4 + 1] << 8) | \
+ ((MD4_u32plus)ptr[(n) * 4 + 2] << 16) | \
+ ((MD4_u32plus)ptr[(n) * 4 + 3] << 24))
+#define GET(n) \
+ (ctx->block[(n)])
+#endif
+
+/*
+ * This processes one or more 64-byte data blocks, but does NOT update
+ * the bit counters. There are no alignment requirements.
+ */
+static const void *body(MD4_CTX *ctx, const void *data, unsigned long size)
{
- context->count[0] = context->count[1] = 0;
-
- /* Load magic initialization constants.
- */
- context->state[0] = 0x67452301;
- context->state[1] = 0xefcdab89;
- context->state[2] = 0x98badcfe;
- context->state[3] = 0x10325476;
+ const unsigned char *ptr;
+ MD4_u32plus a, b, c, d;
+ MD4_u32plus saved_a, saved_b, saved_c, saved_d;
+
+ ptr = (const unsigned char *)data;
+
+ a = ctx->a;
+ b = ctx->b;
+ c = ctx->c;
+ d = ctx->d;
+
+ do {
+ saved_a = a;
+ saved_b = b;
+ saved_c = c;
+ saved_d = d;
+
+/* Round 1 */
+ STEP(F, a, b, c, d, SET(0), 3)
+ STEP(F, d, a, b, c, SET(1), 7)
+ STEP(F, c, d, a, b, SET(2), 11)
+ STEP(F, b, c, d, a, SET(3), 19)
+ STEP(F, a, b, c, d, SET(4), 3)
+ STEP(F, d, a, b, c, SET(5), 7)
+ STEP(F, c, d, a, b, SET(6), 11)
+ STEP(F, b, c, d, a, SET(7), 19)
+ STEP(F, a, b, c, d, SET(8), 3)
+ STEP(F, d, a, b, c, SET(9), 7)
+ STEP(F, c, d, a, b, SET(10), 11)
+ STEP(F, b, c, d, a, SET(11), 19)
+ STEP(F, a, b, c, d, SET(12), 3)
+ STEP(F, d, a, b, c, SET(13), 7)
+ STEP(F, c, d, a, b, SET(14), 11)
+ STEP(F, b, c, d, a, SET(15), 19)
+
+/* Round 2 */
+ STEP(G, a, b, c, d, GET(0) + 0x5a827999, 3)
+ STEP(G, d, a, b, c, GET(4) + 0x5a827999, 5)
+ STEP(G, c, d, a, b, GET(8) + 0x5a827999, 9)
+ STEP(G, b, c, d, a, GET(12) + 0x5a827999, 13)
+ STEP(G, a, b, c, d, GET(1) + 0x5a827999, 3)
+ STEP(G, d, a, b, c, GET(5) + 0x5a827999, 5)
+ STEP(G, c, d, a, b, GET(9) + 0x5a827999, 9)
+ STEP(G, b, c, d, a, GET(13) + 0x5a827999, 13)
+ STEP(G, a, b, c, d, GET(2) + 0x5a827999, 3)
+ STEP(G, d, a, b, c, GET(6) + 0x5a827999, 5)
+ STEP(G, c, d, a, b, GET(10) + 0x5a827999, 9)
+ STEP(G, b, c, d, a, GET(14) + 0x5a827999, 13)
+ STEP(G, a, b, c, d, GET(3) + 0x5a827999, 3)
+ STEP(G, d, a, b, c, GET(7) + 0x5a827999, 5)
+ STEP(G, c, d, a, b, GET(11) + 0x5a827999, 9)
+ STEP(G, b, c, d, a, GET(15) + 0x5a827999, 13)
+
+/* Round 3 */
+ STEP(H, a, b, c, d, GET(0) + 0x6ed9eba1, 3)
+ STEP(H, d, a, b, c, GET(8) + 0x6ed9eba1, 9)
+ STEP(H, c, d, a, b, GET(4) + 0x6ed9eba1, 11)
+ STEP(H, b, c, d, a, GET(12) + 0x6ed9eba1, 15)
+ STEP(H, a, b, c, d, GET(2) + 0x6ed9eba1, 3)
+ STEP(H, d, a, b, c, GET(10) + 0x6ed9eba1, 9)
+ STEP(H, c, d, a, b, GET(6) + 0x6ed9eba1, 11)
+ STEP(H, b, c, d, a, GET(14) + 0x6ed9eba1, 15)
+ STEP(H, a, b, c, d, GET(1) + 0x6ed9eba1, 3)
+ STEP(H, d, a, b, c, GET(9) + 0x6ed9eba1, 9)
+ STEP(H, c, d, a, b, GET(5) + 0x6ed9eba1, 11)
+ STEP(H, b, c, d, a, GET(13) + 0x6ed9eba1, 15)
+ STEP(H, a, b, c, d, GET(3) + 0x6ed9eba1, 3)
+ STEP(H, d, a, b, c, GET(11) + 0x6ed9eba1, 9)
+ STEP(H, c, d, a, b, GET(7) + 0x6ed9eba1, 11)
+ STEP(H, b, c, d, a, GET(15) + 0x6ed9eba1, 15)
+
+ a += saved_a;
+ b += saved_b;
+ c += saved_c;
+ d += saved_d;
+
+ ptr += 64;
+ } while(size -= 64);
+
+ ctx->a = a;
+ ctx->b = b;
+ ctx->c = c;
+ ctx->d = d;
+
+ return ptr;
}
-/* MD4 block update operation. Continues an MD4 message-digest
- operation, processing another message block, and updating the
- context.
- */
-static void MD4Update(MD4_CTX *context, const unsigned char *input,
- unsigned int inputLen)
+static void MD4_Init(MD4_CTX *ctx)
{
- unsigned int i, bufindex, partLen;
-
- /* Compute number of bytes mod 64 */
- bufindex = (unsigned int)((context->count[0] >> 3) & 0x3F);
- /* Update number of bits */
- if((context->count[0] += ((UINT4)inputLen << 3))
- < ((UINT4)inputLen << 3))
- context->count[1]++;
- context->count[1] += ((UINT4)inputLen >> 29);
-
- partLen = 64 - bufindex;
- /* Transform as many times as possible.
- */
- if(inputLen >= partLen) {
- memcpy(&context->buffer[bufindex], input, partLen);
- MD4Transform (context->state, context->buffer);
-
- for(i = partLen; i + 63 < inputLen; i += 64)
- MD4Transform (context->state, &input[i]);
-
- bufindex = 0;
- }
- else
- i = 0;
+ ctx->a = 0x67452301;
+ ctx->b = 0xefcdab89;
+ ctx->c = 0x98badcfe;
+ ctx->d = 0x10325476;
- /* Buffer remaining input */
- memcpy(&context->buffer[bufindex], &input[i], inputLen-i);
+ ctx->lo = 0;
+ ctx->hi = 0;
}
-/* MD4 padding. */
-static void MD4Pad(MD4_CTX *context)
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
{
- unsigned char bits[8];
- unsigned int bufindex, padLen;
+ MD4_u32plus saved_lo;
+ unsigned long used, available;
- /* Save number of bits */
- Encode (bits, context->count, 8);
+ saved_lo = ctx->lo;
+ if((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
+ ctx->hi++;
+ ctx->hi += (MD4_u32plus)size >> 29;
- /* Pad out to 56 mod 64.
- */
- bufindex = (unsigned int)((context->count[0] >> 3) & 0x3f);
- padLen = (bufindex < 56) ? (56 - bufindex) : (120 - bufindex);
- MD4Update (context, PADDING, padLen);
+ used = saved_lo & 0x3f;
- /* Append length (before padding) */
- MD4Update (context, bits, 8);
-}
+ if(used) {
+ available = 64 - used;
-/* MD4 finalization. Ends an MD4 message-digest operation, writing the
- the message digest and zeroizing the context.
- */
-static void MD4Final (unsigned char digest[16], MD4_CTX *context)
-{
- /* Do padding */
- MD4Pad (context);
+ if(size < available) {
+ memcpy(&ctx->buffer[used], data, size);
+ return;
+ }
- /* Store state in digest */
- Encode (digest, context->state, 16);
+ memcpy(&ctx->buffer[used], data, available);
+ data = (const unsigned char *)data + available;
+ size -= available;
+ body(ctx, ctx->buffer, 64);
+ }
- /* Zeroize sensitive information.
- */
- memset(context, 0, sizeof(*context));
-}
+ if(size >= 64) {
+ data = body(ctx, data, size & ~(unsigned long)0x3f);
+ size &= 0x3f;
+ }
-/* MD4 basic transformation. Transforms state based on block.
- */
-static void MD4Transform (UINT4 state[4], const unsigned char block[64])
-{
- UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
- Decode (x, block, 64);
-
- /* Round 1 */
- FF (a, b, c, d, x[ 0], S11); /* 1 */
- FF (d, a, b, c, x[ 1], S12); /* 2 */
- FF (c, d, a, b, x[ 2], S13); /* 3 */
- FF (b, c, d, a, x[ 3], S14); /* 4 */
- FF (a, b, c, d, x[ 4], S11); /* 5 */
- FF (d, a, b, c, x[ 5], S12); /* 6 */
- FF (c, d, a, b, x[ 6], S13); /* 7 */
- FF (b, c, d, a, x[ 7], S14); /* 8 */
- FF (a, b, c, d, x[ 8], S11); /* 9 */
- FF (d, a, b, c, x[ 9], S12); /* 10 */
- FF (c, d, a, b, x[10], S13); /* 11 */
- FF (b, c, d, a, x[11], S14); /* 12 */
- FF (a, b, c, d, x[12], S11); /* 13 */
- FF (d, a, b, c, x[13], S12); /* 14 */
- FF (c, d, a, b, x[14], S13); /* 15 */
- FF (b, c, d, a, x[15], S14); /* 16 */
-
- /* Round 2 */
- GG (a, b, c, d, x[ 0], S21); /* 17 */
- GG (d, a, b, c, x[ 4], S22); /* 18 */
- GG (c, d, a, b, x[ 8], S23); /* 19 */
- GG (b, c, d, a, x[12], S24); /* 20 */
- GG (a, b, c, d, x[ 1], S21); /* 21 */
- GG (d, a, b, c, x[ 5], S22); /* 22 */
- GG (c, d, a, b, x[ 9], S23); /* 23 */
- GG (b, c, d, a, x[13], S24); /* 24 */
- GG (a, b, c, d, x[ 2], S21); /* 25 */
- GG (d, a, b, c, x[ 6], S22); /* 26 */
- GG (c, d, a, b, x[10], S23); /* 27 */
- GG (b, c, d, a, x[14], S24); /* 28 */
- GG (a, b, c, d, x[ 3], S21); /* 29 */
- GG (d, a, b, c, x[ 7], S22); /* 30 */
- GG (c, d, a, b, x[11], S23); /* 31 */
- GG (b, c, d, a, x[15], S24); /* 32 */
-
- /* Round 3 */
- HH (a, b, c, d, x[ 0], S31); /* 33 */
- HH (d, a, b, c, x[ 8], S32); /* 34 */
- HH (c, d, a, b, x[ 4], S33); /* 35 */
- HH (b, c, d, a, x[12], S34); /* 36 */
- HH (a, b, c, d, x[ 2], S31); /* 37 */
- HH (d, a, b, c, x[10], S32); /* 38 */
- HH (c, d, a, b, x[ 6], S33); /* 39 */
- HH (b, c, d, a, x[14], S34); /* 40 */
- HH (a, b, c, d, x[ 1], S31); /* 41 */
- HH (d, a, b, c, x[ 9], S32); /* 42 */
- HH (c, d, a, b, x[ 5], S33); /* 43 */
- HH (b, c, d, a, x[13], S34); /* 44 */
- HH (a, b, c, d, x[ 3], S31); /* 45 */
- HH (d, a, b, c, x[11], S32); /* 46 */
- HH (c, d, a, b, x[ 7], S33); /* 47 */
- HH (b, c, d, a, x[15], S34); /* 48 */
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
-
- /* Zeroize sensitive information.
- */
- memset(x, 0, sizeof(x));
+ memcpy(ctx->buffer, data, size);
}
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
- a multiple of 4.
- */
-static void Encode(unsigned char *output, UINT4 *input, unsigned int len)
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
{
- unsigned int i, j;
+ unsigned long used, available;
- for(i = 0, j = 0; j < len; i++, j += 4) {
- output[j] = (unsigned char)(input[i] & 0xff);
- output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
- output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
- output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
- }
-}
+ used = ctx->lo & 0x3f;
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
- a multiple of 4.
- */
-static void Decode (UINT4 *output, const unsigned char *input,
- unsigned int len)
-{
- unsigned int i, j;
+ ctx->buffer[used++] = 0x80;
+
+ available = 64 - used;
- for(i = 0, j = 0; j < len; i++, j += 4)
- output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
- (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
+ if(available < 8) {
+ memset(&ctx->buffer[used], 0, available);
+ body(ctx, ctx->buffer, 64);
+ used = 0;
+ available = 64;
+ }
+
+ memset(&ctx->buffer[used], 0, available - 8);
+
+ ctx->lo <<= 3;
+ ctx->buffer[56] = curlx_ultouc((ctx->lo)&0xff);
+ ctx->buffer[57] = curlx_ultouc((ctx->lo >> 8)&0xff);
+ ctx->buffer[58] = curlx_ultouc((ctx->lo >> 16)&0xff);
+ ctx->buffer[59] = curlx_ultouc((ctx->lo >> 24)&0xff);
+ ctx->buffer[60] = curlx_ultouc((ctx->hi)&0xff);
+ ctx->buffer[61] = curlx_ultouc((ctx->hi >> 8)&0xff);
+ ctx->buffer[62] = curlx_ultouc((ctx->hi >> 16)&0xff);
+ ctx->buffer[63] = curlx_ultouc(ctx->hi >> 24);
+
+ body(ctx, ctx->buffer, 64);
+
+ result[0] = curlx_ultouc((ctx->a)&0xff);
+ result[1] = curlx_ultouc((ctx->a >> 8)&0xff);
+ result[2] = curlx_ultouc((ctx->a >> 16)&0xff);
+ result[3] = curlx_ultouc(ctx->a >> 24);
+ result[4] = curlx_ultouc((ctx->b)&0xff);
+ result[5] = curlx_ultouc((ctx->b >> 8)&0xff);
+ result[6] = curlx_ultouc((ctx->b >> 16)&0xff);
+ result[7] = curlx_ultouc(ctx->b >> 24);
+ result[8] = curlx_ultouc((ctx->c)&0xff);
+ result[9] = curlx_ultouc((ctx->c >> 8)&0xff);
+ result[10] = curlx_ultouc((ctx->c >> 16)&0xff);
+ result[11] = curlx_ultouc(ctx->c >> 24);
+ result[12] = curlx_ultouc((ctx->d)&0xff);
+ result[13] = curlx_ultouc((ctx->d >> 8)&0xff);
+ result[14] = curlx_ultouc((ctx->d >> 16)&0xff);
+ result[15] = curlx_ultouc(ctx->d >> 24);
+
+ memset(ctx, 0, sizeof(*ctx));
}
+#endif
+
void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
{
MD4_CTX ctx;
- MD4Init(&ctx);
- MD4Update(&ctx, input, curlx_uztoui(len));
- MD4Final(output, &ctx);
+ MD4_Init(&ctx);
+ MD4_Update(&ctx, input, curlx_uztoui(len));
+ MD4_Final(output, &ctx);
}
#endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) */
diff --git a/lib/md5.c b/lib/md5.c
index af39fd41a..b604c109f 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -28,11 +28,10 @@
#include "curl_hmac.h"
#include "warnless.h"
-#include "curl_memory.h"
-
#if defined(USE_GNUTLS_NETTLE)
#include <nettle/md5.h>
+#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -58,6 +57,7 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
#elif defined(USE_GNUTLS)
#include <gcrypt.h>
+#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -81,14 +81,12 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
gcry_md_close(*ctx);
}
-#elif defined(USE_SSLEAY)
+#elif defined(USE_OPENSSL)
/* When OpenSSL is available we use the MD5-function from OpenSSL */
-
-# ifdef USE_OPENSSL
-# include <openssl/md5.h>
-# else
-# include <md5.h>
-# endif
+#include <openssl/md5.h>
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
(__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
@@ -103,6 +101,9 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
reliable than defining COMMON_DIGEST_FOR_OPENSSL on older cats. */
# include <CommonCrypto/CommonDigest.h>
# define MD5_CTX CC_MD5_CTX
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
static void MD5_Init(MD5_CTX *ctx)
{
@@ -124,6 +125,9 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
#elif defined(_WIN32)
#include <wincrypt.h>
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
typedef struct {
HCRYPTPROV hCryptProv;
@@ -157,314 +161,326 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
CryptReleaseContext(ctx->hCryptProv, 0);
}
+#elif defined(USE_AXTLS)
+#include <axTLS/config.h>
+#include <axTLS/os_int.h>
+#include <axTLS/crypto.h>
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
#else
/* When no other crypto library is available we use this code segment */
-
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
+/*
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
+ * MD5 Message-Digest Algorithm (RFC 1321).
+ *
+ * Homepage:
+ http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
+ *
+ * Author:
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
+ *
+ * This software was written by Alexander Peslyak in 2001. No copyright is
+ * claimed, and the software is hereby placed in the public domain.
+ * In case this attempt to disclaim copyright and place the software in the
+ * public domain is deemed null and void, then the software is
+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
+ * general public under the following terms:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted.
+ *
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
+ *
+ * (This is a heavily cut-down "BSD license".)
+ *
+ * This differs from Colin Plumb's older public domain implementation in that
+ * no exactly 32-bit integer data type is required (any 32-bit or wider
+ * unsigned integer data type will do), there's no compile-time endianness
+ * configuration, and the function prototypes match OpenSSL's. No code from
+ * Colin Plumb's implementation has been reused; this comment merely compares
+ * the properties of the two independent implementations.
+ *
+ * The primary goals of this implementation are portability and ease of use.
+ * It is meant to be fast, but not as fast as possible. Some known
+ * optimizations are not included to reduce source code size and avoid
+ * compile-time configuration.
*/
-/* UINT4 defines a four byte word */
-typedef unsigned int UINT4;
+#include <string.h>
-/* MD5 context. */
-struct md5_ctx {
- UINT4 state[4]; /* state (ABCD) */
- UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
- unsigned char buffer[64]; /* input buffer */
-};
-
-typedef struct md5_ctx MD5_CTX;
+/* The last #include files should be: */
+#include "curl_memory.h"
+#include "memdebug.h"
-static void MD5_Init(struct md5_ctx *);
-static void MD5_Update(struct md5_ctx *, const unsigned char *, unsigned int);
-static void MD5_Final(unsigned char [16], struct md5_ctx *);
+/* Any 32-bit or wider unsigned integer data type will do */
+typedef unsigned int MD5_u32plus;
-/* Constants for MD5Transform routine.
- */
+typedef struct {
+ MD5_u32plus lo, hi;
+ MD5_u32plus a, b, c, d;
+ unsigned char buffer[64];
+ MD5_u32plus block[16];
+} MD5_CTX;
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
-
-static void MD5Transform(UINT4 [4], const unsigned char [64]);
-static void Encode(unsigned char *, UINT4 *, unsigned int);
-static void Decode(UINT4 *, const unsigned char *, unsigned int);
-
-static const unsigned char PADDING[64] = {
- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
+static void MD5_Init(MD5_CTX *ctx);
+static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
+static void MD5_Final(unsigned char *result, MD5_CTX *ctx);
-/* F, G, H and I are basic MD5 functions.
+/*
+ * The basic MD5 functions.
+ *
+ * F and G are optimized compared to their RFC 1321 definitions for
+ * architectures that lack an AND-NOT instruction, just like in Colin Plumb's
+ * implementation.
*/
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
-
-/* ROTATE_LEFT rotates x left n bits.
+#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
+#define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y))))
+#define H(x, y, z) (((x) ^ (y)) ^ (z))
+#define H2(x, y, z) ((x) ^ ((y) ^ (z)))
+#define I(x, y, z) ((y) ^ ((x) | ~(z)))
+
+/*
+ * The MD5 transformation for all four rounds.
*/
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
-Rotation is separate from addition to prevent recomputation.
+#define STEP(f, a, b, c, d, x, t, s) \
+ (a) += f((b), (c), (d)) + (x) + (t); \
+ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
+ (a) += (b);
+
+/*
+ * SET reads 4 input bytes in little-endian byte order and stores them
+ * in a properly aligned word in host byte order.
+ *
+ * The check for little-endian architectures that tolerate unaligned
+ * memory accesses is just an optimization. Nothing will break if it
+ * doesn't work.
*/
-#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-
-/* MD5 initialization. Begins an MD5 operation, writing a new context.
+#if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
+#define SET(n) \
+ (*(MD5_u32plus *)&ptr[(n) * 4])
+#define GET(n) \
+ SET(n)
+#else
+#define SET(n) \
+ (ctx->block[(n)] = \
+ (MD5_u32plus)ptr[(n) * 4] | \
+ ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \
+ ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \
+ ((MD5_u32plus)ptr[(n) * 4 + 3] << 24))
+#define GET(n) \
+ (ctx->block[(n)])
+#endif
+
+/*
+ * This processes one or more 64-byte data blocks, but does NOT update
+ * the bit counters. There are no alignment requirements.
*/
-static void MD5_Init(struct md5_ctx *context)
+static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
{
- context->count[0] = context->count[1] = 0;
- /* Load magic initialization constants. */
- context->state[0] = 0x67452301;
- context->state[1] = 0xefcdab89;
- context->state[2] = 0x98badcfe;
- context->state[3] = 0x10325476;
+ const unsigned char *ptr;
+ MD5_u32plus a, b, c, d;
+ MD5_u32plus saved_a, saved_b, saved_c, saved_d;
+
+ ptr = (const unsigned char *)data;
+
+ a = ctx->a;
+ b = ctx->b;
+ c = ctx->c;
+ d = ctx->d;
+
+ do {
+ saved_a = a;
+ saved_b = b;
+ saved_c = c;
+ saved_d = d;
+
+/* Round 1 */
+ STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
+ STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
+ STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
+ STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
+ STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
+ STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
+ STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
+ STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
+ STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
+ STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
+ STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
+ STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
+ STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
+ STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
+ STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
+ STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
+
+/* Round 2 */
+ STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
+ STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
+ STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
+ STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
+ STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
+ STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
+ STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
+ STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
+ STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
+ STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
+ STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
+ STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
+ STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
+ STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
+ STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
+ STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
+
+/* Round 3 */
+ STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
+ STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11)
+ STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
+ STEP(H2, b, c, d, a, GET(14), 0xfde5380c, 23)
+ STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
+ STEP(H2, d, a, b, c, GET(4), 0x4bdecfa9, 11)
+ STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
+ STEP(H2, b, c, d, a, GET(10), 0xbebfbc70, 23)
+ STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
+ STEP(H2, d, a, b, c, GET(0), 0xeaa127fa, 11)
+ STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
+ STEP(H2, b, c, d, a, GET(6), 0x04881d05, 23)
+ STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
+ STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11)
+ STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
+ STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23)
+
+/* Round 4 */
+ STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
+ STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
+ STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
+ STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
+ STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
+ STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
+ STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
+ STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
+ STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
+ STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
+ STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
+ STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
+ STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
+ STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
+ STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
+ STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
+
+ a += saved_a;
+ b += saved_b;
+ c += saved_c;
+ d += saved_d;
+
+ ptr += 64;
+ } while(size -= 64);
+
+ ctx->a = a;
+ ctx->b = b;
+ ctx->c = c;
+ ctx->d = d;
+
+ return ptr;
}
-/* MD5 block update operation. Continues an MD5 message-digest
- operation, processing another message block, and updating the
- context.
- */
-static void MD5_Update (struct md5_ctx *context, /* context */
- const unsigned char *input, /* input block */
- unsigned int inputLen) /* length of input block */
+static void MD5_Init(MD5_CTX *ctx)
{
- unsigned int i, bufindex, partLen;
+ ctx->a = 0x67452301;
+ ctx->b = 0xefcdab89;
+ ctx->c = 0x98badcfe;
+ ctx->d = 0x10325476;
- /* Compute number of bytes mod 64 */
- bufindex = (unsigned int)((context->count[0] >> 3) & 0x3F);
+ ctx->lo = 0;
+ ctx->hi = 0;
+}
- /* Update number of bits */
- if((context->count[0] += ((UINT4)inputLen << 3))
- < ((UINT4)inputLen << 3))
- context->count[1]++;
- context->count[1] += ((UINT4)inputLen >> 29);
+static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
+{
+ MD5_u32plus saved_lo;
+ unsigned long used, available;
+
+ saved_lo = ctx->lo;
+ if((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
+ ctx->hi++;
+ ctx->hi += (MD5_u32plus)size >> 29;
- partLen = 64 - bufindex;
+ used = saved_lo & 0x3f;
- /* Transform as many times as possible. */
- if(inputLen >= partLen) {
- memcpy(&context->buffer[bufindex], input, partLen);
- MD5Transform(context->state, context->buffer);
+ if(used) {
+ available = 64 - used;
- for(i = partLen; i + 63 < inputLen; i += 64)
- MD5Transform(context->state, &input[i]);
+ if(size < available) {
+ memcpy(&ctx->buffer[used], data, size);
+ return;
+ }
+
+ memcpy(&ctx->buffer[used], data, available);
+ data = (const unsigned char *)data + available;
+ size -= available;
+ body(ctx, ctx->buffer, 64);
+ }
- bufindex = 0;
+ if(size >= 64) {
+ data = body(ctx, data, size & ~(unsigned long)0x3f);
+ size &= 0x3f;
}
- else
- i = 0;
- /* Buffer remaining input */
- memcpy(&context->buffer[bufindex], &input[i], inputLen-i);
+ memcpy(ctx->buffer, data, size);
}
-/* MD5 finalization. Ends an MD5 message-digest operation, writing the
- the message digest and zeroizing the context.
-*/
-static void MD5_Final(unsigned char digest[16], /* message digest */
- struct md5_ctx *context) /* context */
+static void MD5_Final(unsigned char *result, MD5_CTX *ctx)
{
- unsigned char bits[8];
- unsigned int count, padLen;
+ unsigned long used, available;
- /* Save number of bits */
- Encode (bits, context->count, 8);
+ used = ctx->lo & 0x3f;
- /* Pad out to 56 mod 64. */
- count = (unsigned int)((context->count[0] >> 3) & 0x3f);
- padLen = (count < 56) ? (56 - count) : (120 - count);
- MD5_Update (context, PADDING, padLen);
+ ctx->buffer[used++] = 0x80;
- /* Append length (before padding) */
- MD5_Update (context, bits, 8);
+ available = 64 - used;
- /* Store state in digest */
- Encode (digest, context->state, 16);
-
- /* Zeroize sensitive information. */
- memset ((void *)context, 0, sizeof (*context));
-}
-
-/* MD5 basic transformation. Transforms state based on block. */
-static void MD5Transform(UINT4 state[4],
- const unsigned char block[64])
-{
- UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
- Decode (x, block, 64);
-
- /* Round 1 */
- FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
- FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
- FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
- FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
- FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
- FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
- FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
- FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
- FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
- FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
- FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
- FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
- FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
- FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
- FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
- FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
-
- /* Round 2 */
- GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
- GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
- GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
- GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
- GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
- GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
- GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
- GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
- GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
- GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
- GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
- GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
- GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
- GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
- GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
- GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
-
- /* Round 3 */
- HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
- HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
- HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
- HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
- HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
- HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
- HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
- HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
- HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
- HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
- HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
- HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
- HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
- HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
- HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
- HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
-
- /* Round 4 */
- II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
- II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
- II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
- II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
- II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
- II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
- II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
- II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
- II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
- II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
- II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
- II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
- II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
- II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
- II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
- II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
-
- /* Zeroize sensitive information. */
- memset((void *)x, 0, sizeof (x));
-}
-
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
- a multiple of 4.
- */
-static void Encode (unsigned char *output,
- UINT4 *input,
- unsigned int len)
-{
- unsigned int i, j;
-
- for(i = 0, j = 0; j < len; i++, j += 4) {
- output[j] = (unsigned char)(input[i] & 0xff);
- output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
- output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
- output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
+ if(available < 8) {
+ memset(&ctx->buffer[used], 0, available);
+ body(ctx, ctx->buffer, 64);
+ used = 0;
+ available = 64;
}
-}
-
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
- a multiple of 4.
-*/
-static void Decode (UINT4 *output,
- const unsigned char *input,
- unsigned int len)
-{
- unsigned int i, j;
- for(i = 0, j = 0; j < len; i++, j += 4)
- output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
- (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
+ memset(&ctx->buffer[used], 0, available - 8);
+
+ ctx->lo <<= 3;
+ ctx->buffer[56] = curlx_ultouc((ctx->lo)&0xff);
+ ctx->buffer[57] = curlx_ultouc((ctx->lo >> 8)&0xff);
+ ctx->buffer[58] = curlx_ultouc((ctx->lo >> 16)&0xff);
+ ctx->buffer[59] = curlx_ultouc(ctx->lo >> 24);
+ ctx->buffer[60] = curlx_ultouc((ctx->hi)&0xff);
+ ctx->buffer[61] = curlx_ultouc((ctx->hi >> 8)&0xff);
+ ctx->buffer[62] = curlx_ultouc((ctx->hi >> 16)&0xff);
+ ctx->buffer[63] = curlx_ultouc(ctx->hi >> 24);
+
+ body(ctx, ctx->buffer, 64);
+
+ result[0] = curlx_ultouc((ctx->a)&0xff);
+ result[1] = curlx_ultouc((ctx->a >> 8)&0xff);
+ result[2] = curlx_ultouc((ctx->a >> 16)&0xff);
+ result[3] = curlx_ultouc(ctx->a >> 24);
+ result[4] = curlx_ultouc((ctx->b)&0xff);
+ result[5] = curlx_ultouc((ctx->b >> 8)&0xff);
+ result[6] = curlx_ultouc((ctx->b >> 16)&0xff);
+ result[7] = curlx_ultouc(ctx->b >> 24);
+ result[8] = curlx_ultouc((ctx->c)&0xff);
+ result[9] = curlx_ultouc((ctx->c >> 8)&0xff);
+ result[10] = curlx_ultouc((ctx->c >> 16)&0xff);
+ result[11] = curlx_ultouc(ctx->c >> 24);
+ result[12] = curlx_ultouc((ctx->d)&0xff);
+ result[13] = curlx_ultouc((ctx->d >> 8)&0xff);
+ result[14] = curlx_ultouc((ctx->d >> 16)&0xff);
+ result[15] = curlx_ultouc(ctx->d >> 24);
+
+ memset(ctx, 0, sizeof(*ctx));
}
#endif /* CRYPTO LIBS */
-/* The last #include file should be: */
-#include "memdebug.h"
-
const HMAC_params Curl_HMAC_MD5[] = {
{
(HMAC_hinit_func) MD5_Init, /* Hash initialization function. */
@@ -486,6 +502,9 @@ const MD5_params Curl_DIGEST_MD5[] = {
}
};
+/*
+ * @unittest: 1601
+ */
void Curl_md5it(unsigned char *outbuffer, /* 16 bytes */
const unsigned char *input)
{
diff --git a/lib/memdebug.c b/lib/memdebug.c
index 4afa620a0..dd8889b2d 100644
--- a/lib/memdebug.c
+++ b/lib/memdebug.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -26,8 +26,7 @@
#include <curl/curl.h>
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "urldata.h"
#define MEMDEBUG_NODEFINES /* don't redefine the standard functions */
@@ -113,7 +112,7 @@ void curl_memdebug(const char *logname)
{
if(!logfile) {
if(logname && *logname)
- logfile = fopen(logname, "w");
+ logfile = fopen(logname, FOPEN_WRITETEXT);
else
logfile = stderr;
#ifdef MEMDEBUG_LOG_SYNC
@@ -343,10 +342,10 @@ curl_socket_t curl_socket(int domain, int type, int protocol,
int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
- "FD %s:%d socket() = %d\n" :
- (sizeof(curl_socket_t) == sizeof(long)) ?
- "FD %s:%d socket() = %ld\n" :
- "FD %s:%d socket() = %zd\n" ;
+ "FD %s:%d socket() = %d\n" :
+ (sizeof(curl_socket_t) == sizeof(long)) ?
+ "FD %s:%d socket() = %ld\n" :
+ "FD %s:%d socket() = %zd\n";
curl_socket_t sockfd = socket(domain, type, protocol);
@@ -362,10 +361,10 @@ int curl_socketpair(int domain, int type, int protocol,
int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
- "FD %s:%d socketpair() = %d %d\n" :
- (sizeof(curl_socket_t) == sizeof(long)) ?
- "FD %s:%d socketpair() = %ld %ld\n" :
- "FD %s:%d socketpair() = %zd %zd\n" ;
+ "FD %s:%d socketpair() = %d %d\n" :
+ (sizeof(curl_socket_t) == sizeof(long)) ?
+ "FD %s:%d socketpair() = %ld %ld\n" :
+ "FD %s:%d socketpair() = %zd %zd\n";
int res = socketpair(domain, type, protocol, socket_vector);
@@ -380,10 +379,10 @@ curl_socket_t curl_accept(curl_socket_t s, void *saddr, void *saddrlen,
int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
- "FD %s:%d accept() = %d\n" :
- (sizeof(curl_socket_t) == sizeof(long)) ?
- "FD %s:%d accept() = %ld\n" :
- "FD %s:%d accept() = %zd\n" ;
+ "FD %s:%d accept() = %d\n" :
+ (sizeof(curl_socket_t) == sizeof(long)) ?
+ "FD %s:%d accept() = %ld\n" :
+ "FD %s:%d accept() = %zd\n";
struct sockaddr *addr = (struct sockaddr *)saddr;
curl_socklen_t *addrlen = (curl_socklen_t *)saddrlen;
@@ -400,10 +399,10 @@ curl_socket_t curl_accept(curl_socket_t s, void *saddr, void *saddrlen,
void curl_mark_sclose(curl_socket_t sockfd, int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
- "FD %s:%d sclose(%d)\n" :
- (sizeof(curl_socket_t) == sizeof(long)) ?
- "FD %s:%d sclose(%ld)\n" :
- "FD %s:%d sclose(%zd)\n" ;
+ "FD %s:%d sclose(%d)\n":
+ (sizeof(curl_socket_t) == sizeof(long)) ?
+ "FD %s:%d sclose(%ld)\n":
+ "FD %s:%d sclose(%zd)\n";
if(source)
curl_memlog(fmt, source, line, sockfd);
diff --git a/lib/memdebug.h b/lib/memdebug.h
index bd565c8dc..cfac1e077 100644
--- a/lib/memdebug.h
+++ b/lib/memdebug.h
@@ -8,7 +8,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -104,13 +104,13 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
#endif
#define socket(domain,type,protocol)\
- curl_socket(domain,type,protocol,__LINE__,__FILE__)
+ curl_socket(domain, type, protocol, __LINE__, __FILE__)
#undef accept /* for those with accept as a macro */
#define accept(sock,addr,len)\
- curl_accept(sock,addr,len,__LINE__,__FILE__)
+ curl_accept(sock, addr, len, __LINE__, __FILE__)
#ifdef HAVE_SOCKETPAIR
#define socketpair(domain,type,protocol,socket_vector)\
- curl_socketpair(domain,type,protocol,socket_vector,__LINE__,__FILE__)
+ curl_socketpair(domain, type, protocol, socket_vector, __LINE__, __FILE__)
#endif
#ifdef HAVE_GETADDRINFO
@@ -119,25 +119,25 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
our macro as for other platforms. Instead, we redefine the new name they
define getaddrinfo to become! */
#define ogetaddrinfo(host,serv,hint,res) \
- curl_dogetaddrinfo(host,serv,hint,res,__LINE__,__FILE__)
+ curl_dogetaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
#else
#undef getaddrinfo
#define getaddrinfo(host,serv,hint,res) \
- curl_dogetaddrinfo(host,serv,hint,res,__LINE__,__FILE__)
+ curl_dogetaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
#endif
#endif /* HAVE_GETADDRINFO */
#ifdef HAVE_GETNAMEINFO
#undef getnameinfo
#define getnameinfo(sa,salen,host,hostlen,serv,servlen,flags) \
- curl_dogetnameinfo(sa,salen,host,hostlen,serv,servlen,flags, __LINE__, \
- __FILE__)
+ curl_dogetnameinfo(sa, salen, host, hostlen, serv, servlen, flags, \
+ __LINE__, __FILE__)
#endif /* HAVE_GETNAMEINFO */
#ifdef HAVE_FREEADDRINFO
#undef freeaddrinfo
#define freeaddrinfo(data) \
- curl_dofreeaddrinfo(data,__LINE__,__FILE__)
+ curl_dofreeaddrinfo(data, __LINE__, __FILE__)
#endif /* HAVE_FREEADDRINFO */
/* sclose is probably already defined, redefine it! */
@@ -171,6 +171,6 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
*/
#define Curl_safefree(ptr) \
- do {if((ptr)) {free((ptr)); (ptr) = NULL;}} WHILE_FALSE
+ do { free((ptr)); (ptr) = NULL;} WHILE_FALSE
#endif /* HEADER_CURL_MEMDEBUG_H */
diff --git a/lib/mk-ca-bundle.pl b/lib/mk-ca-bundle.pl
index 0b1331840..c2080e952 100755
--- a/lib/mk-ca-bundle.pl
+++ b/lib/mk-ca-bundle.pl
@@ -185,6 +185,12 @@ sub VERSION_MESSAGE() {
warning_message() unless ($opt_q || $url =~ m/^(ht|f)tps:/i );
HELP_MESSAGE() if ($opt_h);
+sub report($@) {
+ my $output = shift;
+
+ print STDERR $output . "\n" unless $opt_q;
+}
+
sub is_in_list($@) {
my $target = shift;
@@ -278,20 +284,20 @@ my $fetched;
my $oldsha1 = oldsha1($crt);
-print STDERR "SHA1 of old file: $oldsha1\n" if (!$opt_q);
+report "SHA1 of old file: $oldsha1";
-print STDERR "Downloading '$txt' ...\n" if (!$opt_q);
+report "Downloading '$txt' ...";
if($curl && !$opt_n) {
my $https = $url;
$https =~ s/^http:/https:/;
- print STDERR "Get certdata over HTTPS with curl!\n" if (!$opt_q);
+ report "Get certdata over HTTPS with curl!";
my $quiet = $opt_q ? "-s" : "";
my @out = `curl -w %{response_code} $quiet -O $https`;
if(@out && $out[0] == 200) {
$fetched = 1;
} else {
- print STDERR "Failed downloading HTTPS with curl, trying HTTP with LWP\n" if (!$opt_q);
+ report "Failed downloading HTTPS with curl, trying HTTP with LWP";
}
}
@@ -300,15 +306,14 @@ unless ($fetched || ($opt_n and -e $txt)) {
$ua->env_proxy();
$resp = $ua->mirror($url, $txt);
if ($resp && $resp->code eq '304') {
- print STDERR "Not modified\n" unless $opt_q;
+ report "Not modified";
exit 0 if -e $crt && !$opt_f;
} else {
$fetched = 1;
}
if( !$resp || $resp->code !~ /^(?:200|304)$/ ) {
- print STDERR "Unable to download latest data: "
- . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed") . "\n"
- unless $opt_q;
+ report "Unable to download latest data: "
+ . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed");
exit 1 if -e $crt || ! -r $txt;
}
}
@@ -325,11 +330,11 @@ if(!$filedate) {
my $newsha1= sha1($txt);
if(!$opt_f && $oldsha1 eq $newsha1) {
- print STDERR "Downloaded file identical to previous run\'s source file. Exiting\n";
+ report "Downloaded file identical to previous run\'s source file. Exiting";
exit;
}
-print STDERR "SHA1 of new file: $newsha1\n";
+report "SHA1 of new file: $newsha1";
my $currentdate = scalar gmtime($filedate);
@@ -361,7 +366,7 @@ print CRT <<EOT;
EOT
-print STDERR "Processing '$txt' ...\n" if (!$opt_q);
+report "Processing '$txt' ...";
my $caname;
my $certnum = 0;
my $skipnum = 0;
@@ -413,9 +418,9 @@ while (<TXT>) {
last if (/^#/);
if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
- print STDERR "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2\n" if (!$opt_q);
+ report "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2";
} elsif ( !is_in_list($2,@valid_mozilla_trust_levels) ) {
- print STDERR "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2\n" if (!$opt_q);
+ report "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2";
} else {
push @{$trust_purposes_by_level{$2}}, $1;
}
@@ -470,7 +475,7 @@ while (<TXT>) {
open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
}
}
- print STDERR "Parsing: $caname\n" if ($opt_v);
+ report "Parsing: $caname" if ($opt_v);
$certnum ++;
$start_of_cert = 0;
}
@@ -491,4 +496,4 @@ unless( $stdout ) {
rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
}
unlink $txt if ($opt_u);
-print STDERR "Done ($certnum CA certs processed, $skipnum skipped).\n" if (!$opt_q);
+report "Done ($certnum CA certs processed, $skipnum skipped).";
diff --git a/lib/multi.c b/lib/multi.c
index 97c9e65cf..00520873c 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -39,14 +39,10 @@
#include "warnless.h"
#include "speedcheck.h"
#include "conncache.h"
-#include "bundles.h"
#include "multihandle.h"
#include "pipeline.h"
#include "sigpipe.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -66,15 +62,11 @@
#define GOOD_MULTI_HANDLE(x) \
((x) && (((struct Curl_multi *)(x))->type == CURL_MULTI_HANDLE))
-#define GOOD_EASY_HANDLE(x) \
- ((x) && (((struct SessionHandle *)(x))->magic == CURLEASY_MAGIC_NUMBER))
static void singlesocket(struct Curl_multi *multi,
struct SessionHandle *data);
static int update_timer(struct Curl_multi *multi);
-static bool isHandleAtHead(struct SessionHandle *handle,
- struct curl_llist *pipeline);
static CURLMcode add_next_timeout(struct timeval now,
struct Curl_multi *multi,
struct SessionHandle *d);
@@ -89,6 +81,7 @@ static const char * const statename[]={
"WAITRESOLVE",
"WAITCONNECT",
"WAITPROXYCONNECT",
+ "SENDPROTOCONNECT",
"PROTOCONNECT",
"WAITDO",
"DO",
@@ -157,7 +150,6 @@ static void mstate(struct SessionHandle *data, CURLMstate state
struct Curl_sh_entry {
struct SessionHandle *easy;
- time_t timestamp;
int action; /* what action READ/WRITE this socket waits for */
curl_socket_t socket; /* mainly to ease debugging */
void *socketp; /* settable by users with curl_multi_assign() */
@@ -219,8 +211,7 @@ static void sh_freeentry(void *freethis)
{
struct Curl_sh_entry *p = (struct Curl_sh_entry *) freethis;
- if(p)
- free(p);
+ free(p);
}
static size_t fd_key_compare(void *k1, size_t k1_len, void *k2, size_t k2_len)
@@ -256,10 +247,10 @@ static size_t hash_fd(void *key, size_t key_length, size_t slots_num)
* per call."
*
*/
-static struct curl_hash *sh_init(int hashsize)
+static int sh_init(struct curl_hash *hash, int hashsize)
{
- return Curl_hash_alloc(hashsize, hash_fd, fd_key_compare,
- sh_freeentry);
+ return Curl_hash_init(hash, hashsize, hash_fd, fd_key_compare,
+ sh_freeentry);
}
/*
@@ -298,16 +289,13 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
multi->type = CURL_MULTI_HANDLE;
- multi->hostcache = Curl_mk_dnscache();
- if(!multi->hostcache)
+ if(Curl_mk_dnscache(&multi->hostcache))
goto error;
- multi->sockhash = sh_init(hashsize);
- if(!multi->sockhash)
+ if(sh_init(&multi->sockhash, hashsize))
goto error;
- multi->conn_cache = Curl_conncache_init(chashsize);
- if(!multi->conn_cache)
+ if(Curl_conncache_init(&multi->conn_cache, chashsize))
goto error;
multi->msglist = Curl_llist_alloc(multi_freeamsg);
@@ -324,7 +312,7 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
goto error;
multi->closure_handle->multi = multi;
- multi->closure_handle->state.conn_cache = multi->conn_cache;
+ multi->closure_handle->state.conn_cache = &multi->conn_cache;
multi->max_pipeline_length = 5;
@@ -334,12 +322,9 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
error:
- Curl_hash_destroy(multi->sockhash);
- multi->sockhash = NULL;
- Curl_hash_destroy(multi->hostcache);
- multi->hostcache = NULL;
- Curl_conncache_destroy(multi->conn_cache);
- multi->conn_cache = NULL;
+ Curl_hash_destroy(&multi->sockhash);
+ Curl_hash_destroy(&multi->hostcache);
+ Curl_conncache_destroy(&multi->conn_cache);
Curl_close(multi->closure_handle);
multi->closure_handle = NULL;
Curl_llist_destroy(multi->msglist, NULL);
@@ -408,14 +393,12 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
easy handle's one is currently not set. */
else if(!data->dns.hostcache ||
(data->dns.hostcachetype == HCACHE_NONE)) {
- data->dns.hostcache = multi->hostcache;
+ data->dns.hostcache = &multi->hostcache;
data->dns.hostcachetype = HCACHE_MULTI;
}
/* Point to the multi's connection cache */
- data->state.conn_cache = multi->conn_cache;
-
- data->state.infilesize = data->set.filesize;
+ data->state.conn_cache = &multi->conn_cache;
/* This adds the new entry at the 'end' of the doubly-linked circular
list of SessionHandle structs to try and maintain a FIFO queue so
@@ -431,8 +414,7 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
multi->easylp = data; /* the new last node */
}
else {
- /* first node, make both prev and next be NULL! */
- data->next = NULL;
+ /* first node, make prev NULL! */
data->prev = NULL;
multi->easylp = multi->easyp = data; /* both first and last */
}
@@ -508,18 +490,22 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
if(!data->multi)
return CURLM_OK; /* it is already removed so let's say it is fine! */
-
premature = (data->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE;
easy_owns_conn = (data->easy_conn && (data->easy_conn->data == easy)) ?
TRUE : FALSE;
/* If the 'state' is not INIT or COMPLETED, we might need to do something
nice to put the easy_handle in a good known state when this returns. */
- if(premature)
+ if(premature) {
/* this handle is "alive" so we need to count down the total number of
alive connections when this is removed */
multi->num_alive--;
+ /* When this handle gets removed, other handles may be able to get the
+ connection */
+ Curl_multi_process_pending_handles(multi);
+ }
+
if(data->easy_conn &&
data->mstate > CURLM_STATE_DO &&
data->mstate < CURLM_STATE_COMPLETED) {
@@ -621,9 +607,10 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
return CURLM_OK;
}
-bool Curl_multi_pipeline_enabled(const struct Curl_multi *multi)
+/* Return TRUE if the application asked for a certain set of pipelining */
+bool Curl_pipeline_wanted(const struct Curl_multi *multi, int bits)
{
- return (multi && multi->pipelining_enabled) ? TRUE : FALSE;
+ return (multi && (multi->pipelining & bits)) ? TRUE : FALSE;
}
void Curl_multi_handlePipeBreak(struct SessionHandle *data)
@@ -649,14 +636,24 @@ static int waitconnect_getsock(struct connectdata *conn,
}
}
+ return rc;
+}
+
+static int waitproxyconnect_getsock(struct connectdata *conn,
+ curl_socket_t *sock,
+ int numsocks)
+{
+ if(!numsocks)
+ return GETSOCK_BLANK;
+
+ sock[0] = conn->sock[FIRSTSOCKET];
+
/* when we've sent a CONNECT to a proxy, we should rather wait for the
socket to become readable to be able to get the response headers */
- if(conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT) {
- sock[0] = conn->sock[FIRSTSOCKET];
- rc = GETSOCK_READSOCK(0);
- }
+ if(conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
+ return GETSOCK_READSOCK(0);
- return rc;
+ return GETSOCK_WRITESOCK(0);
}
static int domore_getsock(struct connectdata *conn,
@@ -709,6 +706,7 @@ static int multi_getsock(struct SessionHandle *data,
return Curl_resolver_getsock(data->easy_conn, socks, numsocks);
case CURLM_STATE_PROTOCONNECT:
+ case CURLM_STATE_SENDPROTOCONNECT:
return Curl_protocol_getsock(data->easy_conn, socks, numsocks);
case CURLM_STATE_DO:
@@ -716,6 +714,8 @@ static int multi_getsock(struct SessionHandle *data,
return Curl_doing_getsock(data->easy_conn, socks, numsocks);
case CURLM_STATE_WAITPROXYCONNECT:
+ return waitproxyconnect_getsock(data->easy_conn, socks, numsocks);
+
case CURLM_STATE_WAITCONNECT:
return waitconnect_getsock(data->easy_conn, socks, numsocks);
@@ -916,12 +916,62 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
else
i = 0;
- Curl_safefree(ufds);
+ free(ufds);
if(ret)
*ret = i;
return CURLM_OK;
}
+/*
+ * Curl_multi_connchanged() is called to tell that there is a connection in
+ * this multi handle that has changed state (pipelining become possible, the
+ * number of allowed streams changed or similar), and a subsequent use of this
+ * multi handle should move CONNECT_PEND handles back to CONNECT to have them
+ * retry.
+ */
+void Curl_multi_connchanged(struct Curl_multi *multi)
+{
+ multi->recheckstate = TRUE;
+}
+
+/*
+ * multi_ischanged() is called
+ *
+ * Returns TRUE/FALSE whether the state is changed to trigger a CONNECT_PEND
+ * => CONNECT action.
+ *
+ * Set 'clear' to TRUE to have it also clear the state variable.
+ */
+static bool multi_ischanged(struct Curl_multi *multi, bool clear)
+{
+ bool retval = multi->recheckstate;
+ if(clear)
+ multi->recheckstate = FALSE;
+ return retval;
+}
+
+CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
+ struct SessionHandle *data,
+ struct connectdata *conn)
+{
+ CURLMcode rc;
+
+ rc = curl_multi_add_handle(multi, data);
+ if(!rc) {
+ struct SingleRequest *k = &data->req;
+
+ /* pass in NULL for 'conn' here since we don't want to init the
+ connection, only this transfer */
+ Curl_init_do(data, NULL);
+
+ /* take this handle to the perform state right away */
+ multistate(data, CURLM_STATE_PERFORM);
+ data->easy_conn = conn;
+ k->keepon |= KEEP_RECV; /* setup to receive! */
+ }
+ return rc;
+}
+
static CURLMcode multi_runsingle(struct Curl_multi *multi,
struct timeval now,
struct SessionHandle *data)
@@ -973,6 +1023,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
return CURLM_INTERNAL_ERROR;
}
+ if(multi_ischanged(multi, TRUE)) {
+ DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n"));
+ Curl_multi_process_pending_handles(multi);
+ }
+
if(data->easy_conn && data->mstate > CURLM_STATE_CONNECT &&
data->mstate < CURLM_STATE_COMPLETED)
/* Make sure we set the connection's current owner */
@@ -1019,6 +1074,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
disconnect_conn = TRUE;
}
result = CURLE_OPERATION_TIMEDOUT;
+ (void)Curl_done(&data->easy_conn, result, TRUE);
/* Skip the statemachine and go directly to error handling section. */
goto statemachine_end;
}
@@ -1076,7 +1132,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
rc = CURLM_CALL_MULTI_PERFORM;
if(protocol_connect)
- multistate(data, multi->pipelining_enabled?
+ multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
CURLM_STATE_WAITDO:CURLM_STATE_DO);
else {
#ifndef CURL_DISABLE_HTTP
@@ -1098,13 +1154,9 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
struct connectdata *conn = data->easy_conn;
/* check if we have the name resolved by now */
- if(data->share)
- Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
-
dns = Curl_fetch_addr(conn, conn->host.name, (int)conn->port);
if(dns) {
- dns->inuse++; /* we use it! */
#ifdef CURLRES_ASYNCH
conn->async.dns = dns;
conn->async.done = TRUE;
@@ -1113,9 +1165,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
infof(data, "Hostname was found in DNS cache\n");
}
- if(data->share)
- Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
-
if(!dns)
result = Curl_resolver_is_resolved(data->easy_conn, &dns);
@@ -1140,7 +1189,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
/* call again please so that we get the next socket setup */
rc = CURLM_CALL_MULTI_PERFORM;
if(protocol_connect)
- multistate(data, multi->pipelining_enabled?
+ multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
CURLM_STATE_WAITDO:CURLM_STATE_DO);
else {
#ifndef CURL_DISABLE_HTTP
@@ -1166,40 +1215,29 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
/* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
result = Curl_http_connect(data->easy_conn, &protocol_connect);
+ rc = CURLM_CALL_MULTI_PERFORM;
if(data->easy_conn->bits.proxy_connect_closed) {
/* connect back to proxy again */
result = CURLE_OK;
- rc = CURLM_CALL_MULTI_PERFORM;
+ Curl_done(&data->easy_conn, CURLE_OK, FALSE);
multistate(data, CURLM_STATE_CONNECT);
}
else if(!result) {
if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_COMPLETE)
- multistate(data, CURLM_STATE_WAITCONNECT);
+ /* initiate protocol connect phase */
+ multistate(data, CURLM_STATE_SENDPROTOCONNECT);
}
break;
#endif
case CURLM_STATE_WAITCONNECT:
- /* awaiting a completion of an asynch connect */
- result = Curl_is_connected(data->easy_conn,
- FIRSTSOCKET,
- &connected);
- if(connected) {
-
- if(!result)
- /* if everything is still fine we do the protocol-specific connect
- setup */
- result = Curl_protocol_connect(data->easy_conn,
- &protocol_connect);
- }
-
- if(data->easy_conn->bits.proxy_connect_closed) {
- /* connect back to proxy again since it was closed in a proxy CONNECT
- setup */
- result = CURLE_OK;
+ /* awaiting a completion of an asynch TCP connect */
+ result = Curl_is_connected(data->easy_conn, FIRSTSOCKET, &connected);
+ if(connected && !result) {
rc = CURLM_CALL_MULTI_PERFORM;
- multistate(data, CURLM_STATE_CONNECT);
- break;
+ multistate(data, data->easy_conn->bits.tunnel_proxy?
+ CURLM_STATE_WAITPROXYCONNECT:
+ CURLM_STATE_SENDPROTOCONNECT);
}
else if(result) {
/* failure detected */
@@ -1207,29 +1245,25 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
disconnect_conn = TRUE;
break;
}
+ break;
- if(connected) {
- if(!protocol_connect) {
- /* We have a TCP connection, but 'protocol_connect' may be false
- and then we continue to 'STATE_PROTOCONNECT'. If protocol
- connect is TRUE, we move on to STATE_DO.
- BUT if we are using a proxy we must change to WAITPROXYCONNECT
- */
-#ifndef CURL_DISABLE_HTTP
- if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
- multistate(data, CURLM_STATE_WAITPROXYCONNECT);
- else
-#endif
- multistate(data, CURLM_STATE_PROTOCONNECT);
-
- }
- else
- /* after the connect has completed, go WAITDO or DO */
- multistate(data, multi->pipelining_enabled?
- CURLM_STATE_WAITDO:CURLM_STATE_DO);
-
+ case CURLM_STATE_SENDPROTOCONNECT:
+ result = Curl_protocol_connect(data->easy_conn, &protocol_connect);
+ if(!protocol_connect)
+ /* switch to waiting state */
+ multistate(data, CURLM_STATE_PROTOCONNECT);
+ else if(!result) {
+ /* protocol connect has completed, go WAITDO or DO */
+ multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
+ CURLM_STATE_WAITDO:CURLM_STATE_DO);
rc = CURLM_CALL_MULTI_PERFORM;
}
+ else if(result) {
+ /* failure detected */
+ Curl_posttransfer(data);
+ Curl_done(&data->easy_conn, result, TRUE);
+ disconnect_conn = TRUE;
+ }
break;
case CURLM_STATE_PROTOCONNECT:
@@ -1237,7 +1271,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
result = Curl_protocol_connecting(data->easy_conn, &protocol_connect);
if(!result && protocol_connect) {
/* after the connect has completed, go WAITDO or DO */
- multistate(data, multi->pipelining_enabled?
+ multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
CURLM_STATE_WAITDO:CURLM_STATE_DO);
rc = CURLM_CALL_MULTI_PERFORM;
}
@@ -1251,19 +1285,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
case CURLM_STATE_WAITDO:
/* Wait for our turn to DO when we're pipelining requests */
-#ifdef DEBUGBUILD
- infof(data, "WAITDO: Conn %ld send pipe %zu inuse %s athead %s\n",
- data->easy_conn->connection_id,
- data->easy_conn->send_pipe->size,
- data->easy_conn->writechannel_inuse?"TRUE":"FALSE",
- isHandleAtHead(data,
- data->easy_conn->send_pipe)?"TRUE":"FALSE");
-#endif
- if(!data->easy_conn->writechannel_inuse &&
- isHandleAtHead(data,
- data->easy_conn->send_pipe)) {
- /* Grab the channel */
- data->easy_conn->writechannel_inuse = TRUE;
+ if(Curl_pipeline_checkget_write(data, data->easy_conn)) {
+ /* Grabbed the channel */
multistate(data, CURLM_STATE_DO);
rc = CURLM_CALL_MULTI_PERFORM;
}
@@ -1446,24 +1469,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
case CURLM_STATE_WAITPERFORM:
/* Wait for our turn to PERFORM */
- if(!data->easy_conn->readchannel_inuse &&
- isHandleAtHead(data,
- data->easy_conn->recv_pipe)) {
- /* Grab the channel */
- data->easy_conn->readchannel_inuse = TRUE;
+ if(Curl_pipeline_checkget_read(data, data->easy_conn)) {
+ /* Grabbed the channel */
multistate(data, CURLM_STATE_PERFORM);
rc = CURLM_CALL_MULTI_PERFORM;
}
-#ifdef DEBUGBUILD
- else {
- infof(data, "WAITPERFORM: Conn %ld recv pipe %zu inuse %s athead %s\n",
- data->easy_conn->connection_id,
- data->easy_conn->recv_pipe->size,
- data->easy_conn->readchannel_inuse?"TRUE":"FALSE",
- isHandleAtHead(data,
- data->easy_conn->recv_pipe)?"TRUE":"FALSE");
- }
-#endif
break;
case CURLM_STATE_TOOFAST: /* limit-rate exceeded in either direction */
@@ -1518,19 +1528,17 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
}
/* read/write data if it is ready to do so */
- result = Curl_readwrite(data->easy_conn, &done);
+ result = Curl_readwrite(data->easy_conn, data, &done);
k = &data->req;
- if(!(k->keepon & KEEP_RECV)) {
+ if(!(k->keepon & KEEP_RECV))
/* We're done receiving */
- data->easy_conn->readchannel_inuse = FALSE;
- }
+ Curl_pipeline_leave_read(data->easy_conn);
- if(!(k->keepon & KEEP_SEND)) {
+ if(!(k->keepon & KEEP_SEND))
/* We're done sending */
- data->easy_conn->writechannel_inuse = FALSE;
- }
+ Curl_pipeline_leave_write(data->easy_conn);
if(done || (result == CURLE_RECV_ERROR)) {
/* If CURLE_RECV_ERROR happens early enough, we assume it was a race
@@ -1586,8 +1594,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
if(!retry) {
/* if the URL is a follow-location and not just a retried request
then figure out the URL here */
- if(newurl)
- free(newurl);
+ free(newurl);
newurl = data->req.newurl;
data->req.newurl = NULL;
follow = FOLLOW_REDIR;
@@ -1612,8 +1619,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
/* but first check to see if we got a location info even though we're
not following redirects */
if(data->req.location) {
- if(newurl)
- free(newurl);
+ free(newurl);
newurl = data->req.location;
data->req.location = NULL;
result = Curl_follow(data, newurl, FOLLOW_FAKE);
@@ -1628,8 +1634,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
}
}
- if(newurl)
- free(newurl);
+ free(newurl);
break;
}
@@ -1710,14 +1715,15 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
data->state.pipe_broke = FALSE;
+ /* Check if we can move pending requests to send pipe */
+ Curl_multi_process_pending_handles(multi);
+
if(data->easy_conn) {
/* if this has a connection, unsubscribe from the pipelines */
- data->easy_conn->writechannel_inuse = FALSE;
- data->easy_conn->readchannel_inuse = FALSE;
+ Curl_pipeline_leave_write(data->easy_conn);
+ Curl_pipeline_leave_read(data->easy_conn);
Curl_removeHandleFromPipeline(data, data->easy_conn->send_pipe);
Curl_removeHandleFromPipeline(data, data->easy_conn->recv_pipe);
- /* Check if we can move pending requests to send pipe */
- Curl_multi_process_pending_handles(multi);
if(disconnect_conn) {
/* Don't attempt to send data over a connection that timed out */
@@ -1764,7 +1770,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
multistate(data, CURLM_STATE_MSGSENT);
}
- } while(rc == CURLM_CALL_MULTI_PERFORM);
+ } while((rc == CURLM_CALL_MULTI_PERFORM) || multi_ischanged(multi, FALSE));
data->result = result;
@@ -1844,7 +1850,7 @@ static void close_all_connections(struct Curl_multi *multi)
{
struct connectdata *conn;
- conn = Curl_conncache_find_first_connection(multi->conn_cache);
+ conn = Curl_conncache_find_first_connection(&multi->conn_cache);
while(conn) {
SIGPIPE_VARIABLE(pipe_st);
conn->data = multi->closure_handle;
@@ -1854,7 +1860,7 @@ static void close_all_connections(struct Curl_multi *multi)
(void)Curl_disconnect(conn, FALSE);
sigpipe_restore(&pipe_st);
- conn = Curl_conncache_find_first_connection(multi->conn_cache);
+ conn = Curl_conncache_find_first_connection(&multi->conn_cache);
}
}
@@ -1877,15 +1883,15 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
sigpipe_ignore(multi->closure_handle, &pipe_st);
restore_pipe = TRUE;
- multi->closure_handle->dns.hostcache = multi->hostcache;
+ multi->closure_handle->dns.hostcache = &multi->hostcache;
Curl_hostcache_clean(multi->closure_handle,
multi->closure_handle->dns.hostcache);
Curl_close(multi->closure_handle);
}
- Curl_hash_destroy(multi->sockhash);
- Curl_conncache_destroy(multi->conn_cache);
+ Curl_hash_destroy(&multi->sockhash);
+ Curl_conncache_destroy(&multi->conn_cache);
Curl_llist_destroy(multi->msglist, NULL);
Curl_llist_destroy(multi->pending, NULL);
@@ -1907,7 +1913,7 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
data = nextdata;
}
- Curl_hash_destroy(multi->hostcache);
+ Curl_hash_destroy(&multi->hostcache);
/* Free the blacklists by setting them to NULL */
Curl_pipeline_set_site_blacklist(NULL, &multi->pipelining_site_bl);
@@ -1996,7 +2002,7 @@ static void singlesocket(struct Curl_multi *multi,
s = socks[i];
/* get it from the hash */
- entry = Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+ entry = Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
if(curraction & GETSOCK_READSOCK(i))
action |= CURL_POLL_IN;
@@ -2011,7 +2017,7 @@ static void singlesocket(struct Curl_multi *multi,
}
else {
/* this is a socket we didn't have before, add it! */
- entry = sh_addentry(multi->sockhash, s, data);
+ entry = sh_addentry(&multi->sockhash, s, data);
if(!entry)
/* fatal */
return;
@@ -2047,7 +2053,7 @@ static void singlesocket(struct Curl_multi *multi,
/* this socket has been removed. Tell the app to remove it */
remove_sock_from_hash = TRUE;
- entry = Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+ entry = Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
if(entry) {
/* check if the socket to be removed serves a connection which has
other easy-s in a pipeline. In this case the socket should not be
@@ -2062,7 +2068,7 @@ static void singlesocket(struct Curl_multi *multi,
for the recv_pipe, or the first (in case this particular easy
isn't already) */
if(entry->easy == data) {
- if(isHandleAtHead(data, easy_conn->recv_pipe))
+ if(Curl_recvpipe_head(data, easy_conn))
entry->easy = easy_conn->recv_pipe->head->next->ptr;
else
entry->easy = easy_conn->recv_pipe->head->ptr;
@@ -2076,7 +2082,7 @@ static void singlesocket(struct Curl_multi *multi,
for the send_pipe, or the first (in case this particular easy
isn't already) */
if(entry->easy == data) {
- if(isHandleAtHead(data, easy_conn->send_pipe))
+ if(Curl_sendpipe_head(data, easy_conn))
entry->easy = easy_conn->send_pipe->head->next->ptr;
else
entry->easy = easy_conn->send_pipe->head->ptr;
@@ -2102,7 +2108,7 @@ static void singlesocket(struct Curl_multi *multi,
CURL_POLL_REMOVE,
multi->socket_userp,
entry->socketp);
- sh_delentry(multi->sockhash, s);
+ sh_delentry(&multi->sockhash, s);
}
}
@@ -2129,7 +2135,7 @@ void Curl_multi_closed(struct connectdata *conn, curl_socket_t s)
/* this is set if this connection is part of a handle that is added to
a multi handle, and only then this is necessary */
struct Curl_sh_entry *entry =
- Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+ Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
if(entry) {
if(multi->socket_cb)
@@ -2138,7 +2144,7 @@ void Curl_multi_closed(struct connectdata *conn, curl_socket_t s)
entry->socketp);
/* now remove it from the socket hash */
- sh_delentry(multi->sockhash, s);
+ sh_delentry(&multi->sockhash, s);
}
}
}
@@ -2231,7 +2237,7 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
else if(s != CURL_SOCKET_TIMEOUT) {
struct Curl_sh_entry *entry =
- Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+ Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
if(!entry)
/* Unmatched socket, we can't act on it but we ignore this fact. In
@@ -2355,8 +2361,14 @@ CURLMcode curl_multi_setopt(CURLM *multi_handle,
case CURLMOPT_SOCKETDATA:
multi->socket_userp = va_arg(param, void *);
break;
+ case CURLMOPT_PUSHFUNCTION:
+ multi->push_cb = va_arg(param, curl_push_callback);
+ break;
+ case CURLMOPT_PUSHDATA:
+ multi->push_userp = va_arg(param, void *);
+ break;
case CURLMOPT_PIPELINING:
- multi->pipelining_enabled = (0 != va_arg(param, long)) ? TRUE : FALSE;
+ multi->pipelining = va_arg(param, long);
break;
case CURLMOPT_TIMERFUNCTION:
multi->timer_cb = va_arg(param, curl_multi_timer_callback);
@@ -2434,7 +2446,7 @@ CURLMcode curl_multi_socket_all(CURLM *multi_handle, int *running_handles)
static CURLMcode multi_timeout(struct Curl_multi *multi,
long *timeout_ms)
{
- static struct timeval tv_zero = {0,0};
+ static struct timeval tv_zero = {0, 0};
if(multi->timetree) {
/* we have a tree of expire times */
@@ -2492,7 +2504,7 @@ static int update_timer(struct Curl_multi *multi)
return -1;
}
if(timeout_ms < 0) {
- static const struct timeval none={0,0};
+ static const struct timeval none={0, 0};
if(Curl_splaycomparekeys(none, multi->timer_lastcall)) {
multi->timer_lastcall = none;
/* there's no timeout now but there was one previously, tell the app to
@@ -2514,16 +2526,6 @@ static int update_timer(struct Curl_multi *multi)
return multi->timer_cb((CURLM*)multi, timeout_ms, multi->timer_userp);
}
-static bool isHandleAtHead(struct SessionHandle *handle,
- struct curl_llist *pipeline)
-{
- struct curl_llist_element *curr = pipeline->head;
- if(curr)
- return (curr->ptr == handle) ? TRUE : FALSE;
-
- return FALSE;
-}
-
/*
* multi_freetimeout()
*
@@ -2723,7 +2725,8 @@ CURLMcode curl_multi_assign(CURLM *multi_handle,
struct Curl_multi *multi = (struct Curl_multi *)multi_handle;
if(s != CURL_SOCKET_BAD)
- there = Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(curl_socket_t));
+ there = Curl_hash_pick(&multi->sockhash, (char *)&s,
+ sizeof(curl_socket_t));
if(!there)
return CURLM_BAD_SOCKET;
@@ -2743,11 +2746,6 @@ size_t Curl_multi_max_total_connections(struct Curl_multi *multi)
return multi ? multi->max_total_connections : 0;
}
-size_t Curl_multi_max_pipeline_length(struct Curl_multi *multi)
-{
- return multi ? multi->max_pipeline_length : 0;
-}
-
curl_off_t Curl_multi_content_length_penalty_size(struct Curl_multi *multi)
{
return multi ? multi->content_length_penalty_size : 0;
@@ -2807,7 +2805,7 @@ void Curl_multi_dump(const struct Curl_multi *multi_handle)
for(i=0; i < data->numsocks; i++) {
curl_socket_t s = data->sockets[i];
struct Curl_sh_entry *entry =
- Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+ Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
fprintf(stderr, "%d ", (int)s);
if(!entry) {
diff --git a/lib/multihandle.h b/lib/multihandle.h
index 1a4b1d966..6c24f50f1 100644
--- a/lib/multihandle.h
+++ b/lib/multihandle.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -22,6 +22,8 @@
*
***************************************************************************/
+#include "conncache.h"
+
struct Curl_message {
/* the 'CURLMsg' is the part that is visible to the external user */
struct CURLMsg extmsg;
@@ -35,22 +37,23 @@ typedef enum {
CURLM_STATE_CONNECT_PEND, /* 1 - no connections, waiting for one */
CURLM_STATE_CONNECT, /* 2 - resolve/connect has been sent off */
CURLM_STATE_WAITRESOLVE, /* 3 - awaiting the resolve to finalize */
- CURLM_STATE_WAITCONNECT, /* 4 - awaiting the connect to finalize */
+ CURLM_STATE_WAITCONNECT, /* 4 - awaiting the TCP connect to finalize */
CURLM_STATE_WAITPROXYCONNECT, /* 5 - awaiting proxy CONNECT to finalize */
- CURLM_STATE_PROTOCONNECT, /* 6 - completing the protocol-specific connect
+ CURLM_STATE_SENDPROTOCONNECT, /* 6 - initiate protocol connect procedure */
+ CURLM_STATE_PROTOCONNECT, /* 7 - completing the protocol-specific connect
phase */
- CURLM_STATE_WAITDO, /* 7 - wait for our turn to send the request */
- CURLM_STATE_DO, /* 8 - start send off the request (part 1) */
- CURLM_STATE_DOING, /* 9 - sending off the request (part 1) */
- CURLM_STATE_DO_MORE, /* 10 - send off the request (part 2) */
- CURLM_STATE_DO_DONE, /* 11 - done sending off request */
- CURLM_STATE_WAITPERFORM, /* 12 - wait for our turn to read the response */
- CURLM_STATE_PERFORM, /* 13 - transfer data */
- CURLM_STATE_TOOFAST, /* 14 - wait because limit-rate exceeded */
- CURLM_STATE_DONE, /* 15 - post data transfer operation */
- CURLM_STATE_COMPLETED, /* 16 - operation complete */
- CURLM_STATE_MSGSENT, /* 17 - the operation complete message is sent */
- CURLM_STATE_LAST /* 18 - not a true state, never use this */
+ CURLM_STATE_WAITDO, /* 8 - wait for our turn to send the request */
+ CURLM_STATE_DO, /* 9 - start send off the request (part 1) */
+ CURLM_STATE_DOING, /* 10 - sending off the request (part 1) */
+ CURLM_STATE_DO_MORE, /* 11 - send off the request (part 2) */
+ CURLM_STATE_DO_DONE, /* 12 - done sending off request */
+ CURLM_STATE_WAITPERFORM, /* 13 - wait for our turn to read the response */
+ CURLM_STATE_PERFORM, /* 14 - transfer data */
+ CURLM_STATE_TOOFAST, /* 15 - wait because limit-rate exceeded */
+ CURLM_STATE_DONE, /* 16 - post data transfer operation */
+ CURLM_STATE_COMPLETED, /* 17 - operation complete */
+ CURLM_STATE_MSGSENT, /* 18 - the operation complete message is sent */
+ CURLM_STATE_LAST /* 19 - not a true state, never use this */
} CURLMstate;
/* we support N sockets per easy handle. Set the corresponding bit to what
@@ -59,6 +62,8 @@ typedef enum {
#define GETSOCK_READABLE (0x00ff)
#define GETSOCK_WRITABLE (0xff00)
+#define CURLPIPE_ANY (CURLPIPE_HTTP1 | CURLPIPE_MULTIPLEX)
+
/* This is the struct known as CURLM on the outside */
struct Curl_multi {
/* First a simple identifier to easier detect if a user mix up
@@ -82,8 +87,12 @@ struct Curl_multi {
curl_socket_callback socket_cb;
void *socket_userp;
+ /* callback function and user data pointer for server push */
+ curl_push_callback push_cb;
+ void *push_userp;
+
/* Hostname cache */
- struct curl_hash *hostcache;
+ struct curl_hash hostcache;
/* timetree points to the splay-tree of time nodes to figure out expire
times of all currently set timers */
@@ -92,13 +101,15 @@ struct Curl_multi {
/* 'sockhash' is the lookup hash for socket descriptor => easy handles (note
the pluralis form, there can be more than one easy handle waiting on the
same actual socket) */
- struct curl_hash *sockhash;
+ struct curl_hash sockhash;
- /* Whether pipelining is enabled for this multi handle */
- bool pipelining_enabled;
+ /* pipelining wanted bits (CURLPIPE*) */
+ long pipelining;
+
+ bool recheckstate; /* see Curl_multi_connchanged */
/* Shared connection cache (bundles)*/
- struct conncache *conn_cache;
+ struct conncache conn_cache;
/* This handle will be used for closing the cached connections in
curl_multi_cleanup() */
@@ -139,4 +150,3 @@ struct Curl_multi {
};
#endif /* HEADER_CURL_MULTIHANDLE_H */
-
diff --git a/lib/multiif.h b/lib/multiif.h
index d8acfcabe..e6323adf5 100644
--- a/lib/multiif.h
+++ b/lib/multiif.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -27,8 +27,7 @@
*/
void Curl_expire(struct SessionHandle *data, long milli);
void Curl_expire_latest(struct SessionHandle *data, long milli);
-
-bool Curl_multi_pipeline_enabled(const struct Curl_multi* multi);
+bool Curl_pipeline_wanted(const struct Curl_multi* multi, int bits);
void Curl_multi_handlePipeBreak(struct SessionHandle *data);
/* Internal version of curl_multi_init() accepts size parameters for the
@@ -60,9 +59,6 @@ void Curl_multi_process_pending_handles(struct Curl_multi *multi);
/* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */
size_t Curl_multi_max_host_connections(struct Curl_multi *multi);
-/* Return the value of the CURLMOPT_MAX_PIPELINE_LENGTH option */
-size_t Curl_multi_max_pipeline_length(struct Curl_multi *multi);
-
/* Return the value of the CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE option */
curl_off_t Curl_multi_content_length_penalty_size(struct Curl_multi *multi);
@@ -78,6 +74,8 @@ struct curl_llist *Curl_multi_pipelining_server_bl(struct Curl_multi *multi);
/* Return the value of the CURLMOPT_MAX_TOTAL_CONNECTIONS option */
size_t Curl_multi_max_total_connections(struct Curl_multi *multi);
+void Curl_multi_connchanged(struct Curl_multi *multi);
+
/*
* Curl_multi_closed()
*
@@ -90,4 +88,10 @@ size_t Curl_multi_max_total_connections(struct Curl_multi *multi);
void Curl_multi_closed(struct connectdata *conn, curl_socket_t s);
+/*
+ * Add a handle and move it into PERFORM state at once. For pushed streams.
+ */
+CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
+ struct SessionHandle *data,
+ struct connectdata *conn);
#endif /* HEADER_CURL_MULTIIF_H */
diff --git a/lib/netrc.c b/lib/netrc.c
index 7435d94c4..06f8ea15a 100644
--- a/lib/netrc.c
+++ b/lib/netrc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -31,13 +31,11 @@
#include "strequal.h"
#include "strtok.h"
-#include "curl_memory.h"
#include "rawstr.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* Get user and password from .netrc when given a machine name */
@@ -104,16 +102,16 @@ int Curl_parsenetrc(const char *host,
netrcfile = curl_maprintf("%s%s%s", home, DIR_CHAR, NETRC);
if(home_alloc)
- Curl_safefree(home);
+ free(home);
if(!netrcfile) {
return -1;
}
netrc_alloc = TRUE;
}
- file = fopen(netrcfile, "r");
+ file = fopen(netrcfile, FOPEN_READTEXT);
if(netrc_alloc)
- Curl_safefree(netrcfile);
+ free(netrcfile);
if(file) {
char *tok;
char *tok_buf;
@@ -139,6 +137,10 @@ int Curl_parsenetrc(const char *host,
'password'. */
state=HOSTFOUND;
}
+ else if(Curl_raw_equal("default", tok)) {
+ state=HOSTVALID;
+ retcode=0; /* we did find our host */
+ }
break;
case HOSTFOUND:
if(Curl_raw_equal(host, tok)) {
diff --git a/lib/nwlib.c b/lib/nwlib.c
index 252bf11ec..bd3f27eac 100644
--- a/lib/nwlib.c
+++ b/lib/nwlib.c
@@ -282,9 +282,7 @@ int DisposeLibraryData( void *data )
if(data) {
void *tenbytes = ((libdata_t *) data)->tenbytes;
- if(tenbytes)
- free(tenbytes);
-
+ free(tenbytes);
free(data);
}
@@ -296,9 +294,7 @@ void DisposeThreadData( void *data )
if(data) {
void *twentybytes = ((libthreaddata_t *) data)->twentybytes;
- if(twentybytes)
- free(twentybytes);
-
+ free(twentybytes);
free(data);
}
}
diff --git a/lib/openldap.c b/lib/openldap.c
index b94c0348f..bee552f33 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2010, 2013, Howard Chu, <hyc@openldap.org>
- * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
+ * Copyright (C) 2011 - 2015, 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
@@ -44,13 +44,12 @@
#include "vtls/vtls.h"
#include "transfer.h"
#include "curl_ldap.h"
-#include "curl_memory.h"
#include "curl_base64.h"
#include "connect.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#ifndef _LDAP_PVT_H
@@ -230,7 +229,7 @@ static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
ldapconninfo *li = conn->proto.generic;
struct SessionHandle *data = conn->data;
LDAPMessage *msg = NULL;
- struct timeval tv = {0,1}, *tvp;
+ struct timeval tv = {0, 1}, *tvp;
int rc, err;
char *info = NULL;
@@ -381,7 +380,7 @@ static CURLcode ldap_do(struct connectdata *conn, bool *done)
failf(data, "LDAP local: ldap_search_ext %s", ldap_err2string(rc));
return CURLE_LDAP_SEARCH_FAILED;
}
- lr = calloc(1,sizeof(ldapreqinfo));
+ lr = calloc(1, sizeof(ldapreqinfo));
if(!lr)
return CURLE_OUT_OF_MEMORY;
lr->msgid = msgid;
@@ -423,7 +422,7 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
LDAPMessage *msg = NULL;
LDAPMessage *ent;
BerElement *ber = NULL;
- struct timeval tv = {0,1};
+ struct timeval tv = {0, 1};
(void)len;
(void)buf;
diff --git a/lib/pingpong.c b/lib/pingpong.c
index 2c2741f0a..167079272 100644
--- a/lib/pingpong.c
+++ b/lib/pingpong.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -34,9 +34,7 @@
#include "multiif.h"
#include "non-ascii.h"
#include "vtls/vtls.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -495,10 +493,8 @@ CURLcode Curl_pp_flushsend(struct pingpong *pp)
CURLcode Curl_pp_disconnect(struct pingpong *pp)
{
- if(pp->cache) {
- free(pp->cache);
- pp->cache = NULL;
- }
+ free(pp->cache);
+ pp->cache = NULL;
return CURLE_OK;
}
diff --git a/lib/pipeline.c b/lib/pipeline.c
index 2645fdb48..1b38836cb 100644
--- a/lib/pipeline.c
+++ b/lib/pipeline.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2013, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2013-2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013-2015, 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
@@ -32,7 +32,6 @@
#include "pipeline.h"
#include "sendf.h"
#include "rawstr.h"
-#include "bundles.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -49,15 +48,13 @@ static void site_blacklist_llist_dtor(void *user, void *element)
(void)user;
Curl_safefree(entry->hostname);
- Curl_safefree(entry);
+ free(entry);
}
static void server_blacklist_llist_dtor(void *user, void *element)
{
- char *server_name = element;
(void)user;
-
- Curl_safefree(server_name);
+ free(element);
}
bool Curl_pipeline_penalized(struct SessionHandle *data,
@@ -94,6 +91,15 @@ bool Curl_pipeline_penalized(struct SessionHandle *data,
return FALSE;
}
+static CURLcode addHandleToPipeline(struct SessionHandle *data,
+ struct curl_llist *pipeline)
+{
+ if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
+ return CURLE_OUT_OF_MEMORY;
+ return CURLE_OK;
+}
+
+
CURLcode Curl_add_handle_to_pipeline(struct SessionHandle *handle,
struct connectdata *conn)
{
@@ -103,11 +109,11 @@ CURLcode Curl_add_handle_to_pipeline(struct SessionHandle *handle,
pipeline = conn->send_pipe;
- result = Curl_addHandleToPipeline(handle, pipeline);
+ result = addHandleToPipeline(handle, pipeline);
if(pipeline == conn->send_pipe && sendhead != conn->send_pipe->head) {
/* this is a new one as head, expire it */
- conn->writechannel_inuse = FALSE; /* not in use yet */
+ Curl_pipeline_leave_write(conn); /* not in use yet */
Curl_expire(conn->send_pipe->head->ptr, 1);
}
@@ -138,7 +144,7 @@ void Curl_move_handle_from_send_to_recv_pipe(struct SessionHandle *handle,
if(conn->send_pipe->head) {
/* Since there's a new easy handle at the start of the send pipeline,
set its timeout value to 1ms to make it trigger instantly */
- conn->writechannel_inuse = FALSE; /* not used now */
+ Curl_pipeline_leave_write(conn); /* not used now */
#ifdef DEBUGBUILD
infof(conn->data, "%p is at send pipe head B!\n",
(void *)conn->send_pipe->head->ptr);
@@ -314,6 +320,93 @@ CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
return CURLM_OK;
}
+static bool pipe_head(struct SessionHandle *data,
+ struct curl_llist *pipeline)
+{
+ struct curl_llist_element *curr = pipeline->head;
+ if(curr)
+ return (curr->ptr == data) ? TRUE : FALSE;
+
+ return FALSE;
+}
+
+/* returns TRUE if the given handle is head of the recv pipe */
+bool Curl_recvpipe_head(struct SessionHandle *data,
+ struct connectdata *conn)
+{
+ return pipe_head(data, conn->recv_pipe);
+}
+
+/* returns TRUE if the given handle is head of the send pipe */
+bool Curl_sendpipe_head(struct SessionHandle *data,
+ struct connectdata *conn)
+{
+ return pipe_head(data, conn->send_pipe);
+}
+
+
+/*
+ * Check if the write channel is available and this handle as at the head,
+ * then grab the channel and return TRUE.
+ *
+ * If not available, return FALSE.
+ */
+
+bool Curl_pipeline_checkget_write(struct SessionHandle *data,
+ struct connectdata *conn)
+{
+ if(conn->bits.multiplex)
+ /* when multiplexing, we can use it at once */
+ return TRUE;
+
+ if(!conn->writechannel_inuse && Curl_sendpipe_head(data, conn)) {
+ /* Grab the channel */
+ conn->writechannel_inuse = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+/*
+ * Check if the read channel is available and this handle as at the head, then
+ * grab the channel and return TRUE.
+ *
+ * If not available, return FALSE.
+ */
+
+bool Curl_pipeline_checkget_read(struct SessionHandle *data,
+ struct connectdata *conn)
+{
+ if(conn->bits.multiplex)
+ /* when multiplexing, we can use it at once */
+ return TRUE;
+
+ if(!conn->readchannel_inuse && Curl_recvpipe_head(data, conn)) {
+ /* Grab the channel */
+ conn->readchannel_inuse = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*
+ * The current user of the pipeline write channel gives it up.
+ */
+void Curl_pipeline_leave_write(struct connectdata *conn)
+{
+ conn->writechannel_inuse = FALSE;
+}
+
+/*
+ * The current user of the pipeline read channel gives it up.
+ */
+void Curl_pipeline_leave_read(struct connectdata *conn)
+{
+ conn->readchannel_inuse = FALSE;
+}
+
+
#if 0
void print_pipeline(struct connectdata *conn)
{
diff --git a/lib/pipeline.h b/lib/pipeline.h
index 96c4c33ec..bf229f199 100644
--- a/lib/pipeline.h
+++ b/lib/pipeline.h
@@ -7,6 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2013 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
*
* This software is licensed as described in the file COPYING, which
@@ -41,4 +42,15 @@ bool Curl_pipeline_server_blacklisted(struct SessionHandle *handle,
CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
struct curl_llist **list_ptr);
+bool Curl_pipeline_checkget_write(struct SessionHandle *data,
+ struct connectdata *conn);
+bool Curl_pipeline_checkget_read(struct SessionHandle *data,
+ struct connectdata *conn);
+void Curl_pipeline_leave_write(struct connectdata *conn);
+void Curl_pipeline_leave_read(struct connectdata *conn);
+bool Curl_recvpipe_head(struct SessionHandle *data,
+ struct connectdata *conn);
+bool Curl_sendpipe_head(struct SessionHandle *data,
+ struct connectdata *conn);
+
#endif /* HEADER_CURL_PIPELINE_H */
diff --git a/lib/pop3.c b/lib/pop3.c
index 66004599a..53510a210 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -83,10 +83,7 @@
#include "curl_sasl.h"
#include "curl_md5.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -106,10 +103,10 @@ static CURLcode pop3_setup_connection(struct connectdata *conn);
static CURLcode pop3_parse_url_options(struct connectdata *conn);
static CURLcode pop3_parse_url_path(struct connectdata *conn);
static CURLcode pop3_parse_custom_request(struct connectdata *conn);
-static CURLcode pop3_calc_sasl_details(struct connectdata *conn,
- const char **mech,
- char **initresp, size_t *len,
- pop3state *state1, pop3state *state2);
+static CURLcode pop3_perform_auth(struct connectdata *conn, const char *mech,
+ const char *initresp);
+static CURLcode pop3_continue_auth(struct connectdata *conn, const char *resp);
+static void pop3_get_message(char *buffer, char** outptr);
/*
* POP3 protocol handler.
@@ -214,6 +211,17 @@ static const struct Curl_handler Curl_handler_pop3s_proxy = {
#endif
#endif
+/* SASL parameters for the pop3 protocol */
+static const struct SASLproto saslpop3 = {
+ "pop", /* The service name */
+ '+', /* Code received when continuation is expected */
+ '+', /* Code to receive upon authentication success */
+ 255 - 8, /* Maximum initial response length (no max) */
+ pop3_perform_auth, /* Send authentication command */
+ pop3_continue_auth, /* Send authentication continuation */
+ pop3_get_message /* Get SASL response message */
+};
+
#ifdef USE_SSL
static void pop3_to_pop3s(struct connectdata *conn)
{
@@ -312,20 +320,7 @@ static void state(struct connectdata *conn, pop3state newstate)
"CAPA",
"STARTTLS",
"UPGRADETLS",
- "AUTH_PLAIN",
- "AUTH_LOGIN",
- "AUTH_LOGIN_PASSWD",
- "AUTH_CRAMMD5",
- "AUTH_DIGESTMD5",
- "AUTH_DIGESTMD5_RESP",
- "AUTH_NTLM",
- "AUTH_NTLM_TYPE2MSG",
- "AUTH_GSSAPI",
- "AUTH_GSSAPI_TOKEN",
- "AUTH_GSSAPI_NO_DATA",
- "AUTH_XOAUTH2",
- "AUTH_CANCEL",
- "AUTH_FINAL",
+ "AUTH",
"APOP",
"USER",
"PASS",
@@ -354,9 +349,9 @@ static CURLcode pop3_perform_capa(struct connectdata *conn)
CURLcode result = CURLE_OK;
struct pop3_conn *pop3c = &conn->proto.pop3c;
- pop3c->authmechs = 0; /* No known authentication mechanisms yet */
- pop3c->authused = 0; /* Clear the authentication mechanism used */
- pop3c->tls_supported = FALSE; /* Clear the TLS capability */
+ pop3c->sasl.authmechs = SASL_AUTH_NONE; /* No known auth. mechanisms yet */
+ pop3c->sasl.authused = SASL_AUTH_NONE; /* Clear the auth. mechanism used */
+ pop3c->tls_supported = FALSE; /* Clear the TLS capability */
/* Send the CAPA command */
result = Curl_pp_sendf(&pop3c->pp, "%s", "CAPA");
@@ -500,25 +495,18 @@ static CURLcode pop3_perform_apop(struct connectdata *conn)
*/
static CURLcode pop3_perform_auth(struct connectdata *conn,
const char *mech,
- const char *initresp, size_t len,
- pop3state state1, pop3state state2)
+ const char *initresp)
{
CURLcode result = CURLE_OK;
struct pop3_conn *pop3c = &conn->proto.pop3c;
- if(initresp && 8 + strlen(mech) + len <= 255) { /* AUTH <mech> ...<crlf> */
+ if(initresp) { /* AUTH <mech> ...<crlf> */
/* Send the AUTH command with the initial response */
result = Curl_pp_sendf(&pop3c->pp, "AUTH %s %s", mech, initresp);
-
- if(!result)
- state(conn, state2);
}
else {
/* Send the AUTH command */
result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech);
-
- if(!result)
- state(conn, state1);
}
return result;
@@ -526,6 +514,20 @@ static CURLcode pop3_perform_auth(struct connectdata *conn,
/***********************************************************************
*
+ * pop3_continue_auth()
+ *
+ * Sends SASL continuation data or cancellation.
+ */
+static CURLcode pop3_continue_auth(struct connectdata *conn,
+ const char *resp)
+{
+ struct pop3_conn *pop3c = &conn->proto.pop3c;
+
+ return Curl_pp_sendf(&pop3c->pp, "%s", resp);
+}
+
+/***********************************************************************
+ *
* pop3_perform_authentication()
*
* Initiates the authentication sequence, with the appropriate SASL
@@ -536,38 +538,32 @@ static CURLcode pop3_perform_authentication(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
struct pop3_conn *pop3c = &conn->proto.pop3c;
- const char *mech = NULL;
- char *initresp = NULL;
- size_t len = 0;
- pop3state state1 = POP3_STOP;
- pop3state state2 = POP3_STOP;
+ saslprogress progress = SASL_IDLE;
- /* Check we have a username and password to authenticate with and end the
+ /* Check we have enough data to authenticate with and end the
connect phase if we don't */
- if(!conn->bits.user_passwd) {
+ if(!Curl_sasl_can_authenticate(&pop3c->sasl, conn)) {
state(conn, POP3_STOP);
-
return result;
}
- /* Calculate the SASL login details */
- if(pop3c->authtypes & POP3_TYPE_SASL)
- result = pop3_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
- &state2);
+ if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_SASL) {
+ /* Calculate the SASL login details */
+ result = Curl_sasl_start(&pop3c->sasl, conn, FALSE, &progress);
- if(!result) {
- if(mech && (pop3c->preftype & POP3_TYPE_SASL)) {
- /* Perform SASL based authentication */
- result = pop3_perform_auth(conn, mech, initresp, len, state1, state2);
- }
+ if(!result)
+ if(progress == SASL_INPROGRESS)
+ state(conn, POP3_AUTH);
+ }
+
+ if(!result && progress == SASL_IDLE) {
#ifndef CURL_DISABLE_CRYPTO_AUTH
- else if((pop3c->authtypes & POP3_TYPE_APOP) &&
- (pop3c->preftype & POP3_TYPE_APOP))
+ if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_APOP)
/* Perform APOP authentication */
result = pop3_perform_apop(conn);
+ else
#endif
- else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) &&
- (pop3c->preftype & POP3_TYPE_CLEARTEXT))
+ if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_CLEARTEXT)
/* Perform clear text authentication */
result = pop3_perform_user(conn);
else {
@@ -577,8 +573,6 @@ static CURLcode pop3_perform_authentication(struct connectdata *conn)
}
}
- Curl_safefree(initresp);
-
return result;
}
@@ -726,6 +720,9 @@ static CURLcode pop3_state_capa_resp(struct connectdata *conn, int pop3code,
/* Loop through the data line */
for(;;) {
+ size_t llen;
+ unsigned int mechbit;
+
while(len &&
(*line == ' ' || *line == '\t' ||
*line == '\r' || *line == '\n')) {
@@ -744,22 +741,9 @@ static CURLcode pop3_state_capa_resp(struct connectdata *conn, int pop3code,
wordlen++;
/* Test the word for a matching authentication mechanism */
- if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
- pop3c->authmechs |= SASL_MECH_LOGIN;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
- pop3c->authmechs |= SASL_MECH_PLAIN;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
- pop3c->authmechs |= SASL_MECH_CRAM_MD5;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
- pop3c->authmechs |= SASL_MECH_DIGEST_MD5;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
- pop3c->authmechs |= SASL_MECH_GSSAPI;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
- pop3c->authmechs |= SASL_MECH_EXTERNAL;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
- pop3c->authmechs |= SASL_MECH_NTLM;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
- pop3c->authmechs |= SASL_MECH_XOAUTH2;
+ if((mechbit = Curl_sasl_decode_mech(line, wordlen, &llen)) &&
+ llen == wordlen)
+ pop3c->sasl.authmechs |= mechbit;
line += wordlen;
len -= wordlen;
@@ -817,575 +801,42 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
return result;
}
-/* For AUTH PLAIN (without initial response) responses */
-static CURLcode pop3_state_auth_plain_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *plainauth = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied. %c", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the authorisation message */
- result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
- &plainauth, &len);
- if(!result && plainauth) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", plainauth);
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
- }
-
- Curl_safefree(plainauth);
-
- return result;
-}
-
-/* For AUTH LOGIN (without initial response) responses */
-static CURLcode pop3_state_auth_login_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *authuser = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the user message */
- result = Curl_sasl_create_login_message(data, conn->user,
- &authuser, &len);
- if(!result && authuser) {
- /* Send the user */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authuser);
-
- if(!result)
- state(conn, POP3_AUTH_LOGIN_PASSWD);
- }
- }
-
- Curl_safefree(authuser);
-
- return result;
-}
-
-/* For AUTH LOGIN user entry responses */
-static CURLcode pop3_state_auth_login_password_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *authpasswd = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the password message */
- result = Curl_sasl_create_login_message(data, conn->passwd,
- &authpasswd, &len);
- if(!result && authpasswd) {
- /* Send the password */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authpasswd);
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
- }
-
- Curl_safefree(authpasswd);
-
- return result;
-}
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* For AUTH CRAM-MD5 responses */
-static CURLcode pop3_state_auth_cram_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlg = NULL;
- char *chlg64 = NULL;
- char *rplyb64 = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- return CURLE_LOGIN_DENIED;
- }
-
- /* Get the challenge message */
- pop3_get_message(data->state.buffer, &chlg64);
-
- /* Decode the challenge message */
- result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
- if(result) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
- if(!result)
- state(conn, POP3_AUTH_CANCEL);
- }
- else {
- /* Create the response message */
- result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
- conn->passwd, &rplyb64, &len);
- if(!result && rplyb64) {
- /* Send the response */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
- }
-
- Curl_safefree(chlg);
- Curl_safefree(rplyb64);
-
- return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge responses */
-static CURLcode pop3_state_auth_digest_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlg64 = NULL;
- char *rplyb64 = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- return CURLE_LOGIN_DENIED;
- }
-
- /* Get the challenge message */
- pop3_get_message(data->state.buffer, &chlg64);
-
- /* Create the response message */
- result = Curl_sasl_create_digest_md5_message(data, chlg64,
- conn->user, conn->passwd,
- "pop", &rplyb64, &len);
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
- if(!result)
- state(conn, POP3_AUTH_CANCEL);
- }
- }
- else {
- /* Send the response */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
-
- if(!result)
- state(conn, POP3_AUTH_DIGESTMD5_RESP);
- }
-
- Curl_safefree(rplyb64);
-
- return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge-response responses */
-static CURLcode pop3_state_auth_digest_resp_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Authentication failed: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Send an empty response */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "");
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
-
- return result;
-}
-#endif
-
-#ifdef USE_NTLM
-/* For AUTH NTLM (without initial response) responses */
-static CURLcode pop3_state_auth_ntlm_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *type1msg = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the type-1 message */
- result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
- &conn->ntlm,
- &type1msg, &len);
- if(!result && type1msg) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type1msg);
-
- if(!result)
- state(conn, POP3_AUTH_NTLM_TYPE2MSG);
- }
- }
-
- Curl_safefree(type1msg);
-
- return result;
-}
-
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode pop3_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *type2msg = NULL;
- char *type3msg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the type-2 message */
- pop3_get_message(data->state.buffer, &type2msg);
-
- /* Decode the type-2 message */
- result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
- if(result) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
- if(!result)
- state(conn, POP3_AUTH_CANCEL);
- }
- else {
- /* Create the type-3 message */
- result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
- conn->passwd, &conn->ntlm,
- &type3msg, &len);
- if(!result && type3msg) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type3msg);
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
- }
- }
-
- Curl_safefree(type3msg);
-
- return result;
-}
-#endif
-
-#if defined(USE_KERBEROS5)
-/* For AUTH GSSAPI (without initial response) responses */
-static CURLcode pop3_state_auth_gssapi_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct pop3_conn *pop3c = &conn->proto.pop3c;
- size_t len = 0;
- char *respmsg = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the initial response message */
- result = Curl_sasl_create_gssapi_user_message(data, conn->user,
- conn->passwd, "pop",
- pop3c->mutual_auth,
- NULL, &conn->krb5,
- &respmsg, &len);
- if(!result && respmsg) {
- /* Send the message */
- result = Curl_pp_sendf(&pop3c->pp, "%s", respmsg);
-
- if(!result)
- state(conn, POP3_AUTH_GSSAPI_TOKEN);
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-
-/* For AUTH GSSAPI user token responses */
-static CURLcode pop3_state_auth_gssapi_token_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct pop3_conn *pop3c = &conn->proto.pop3c;
- char *chlgmsg = NULL;
- char *respmsg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- pop3_get_message(data->state.buffer, &chlgmsg);
-
- if(pop3c->mutual_auth)
- /* Decode the user token challenge and create the optional response
- message */
- result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
- pop3c->mutual_auth,
- chlgmsg, &conn->krb5,
- &respmsg, &len);
- else
- /* Decode the security challenge and create the response message */
- result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
- &conn->krb5,
- &respmsg, &len);
-
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&pop3c->pp, "%s", "*");
-
- if(!result)
- state(conn, POP3_AUTH_CANCEL);
- }
- }
- else {
- /* Send the response */
- if(respmsg)
- result = Curl_pp_sendf(&pop3c->pp, "%s", respmsg);
- else
- result = Curl_pp_sendf(&pop3c->pp, "%s", "");
-
- if(!result)
- state(conn, (pop3c->mutual_auth ? POP3_AUTH_GSSAPI_NO_DATA :
- POP3_AUTH_FINAL));
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-
-/* For AUTH GSSAPI no data responses */
-static CURLcode pop3_state_auth_gssapi_no_data_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlgmsg = NULL;
- char *respmsg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- pop3_get_message(data->state.buffer, &chlgmsg);
-
- /* Decode the security challenge and create the security message */
- result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
- &conn->krb5,
- &respmsg, &len);
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
- if(!result)
- state(conn, POP3_AUTH_CANCEL);
- }
- }
- else {
- /* Send the response */
- if(respmsg) {
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", respmsg);
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-#endif
-
-/* For AUTH XOAUTH2 (without initial response) responses */
-static CURLcode pop3_state_auth_xoauth2_resp(struct connectdata *conn,
- int pop3code, pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *xoauth = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Access denied: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the authorisation message */
- result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
- conn->xoauth2_bearer,
- &xoauth, &len);
- if(!result && xoauth) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", xoauth);
-
- if(!result)
- state(conn, POP3_AUTH_FINAL);
- }
- }
-
- Curl_safefree(xoauth);
-
- return result;
-}
-
-/* For AUTH cancellation responses */
-static CURLcode pop3_state_auth_cancel_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
+/* For SASL authentication responses */
+static CURLcode pop3_state_auth_resp(struct connectdata *conn,
+ int pop3code,
+ pop3state instate)
{
CURLcode result = CURLE_OK;
struct SessionHandle *data = conn->data;
struct pop3_conn *pop3c = &conn->proto.pop3c;
- const char *mech = NULL;
- char *initresp = NULL;
- size_t len = 0;
- pop3state state1 = POP3_STOP;
- pop3state state2 = POP3_STOP;
+ saslprogress progress;
- (void)pop3code;
(void)instate; /* no use for this yet */
- /* Remove the offending mechanism from the supported list */
- pop3c->authmechs ^= pop3c->authused;
-
- /* Calculate alternative SASL login details */
- result = pop3_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
- &state2);
-
- if(!result) {
- /* Do we have any mechanisms left or can we fallback to another
- authentication type? */
- if(mech) {
- /* Retry SASL based authentication */
- result = pop3_perform_auth(conn, mech, initresp, len, state1, state2);
-
- Curl_safefree(initresp);
- }
+ result = Curl_sasl_continue(&pop3c->sasl, conn, pop3code, &progress);
+ if(!result)
+ switch(progress) {
+ case SASL_DONE:
+ state(conn, POP3_STOP); /* Authenticated */
+ break;
+ case SASL_IDLE: /* No mechanism left after cancellation */
#ifndef CURL_DISABLE_CRYPTO_AUTH
- else if((pop3c->authtypes & POP3_TYPE_APOP) &&
- (pop3c->preftype & POP3_TYPE_APOP))
- /* Perform APOP authentication */
- result = pop3_perform_apop(conn);
+ if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_APOP)
+ /* Perform APOP authentication */
+ result = pop3_perform_apop(conn);
+ else
#endif
- else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) &&
- (pop3c->preftype & POP3_TYPE_CLEARTEXT))
- /* Perform clear text authentication */
- result = pop3_perform_user(conn);
- else {
- failf(data, "Authentication cancelled");
-
- result = CURLE_LOGIN_DENIED;
+ if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_CLEARTEXT)
+ /* Perform clear text authentication */
+ result = pop3_perform_user(conn);
+ else {
+ failf(data, "Authentication cancelled");
+ result = CURLE_LOGIN_DENIED;
+ }
+ break;
+ default:
+ break;
}
- }
-
- return result;
-}
-
-/* For final responses in the AUTH sequence */
-static CURLcode pop3_state_auth_final_resp(struct connectdata *conn,
- int pop3code,
- pop3state instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
-
- (void)instate; /* no use for this yet */
-
- if(pop3code != '+') {
- failf(data, "Authentication failed: %d", pop3code);
- result = CURLE_LOGIN_DENIED;
- }
- else
- /* End of connect phase */
- state(conn, POP3_STOP);
return result;
}
@@ -1552,69 +1003,8 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)
result = pop3_state_starttls_resp(conn, pop3code, pop3c->state);
break;
- case POP3_AUTH_PLAIN:
- result = pop3_state_auth_plain_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_LOGIN:
- result = pop3_state_auth_login_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_LOGIN_PASSWD:
- result = pop3_state_auth_login_password_resp(conn, pop3code,
- pop3c->state);
- break;
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
- case POP3_AUTH_CRAMMD5:
- result = pop3_state_auth_cram_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_DIGESTMD5:
- result = pop3_state_auth_digest_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_DIGESTMD5_RESP:
- result = pop3_state_auth_digest_resp_resp(conn, pop3code, pop3c->state);
- break;
-#endif
-
-#ifdef USE_NTLM
- case POP3_AUTH_NTLM:
- result = pop3_state_auth_ntlm_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_NTLM_TYPE2MSG:
- result = pop3_state_auth_ntlm_type2msg_resp(conn, pop3code,
- pop3c->state);
- break;
-#endif
-
-#if defined(USE_KERBEROS5)
- case POP3_AUTH_GSSAPI:
- result = pop3_state_auth_gssapi_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_GSSAPI_TOKEN:
- result = pop3_state_auth_gssapi_token_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_GSSAPI_NO_DATA:
- result = pop3_state_auth_gssapi_no_data_resp(conn, pop3code,
- pop3c->state);
- break;
-#endif
-
- case POP3_AUTH_XOAUTH2:
- result = pop3_state_auth_xoauth2_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_CANCEL:
- result = pop3_state_auth_cancel_resp(conn, pop3code, pop3c->state);
- break;
-
- case POP3_AUTH_FINAL:
- result = pop3_state_auth_final_resp(conn, pop3code, pop3c->state);
+ case POP3_AUTH:
+ result = pop3_state_auth_resp(conn, pop3code, pop3c->state);
break;
#ifndef CURL_DISABLE_CRYPTO_AUTH
@@ -1727,7 +1117,7 @@ static CURLcode pop3_connect(struct connectdata *conn, bool *done)
/* Set the default preferred authentication type and mechanism */
pop3c->preftype = POP3_TYPE_ANY;
- pop3c->prefmech = SASL_AUTH_ANY;
+ Curl_sasl_init(&pop3c->sasl, &saslpop3);
/* Initialise the pingpong layer */
Curl_pp_init(pp);
@@ -1879,7 +1269,7 @@ static CURLcode pop3_disconnect(struct connectdata *conn, bool dead_connection)
Curl_pp_disconnect(&pop3c->pp);
/* Cleanup the SASL module */
- Curl_sasl_cleanup(conn, pop3c->authused);
+ Curl_sasl_cleanup(conn, pop3c->sasl.authused);
/* Cleanup our connection based variables */
Curl_safefree(pop3c->apoptimestamp);
@@ -1994,75 +1384,52 @@ static CURLcode pop3_parse_url_options(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
struct pop3_conn *pop3c = &conn->proto.pop3c;
- const char *options = conn->options;
- const char *ptr = options;
- bool reset = TRUE;
+ const char *ptr = conn->options;
- while(ptr && *ptr) {
+ pop3c->sasl.resetprefs = TRUE;
+
+ while(!result && ptr && *ptr) {
const char *key = ptr;
+ const char *value;
while(*ptr && *ptr != '=')
ptr++;
- if(strnequal(key, "AUTH", 4)) {
- size_t len = 0;
- const char *value = ++ptr;
+ value = ptr + 1;
- if(reset) {
- reset = FALSE;
- pop3c->preftype = POP3_TYPE_NONE;
- pop3c->prefmech = SASL_AUTH_NONE;
- }
+ while(*ptr && *ptr != ';')
+ ptr++;
- while(*ptr && *ptr != ';') {
- ptr++;
- len++;
- }
+ if(strnequal(key, "AUTH=", 5)) {
+ result = Curl_sasl_parse_url_auth_option(&pop3c->sasl,
+ value, ptr - value);
- if(strnequal(value, "*", len)) {
- pop3c->preftype = POP3_TYPE_ANY;
- pop3c->prefmech = SASL_AUTH_ANY;
- }
- else if(strnequal(value, "+APOP", len)) {
+ if(result && strnequal(value, "+APOP", ptr - value)) {
pop3c->preftype = POP3_TYPE_APOP;
- pop3c->prefmech = SASL_AUTH_NONE;
- }
- else if(strnequal(value, SASL_MECH_STRING_LOGIN, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_LOGIN;
- }
- else if(strnequal(value, SASL_MECH_STRING_PLAIN, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_PLAIN;
- }
- else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_CRAM_MD5;
- }
- else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_DIGEST_MD5;
- }
- else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_GSSAPI;
- }
- else if(strnequal(value, SASL_MECH_STRING_NTLM, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_NTLM;
+ pop3c->sasl.prefmech = SASL_AUTH_NONE;
+ result = CURLE_OK;
}
- else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len)) {
- pop3c->preftype = POP3_TYPE_SASL;
- pop3c->prefmech |= SASL_MECH_XOAUTH2;
- }
-
- if(*ptr == ';')
- ptr++;
}
else
result = CURLE_URL_MALFORMAT;
+
+ if(*ptr == ';')
+ ptr++;
}
+ if(pop3c->preftype != POP3_TYPE_APOP)
+ switch(pop3c->sasl.prefmech) {
+ case SASL_AUTH_NONE:
+ pop3c->preftype = POP3_TYPE_NONE;
+ break;
+ case SASL_AUTH_DEFAULT:
+ pop3c->preftype = POP3_TYPE_ANY;
+ break;
+ default:
+ pop3c->preftype = POP3_TYPE_SASL;
+ break;
+ }
+
return result;
}
@@ -2105,110 +1472,6 @@ static CURLcode pop3_parse_custom_request(struct connectdata *conn)
/***********************************************************************
*
- * pop3_calc_sasl_details()
- *
- * Calculate the required login details for SASL authentication.
- */
-static CURLcode pop3_calc_sasl_details(struct connectdata *conn,
- const char **mech,
- char **initresp, size_t *len,
- pop3state *state1, pop3state *state2)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct pop3_conn *pop3c = &conn->proto.pop3c;
-
- /* Calculate the supported authentication mechanism, by decreasing order of
- security, as well as the initial response where appropriate */
-#if defined(USE_KERBEROS5)
- if((pop3c->authmechs & SASL_MECH_GSSAPI) &&
- (pop3c->prefmech & SASL_MECH_GSSAPI)) {
- pop3c->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
-
- *mech = SASL_MECH_STRING_GSSAPI;
- *state1 = POP3_AUTH_GSSAPI;
- *state2 = POP3_AUTH_GSSAPI_TOKEN;
- pop3c->authused = SASL_MECH_GSSAPI;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_gssapi_user_message(data, conn->user,
- conn->passwd, "pop",
- pop3c->mutual_auth,
- NULL, &conn->krb5,
- initresp, len);
- }
- else
-#endif
-#ifndef CURL_DISABLE_CRYPTO_AUTH
- if((pop3c->authmechs & SASL_MECH_DIGEST_MD5) &&
- (pop3c->prefmech & SASL_MECH_DIGEST_MD5)) {
- *mech = SASL_MECH_STRING_DIGEST_MD5;
- *state1 = POP3_AUTH_DIGESTMD5;
- pop3c->authused = SASL_MECH_DIGEST_MD5;
- }
- else if((pop3c->authmechs & SASL_MECH_CRAM_MD5) &&
- (pop3c->prefmech & SASL_MECH_CRAM_MD5)) {
- *mech = SASL_MECH_STRING_CRAM_MD5;
- *state1 = POP3_AUTH_CRAMMD5;
- pop3c->authused = SASL_MECH_CRAM_MD5;
- }
- else
-#endif
-#ifdef USE_NTLM
- if((pop3c->authmechs & SASL_MECH_NTLM) &&
- (pop3c->prefmech & SASL_MECH_NTLM)) {
- *mech = SASL_MECH_STRING_NTLM;
- *state1 = POP3_AUTH_NTLM;
- *state2 = POP3_AUTH_NTLM_TYPE2MSG;
- pop3c->authused = SASL_MECH_NTLM;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
- &conn->ntlm,
- initresp, len);
- }
- else
-#endif
- if(((pop3c->authmechs & SASL_MECH_XOAUTH2) &&
- (pop3c->prefmech & SASL_MECH_XOAUTH2) &&
- (pop3c->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
- *mech = SASL_MECH_STRING_XOAUTH2;
- *state1 = POP3_AUTH_XOAUTH2;
- *state2 = POP3_AUTH_FINAL;
- pop3c->authused = SASL_MECH_XOAUTH2;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_xoauth2_message(data, conn->user,
- conn->xoauth2_bearer,
- initresp, len);
- }
- else if((pop3c->authmechs & SASL_MECH_LOGIN) &&
- (pop3c->prefmech & SASL_MECH_LOGIN)) {
- *mech = SASL_MECH_STRING_LOGIN;
- *state1 = POP3_AUTH_LOGIN;
- *state2 = POP3_AUTH_LOGIN_PASSWD;
- pop3c->authused = SASL_MECH_LOGIN;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
- }
- else if((pop3c->authmechs & SASL_MECH_PLAIN) &&
- (pop3c->prefmech & SASL_MECH_PLAIN)) {
- *mech = SASL_MECH_STRING_PLAIN;
- *state1 = POP3_AUTH_PLAIN;
- *state2 = POP3_AUTH_FINAL;
- pop3c->authused = SASL_MECH_PLAIN;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
- initresp, len);
- }
-
- return result;
-}
-
-/***********************************************************************
- *
* Curl_pop3_write()
*
* This function scans the body after the end-of-body and writes everything
diff --git a/lib/pop3.h b/lib/pop3.h
index 729a55ad5..7bc53aaf5 100644
--- a/lib/pop3.h
+++ b/lib/pop3.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2015, 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
@@ -23,6 +23,7 @@
***************************************************************************/
#include "pingpong.h"
+#include "curl_sasl.h"
/****************************************************************************
* POP3 unique setup
@@ -35,20 +36,7 @@ typedef enum {
POP3_STARTTLS,
POP3_UPGRADETLS, /* asynchronously upgrade the connection to SSL/TLS
(multi mode only) */
- POP3_AUTH_PLAIN,
- POP3_AUTH_LOGIN,
- POP3_AUTH_LOGIN_PASSWD,
- POP3_AUTH_CRAMMD5,
- POP3_AUTH_DIGESTMD5,
- POP3_AUTH_DIGESTMD5_RESP,
- POP3_AUTH_NTLM,
- POP3_AUTH_NTLM_TYPE2MSG,
- POP3_AUTH_GSSAPI,
- POP3_AUTH_GSSAPI_TOKEN,
- POP3_AUTH_GSSAPI_NO_DATA,
- POP3_AUTH_XOAUTH2,
- POP3_AUTH_CANCEL,
- POP3_AUTH_FINAL,
+ POP3_AUTH,
POP3_APOP,
POP3_USER,
POP3_PASS,
@@ -77,14 +65,11 @@ struct pop3_conn {
have been received so far */
size_t strip; /* Number of bytes from the start to ignore as
non-body */
+ struct SASL sasl; /* SASL-related storage */
unsigned int authtypes; /* Accepted authentication types */
- unsigned int authmechs; /* Accepted SASL authentication mechanisms */
unsigned int preftype; /* Preferred authentication type */
- unsigned int prefmech; /* Preferred SASL authentication mechanism */
- unsigned int authused; /* SASL auth mechanism used for the connection */
char *apoptimestamp; /* APOP timestamp from the server greeting */
bool tls_supported; /* StartTLS capability supported by server */
- bool mutual_auth; /* Mutual authentication enabled (GSSAPI only) */
};
extern const struct Curl_handler Curl_handler_pop3;
diff --git a/lib/progress.c b/lib/progress.c
index f147ce71e..b46e27405 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -25,9 +25,7 @@
#include "urldata.h"
#include "sendf.h"
#include "progress.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
/* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
byte) */
diff --git a/lib/rtsp.c b/lib/rtsp.c
index 029738d9b..c30afd39d 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -34,14 +34,12 @@
#include "progress.h"
#include "rtsp.h"
#include "rawstr.h"
-#include "curl_memory.h"
#include "select.h"
#include "connect.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -265,11 +263,10 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
* Since all RTSP requests are included here, there is no need to
* support custom requests like HTTP.
**/
- DEBUGASSERT((rtspreq > RTSPREQ_NONE && rtspreq < RTSPREQ_LAST));
data->set.opt_no_body = TRUE; /* most requests don't contain a body */
switch(rtspreq) {
- case RTSPREQ_NONE:
- failf(data, "Got invalid RTSP request: RTSPREQ_NONE");
+ default:
+ failf(data, "Got invalid RTSP request");
return CURLE_BAD_FUNCTION_ARGUMENT;
case RTSPREQ_OPTIONS:
p_request = "OPTIONS";
@@ -325,7 +322,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
if(!p_session_id &&
(rtspreq & ~(RTSPREQ_OPTIONS | RTSPREQ_DESCRIBE | RTSPREQ_SETUP))) {
failf(data, "Refusing to issue an RTSP request [%s] without a session ID.",
- p_request ? p_request : "");
+ p_request);
return CURLE_BAD_FUNCTION_ARGUMENT;
}
@@ -443,8 +440,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
Curl_add_bufferf(req_buffer,
"%s %s RTSP/1.0\r\n" /* Request Stream-URI RTSP/1.0 */
"CSeq: %ld\r\n", /* CSeq */
- (p_request ? p_request : ""), p_stream_uri,
- rtsp->CSeq_sent);
+ p_request, p_stream_uri, rtsp->CSeq_sent);
if(result)
return result;
@@ -498,8 +494,8 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
}
else {
- postsize = (data->set.postfieldsize != -1)?
- data->set.postfieldsize:
+ postsize = (data->state.infilesize != -1)?
+ data->state.infilesize:
(data->set.postfields? (curl_off_t)strlen(data->set.postfields):0);
data->set.httpreq = HTTPREQ_POST;
}
diff --git a/lib/security.c b/lib/security.c
index 607048cc1..014bbf1b8 100644
--- a/lib/security.c
+++ b/lib/security.c
@@ -7,10 +7,10 @@
* rewrite to work around the paragraph 2 in the BSD licenses as explained
* below.
*
- * Copyright (c) 1998, 1999, 2013 Kungliga Tekniska Högskolan
+ * Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
*
- * Copyright (C) 2001 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2001 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* All rights reserved.
*
@@ -109,19 +109,12 @@ static char level_to_char(int level) {
return 'P';
}
-static const struct Curl_sec_client_mech * const mechs[] = {
-#ifdef HAVE_GSSAPI
- &Curl_krb5_client_mech,
-#endif
- NULL
-};
-
/* Send an FTP command defined by |message| and the optional arguments. The
function returns the ftp_code. If an error occurs, -1 is returned. */
static int ftp_send_command(struct connectdata *conn, const char *message, ...)
{
int ftp_code;
- ssize_t nread;
+ ssize_t nread=0;
va_list args;
char print_buffer[50];
@@ -366,7 +359,7 @@ int Curl_sec_read_msg(struct connectdata *conn, char *buffer,
int */
int decoded_len;
char *buf;
- int ret_code;
+ int ret_code = 0;
size_t decoded_sz = 0;
CURLcode error;
@@ -395,13 +388,13 @@ int Curl_sec_read_msg(struct connectdata *conn, char *buffer,
}
buf[decoded_len] = '\0';
- DEBUGASSERT(decoded_len > 3);
- if(buf[3] == '-')
- ret_code = 0;
- else {
- /* Check for error? */
+ if(decoded_len <= 3)
+ /* suspiciously short */
+ return 0;
+
+ if(buf[3] != '-')
+ /* safe to ignore return code */
(void)sscanf(buf, "%d", &ret_code);
- }
if(buf[decoded_len - 1] == '\n')
buf[decoded_len - 1] = '\0';
@@ -444,8 +437,8 @@ static int sec_set_protection_level(struct connectdata *conn)
pbsz = strstr(conn->data->state.buffer, "PBSZ=");
if(pbsz) {
- /* FIXME: Checks for errors in sscanf? */
- sscanf(pbsz, "PBSZ=%u", &buffer_size);
+ /* ignore return code, use default value if it fails */
+ (void)sscanf(pbsz, "PBSZ=%u", &buffer_size);
if(buffer_size < conn->buffer_size)
conn->buffer_size = buffer_size;
}
@@ -484,72 +477,63 @@ static CURLcode choose_mech(struct connectdata *conn)
{
int ret;
struct SessionHandle *data = conn->data;
- const struct Curl_sec_client_mech * const *mech;
void *tmp_allocation;
- const char *mech_name;
-
- for(mech = mechs; (*mech); ++mech) {
- mech_name = (*mech)->name;
- /* We have no mechanism with a NULL name but keep this check */
- DEBUGASSERT(mech_name != NULL);
- if(mech_name == NULL) {
- infof(data, "Skipping mechanism with empty name (%p)\n", (void *)mech);
- continue;
- }
- tmp_allocation = realloc(conn->app_data, (*mech)->size);
- if(tmp_allocation == NULL) {
- failf(data, "Failed realloc of size %u", (*mech)->size);
- mech = NULL;
- return CURLE_OUT_OF_MEMORY;
- }
- conn->app_data = tmp_allocation;
+ const struct Curl_sec_client_mech *mech = &Curl_krb5_client_mech;
- if((*mech)->init) {
- ret = (*mech)->init(conn->app_data);
- if(ret != 0) {
- infof(data, "Failed initialization for %s. Skipping it.\n", mech_name);
- continue;
- }
+ tmp_allocation = realloc(conn->app_data, mech->size);
+ if(tmp_allocation == NULL) {
+ failf(data, "Failed realloc of size %u", mech->size);
+ mech = NULL;
+ return CURLE_OUT_OF_MEMORY;
+ }
+ conn->app_data = tmp_allocation;
+
+ if(mech->init) {
+ ret = mech->init(conn->app_data);
+ if(ret) {
+ infof(data, "Failed initialization for %s. Skipping it.\n",
+ mech->name);
+ return CURLE_FAILED_INIT;
}
+ }
- infof(data, "Trying mechanism %s...\n", mech_name);
- ret = ftp_send_command(conn, "AUTH %s", mech_name);
- if(ret < 0)
- /* FIXME: This error is too generic but it is OK for now. */
- return CURLE_COULDNT_CONNECT;
-
- if(ret/100 != 3) {
- switch(ret) {
- case 504:
- infof(data, "Mechanism %s is not supported by the server (server "
- "returned ftp code: 504).\n", mech_name);
- break;
- case 534:
- infof(data, "Mechanism %s was rejected by the server (server returned "
- "ftp code: 534).\n", mech_name);
- break;
- default:
- if(ret/100 == 5) {
- infof(data, "server does not support the security extensions\n");
- return CURLE_USE_SSL_FAILED;
- }
- break;
+ infof(data, "Trying mechanism %s...\n", mech->name);
+ ret = ftp_send_command(conn, "AUTH %s", mech->name);
+ if(ret < 0)
+ /* FIXME: This error is too generic but it is OK for now. */
+ return CURLE_COULDNT_CONNECT;
+
+ if(ret/100 != 3) {
+ switch(ret) {
+ case 504:
+ infof(data, "Mechanism %s is not supported by the server (server "
+ "returned ftp code: 504).\n", mech->name);
+ break;
+ case 534:
+ infof(data, "Mechanism %s was rejected by the server (server returned "
+ "ftp code: 534).\n", mech->name);
+ break;
+ default:
+ if(ret/100 == 5) {
+ infof(data, "server does not support the security extensions\n");
+ return CURLE_USE_SSL_FAILED;
}
- continue;
+ break;
}
+ return CURLE_LOGIN_DENIED;
+ }
- /* Authenticate */
- ret = (*mech)->auth(conn->app_data, conn);
+ /* Authenticate */
+ ret = mech->auth(conn->app_data, conn);
- if(ret == AUTH_CONTINUE)
- continue;
- else if(ret != AUTH_OK) {
+ if(ret != AUTH_CONTINUE) {
+ if(ret != AUTH_OK) {
/* Mechanism has dumped the error to stderr, don't error here. */
return -1;
}
DEBUGASSERT(ret == AUTH_OK);
- conn->mech = *mech;
+ conn->mech = mech;
conn->sec_complete = 1;
conn->recv[FIRSTSOCKET] = sec_recv;
conn->send[FIRSTSOCKET] = sec_send;
@@ -559,10 +543,9 @@ static CURLcode choose_mech(struct connectdata *conn)
/* Set the requested protection level */
/* BLOCKING */
(void)sec_set_protection_level(conn);
- break;
}
- return *mech != NULL ? CURLE_OK : CURLE_FAILED_INIT;
+ return CURLE_OK;
}
CURLcode
@@ -577,10 +560,8 @@ Curl_sec_end(struct connectdata *conn)
{
if(conn->mech != NULL && conn->mech->end)
conn->mech->end(conn->app_data);
- if(conn->app_data) {
- free(conn->app_data);
- conn->app_data = NULL;
- }
+ free(conn->app_data);
+ conn->app_data = NULL;
if(conn->in_buffer.data) {
free(conn->in_buffer.data);
conn->in_buffer.data = NULL;
diff --git a/lib/select.c b/lib/select.c
index 1c6481cb7..24dc5fd79 100644
--- a/lib/select.c
+++ b/lib/select.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -159,7 +159,7 @@ int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */
fd_set fds_err;
curl_socket_t maxfd;
#endif
- struct timeval initial_tv = {0,0};
+ struct timeval initial_tv = {0, 0};
int pending_ms = 0;
int error;
int r;
@@ -393,7 +393,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
fd_set fds_err;
curl_socket_t maxfd;
#endif
- struct timeval initial_tv = {0,0};
+ struct timeval initial_tv = {0, 0};
bool fds_none = TRUE;
unsigned int i;
int pending_ms = 0;
@@ -573,6 +573,6 @@ int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
rc = tpf_select_bsd(maxfds, reads, writes, excepts, tv);
tpf_process_signals();
- return(rc);
+ return rc;
}
#endif /* TPF */
diff --git a/lib/sendf.c b/lib/sendf.c
index 2d1a166bd..5f39d1f2d 100644
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -31,14 +31,11 @@
#include "ssh.h"
#include "multiif.h"
#include "non-ascii.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
+#include "curl_printf.h"
#include "strerror.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#ifdef CURL_DO_LINEEND_CONV
@@ -55,7 +52,7 @@ static size_t convert_lineends(struct SessionHandle *data,
/* sanity check */
if((startPtr == NULL) || (size < 1)) {
- return(size);
+ return size;
}
if(data->state.prev_block_had_trailing_cr) {
@@ -117,9 +114,9 @@ static size_t convert_lineends(struct SessionHandle *data,
/* tidy up by null terminating the now shorter data */
*outPtr = '\0';
- return(outPtr - startPtr);
+ return (outPtr - startPtr);
}
- return(size);
+ return size;
}
#endif /* CURL_DO_LINEEND_CONV */
@@ -554,7 +551,7 @@ CURLcode Curl_read(struct connectdata *conn, /* connection data */
ssize_t nread = 0;
size_t bytesfromsocket = 0;
char *buffertofill = NULL;
- bool pipelining = Curl_multi_pipeline_enabled(conn->data->multi);
+ bool pipelining = Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1);
/* Set 'num' to 0 or 1, depending on which socket that has been sent here.
If it is the second socket, we set num to 1. Otherwise to 0. This lets
diff --git a/lib/setup-vms.h b/lib/setup-vms.h
index 4b3dded9d..520a35daa 100644
--- a/lib/setup-vms.h
+++ b/lib/setup-vms.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -249,6 +249,9 @@ char * unix_path;
#define MD5_Init MD5_INIT
#define MD5_Update MD5_UPDATE
#define OPENSSL_add_all_algo_noconf OPENSSL_ADD_ALL_ALGO_NOCONF
+#ifndef __VAX
+#define OPENSSL_load_builtin_modules OPENSSL_LOAD_BUILTIN_MODULES
+#endif
#define PEM_read_X509 PEM_READ_X509
#define PEM_write_bio_X509 PEM_WRITE_BIO_X509
#define PKCS12_PBE_add PKCS12_PBE_ADD
@@ -272,6 +275,7 @@ char * unix_path;
#define SSL_CTX_set_cipher_list SSL_CTX_SET_CIPHER_LIST
#define SSL_CTX_set_def_passwd_cb_ud SSL_CTX_SET_DEF_PASSWD_CB_UD
#define SSL_CTX_set_default_passwd_cb SSL_CTX_SET_DEFAULT_PASSWD_CB
+#define SSL_CTX_set_msg_callback SSL_CTX_SET_MSG_CALLBACK
#define SSL_CTX_set_verify SSL_CTX_SET_VERIFY
#define SSL_CTX_use_PrivateKey SSL_CTX_USE_PRIVATEKEY
#define SSL_CTX_use_PrivateKey_file SSL_CTX_USE_PRIVATEKEY_FILE
@@ -301,6 +305,7 @@ char * unix_path;
#define SSL_set_fd SSL_SET_FD
#define SSL_set_session SSL_SET_SESSION
#define SSL_shutdown SSL_SHUTDOWN
+#define SSL_version SSL_VERSION
#define SSL_write SSL_WRITE
#define SSLeay SSLEAY
#define SSLv23_client_method SSLV23_CLIENT_METHOD
@@ -325,6 +330,7 @@ char * unix_path;
#define UI_set_result UI_SET_RESULT
#define X509V3_EXT_print X509V3_EXT_PRINT
#define X509_EXTENSION_get_critical X509_EXTENSION_GET_CRITICAL
+#define X509_EXTENSION_get_data X509_EXTENSION_GET_DATA
#define X509_EXTENSION_get_object X509_EXTENSION_GET_OBJECT
#define X509_LOOKUP_file X509_LOOKUP_FILE
#define X509_NAME_ENTRY_get_data X509_NAME_ENTRY_GET_DATA
@@ -349,6 +355,12 @@ char * unix_path;
#define sk_pop SK_POP
#define sk_pop_free SK_POP_FREE
#define sk_value SK_VALUE
+#ifdef __VAX
+#define OPENSSL_NO_SHA256
+#endif
+#define SHA256_Final SHA256_FINAL
+#define SHA256_Init SHA256_INIT
+#define SHA256_Update SHA256_UPDATE
#define USE_UPPERCASE_GSSAPI 1
#define gss_seal GSS_SEAL
@@ -414,7 +426,7 @@ char * unix_path;
static void des_ecb_encrypt(const_des_cblock *input,
des_cblock *output,
- des_key_schedule ks,int enc) {
+ des_key_schedule ks, int enc) {
DES_ECB_ENCRYPT(input, output, ks, enc);
}
#endif
diff --git a/lib/share.c b/lib/share.c
index b8b6bee80..17202486c 100644
--- a/lib/share.c
+++ b/lib/share.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -35,9 +35,15 @@ CURLSH *
curl_share_init(void)
{
struct Curl_share *share = calloc(1, sizeof(struct Curl_share));
- if(share)
+ if(share) {
share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
+ if(Curl_mk_dnscache(&share->hostcache)) {
+ free(share);
+ return NULL;
+ }
+ }
+
return share;
}
@@ -67,11 +73,6 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
share->specifier |= (1<<type);
switch( type ) {
case CURL_LOCK_DATA_DNS:
- if(!share->hostcache) {
- share->hostcache = Curl_mk_dnscache();
- if(!share->hostcache)
- res = CURLSHE_NOMEM;
- }
break;
case CURL_LOCK_DATA_COOKIE:
@@ -115,10 +116,6 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
share->specifier &= ~(1<<type);
switch( type ) {
case CURL_LOCK_DATA_DNS:
- if(share->hostcache) {
- Curl_hash_destroy(share->hostcache);
- share->hostcache = NULL;
- }
break;
case CURL_LOCK_DATA_COOKIE:
@@ -192,14 +189,10 @@ curl_share_cleanup(CURLSH *sh)
return CURLSHE_IN_USE;
}
- if(share->hostcache) {
- Curl_hash_destroy(share->hostcache);
- share->hostcache = NULL;
- }
+ Curl_hash_destroy(&share->hostcache);
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
- if(share->cookies)
- Curl_cookie_cleanup(share->cookies);
+ Curl_cookie_cleanup(share->cookies);
#endif
#ifdef USE_SSL
diff --git a/lib/share.h b/lib/share.h
index 9a5128e93..8e6629b7b 100644
--- a/lib/share.h
+++ b/lib/share.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -44,7 +44,7 @@ struct Curl_share {
curl_unlock_function unlockfunc;
void *clientdata;
- struct curl_hash *hostcache;
+ struct curl_hash hostcache;
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
struct CookieInfo *cookies;
#endif
diff --git a/lib/slist.c b/lib/slist.c
index 3cac6ca21..9c0b2a58a 100644
--- a/lib/slist.c
+++ b/lib/slist.c
@@ -22,10 +22,10 @@
#include "curl_setup.h"
-#include "curl_memory.h"
#include "slist.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* returns last node in linked list */
diff --git a/lib/smb.c b/lib/smb.c
index e66427ba3..d461a712c 100644
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -44,11 +44,11 @@
#include "transfer.h"
#include "vtls/vtls.h"
#include "curl_ntlm_core.h"
-#include "curl_memory.h"
#include "escape.h"
#include "curl_endian.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* Local API functions */
@@ -783,9 +783,15 @@ static CURLcode smb_request_state(struct connectdata *conn, bool *done)
off = Curl_read16_le(((unsigned char *) msg) +
sizeof(struct smb_header) + 13);
if(len > 0) {
- result = Curl_client_write(conn, CLIENTWRITE_BODY,
- (char *)msg + off + sizeof(unsigned int),
- len);
+ struct smb_conn *smbc = &conn->proto.smbc;
+ if(off + sizeof(unsigned int) + len > smbc->got) {
+ failf(conn->data, "Invalid input packet");
+ result = CURLE_RECV_ERROR;
+ }
+ else
+ result = Curl_client_write(conn, CLIENTWRITE_BODY,
+ (char *)msg + off + sizeof(unsigned int),
+ len);
if(result) {
req->result = result;
next_state = SMB_CLOSE;
@@ -935,7 +941,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
/* Parse the path for the share */
req->share = strdup((*path == '/' || *path == '\\') ? path + 1 : path);
if(!req->share) {
- Curl_safefree(path);
+ free(path);
return CURLE_OUT_OF_MEMORY;
}
@@ -946,7 +952,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
/* The share must be present */
if(!slash) {
- Curl_safefree(path);
+ free(path);
return CURLE_URL_MALFORMAT;
}
@@ -960,7 +966,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
*slash = '\\';
}
- Curl_safefree(path);
+ free(path);
return CURLE_OK;
}
diff --git a/lib/smtp.c b/lib/smtp.c
index 7bd5158bf..dada087a9 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -82,10 +82,7 @@
#include "curl_gethostname.h"
#include "curl_sasl.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -105,10 +102,10 @@ static CURLcode smtp_setup_connection(struct connectdata *conn);
static CURLcode smtp_parse_url_options(struct connectdata *conn);
static CURLcode smtp_parse_url_path(struct connectdata *conn);
static CURLcode smtp_parse_custom_request(struct connectdata *conn);
-static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
- const char **mech,
- char **initresp, size_t *len,
- smtpstate *state1, smtpstate *state2);
+static CURLcode smtp_perform_auth(struct connectdata *conn, const char *mech,
+ const char *initresp);
+static CURLcode smtp_continue_auth(struct connectdata *conn, const char *resp);
+static void smtp_get_message(char *buffer, char** outptr);
/*
* SMTP protocol handler.
@@ -213,6 +210,17 @@ static const struct Curl_handler Curl_handler_smtps_proxy = {
#endif
#endif
+/* SASL parameters for the smtp protocol */
+static const struct SASLproto saslsmtp = {
+ "smtp", /* The service name */
+ 334, /* Code received when continuation is expected */
+ 235, /* Code to receive upon authentication success */
+ 512 - 8, /* Maximum initial response length (no max) */
+ smtp_perform_auth, /* Send authentication command */
+ smtp_continue_auth, /* Send authentication continuation */
+ smtp_get_message /* Get SASL response message */
+};
+
#ifdef USE_SSL
static void smtp_to_smtps(struct connectdata *conn)
{
@@ -309,20 +317,7 @@ static void state(struct connectdata *conn, smtpstate newstate)
"HELO",
"STARTTLS",
"UPGRADETLS",
- "AUTH_PLAIN",
- "AUTH_LOGIN",
- "AUTH_LOGIN_PASSWD",
- "AUTH_CRAMMD5",
- "AUTH_DIGESTMD5",
- "AUTH_DIGESTMD5_RESP",
- "AUTH_NTLM",
- "AUTH_NTLM_TYPE2MSG",
- "AUTH_GSSAPI",
- "AUTH_GSSAPI_TOKEN",
- "AUTH_GSSAPI_NO_DATA",
- "AUTH_XOAUTH2",
- "AUTH_CANCEL",
- "AUTH_FINAL",
+ "AUTH",
"COMMAND",
"MAIL",
"RCPT",
@@ -352,11 +347,11 @@ static CURLcode smtp_perform_ehlo(struct connectdata *conn)
CURLcode result = CURLE_OK;
struct smtp_conn *smtpc = &conn->proto.smtpc;
- smtpc->authmechs = 0; /* No known authentication mechanisms yet */
- smtpc->authused = 0; /* Clear the authentication mechanism used
- for esmtp connections */
- smtpc->tls_supported = FALSE; /* Clear the TLS capability */
- smtpc->auth_supported = FALSE; /* Clear the AUTH capability */
+ smtpc->sasl.authmechs = SASL_AUTH_NONE; /* No known auth. mechanism yet */
+ smtpc->sasl.authused = SASL_AUTH_NONE; /* Clear the authentication mechanism
+ used for esmtp connections */
+ smtpc->tls_supported = FALSE; /* Clear the TLS capability */
+ smtpc->auth_supported = FALSE; /* Clear the AUTH capability */
/* Send the EHLO command */
result = Curl_pp_sendf(&smtpc->pp, "EHLO %s", smtpc->domain);
@@ -378,8 +373,8 @@ static CURLcode smtp_perform_helo(struct connectdata *conn)
CURLcode result = CURLE_OK;
struct smtp_conn *smtpc = &conn->proto.smtpc;
- smtpc->authused = 0; /* No authentication mechanism used in smtp
- connections */
+ smtpc->sasl.authused = SASL_AUTH_NONE; /* No authentication mechanism used
+ in smtp connections */
/* Send the HELO command */
result = Curl_pp_sendf(&smtpc->pp, "HELO %s", smtpc->domain);
@@ -445,25 +440,18 @@ static CURLcode smtp_perform_upgrade_tls(struct connectdata *conn)
*/
static CURLcode smtp_perform_auth(struct connectdata *conn,
const char *mech,
- const char *initresp, size_t len,
- smtpstate state1, smtpstate state2)
+ const char *initresp)
{
CURLcode result = CURLE_OK;
struct smtp_conn *smtpc = &conn->proto.smtpc;
- if(initresp && 8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */
+ if(initresp) { /* AUTH <mech> ...<crlf> */
/* Send the AUTH command with the initial response */
result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp);
-
- if(!result)
- state(conn, state2);
}
else {
/* Send the AUTH command */
result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech);
-
- if(!result)
- state(conn, state1);
}
return result;
@@ -471,6 +459,19 @@ static CURLcode smtp_perform_auth(struct connectdata *conn,
/***********************************************************************
*
+ * smtp_continue_auth()
+ *
+ * Sends SASL continuation data or cancellation.
+ */
+static CURLcode smtp_continue_auth(struct connectdata *conn, const char *resp)
+{
+ struct smtp_conn *smtpc = &conn->proto.smtpc;
+
+ return Curl_pp_sendf(&smtpc->pp, "%s", resp);
+}
+
+/***********************************************************************
+ *
* smtp_perform_authentication()
*
* Initiates the authentication sequence, with the appropriate SASL
@@ -480,31 +481,22 @@ static CURLcode smtp_perform_authentication(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
struct smtp_conn *smtpc = &conn->proto.smtpc;
- const char *mech = NULL;
- char *initresp = NULL;
- size_t len = 0;
- smtpstate state1 = SMTP_STOP;
- smtpstate state2 = SMTP_STOP;
+ saslprogress progress;
- /* Check we have a username and password to authenticate with, and the
+ /* Check we have enough data to authenticate with, and the
server supports authentiation, and end the connect phase if not */
- if(!conn->bits.user_passwd || !smtpc->auth_supported) {
+ if(!smtpc->auth_supported ||
+ !Curl_sasl_can_authenticate(&smtpc->sasl, conn)) {
state(conn, SMTP_STOP);
-
return result;
}
/* Calculate the SASL login details */
- result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
- &state2);
+ result = Curl_sasl_start(&smtpc->sasl, conn, FALSE, &progress);
if(!result) {
- if(mech) {
- /* Perform SASL based authentication */
- result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
-
- Curl_safefree(initresp);
- }
+ if(progress == SASL_INPROGRESS)
+ state(conn, SMTP_AUTH);
else {
/* Other mechanisms not supported */
infof(conn->data, "No known authentication mechanisms supported!\n");
@@ -571,7 +563,7 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
return CURLE_OUT_OF_MEMORY;
/* Calculate the optional AUTH parameter */
- if(data->set.str[STRING_MAIL_AUTH] && conn->proto.smtpc.authused) {
+ if(data->set.str[STRING_MAIL_AUTH] && conn->proto.smtpc.sasl.authused) {
if(data->set.str[STRING_MAIL_AUTH][0] != '\0')
auth = aprintf("%s", data->set.str[STRING_MAIL_AUTH]);
else
@@ -579,7 +571,7 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
auth = strdup("<>");
if(!auth) {
- Curl_safefree(from);
+ free(from);
return CURLE_OUT_OF_MEMORY;
}
@@ -590,8 +582,8 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
size = aprintf("%" CURL_FORMAT_CURL_OFF_T, data->state.infilesize);
if(!size) {
- Curl_safefree(from);
- Curl_safefree(auth);
+ free(from);
+ free(auth);
return CURLE_OUT_OF_MEMORY;
}
@@ -611,9 +603,9 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
result = Curl_pp_sendf(&conn->proto.smtpc.pp,
"MAIL FROM:%s SIZE=%s", from, size);
- Curl_safefree(from);
- Curl_safefree(auth);
- Curl_safefree(size);
+ free(from);
+ free(auth);
+ free(size);
if(!result)
state(conn, SMTP_MAIL);
@@ -753,6 +745,9 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
/* Loop through the data line */
for(;;) {
+ size_t llen;
+ unsigned int mechbit;
+
while(len &&
(*line == ' ' || *line == '\t' ||
*line == '\r' || *line == '\n')) {
@@ -771,22 +766,9 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
wordlen++;
/* Test the word for a matching authentication mechanism */
- if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
- smtpc->authmechs |= SASL_MECH_LOGIN;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
- smtpc->authmechs |= SASL_MECH_PLAIN;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
- smtpc->authmechs |= SASL_MECH_CRAM_MD5;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
- smtpc->authmechs |= SASL_MECH_DIGEST_MD5;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
- smtpc->authmechs |= SASL_MECH_GSSAPI;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
- smtpc->authmechs |= SASL_MECH_EXTERNAL;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
- smtpc->authmechs |= SASL_MECH_NTLM;
- else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
- smtpc->authmechs |= SASL_MECH_XOAUTH2;
+ if((mechbit = Curl_sasl_decode_mech(line, wordlen, &llen)) &&
+ llen == wordlen)
+ smtpc->sasl.authmechs |= mechbit;
line += wordlen;
len -= wordlen;
@@ -835,565 +817,31 @@ static CURLcode smtp_state_helo_resp(struct connectdata *conn, int smtpcode,
return result;
}
-/* For AUTH PLAIN (without initial response) responses */
-static CURLcode smtp_state_auth_plain_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *plainauth = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the authorisation message */
- result = Curl_sasl_create_plain_message(conn->data, conn->user,
- conn->passwd, &plainauth, &len);
- if(!result && plainauth) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", plainauth);
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
- }
-
- Curl_safefree(plainauth);
-
- return result;
-}
-
-/* For AUTH LOGIN (without initial response) responses */
-static CURLcode smtp_state_auth_login_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *authuser = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the user message */
- result = Curl_sasl_create_login_message(conn->data, conn->user,
- &authuser, &len);
- if(!result && authuser) {
- /* Send the user */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authuser);
-
- if(!result)
- state(conn, SMTP_AUTH_LOGIN_PASSWD);
- }
- }
-
- Curl_safefree(authuser);
-
- return result;
-}
-
-/* For AUTH LOGIN user entry responses */
-static CURLcode smtp_state_auth_login_password_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *authpasswd = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the password message */
- result = Curl_sasl_create_login_message(conn->data, conn->passwd,
- &authpasswd, &len);
- if(!result && authpasswd) {
- /* Send the password */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authpasswd);
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
- }
-
- Curl_safefree(authpasswd);
-
- return result;
-}
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* For AUTH CRAM-MD5 responses */
-static CURLcode smtp_state_auth_cram_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlg = NULL;
- char *chlg64 = NULL;
- char *rplyb64 = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- return CURLE_LOGIN_DENIED;
- }
-
- /* Get the challenge message */
- smtp_get_message(data->state.buffer, &chlg64);
-
- /* Decode the challenge message */
- result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
- if(result) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
- if(!result)
- state(conn, SMTP_AUTH_CANCEL);
- }
- else {
- /* Create the response message */
- result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
- conn->passwd, &rplyb64, &len);
- if(!result && rplyb64) {
- /* Send the response */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
- }
-
- Curl_safefree(chlg);
- Curl_safefree(rplyb64);
-
- return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge responses */
-static CURLcode smtp_state_auth_digest_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlg64 = NULL;
- char *rplyb64 = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- return CURLE_LOGIN_DENIED;
- }
-
- /* Get the challenge message */
- smtp_get_message(data->state.buffer, &chlg64);
-
- /* Create the response message */
- result = Curl_sasl_create_digest_md5_message(data, chlg64,
- conn->user, conn->passwd,
- "smtp", &rplyb64, &len);
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
- if(!result)
- state(conn, SMTP_AUTH_CANCEL);
- }
- }
- else {
- /* Send the response */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
-
- if(!result)
- state(conn, SMTP_AUTH_DIGESTMD5_RESP);
- }
-
- Curl_safefree(rplyb64);
-
- return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge-response responses */
-static CURLcode smtp_state_auth_digest_resp_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Authentication failed: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Send an empty response */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "");
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
-
- return result;
-}
-
-#endif
-
-#ifdef USE_NTLM
-/* For AUTH NTLM (without initial response) responses */
-static CURLcode smtp_state_auth_ntlm_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *type1msg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the type-1 message */
- result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
- &conn->ntlm,
- &type1msg, &len);
- if(!result && type1msg) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type1msg);
-
- if(!result)
- state(conn, SMTP_AUTH_NTLM_TYPE2MSG);
- }
- }
-
- Curl_safefree(type1msg);
-
- return result;
-}
-
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode smtp_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *type2msg = NULL;
- char *type3msg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the type-2 message */
- smtp_get_message(data->state.buffer, &type2msg);
-
- /* Decode the type-2 message */
- result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
- if(result) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
- if(!result)
- state(conn, SMTP_AUTH_CANCEL);
- }
- else {
- /* Create the type-3 message */
- result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
- conn->passwd, &conn->ntlm,
- &type3msg, &len);
- if(!result && type3msg) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type3msg);
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
- }
- }
-
- Curl_safefree(type3msg);
-
- return result;
-}
-#endif
-
-#if defined(USE_KERBEROS5)
-/* For AUTH GSSAPI (without initial response) responses */
-static CURLcode smtp_state_auth_gssapi_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct smtp_conn *smtpc = &conn->proto.smtpc;
- char *respmsg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the initial response message */
- result = Curl_sasl_create_gssapi_user_message(data, conn->user,
- conn->passwd, "smtp",
- smtpc->mutual_auth, NULL,
- &conn->krb5,
- &respmsg, &len);
- if(!result && respmsg) {
- /* Send the message */
- result = Curl_pp_sendf(&smtpc->pp, "%s", respmsg);
-
- if(!result)
- state(conn, SMTP_AUTH_GSSAPI_TOKEN);
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-
-/* For AUTH GSSAPI user token responses */
-static CURLcode smtp_state_auth_gssapi_token_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct smtp_conn *smtpc = &conn->proto.smtpc;
- char *chlgmsg = NULL;
- char *respmsg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- smtp_get_message(data->state.buffer, &chlgmsg);
-
- if(smtpc->mutual_auth)
- /* Decode the user token challenge and create the optional response
- message */
- result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
- smtpc->mutual_auth,
- chlgmsg, &conn->krb5,
- &respmsg, &len);
- else
- /* Decode the security challenge and create the response message */
- result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
- &conn->krb5,
- &respmsg, &len);
-
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&smtpc->pp, "%s", "*");
-
- if(!result)
- state(conn, SMTP_AUTH_CANCEL);
- }
- }
- else {
- /* Send the response */
- if(respmsg)
- result = Curl_pp_sendf(&smtpc->pp, "%s", respmsg);
- else
- result = Curl_pp_sendf(&smtpc->pp, "%s", "");
-
- if(!result)
- state(conn, (smtpc->mutual_auth ? SMTP_AUTH_GSSAPI_NO_DATA :
- SMTP_AUTH_FINAL));
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-
-/* For AUTH GSSAPI no data responses */
-static CURLcode smtp_state_auth_gssapi_no_data_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- char *chlgmsg = NULL;
- char *respmsg = NULL;
- size_t len = 0;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Get the challenge message */
- smtp_get_message(data->state.buffer, &chlgmsg);
-
- /* Decode the security challenge and create the response message */
- result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
- &conn->krb5,
- &respmsg, &len);
- if(result) {
- if(result == CURLE_BAD_CONTENT_ENCODING) {
- /* Send the cancellation */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
- if(!result)
- state(conn, SMTP_AUTH_CANCEL);
- }
- }
- else {
- /* Send the response */
- if(respmsg) {
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", respmsg);
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
- }
- }
-
- Curl_safefree(respmsg);
-
- return result;
-}
-#endif
-
-/* For AUTH XOAUTH2 (without initial response) responses */
-static CURLcode smtp_state_auth_xoauth2_resp(struct connectdata *conn,
- int smtpcode, smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- size_t len = 0;
- char *xoauth = NULL;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 334) {
- failf(data, "Access denied: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else {
- /* Create the authorisation message */
- result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
- conn->xoauth2_bearer,
- &xoauth, &len);
- if(!result && xoauth) {
- /* Send the message */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", xoauth);
-
- if(!result)
- state(conn, SMTP_AUTH_FINAL);
- }
- }
-
- Curl_safefree(xoauth);
-
- return result;
-}
-
-/* For AUTH cancellation responses */
-static CURLcode smtp_state_auth_cancel_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
+/* For SASL authentication responses */
+static CURLcode smtp_state_auth_resp(struct connectdata *conn,
+ int smtpcode,
+ smtpstate instate)
{
CURLcode result = CURLE_OK;
struct SessionHandle *data = conn->data;
struct smtp_conn *smtpc = &conn->proto.smtpc;
- const char *mech = NULL;
- char *initresp = NULL;
- size_t len = 0;
- smtpstate state1 = SMTP_STOP;
- smtpstate state2 = SMTP_STOP;
+ saslprogress progress;
- (void)smtpcode;
(void)instate; /* no use for this yet */
- /* Remove the offending mechanism from the supported list */
- smtpc->authmechs ^= smtpc->authused;
-
- /* Calculate alternative SASL login details */
- result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
- &state2);
-
- if(!result) {
- /* Do we have any mechanisms left? */
- if(mech) {
- /* Retry SASL based authentication */
- result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
-
- Curl_safefree(initresp);
- }
- else {
+ result = Curl_sasl_continue(&smtpc->sasl, conn, smtpcode, &progress);
+ if(!result)
+ switch(progress) {
+ case SASL_DONE:
+ state(conn, SMTP_STOP); /* Authenticated */
+ break;
+ case SASL_IDLE: /* No mechanism left after cancellation */
failf(data, "Authentication cancelled");
-
result = CURLE_LOGIN_DENIED;
+ break;
+ default:
+ break;
}
- }
-
- return result;
-}
-
-/* For final responses in the AUTH sequence */
-static CURLcode smtp_state_auth_final_resp(struct connectdata *conn,
- int smtpcode,
- smtpstate instate)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
-
- (void)instate; /* no use for this yet */
-
- if(smtpcode != 235) {
- failf(data, "Authentication failed: %d", smtpcode);
- result = CURLE_LOGIN_DENIED;
- }
- else
- /* End of connect phase */
- state(conn, SMTP_STOP);
return result;
}
@@ -1591,69 +1039,8 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
result = smtp_state_starttls_resp(conn, smtpcode, smtpc->state);
break;
- case SMTP_AUTH_PLAIN:
- result = smtp_state_auth_plain_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_LOGIN:
- result = smtp_state_auth_login_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_LOGIN_PASSWD:
- result = smtp_state_auth_login_password_resp(conn, smtpcode,
- smtpc->state);
- break;
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
- case SMTP_AUTH_CRAMMD5:
- result = smtp_state_auth_cram_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_DIGESTMD5:
- result = smtp_state_auth_digest_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_DIGESTMD5_RESP:
- result = smtp_state_auth_digest_resp_resp(conn, smtpcode, smtpc->state);
- break;
-#endif
-
-#ifdef USE_NTLM
- case SMTP_AUTH_NTLM:
- result = smtp_state_auth_ntlm_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_NTLM_TYPE2MSG:
- result = smtp_state_auth_ntlm_type2msg_resp(conn, smtpcode,
- smtpc->state);
- break;
-#endif
-
-#if defined(USE_KERBEROS5)
- case SMTP_AUTH_GSSAPI:
- result = smtp_state_auth_gssapi_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_GSSAPI_TOKEN:
- result = smtp_state_auth_gssapi_token_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_GSSAPI_NO_DATA:
- result = smtp_state_auth_gssapi_no_data_resp(conn, smtpcode,
- smtpc->state);
- break;
-#endif
-
- case SMTP_AUTH_XOAUTH2:
- result = smtp_state_auth_xoauth2_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_CANCEL:
- result = smtp_state_auth_cancel_resp(conn, smtpcode, smtpc->state);
- break;
-
- case SMTP_AUTH_FINAL:
- result = smtp_state_auth_final_resp(conn, smtpcode, smtpc->state);
+ case SMTP_AUTH:
+ result = smtp_state_auth_resp(conn, smtpcode, smtpc->state);
break;
case SMTP_COMMAND:
@@ -1766,8 +1153,8 @@ static CURLcode smtp_connect(struct connectdata *conn, bool *done)
pp->endofresp = smtp_endofresp;
pp->conn = conn;
- /* Set the default preferred authentication mechanism */
- smtpc->prefmech = SASL_AUTH_ANY;
+ /* Initialize the SASL storage */
+ Curl_sasl_init(&smtpc->sasl, &saslsmtp);
/* Initialise the pingpong layer */
Curl_pp_init(pp);
@@ -1985,7 +1372,7 @@ static CURLcode smtp_disconnect(struct connectdata *conn, bool dead_connection)
Curl_pp_disconnect(&smtpc->pp);
/* Cleanup the SASL module */
- Curl_sasl_cleanup(conn, smtpc->authused);
+ Curl_sasl_cleanup(conn, smtpc->sasl.authused);
/* Cleanup our connection based variables */
Curl_safefree(smtpc->domain);
@@ -2106,52 +1493,30 @@ static CURLcode smtp_parse_url_options(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
struct smtp_conn *smtpc = &conn->proto.smtpc;
- const char *options = conn->options;
- const char *ptr = options;
- bool reset = TRUE;
+ const char *ptr = conn->options;
+
+ smtpc->sasl.resetprefs = TRUE;
- while(ptr && *ptr) {
+ while(!result && ptr && *ptr) {
const char *key = ptr;
+ const char *value;
while(*ptr && *ptr != '=')
ptr++;
- if(strnequal(key, "AUTH", 4)) {
- size_t len = 0;
- const char *value = ++ptr;
+ value = ptr + 1;
- if(reset) {
- reset = FALSE;
- smtpc->prefmech = SASL_AUTH_NONE;
- }
-
- while(*ptr && *ptr != ';') {
- ptr++;
- len++;
- }
+ while(*ptr && *ptr != ';')
+ ptr++;
- if(strnequal(value, "*", len))
- smtpc->prefmech = SASL_AUTH_ANY;
- else if(strnequal(value, SASL_MECH_STRING_LOGIN, len))
- smtpc->prefmech |= SASL_MECH_LOGIN;
- else if(strnequal(value, SASL_MECH_STRING_PLAIN, len))
- smtpc->prefmech |= SASL_MECH_PLAIN;
- else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len))
- smtpc->prefmech |= SASL_MECH_CRAM_MD5;
- else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len))
- smtpc->prefmech |= SASL_MECH_DIGEST_MD5;
- else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len))
- smtpc->prefmech |= SASL_MECH_GSSAPI;
- else if(strnequal(value, SASL_MECH_STRING_NTLM, len))
- smtpc->prefmech |= SASL_MECH_NTLM;
- else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len))
- smtpc->prefmech |= SASL_MECH_XOAUTH2;
-
- if(*ptr == ';')
- ptr++;
- }
+ if(strnequal(key, "AUTH=", 5))
+ result = Curl_sasl_parse_url_auth_option(&smtpc->sasl,
+ value, ptr - value);
else
result = CURLE_URL_MALFORMAT;
+
+ if(*ptr == ';')
+ ptr++;
}
return result;
@@ -2203,110 +1568,6 @@ static CURLcode smtp_parse_custom_request(struct connectdata *conn)
return result;
}
-/***********************************************************************
- *
- * smtp_calc_sasl_details()
- *
- * Calculate the required login details for SASL authentication.
- */
-static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
- const char **mech,
- char **initresp, size_t *len,
- smtpstate *state1, smtpstate *state2)
-{
- CURLcode result = CURLE_OK;
- struct SessionHandle *data = conn->data;
- struct smtp_conn *smtpc = &conn->proto.smtpc;
-
- /* Calculate the supported authentication mechanism, by decreasing order of
- security, as well as the initial response where appropriate */
-#if defined(USE_KERBEROS5)
- if((smtpc->authmechs & SASL_MECH_GSSAPI) &&
- (smtpc->prefmech & SASL_MECH_GSSAPI)) {
- smtpc->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
-
- *mech = SASL_MECH_STRING_GSSAPI;
- *state1 = SMTP_AUTH_GSSAPI;
- *state2 = SMTP_AUTH_GSSAPI_TOKEN;
- smtpc->authused = SASL_MECH_GSSAPI;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_gssapi_user_message(data, conn->user,
- conn->passwd, "smtp",
- smtpc->mutual_auth,
- NULL, &conn->krb5,
- initresp, len);
- }
- else
-#endif
-#ifndef CURL_DISABLE_CRYPTO_AUTH
- if((smtpc->authmechs & SASL_MECH_DIGEST_MD5) &&
- (smtpc->prefmech & SASL_MECH_DIGEST_MD5)) {
- *mech = SASL_MECH_STRING_DIGEST_MD5;
- *state1 = SMTP_AUTH_DIGESTMD5;
- smtpc->authused = SASL_MECH_DIGEST_MD5;
- }
- else if((smtpc->authmechs & SASL_MECH_CRAM_MD5) &&
- (smtpc->prefmech & SASL_MECH_CRAM_MD5)) {
- *mech = SASL_MECH_STRING_CRAM_MD5;
- *state1 = SMTP_AUTH_CRAMMD5;
- smtpc->authused = SASL_MECH_CRAM_MD5;
- }
- else
-#endif
-#ifdef USE_NTLM
- if((smtpc->authmechs & SASL_MECH_NTLM) &&
- (smtpc->prefmech & SASL_MECH_NTLM)) {
- *mech = SASL_MECH_STRING_NTLM;
- *state1 = SMTP_AUTH_NTLM;
- *state2 = SMTP_AUTH_NTLM_TYPE2MSG;
- smtpc->authused = SASL_MECH_NTLM;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
- &conn->ntlm,
- initresp, len);
- }
- else
-#endif
- if(((smtpc->authmechs & SASL_MECH_XOAUTH2) &&
- (smtpc->prefmech & SASL_MECH_XOAUTH2) &&
- (smtpc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
- *mech = SASL_MECH_STRING_XOAUTH2;
- *state1 = SMTP_AUTH_XOAUTH2;
- *state2 = SMTP_AUTH_FINAL;
- smtpc->authused = SASL_MECH_XOAUTH2;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_xoauth2_message(data, conn->user,
- conn->xoauth2_bearer,
- initresp, len);
- }
- else if((smtpc->authmechs & SASL_MECH_LOGIN) &&
- (smtpc->prefmech & SASL_MECH_LOGIN)) {
- *mech = SASL_MECH_STRING_LOGIN;
- *state1 = SMTP_AUTH_LOGIN;
- *state2 = SMTP_AUTH_LOGIN_PASSWD;
- smtpc->authused = SASL_MECH_LOGIN;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
- }
- else if((smtpc->authmechs & SASL_MECH_PLAIN) &&
- (smtpc->prefmech & SASL_MECH_PLAIN)) {
- *mech = SASL_MECH_STRING_PLAIN;
- *state1 = SMTP_AUTH_PLAIN;
- *state2 = SMTP_AUTH_FINAL;
- smtpc->authused = SASL_MECH_PLAIN;
-
- if(data->set.sasl_ir)
- result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
- initresp, len);
- }
-
- return result;
-}
-
CURLcode Curl_smtp_escape_eob(struct connectdata *conn, const ssize_t nread)
{
/* When sending a SMTP payload we must detect CRLF. sequences making sure
@@ -2396,13 +1657,13 @@ CURLcode Curl_smtp_escape_eob(struct connectdata *conn, const ssize_t nread)
data->state.scratch = scratch;
/* Free the old scratch buffer */
- Curl_safefree(oldscratch);
+ free(oldscratch);
/* Set the new amount too */
data->req.upload_present = si;
}
else
- Curl_safefree(newscratch);
+ free(newscratch);
return CURLE_OK;
}
diff --git a/lib/smtp.h b/lib/smtp.h
index 7a95efeaf..9fbe0c5bf 100644
--- a/lib/smtp.h
+++ b/lib/smtp.h
@@ -23,6 +23,7 @@
***************************************************************************/
#include "pingpong.h"
+#include "curl_sasl.h"
/****************************************************************************
* SMTP unique setup
@@ -36,20 +37,7 @@ typedef enum {
SMTP_STARTTLS,
SMTP_UPGRADETLS, /* asynchronously upgrade the connection to SSL/TLS
(multi mode only) */
- SMTP_AUTH_PLAIN,
- SMTP_AUTH_LOGIN,
- SMTP_AUTH_LOGIN_PASSWD,
- SMTP_AUTH_CRAMMD5,
- SMTP_AUTH_DIGESTMD5,
- SMTP_AUTH_DIGESTMD5_RESP,
- SMTP_AUTH_NTLM,
- SMTP_AUTH_NTLM_TYPE2MSG,
- SMTP_AUTH_GSSAPI,
- SMTP_AUTH_GSSAPI_TOKEN,
- SMTP_AUTH_GSSAPI_NO_DATA,
- SMTP_AUTH_XOAUTH2,
- SMTP_AUTH_CANCEL,
- SMTP_AUTH_FINAL,
+ SMTP_AUTH,
SMTP_COMMAND, /* VRFY, EXPN, NOOP, RSET and HELP */
SMTP_MAIL, /* MAIL FROM */
SMTP_RCPT, /* RCPT TO */
@@ -79,14 +67,11 @@ struct smtp_conn {
smtpstate state; /* Always use smtp.c:state() to change state! */
bool ssldone; /* Is connect() over SSL done? */
char *domain; /* Client address/name to send in the EHLO */
- unsigned int authmechs; /* Accepted authentication mechanisms */
- unsigned int prefmech; /* Preferred authentication mechanism */
- unsigned int authused; /* Auth mechanism used for the connection */
+ struct SASL sasl; /* SASL-related storage */
bool tls_supported; /* StartTLS capability supported by server */
bool size_supported; /* If server supports SIZE extension according to
RFC 1870 */
bool auth_supported; /* AUTH capability supported by server */
- bool mutual_auth; /* Mutual authentication enabled (GSSAPI only) */
};
extern const struct Curl_handler Curl_handler_smtp;
diff --git a/lib/socks.c b/lib/socks.c
index 6c6585b05..7d3f782b4 100644
--- a/lib/socks.c
+++ b/lib/socks.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -382,7 +382,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
/* RFC1928 chapter 5 specifies max 255 chars for domain name in packet */
if(!socks5_resolve_local && hostname_len > 255) {
- infof(conn->data,"SOCKS5: server resolving disabled for hostnames of "
+ infof(conn->data, "SOCKS5: server resolving disabled for hostnames of "
"length > 255 [actual len=%zu]\n", hostname_len);
socks5_resolve_local = TRUE;
}
diff --git a/lib/socks_gssapi.c b/lib/socks_gssapi.c
index f195c1a0e..8e575c279 100644
--- a/lib/socks_gssapi.c
+++ b/lib/socks_gssapi.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -23,16 +23,7 @@
#include "curl_setup.h"
-#ifndef CURL_DISABLE_PROXY
-
-#ifdef HAVE_GSSAPI
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
-#ifndef gss_nt_service_name
-#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE
-#endif
+#if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_PROXY)
#include "curl_gssapi.h"
#include "urldata.h"
@@ -41,10 +32,7 @@
#include "timeval.h"
#include "socks.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -60,7 +48,7 @@ static int check_gss_err(struct SessionHandle *data,
const char* function)
{
if(GSS_ERROR(major_status)) {
- OM_uint32 maj_stat,min_stat;
+ OM_uint32 maj_stat, min_stat;
OM_uint32 msg_ctx = 0;
gss_buffer_desc status_string;
char buf[1024];
@@ -104,10 +92,10 @@ static int check_gss_err(struct SessionHandle *data,
gss_release_buffer(&min_stat, &status_string);
}
failf(data, "GSS-API error: %s failed:\n%s", function, buf);
- return(1);
+ return 1;
}
- return(0);
+ return 0;
}
CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
@@ -143,7 +131,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
*/
/* prepare service name */
- if(strchr(serviceptr,'/')) {
+ if(strchr(serviceptr, '/')) {
service.value = malloc(strlen(serviceptr));
if(!service.value)
return CURLE_OUT_OF_MEMORY;
@@ -162,13 +150,13 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
serviceptr, conn->proxy.name);
gss_major_status = gss_import_name(&gss_minor_status, &service,
- gss_nt_service_name, &server);
+ GSS_C_NT_HOSTBASED_SERVICE, &server);
}
gss_release_buffer(&gss_status, &service); /* clear allocated memory */
- if(check_gss_err(data,gss_major_status,
- gss_minor_status,"gss_import_name()")) {
+ if(check_gss_err(data, gss_major_status,
+ gss_minor_status, "gss_import_name()")) {
failf(data, "Failed to create service name.");
gss_release_name(&gss_status, &server);
return CURLE_COULDNT_CONNECT;
@@ -190,8 +178,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
if(gss_token != GSS_C_NO_BUFFER)
gss_release_buffer(&gss_status, &gss_recv_token);
- if(check_gss_err(data,gss_major_status,
- gss_minor_status,"gss_init_sec_context")) {
+ if(check_gss_err(data, gss_major_status,
+ gss_minor_status, "gss_init_sec_context")) {
gss_release_name(&gss_status, &server);
gss_release_buffer(&gss_status, &gss_recv_token);
gss_release_buffer(&gss_status, &gss_send_token);
@@ -204,7 +192,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
socksreq[0] = 1; /* GSS-API subnegotiation version */
socksreq[1] = 1; /* authentication message type */
us_length = htons((short)gss_send_token.length);
- memcpy(socksreq+2,&us_length,sizeof(short));
+ memcpy(socksreq+2, &us_length, sizeof(short));
code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
if(code || (4 != written)) {
@@ -303,8 +291,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
gss_major_status = gss_inquire_context (&gss_minor_status, gss_context,
&gss_client_name, NULL, NULL, NULL,
NULL, NULL, NULL);
- if(check_gss_err(data,gss_major_status,
- gss_minor_status,"gss_inquire_context")) {
+ if(check_gss_err(data, gss_major_status,
+ gss_minor_status, "gss_inquire_context")) {
gss_delete_sec_context(&gss_status, &gss_context, NULL);
gss_release_name(&gss_status, &gss_client_name);
failf(data, "Failed to determine user name.");
@@ -312,8 +300,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
}
gss_major_status = gss_display_name(&gss_minor_status, gss_client_name,
&gss_send_token, NULL);
- if(check_gss_err(data,gss_major_status,
- gss_minor_status,"gss_display_name")) {
+ if(check_gss_err(data, gss_major_status,
+ gss_minor_status, "gss_display_name")) {
gss_delete_sec_context(&gss_status, &gss_context, NULL);
gss_release_name(&gss_status, &gss_client_name);
gss_release_buffer(&gss_status, &gss_send_token);
@@ -384,7 +372,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
*/
if(data->set.socks5_gssapi_nec) {
us_length = htons((short)1);
- memcpy(socksreq+2,&us_length,sizeof(short));
+ memcpy(socksreq+2, &us_length, sizeof(short));
}
else {
gss_send_token.length = 1;
@@ -399,7 +387,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
GSS_C_QOP_DEFAULT, &gss_send_token,
&gss_conf_state, &gss_w_token);
- if(check_gss_err(data,gss_major_status,gss_minor_status,"gss_wrap")) {
+ if(check_gss_err(data, gss_major_status, gss_minor_status, "gss_wrap")) {
gss_release_buffer(&gss_status, &gss_send_token);
gss_release_buffer(&gss_status, &gss_w_token);
gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -409,7 +397,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
gss_release_buffer(&gss_status, &gss_send_token);
us_length = htons((short)gss_w_token.length);
- memcpy(socksreq+2,&us_length,sizeof(short));
+ memcpy(socksreq+2, &us_length, sizeof(short));
}
code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
@@ -487,7 +475,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
&gss_recv_token, &gss_w_token,
0, GSS_C_QOP_DEFAULT);
- if(check_gss_err(data,gss_major_status,gss_minor_status,"gss_unwrap")) {
+ if(check_gss_err(data, gss_major_status, gss_minor_status, "gss_unwrap")) {
gss_release_buffer(&gss_status, &gss_recv_token);
gss_release_buffer(&gss_status, &gss_w_token);
gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -504,7 +492,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
return CURLE_COULDNT_CONNECT;
}
- memcpy(socksreq,gss_w_token.value,gss_w_token.length);
+ memcpy(socksreq, gss_w_token.value, gss_w_token.length);
gss_release_buffer(&gss_status, &gss_w_token);
}
else {
@@ -516,7 +504,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
return CURLE_COULDNT_CONNECT;
}
- memcpy(socksreq,gss_recv_token.value,gss_recv_token.length);
+ memcpy(socksreq, gss_recv_token.value, gss_recv_token.length);
gss_release_buffer(&gss_status, &gss_recv_token);
}
@@ -530,6 +518,5 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
return CURLE_OK;
}
-#endif
-#endif /* CURL_DISABLE_PROXY */
+#endif /* HAVE_GSSAPI && !CURL_DISABLE_PROXY */
diff --git a/lib/socks_sspi.c b/lib/socks_sspi.c
index 015862703..a7708b2d4 100644
--- a/lib/socks_sspi.c
+++ b/lib/socks_sspi.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
- * Copyright (C) 2012 - 2014, 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
@@ -34,10 +34,7 @@
#include "curl_sspi.h"
#include "curl_multibyte.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -107,8 +104,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
service_name = malloc(strlen(service) + strlen(conn->proxy.name) + 2);
if(!service_name)
return CURLE_OUT_OF_MEMORY;
- snprintf(service_name,strlen(service) +strlen(conn->proxy.name)+2,"%s/%s",
- service,conn->proxy.name);
+ snprintf(service_name, strlen(service) +strlen(conn->proxy.name)+2,
+ "%s/%s", service, conn->proxy.name);
}
input_desc.cBuffers = 1;
@@ -146,7 +143,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
if(check_sspi_err(conn, status, "AcquireCredentialsHandle")) {
failf(data, "Failed to acquire credentials.");
- Curl_safefree(service_name);
+ free(service_name);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
return CURLE_COULDNT_CONNECT;
}
@@ -185,7 +182,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
}
if(check_sspi_err(conn, status, "InitializeSecurityContext")) {
- Curl_safefree(service_name);
+ free(service_name);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
s_pSecFn->DeleteSecurityContext(&sspi_context);
if(sspi_recv_token.pvBuffer)
@@ -203,7 +200,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
if(code || (4 != written)) {
failf(data, "Failed to send SSPI authentication request.");
- Curl_safefree(service_name);
+ free(service_name);
if(sspi_send_token.pvBuffer)
s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
if(sspi_recv_token.pvBuffer)
@@ -217,7 +214,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
sspi_send_token.cbBuffer, &written);
if(code || (sspi_send_token.cbBuffer != (size_t)written)) {
failf(data, "Failed to send SSPI authentication token.");
- Curl_safefree(service_name);
+ free(service_name);
if(sspi_send_token.pvBuffer)
s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
if(sspi_recv_token.pvBuffer)
@@ -257,7 +254,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
result = Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
if(result || (actualread != 4)) {
failf(data, "Failed to receive SSPI authentication response.");
- Curl_safefree(service_name);
+ free(service_name);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
s_pSecFn->DeleteSecurityContext(&sspi_context);
return CURLE_COULDNT_CONNECT;
@@ -267,7 +264,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
if(socksreq[1] == 255) { /* status / message type */
failf(data, "User was rejected by the SOCKS5 server (%u %u).",
(unsigned int)socksreq[0], (unsigned int)socksreq[1]);
- Curl_safefree(service_name);
+ free(service_name);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
s_pSecFn->DeleteSecurityContext(&sspi_context);
return CURLE_COULDNT_CONNECT;
@@ -276,7 +273,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
if(socksreq[1] != 1) { /* status / messgae type */
failf(data, "Invalid SSPI authentication response type (%u %u).",
(unsigned int)socksreq[0], (unsigned int)socksreq[1]);
- Curl_safefree(service_name);
+ free(service_name);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
s_pSecFn->DeleteSecurityContext(&sspi_context);
return CURLE_COULDNT_CONNECT;
@@ -289,7 +286,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
sspi_recv_token.pvBuffer = malloc(us_length);
if(!sspi_recv_token.pvBuffer) {
- Curl_safefree(service_name);
+ free(service_name);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
s_pSecFn->DeleteSecurityContext(&sspi_context);
return CURLE_OUT_OF_MEMORY;
@@ -299,7 +296,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
if(result || (actualread != us_length)) {
failf(data, "Failed to receive SSPI authentication token.");
- Curl_safefree(service_name);
+ free(service_name);
if(sspi_recv_token.pvBuffer)
s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
s_pSecFn->FreeCredentialsHandle(&cred_handle);
@@ -310,7 +307,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
context_handle = &sspi_context;
}
- Curl_safefree(service_name);
+ free(service_name);
/* Everything is good so far, user was authenticated! */
status = s_pSecFn->QueryCredentialsAttributes(&cred_handle,
@@ -405,7 +402,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
return CURLE_OUT_OF_MEMORY;
}
- memcpy(sspi_w_token[1].pvBuffer,&gss_enc,1);
+ memcpy(sspi_w_token[1].pvBuffer, &gss_enc, 1);
sspi_w_token[2].BufferType = SECBUFFER_PADDING;
sspi_w_token[2].cbBuffer = sspi_sizes.cbBlockSize;
sspi_w_token[2].pvBuffer = malloc(sspi_sizes.cbBlockSize);
@@ -459,7 +456,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
sspi_w_token[2].cbBuffer = 0;
us_length = htons((short)sspi_send_token.cbBuffer);
- memcpy(socksreq+2,&us_length,sizeof(short));
+ memcpy(socksreq+2, &us_length, sizeof(short));
}
code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
@@ -472,7 +469,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
}
if(data->set.socks5_gssapi_nec) {
- memcpy(socksreq,&gss_enc,1);
+ memcpy(socksreq, &gss_enc, 1);
code = Curl_write_plain(conn, sock, (char *)socksreq, 1, &written);
if(code || (1 != written)) {
failf(data, "Failed to send SSPI encryption type.");
@@ -570,7 +567,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
return CURLE_COULDNT_CONNECT;
}
- memcpy(socksreq,sspi_w_token[1].pvBuffer,sspi_w_token[1].cbBuffer);
+ memcpy(socksreq, sspi_w_token[1].pvBuffer, sspi_w_token[1].cbBuffer);
s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
s_pSecFn->FreeContextBuffer(sspi_w_token[1].pvBuffer);
}
@@ -582,7 +579,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
s_pSecFn->DeleteSecurityContext(&sspi_context);
return CURLE_COULDNT_CONNECT;
}
- memcpy(socksreq,sspi_w_token[0].pvBuffer,sspi_w_token[0].cbBuffer);
+ memcpy(socksreq, sspi_w_token[0].pvBuffer, sspi_w_token[0].cbBuffer);
s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
}
diff --git a/lib/splay.c b/lib/splay.c
index 5bb7065e4..b87b6cfe2 100644
--- a/lib/splay.c
+++ b/lib/splay.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1997 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2015, 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
@@ -101,13 +101,13 @@ struct Curl_tree *Curl_splayinsert(struct timeval i,
struct Curl_tree *t,
struct Curl_tree *node)
{
- static const struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
+ static const struct timeval KEY_NOTUSED = {-1, -1}; /* will *NEVER* appear */
if(node == NULL)
return t;
if(t != NULL) {
- t = Curl_splay(i,t);
+ t = Curl_splay(i, t);
if(compare(i, t->key)==0) {
/* There already exists a node in the tree with the very same key. Build
a linked list of nodes. We make the new 'node' struct the new master
@@ -162,7 +162,7 @@ struct Curl_tree *Curl_splaygetbest(struct timeval i,
return NULL;
}
- t = Curl_splay(i,t);
+ t = Curl_splay(i, t);
if(compare(i, t->key) < 0) {
/* too big node, try the smaller chain */
if(t->smaller)
@@ -223,7 +223,7 @@ int Curl_splayremovebyaddr(struct Curl_tree *t,
struct Curl_tree *removenode,
struct Curl_tree **newroot)
{
- static const struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
+ static const struct timeval KEY_NOTUSED = {-1, -1}; /* will *NEVER* appear */
struct Curl_tree *x;
if(!t || !removenode)
diff --git a/lib/ssh.c b/lib/ssh.c
index d7e88c6f7..94195a7b6 100644
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -83,10 +83,7 @@
#include "multiif.h"
#include "select.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -858,7 +855,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
}
if(out_of_memory || sshc->rsa == NULL) {
- Curl_safefree(home);
+ free(home);
Curl_safefree(sshc->rsa);
Curl_safefree(sshc->rsa_pub);
state(conn, SSH_SESSION_FREE);
@@ -870,7 +867,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
if(!sshc->passphrase)
sshc->passphrase = "";
- Curl_safefree(home);
+ free(home);
infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub);
infof(data, "Using SSH private key file '%s'\n", sshc->rsa);
@@ -938,6 +935,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
}
else {
state(conn, SSH_AUTH_HOST_INIT);
+ rc = 0; /* clear rc and continue */
}
break;
@@ -1022,11 +1020,11 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
sshc->sshagent_identity);
if(rc < 0) {
- if(rc != LIBSSH2_ERROR_EAGAIN) {
+ if(rc != LIBSSH2_ERROR_EAGAIN)
/* tried and failed? go to next identity */
sshc->sshagent_prev_identity = sshc->sshagent_identity;
- }
- break;
+ else
+ break;
}
}
@@ -1040,8 +1038,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
infof(data, "Agent based authentication successful\n");
state(conn, SSH_AUTH_DONE);
}
- else
+ else {
state(conn, SSH_AUTH_KEY_INIT);
+ rc = 0; /* clear rc and continue */
+ }
#endif
break;
@@ -1740,8 +1740,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
BUFSIZE : curlx_sotouz(data->state.resume_from - passed);
size_t actuallyread =
- conn->fread_func(data->state.buffer, 1, readthisamountnow,
- conn->fread_in);
+ data->set.fread_func(data->state.buffer, 1, readthisamountnow,
+ data->set.in);
passed += actuallyread;
if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
@@ -1921,7 +1921,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
}
result = Curl_client_write(conn, CLIENTWRITE_BODY,
tmpLine, sshc->readdir_len+1);
- Curl_safefree(tmpLine);
+ free(tmpLine);
if(result) {
state(conn, SSH_STOP);
@@ -2144,7 +2144,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
/* from is relative to end of file */
from += size;
}
- if(from >= size) {
+ if(from > size) {
failf(data, "Offset (%"
CURL_FORMAT_CURL_OFF_T ") was beyond file size (%"
CURL_FORMAT_CURL_OFF_T ")", from, attrs.filesize);
@@ -2245,7 +2245,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
DEBUGF(infof(data, "SFTP DONE done\n"));
/* Check if nextstate is set and move .nextstate could be POSTQUOTE_INIT
- After nextstate is executed,the control should come back to
+ After nextstate is executed, the control should come back to
SSH_SFTP_CLOSE to pass the correct result back */
if(sshc->nextstate != SSH_NO_STATE &&
sshc->nextstate != SSH_SFTP_CLOSE) {
@@ -3270,8 +3270,8 @@ get_pathname(const char **cpp, char **path)
return CURLE_OK;
fail:
- Curl_safefree(*path);
- return CURLE_QUOTE_ERROR;
+ Curl_safefree(*path);
+ return CURLE_QUOTE_ERROR;
}
diff --git a/lib/ssh.h b/lib/ssh.h
index 1bc334857..b3cc54cca 100644
--- a/lib/ssh.h
+++ b/lib/ssh.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -44,9 +44,9 @@ typedef enum {
SSH_AUTH_PKEY,
SSH_AUTH_PASS_INIT,
SSH_AUTH_PASS,
- SSH_AUTH_AGENT_INIT,/* initialize then wait for connection to agent */
- SSH_AUTH_AGENT_LIST,/* ask for list then wait for entire list to come */
- SSH_AUTH_AGENT, /* attempt one key at a time */
+ SSH_AUTH_AGENT_INIT, /* initialize then wait for connection to agent */
+ SSH_AUTH_AGENT_LIST, /* ask for list then wait for entire list to come */
+ SSH_AUTH_AGENT, /* attempt one key at a time */
SSH_AUTH_HOST_INIT,
SSH_AUTH_HOST,
SSH_AUTH_KEY_INIT,
diff --git a/lib/strdup.c b/lib/strdup.c
index a997b12f2..5685b8138 100644
--- a/lib/strdup.c
+++ b/lib/strdup.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -44,7 +44,7 @@ char *curlx_strdup(const char *str)
if(!newstr)
return (char *)NULL;
- memcpy(newstr,str,(len+1)*sizeof(char));
+ memcpy(newstr, str, (len+1)*sizeof(char));
return newstr;
diff --git a/lib/strerror.c b/lib/strerror.c
index b85b56839..565714188 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2004 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2015, 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
@@ -40,10 +40,7 @@
#endif
#include "strerror.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -301,6 +298,9 @@ curl_easy_strerror(CURLcode error)
case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
return "SSL public key does not match pinned public key";
+ case CURLE_SSL_INVALIDCERTSTATUS:
+ return "SSL server certificate status verification FAILED";
+
/* error codes not used by current libcurl */
case CURLE_OBSOLETE20:
case CURLE_OBSOLETE24:
@@ -641,7 +641,7 @@ const char *Curl_strerror(struct connectdata *conn, int err)
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL);
- wcstombs(buf,wbuf,max);
+ wcstombs(buf, wbuf, max);
}
#else
/* 'sys_nerr' is the maximum errno number, it is not widely portable */
@@ -708,9 +708,9 @@ const char *Curl_strerror(struct connectdata *conn, int err)
buf[max] = '\0'; /* make sure the string is zero terminated */
/* strip trailing '\r\n' or '\n'. */
- if((p = strrchr(buf,'\n')) != NULL && (p - buf) >= 2)
+ if((p = strrchr(buf, '\n')) != NULL && (p - buf) >= 2)
*p = '\0';
- if((p = strrchr(buf,'\r')) != NULL && (p - buf) >= 1)
+ if((p = strrchr(buf, '\r')) != NULL && (p - buf) >= 1)
*p = '\0';
if(old_errno != ERRNO)
@@ -824,6 +824,9 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
case SEC_E_OK:
txt = "No error";
break;
+ case CRYPT_E_REVOKED:
+ txt = "CRYPT_E_REVOKED";
+ break;
case SEC_E_ALGORITHM_MISMATCH:
txt = "SEC_E_ALGORITHM_MISMATCH";
break;
@@ -1067,6 +1070,12 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
if(err == SEC_E_OK)
strncpy(outbuf, txt, outmax);
+ else if(err == SEC_E_ILLEGAL_MESSAGE)
+ snprintf(outbuf, outmax,
+ "SEC_E_ILLEGAL_MESSAGE (0x%04X%04X) - This error usually occurs "
+ "when a fatal SSL/TLS alert is received (e.g. handshake failed). "
+ "More detail may be available in the Windows System event log.",
+ (err >> 16) & 0xffff, err & 0xffff);
else {
str = txtbuf;
snprintf(txtbuf, sizeof(txtbuf), "%s (0x%04X%04X)",
@@ -1082,7 +1091,7 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, err, LANG_NEUTRAL,
wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL)) {
- wcstombs(msgbuf,wbuf,sizeof(msgbuf)-1);
+ wcstombs(msgbuf, wbuf, sizeof(msgbuf)-1);
msg_formatted = TRUE;
}
}
@@ -1097,9 +1106,9 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
if(msg_formatted) {
msgbuf[sizeof(msgbuf)-1] = '\0';
/* strip trailing '\r\n' or '\n' */
- if((p = strrchr(msgbuf,'\n')) != NULL && (p - msgbuf) >= 2)
+ if((p = strrchr(msgbuf, '\n')) != NULL && (p - msgbuf) >= 2)
*p = '\0';
- if((p = strrchr(msgbuf,'\r')) != NULL && (p - msgbuf) >= 1)
+ if((p = strrchr(msgbuf, '\r')) != NULL && (p - msgbuf) >= 1)
*p = '\0';
msg = msgbuf;
}
diff --git a/lib/telnet.c b/lib/telnet.c
index 176e9940b..aabf99d48 100644
--- a/lib/telnet.c
+++ b/lib/telnet.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -51,21 +51,19 @@
#include "telnet.h"
#include "connect.h"
#include "progress.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#define TELOPTS
#define TELCMDS
#include "arpa_telnet.h"
-#include "curl_memory.h"
#include "select.h"
#include "strequal.h"
#include "rawstr.h"
#include "warnless.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#define SUBBUFSIZE 512
@@ -228,9 +226,9 @@ check_wsock2 ( struct SessionHandle *data )
if(LOBYTE(wsaData.wVersion) != LOBYTE(wVersionRequested) ||
HIBYTE(wsaData.wVersion) != HIBYTE(wVersionRequested)) {
/* Our version isn't supported */
- failf(data,"insufficient winsock version to support "
- "telnet");
- return CURLE_FAILED_INIT;
+ failf(data, "insufficient winsock version to support "
+ "telnet");
+ return CURLE_FAILED_INIT;
}
/* Our version is supported */
@@ -1176,7 +1174,7 @@ CURLcode telrcv(struct connectdata *conn,
if(c == CURL_IAC)
tn->telrcv_state = CURL_TS_SE;
else
- CURL_SB_ACCUM(tn,c);
+ CURL_SB_ACCUM(tn, c);
break;
case CURL_TS_SE:
@@ -1201,7 +1199,7 @@ CURLcode telrcv(struct connectdata *conn,
tn->telrcv_state = CURL_TS_IAC;
goto process_iac;
}
- CURL_SB_ACCUM(tn,c);
+ CURL_SB_ACCUM(tn, c);
tn->telrcv_state = CURL_TS_SB;
}
else
@@ -1282,7 +1280,7 @@ static CURLcode telnet_done(struct connectdata *conn,
static CURLcode telnet_do(struct connectdata *conn, bool *done)
{
- CURLcode code;
+ CURLcode result;
struct SessionHandle *data = conn->data;
curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
#ifdef USE_WINSOCK
@@ -1315,65 +1313,61 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
*done = TRUE; /* unconditionally */
- code = init_telnet(conn);
- if(code)
- return code;
+ result = init_telnet(conn);
+ if(result)
+ return result;
tn = (struct TELNET *)data->req.protop;
- code = check_telnet_options(conn);
- if(code)
- return code;
+ result = check_telnet_options(conn);
+ if(result)
+ return result;
#ifdef USE_WINSOCK
/*
** This functionality only works with WinSock >= 2.0. So,
** make sure have it.
*/
- code = check_wsock2(data);
- if(code)
- return code;
+ result = check_wsock2(data);
+ if(result)
+ return result;
/* OK, so we have WinSock 2.0. We need to dynamically */
/* load ws2_32.dll and get the function pointers we need. */
wsock2 = LoadLibrary(TEXT("WS2_32.DLL"));
if(wsock2 == NULL) {
- failf(data,"failed to load WS2_32.DLL (%d)", ERRNO);
+ failf(data, "failed to load WS2_32.DLL (%d)", ERRNO);
return CURLE_FAILED_INIT;
}
/* Grab a pointer to WSACreateEvent */
- create_event_func = GetProcAddress(wsock2,"WSACreateEvent");
+ create_event_func = GetProcAddress(wsock2, "WSACreateEvent");
if(create_event_func == NULL) {
- failf(data,"failed to find WSACreateEvent function (%d)",
- ERRNO);
+ failf(data, "failed to find WSACreateEvent function (%d)", ERRNO);
FreeLibrary(wsock2);
return CURLE_FAILED_INIT;
}
/* And WSACloseEvent */
- close_event_func = GetProcAddress(wsock2,"WSACloseEvent");
+ close_event_func = GetProcAddress(wsock2, "WSACloseEvent");
if(close_event_func == NULL) {
- failf(data,"failed to find WSACloseEvent function (%d)",
- ERRNO);
+ failf(data, "failed to find WSACloseEvent function (%d)", ERRNO);
FreeLibrary(wsock2);
return CURLE_FAILED_INIT;
}
/* And WSAEventSelect */
- event_select_func = GetProcAddress(wsock2,"WSAEventSelect");
+ event_select_func = GetProcAddress(wsock2, "WSAEventSelect");
if(event_select_func == NULL) {
- failf(data,"failed to find WSAEventSelect function (%d)",
- ERRNO);
+ failf(data, "failed to find WSAEventSelect function (%d)", ERRNO);
FreeLibrary(wsock2);
return CURLE_FAILED_INIT;
}
/* And WSAEnumNetworkEvents */
- enum_netevents_func = GetProcAddress(wsock2,"WSAEnumNetworkEvents");
+ enum_netevents_func = GetProcAddress(wsock2, "WSAEnumNetworkEvents");
if(enum_netevents_func == NULL) {
- failf(data,"failed to find WSAEnumNetworkEvents function (%d)",
- ERRNO);
+ failf(data, "failed to find WSAEnumNetworkEvents function (%d)", ERRNO);
FreeLibrary(wsock2);
return CURLE_FAILED_INIT;
}
@@ -1386,7 +1380,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
/* First, create a sockets event object */
event_handle = (WSAEVENT)create_event_func();
if(event_handle == WSA_INVALID_EVENT) {
- failf(data,"WSACreateEvent failed (%d)", SOCKERRNO);
+ failf(data, "WSACreateEvent failed (%d)", SOCKERRNO);
FreeLibrary(wsock2);
return CURLE_FAILED_INIT;
}
@@ -1427,29 +1421,30 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
case WAIT_TIMEOUT:
{
for(;;) {
- if(obj_count == 1) {
+ if(data->set.is_fread_set) {
/* read from user-supplied method */
- code = (int)conn->fread_func(buf, 1, BUFSIZE - 1, conn->fread_in);
- if(code == CURL_READFUNC_ABORT) {
+ result = (int)data->set.fread_func(buf, 1, BUFSIZE - 1,
+ data->set.in);
+ if(result == CURL_READFUNC_ABORT) {
keepon = FALSE;
- code = CURLE_READ_ERROR;
+ result = CURLE_READ_ERROR;
break;
}
- if(code == CURL_READFUNC_PAUSE)
+ if(result == CURL_READFUNC_PAUSE)
break;
- if(code == 0) /* no bytes */
+ if(result == 0) /* no bytes */
break;
- readfile_read = code; /* fall thru with number of bytes read */
+ readfile_read = result; /* fall thru with number of bytes read */
}
else {
/* read from stdin */
if(!PeekNamedPipe(stdin_handle, NULL, 0, NULL,
&readfile_read, NULL)) {
keepon = FALSE;
- code = CURLE_READ_ERROR;
+ result = CURLE_READ_ERROR;
break;
}
@@ -1459,13 +1454,13 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
if(!ReadFile(stdin_handle, buf, sizeof(data->state.buffer),
&readfile_read, NULL)) {
keepon = FALSE;
- code = CURLE_READ_ERROR;
+ result = CURLE_READ_ERROR;
break;
}
}
- code = send_telnet_data(conn, buf, readfile_read);
- if(code) {
+ result = send_telnet_data(conn, buf, readfile_read);
+ if(result) {
keepon = FALSE;
break;
}
@@ -1478,12 +1473,12 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
if(!ReadFile(stdin_handle, buf, sizeof(data->state.buffer),
&readfile_read, NULL)) {
keepon = FALSE;
- code = CURLE_READ_ERROR;
+ result = CURLE_READ_ERROR;
break;
}
- code = send_telnet_data(conn, buf, readfile_read);
- if(code) {
+ result = send_telnet_data(conn, buf, readfile_read);
+ if(result) {
keepon = FALSE;
break;
}
@@ -1495,20 +1490,20 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
events.lNetworkEvents = 0;
if(SOCKET_ERROR == enum_netevents_func(sockfd, event_handle, &events)) {
if((err = SOCKERRNO) != EINPROGRESS) {
- infof(data,"WSAEnumNetworkEvents failed (%d)", err);
+ infof(data, "WSAEnumNetworkEvents failed (%d)", err);
keepon = FALSE;
- code = CURLE_READ_ERROR;
+ result = CURLE_READ_ERROR;
}
break;
}
if(events.lNetworkEvents & FD_READ) {
/* read data from network */
- code = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
+ result = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
/* read would've blocked. Loop again */
- if(code == CURLE_AGAIN)
+ if(result == CURLE_AGAIN)
break;
/* returned not-zero, this an error */
- else if(code) {
+ else if(result) {
keepon = FALSE;
break;
}
@@ -1519,8 +1514,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
break;
}
- code = telrcv(conn, (unsigned char *)buf, nread);
- if(code) {
+ result = telrcv(conn, (unsigned char *) buf, nread);
+ if(result) {
keepon = FALSE;
break;
}
@@ -1544,7 +1539,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
now = Curl_tvnow();
if(Curl_tvdiff(now, conn->created) >= data->set.timeout) {
failf(data, "Time-out");
- code = CURLE_OPERATION_TIMEDOUT;
+ result = CURLE_OPERATION_TIMEDOUT;
keepon = FALSE;
}
}
@@ -1552,7 +1547,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
/* We called WSACreateEvent, so call WSACloseEvent */
if(!close_event_func(event_handle)) {
- infof(data,"WSACloseEvent failed (%d)", SOCKERRNO);
+ infof(data, "WSACloseEvent failed (%d)", SOCKERRNO);
}
/* "Forget" pointers into the library we're about to free */
@@ -1563,18 +1558,18 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
/* We called LoadLibrary, so call FreeLibrary */
if(!FreeLibrary(wsock2))
- infof(data,"FreeLibrary(wsock2) failed (%d)", ERRNO);
+ infof(data, "FreeLibrary(wsock2) failed (%d)", ERRNO);
#else
pfd[0].fd = sockfd;
pfd[0].events = POLLIN;
- if(conn->fread_func != (curl_read_callback)fread) {
+ if(data->set.fread_func != (curl_read_callback)fread) {
poll_cnt = 1;
interval_ms = 100; /* poll user-supplied read function */
}
else {
/* really using fread, so infile is a FILE* */
- pfd[1].fd = fileno((FILE *)conn->fread_in);
+ pfd[1].fd = fileno((FILE *)data->set.in);
pfd[1].events = POLLIN;
poll_cnt = 2;
interval_ms = 1 * 1000;
@@ -1592,12 +1587,12 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
default: /* read! */
if(pfd[0].revents & POLLIN) {
/* read data from network */
- code = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
+ result = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
/* read would've blocked. Loop again */
- if(code == CURLE_AGAIN)
+ if(result == CURLE_AGAIN)
break;
/* returned not-zero, this an error */
- else if(code) {
+ else if(result) {
keepon = FALSE;
break;
}
@@ -1610,8 +1605,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
total_dl += nread;
Curl_pgrsSetDownloadCounter(data, total_dl);
- code = telrcv(conn, (unsigned char *)buf, nread);
- if(code) {
+ result = telrcv(conn, (unsigned char *)buf, nread);
+ if(result) {
keepon = FALSE;
break;
}
@@ -1633,7 +1628,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
}
else {
/* read from user-supplied method */
- nread = (int)conn->fread_func(buf, 1, BUFSIZE - 1, conn->fread_in);
+ nread = (int)data->set.fread_func(buf, 1, BUFSIZE - 1, data->set.in);
if(nread == CURL_READFUNC_ABORT) {
keepon = FALSE;
break;
@@ -1643,8 +1638,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
}
if(nread > 0) {
- code = send_telnet_data(conn, buf, nread);
- if(code) {
+ result = send_telnet_data(conn, buf, nread);
+ if(result) {
keepon = FALSE;
break;
}
@@ -1661,13 +1656,13 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
now = Curl_tvnow();
if(Curl_tvdiff(now, conn->created) >= data->set.timeout) {
failf(data, "Time-out");
- code = CURLE_OPERATION_TIMEDOUT;
+ result = CURLE_OPERATION_TIMEDOUT;
keepon = FALSE;
}
}
if(Curl_pgrsUpdate(conn)) {
- code = CURLE_ABORTED_BY_CALLBACK;
+ result = CURLE_ABORTED_BY_CALLBACK;
break;
}
}
@@ -1675,6 +1670,6 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
/* mark this as "no further transfer wanted" */
Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
- return code;
+ return result;
}
#endif
diff --git a/lib/tftp.c b/lib/tftp.c
index b9723c000..4c5796f55 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -57,14 +57,11 @@
#include "url.h"
#include "rawstr.h"
#include "speedcheck.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
+#include "curl_printf.h"
#include "select.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* RFC2348 allows the block size to be negotiated */
@@ -148,8 +145,8 @@ typedef struct tftp_state_data {
/* Forward declarations */
-static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event) ;
-static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event) ;
+static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event);
+static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event);
static CURLcode tftp_connect(struct connectdata *conn, bool *done);
static CURLcode tftp_disconnect(struct connectdata *conn,
bool dead_connection);
@@ -221,7 +218,7 @@ static CURLcode tftp_set_timeouts(tftp_state_data_t *state)
state->max_time = state->start_time+maxtime;
/* Set per-block timeout to total */
- timeout = maxtime ;
+ timeout = maxtime;
/* Average restart after 5 seconds */
state->retry_max = (int)timeout/5;
@@ -411,7 +408,7 @@ static size_t tftp_option_add(tftp_state_data_t *state, size_t csize,
if(( strlen(option) + csize + 1 ) > (size_t)state->blksize)
return 0;
strcpy(buf, option);
- return( strlen(option) + 1 );
+ return strlen(option) + 1;
}
static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
@@ -426,7 +423,7 @@ static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
state->state = TFTP_STATE_TX;
result = tftp_set_timeouts(state);
if(result)
- return(result);
+ return result;
return tftp_tx(state, event);
}
@@ -442,7 +439,7 @@ static CURLcode tftp_connect_for_rx(tftp_state_data_t *state,
state->state = TFTP_STATE_RX;
result = tftp_set_timeouts(state);
if(result)
- return(result);
+ return result;
return tftp_rx(state, event);
}
@@ -454,7 +451,7 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
char *filename;
char buf[64];
struct SessionHandle *data = state->conn->data;
- CURLcode res = CURLE_OK;
+ CURLcode result = CURLE_OK;
/* Set ascii mode if -B flag was used */
if(data->set.prefer_ascii)
@@ -469,7 +466,7 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
if(state->retries>state->retry_max) {
state->error = TFTP_ERR_NORESPONSE;
state->state = TFTP_STATE_FIN;
- return res;
+ return result;
}
if(data->set.upload) {
@@ -534,24 +531,24 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
if(senddata != (ssize_t)sbytes) {
failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
}
- Curl_safefree(filename);
+ free(filename);
break;
case TFTP_EVENT_OACK:
if(data->set.upload) {
- res = tftp_connect_for_tx(state, event);
+ result = tftp_connect_for_tx(state, event);
}
else {
- res = tftp_connect_for_rx(state, event);
+ result = tftp_connect_for_rx(state, event);
}
break;
case TFTP_EVENT_ACK: /* Connected for transmit */
- res = tftp_connect_for_tx(state, event);
+ result = tftp_connect_for_tx(state, event);
break;
case TFTP_EVENT_DATA: /* Connected for receive */
- res = tftp_connect_for_rx(state, event);
+ result = tftp_connect_for_rx(state, event);
break;
case TFTP_EVENT_ERROR:
@@ -562,7 +559,8 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
failf(state->conn->data, "tftp_send_first: internal error");
break;
}
- return res;
+
+ return result;
}
/* the next blocknum is x + 1 but it needs to wrap at an unsigned 16bit
@@ -702,7 +700,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
struct SessionHandle *data = state->conn->data;
ssize_t sbytes;
int rblock;
- CURLcode res = CURLE_OK;
+ CURLcode result = CURLE_OK;
struct SingleRequest *k = &data->req;
switch(event) {
@@ -728,7 +726,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
if(state->retries>state->retry_max) {
failf(data, "tftp_tx: giving up waiting for block %d ack",
state->block);
- res = CURLE_SEND_ERROR;
+ result = CURLE_SEND_ERROR;
}
else {
/* Re-send the data packet */
@@ -739,10 +737,11 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
/* Check all sbytes were sent */
if(sbytes<0) {
failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
- res = CURLE_SEND_ERROR;
+ result = CURLE_SEND_ERROR;
}
}
- return res;
+
+ return result;
}
/* This is the expected packet. Reset the counters and send the next
block */
@@ -759,11 +758,13 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
state->state = TFTP_STATE_FIN;
return CURLE_OK;
}
- res = Curl_fillreadbuffer(state->conn, state->blksize, &state->sbytes);
- if(res)
- return res;
- sbytes = sendto(state->sockfd, (void *)state->spacket.data,
- 4+state->sbytes, SEND_4TH_ARG,
+
+ result = Curl_fillreadbuffer(state->conn, state->blksize, &state->sbytes);
+ if(result)
+ return result;
+
+ sbytes = sendto(state->sockfd, (void *) state->spacket.data,
+ 4 + state->sbytes, SEND_4TH_ARG,
(struct sockaddr *)&state->remote_addr,
state->remote_addrlen);
/* Check all sbytes were sent */
@@ -819,7 +820,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
break;
}
- return res;
+ return result;
}
/**********************************************************
@@ -831,48 +832,47 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
**********************************************************/
static CURLcode tftp_translate_code(tftp_error_t error)
{
- CURLcode code = CURLE_OK;
+ CURLcode result = CURLE_OK;
if(error != TFTP_ERR_NONE) {
switch(error) {
case TFTP_ERR_NOTFOUND:
- code = CURLE_TFTP_NOTFOUND;
+ result = CURLE_TFTP_NOTFOUND;
break;
case TFTP_ERR_PERM:
- code = CURLE_TFTP_PERM;
+ result = CURLE_TFTP_PERM;
break;
case TFTP_ERR_DISKFULL:
- code = CURLE_REMOTE_DISK_FULL;
+ result = CURLE_REMOTE_DISK_FULL;
break;
case TFTP_ERR_UNDEF:
case TFTP_ERR_ILLEGAL:
- code = CURLE_TFTP_ILLEGAL;
+ result = CURLE_TFTP_ILLEGAL;
break;
case TFTP_ERR_UNKNOWNID:
- code = CURLE_TFTP_UNKNOWNID;
+ result = CURLE_TFTP_UNKNOWNID;
break;
case TFTP_ERR_EXISTS:
- code = CURLE_REMOTE_FILE_EXISTS;
+ result = CURLE_REMOTE_FILE_EXISTS;
break;
case TFTP_ERR_NOSUCHUSER:
- code = CURLE_TFTP_NOSUCHUSER;
+ result = CURLE_TFTP_NOSUCHUSER;
break;
case TFTP_ERR_TIMEOUT:
- code = CURLE_OPERATION_TIMEDOUT;
+ result = CURLE_OPERATION_TIMEDOUT;
break;
case TFTP_ERR_NORESPONSE:
- code = CURLE_COULDNT_CONNECT;
+ result = CURLE_COULDNT_CONNECT;
break;
default:
- code= CURLE_ABORTED_BY_CALLBACK;
+ result = CURLE_ABORTED_BY_CALLBACK;
break;
}
}
- else {
- code = CURLE_OK;
- }
+ else
+ result = CURLE_OK;
- return(code);
+ return result;
}
/**********************************************************
@@ -885,20 +885,21 @@ static CURLcode tftp_translate_code(tftp_error_t error)
static CURLcode tftp_state_machine(tftp_state_data_t *state,
tftp_event_t event)
{
- CURLcode res = CURLE_OK;
+ CURLcode result = CURLE_OK;
struct SessionHandle *data = state->conn->data;
+
switch(state->state) {
case TFTP_STATE_START:
DEBUGF(infof(data, "TFTP_STATE_START\n"));
- res = tftp_send_first(state, event);
+ result = tftp_send_first(state, event);
break;
case TFTP_STATE_RX:
DEBUGF(infof(data, "TFTP_STATE_RX\n"));
- res = tftp_rx(state, event);
+ result = tftp_rx(state, event);
break;
case TFTP_STATE_TX:
DEBUGF(infof(data, "TFTP_STATE_TX\n"));
- res = tftp_tx(state, event);
+ result = tftp_tx(state, event);
break;
case TFTP_STATE_FIN:
infof(data, "%s\n", "TFTP finished");
@@ -906,10 +907,11 @@ static CURLcode tftp_state_machine(tftp_state_data_t *state,
default:
DEBUGF(infof(data, "STATE: %d\n", state->state));
failf(data, "%s", "Internal state machine error");
- res = CURLE_TFTP_ILLEGAL;
+ result = CURLE_TFTP_ILLEGAL;
break;
}
- return res;
+
+ return result;
}
/**********************************************************
@@ -943,7 +945,6 @@ static CURLcode tftp_disconnect(struct connectdata *conn, bool dead_connection)
**********************************************************/
static CURLcode tftp_connect(struct connectdata *conn, bool *done)
{
- CURLcode code;
tftp_state_data_t *state;
int blksize, rc;
@@ -1017,8 +1018,8 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
Curl_pgrsStartNow(conn->data);
*done = TRUE;
- code = CURLE_OK;
- return(code);
+
+ return CURLE_OK;
}
/**********************************************************
@@ -1031,7 +1032,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
static CURLcode tftp_done(struct connectdata *conn, CURLcode status,
bool premature)
{
- CURLcode code = CURLE_OK;
+ CURLcode result = CURLE_OK;
tftp_state_data_t *state = (tftp_state_data_t *)conn->proto.tftpc;
(void)status; /* unused */
@@ -1042,9 +1043,9 @@ static CURLcode tftp_done(struct connectdata *conn, CURLcode status,
/* If we have encountered an error */
if(state)
- code = tftp_translate_code(state->error);
+ result = tftp_translate_code(state->error);
- return code;
+ return result;
}
/**********************************************************
@@ -1209,7 +1210,7 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
else if(event != TFTP_EVENT_NONE) {
result = tftp_state_machine(state, event);
if(result)
- return(result);
+ return result;
*done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
if(*done)
/* Tell curl we're done */
@@ -1228,10 +1229,10 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
else if(rc != 0) {
result = tftp_receive_packet(conn);
if(result)
- return(result);
+ return result;
result = tftp_state_machine(state, state->event);
if(result)
- return(result);
+ return result;
*done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
if(*done)
/* Tell curl we're done */
diff --git a/lib/timeval.c b/lib/timeval.c
index 769eb3c49..45731ac59 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -118,7 +118,7 @@ struct timeval curlx_tvnow(void)
long curlx_tvdiff(struct timeval newer, struct timeval older)
{
return (newer.tv_sec-older.tv_sec)*1000+
- (newer.tv_usec-older.tv_usec)/1000;
+ (long)(newer.tv_usec-older.tv_usec)/1000;
}
/*
diff --git a/lib/transfer.c b/lib/transfer.c
index a7ab08ecf..718139b32 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -75,16 +75,14 @@
#include "curl_ntlm.h"
#include "http_negotiate.h"
#include "share.h"
-#include "curl_memory.h"
#include "select.h"
#include "multiif.h"
#include "connect.h"
#include "non-ascii.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/*
@@ -117,8 +115,8 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
/* this function returns a size_t, so we typecast to int to prevent warnings
with picky compilers */
- nread = (int)conn->fread_func(data->req.upload_fromhere, 1,
- buffersize, conn->fread_in);
+ nread = (int)data->set.fread_func(data->req.upload_fromhere, 1,
+ buffersize, data->set.in);
if(nread == CURL_READFUNC_ABORT) {
failf(data, "operation aborted by callback");
@@ -216,7 +214,7 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
result = Curl_convert_to_network(data, data->req.upload_fromhere, length);
/* Curl_convert_to_network calls failf if unsuccessful */
if(result)
- return(result);
+ return result;
#endif /* CURL_DOES_CONVERSIONS */
if((nread - hexlen) == 0)
@@ -319,8 +317,7 @@ static int data_pending(const struct connectdata *conn)
TRUE. The thing is if we read everything, then http2_recv won't
be called and we cannot signal the HTTP/2 stream has closed. As
a workaround, we return nonzero here to call http2_recv. */
- ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20 &&
- conn->proto.httpc.closed);
+ ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20);
#else
Curl_ssl_data_pending(conn, FIRSTSOCKET);
#endif
@@ -435,6 +432,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
else {
/* read nothing but since we wanted nothing we consider this an OK
situation to proceed from */
+ DEBUGF(infof(data, "readwrite_data: we're done!\n"));
nread = 0;
}
@@ -496,7 +494,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
/* We've stopped dealing with input, get out of the do-while loop */
if(nread > 0) {
- if(Curl_multi_pipeline_enabled(conn->data->multi)) {
+ if(Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1)) {
infof(data,
"Rewinding stream by : %zd"
" bytes on url %s (zero-length body)\n",
@@ -641,7 +639,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
if(dataleft != 0) {
infof(conn->data, "Leftovers after chunking: %zu bytes\n",
dataleft);
- if(Curl_multi_pipeline_enabled(conn->data->multi)) {
+ if(Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1)) {
/* only attempt the rewind if we truly are pipelining */
infof(conn->data, "Rewinding %zu bytes\n",dataleft);
read_rewind(conn, dataleft);
@@ -664,7 +662,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
excess = (size_t)(k->bytecount + nread - k->maxdownload);
if(excess > 0 && !k->ignorebody) {
- if(Curl_multi_pipeline_enabled(conn->data->multi)) {
+ if(Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1)) {
/* The 'excess' amount below can't be more than BUFSIZE which
always will fit in a size_t */
infof(data,
@@ -758,7 +756,6 @@ static CURLcode readwrite_data(struct SessionHandle *data,
result = Curl_unencode_gzip_write(conn, k, nread);
break;
- case COMPRESS:
default:
failf (data, "Unrecognized content encoding type. "
"libcurl understands `identity', `deflate' and `gzip' "
@@ -830,13 +827,6 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
*didwhat |= KEEP_SEND;
- /*
- * We loop here to do the READ and SEND loop until we run out of
- * data to send or until we get EWOULDBLOCK back
- *
- * FIXME: above comment is misleading. Currently no looping is
- * actually done in do-while loop below.
- */
do {
/* only read more data if there's no upload data already
@@ -1022,9 +1012,9 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
* be read and written to/from the connection.
*/
CURLcode Curl_readwrite(struct connectdata *conn,
+ struct SessionHandle *data,
bool *done)
{
- struct SessionHandle *data = conn->data;
struct SingleRequest *k = &data->req;
CURLcode result;
int didwhat=0;
@@ -1048,6 +1038,11 @@ CURLcode Curl_readwrite(struct connectdata *conn,
else
fd_write = CURL_SOCKET_BAD;
+ if(conn->data->state.drain) {
+ select_res |= CURL_CSELECT_IN;
+ DEBUGF(infof(data, "Curl_readwrite: forcibly told to drain data\n"));
+ }
+
if(!select_res) /* Call for select()/poll() only, if read/write/error
status is not known. */
select_res = Curl_socket_ready(fd_read, fd_write, 0);
@@ -1272,7 +1267,7 @@ long Curl_sleep_time(curl_off_t rate_bps, curl_off_t cur_rate_bps,
* the next packet at the adjusted rate. We should wait
* longer when using larger packets, for instance.
*/
- rv = ((curl_off_t)((pkt_size * 8) * 1000) / rate_bps);
+ rv = ((curl_off_t)(pkt_size * 1000) / rate_bps);
/* Catch rounding errors and always slow down at least 1ms if
* we are running too fast.
@@ -1319,6 +1314,11 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
Curl_safefree(data->info.wouldredirect);
data->info.wouldredirect = NULL;
+ if(data->set.httpreq == HTTPREQ_PUT)
+ data->state.infilesize = data->set.filesize;
+ else
+ data->state.infilesize = data->set.postfieldsize;
+
/* If there is a list of cookie files to read, do it now! */
if(data->change.cookielist)
Curl_cookie_loadfiles(data);
@@ -1342,6 +1342,7 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
#endif
Curl_initinfo(data); /* reset session-specific information "variables" */
+ Curl_pgrsResetTimesSizes(data);
Curl_pgrsStartNow(data);
if(data->set.timeout)
@@ -1633,7 +1634,7 @@ CURLcode Curl_follow(struct SessionHandle *data,
if(type == FOLLOW_REDIR) {
if((data->set.maxredirs != -1) &&
(data->set.followlocation >= data->set.maxredirs)) {
- failf(data,"Maximum (%ld) redirects followed", data->set.maxredirs);
+ failf(data, "Maximum (%ld) redirects followed", data->set.maxredirs);
return CURLE_TOO_MANY_REDIRECTS;
}
diff --git a/lib/transfer.h b/lib/transfer.h
index ad4a3acd6..316aeaebc 100644
--- a/lib/transfer.h
+++ b/lib/transfer.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -40,7 +40,8 @@ CURLcode Curl_follow(struct SessionHandle *data, char *newurl,
followtype type);
-CURLcode Curl_readwrite(struct connectdata *conn, bool *done);
+CURLcode Curl_readwrite(struct connectdata *conn,
+ struct SessionHandle *data, bool *done);
int Curl_single_getsock(const struct connectdata *conn,
curl_socket_t *socks,
int numsocks);
diff --git a/lib/url.c b/lib/url.c
index d3bb5e011..406c1f02c 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -124,16 +124,12 @@ int curl_win32_idn_to_ascii(const char *in, char **out);
#include "curl_rtmp.h"
#include "gopher.h"
#include "http_proxy.h"
-#include "bundles.h"
#include "conncache.h"
#include "multihandle.h"
#include "pipeline.h"
#include "dotdot.h"
#include "strdup.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -146,7 +142,6 @@ find_oldest_idle_connection_in_bundle(struct SessionHandle *data,
struct connectbundle *bundle);
static void conn_free(struct connectdata *conn);
static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke);
-static CURLcode do_init(struct connectdata *conn);
static CURLcode parse_url_login(struct SessionHandle *data,
struct connectdata *conn,
char **userptr, char **passwdptr,
@@ -451,10 +446,8 @@ CURLcode Curl_close(struct SessionHandle *data)
Curl_ssl_free_certinfo(data);
/* Cleanup possible redirect junk */
- if(data->req.newurl) {
- free(data->req.newurl);
- data->req.newurl = NULL;
- }
+ free(data->req.newurl);
+ data->req.newurl = NULL;
if(data->change.referer_alloc) {
Curl_safefree(data->change.referer);
@@ -581,13 +574,30 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
(char *) CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE);
if(result)
return result;
+
+ /* set default negotiate proxy service name */
+ result = setstropt(&set->str[STRING_PROXY_SERVICE_NAME],
+ (char *) CURL_DEFAULT_PROXY_SERVICE_NAME);
+ if(result)
+ return result;
+
+ /* set default negotiate service name */
+ result = setstropt(&set->str[STRING_SERVICE_NAME],
+ (char *) CURL_DEFAULT_SERVICE_NAME);
+ if(result)
+ return result;
#endif
/* This is our preferred CA cert bundle/path since install time */
#if defined(CURL_CA_BUNDLE)
result = setstropt(&set->str[STRING_SSL_CAFILE], (char *) CURL_CA_BUNDLE);
-#elif defined(CURL_CA_PATH)
+ if(result)
+ return result;
+#endif
+#if defined(CURL_CA_PATH)
result = setstropt(&set->str[STRING_SSL_CAPATH], (char *) CURL_CA_PATH);
+ if(result)
+ return result;
#endif
set->wildcardmatch = FALSE;
@@ -605,6 +615,7 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
set->ssl_enable_alpn = TRUE;
set->expect_100_timeout = 1000L; /* Wait for a second by default. */
+ set->sep_headers = TRUE; /* separated header lists by default */
return result;
}
@@ -666,8 +677,7 @@ CURLcode Curl_open(struct SessionHandle **curl)
if(result) {
Curl_resolver_cleanup(data->state.resolver);
- if(data->state.headerbuff)
- free(data->state.headerbuff);
+ free(data->state.headerbuff);
Curl_freeset(data);
free(data);
data = NULL;
@@ -893,7 +903,11 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
* Set explicit SSL version to try to connect with, as some SSL
* implementations are lame.
*/
+#ifdef USE_SSL
data->set.ssl.version = va_arg(param, long);
+#else
+ result = CURLE_UNKNOWN_OPTION;
+#endif
break;
#ifndef CURL_DISABLE_HTTP
@@ -1236,7 +1250,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
argptr = strdup(argptr);
if(!argptr || !data->cookies) {
result = CURLE_OUT_OF_MEMORY;
- Curl_safefree(argptr);
+ free(argptr);
}
else {
Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
@@ -1469,12 +1483,29 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
va_arg(param, char *));
break;
+ case CURLOPT_PROXY_SERVICE_NAME:
+ /*
+ * Set negotiate proxy service name
+ */
+ result = setstropt(&data->set.str[STRING_PROXY_SERVICE_NAME],
+ va_arg(param, char *));
+ break;
+
case CURLOPT_SOCKS5_GSSAPI_NEC:
/*
* set flag for nec socks5 support
*/
data->set.socks5_gssapi_nec = (0 != va_arg(param, long))?TRUE:FALSE;
break;
+
+ case CURLOPT_SERVICE_NAME:
+ /*
+ * Set negotiate service identity
+ */
+ result = setstropt(&data->set.str[STRING_SERVICE_NAME],
+ va_arg(param, char *));
+ break;
+
#endif
case CURLOPT_HEADERDATA:
@@ -1997,6 +2028,17 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
data->set.ssl.verifyhost = (0 != arg)?TRUE:FALSE;
break;
+ case CURLOPT_SSL_VERIFYSTATUS:
+ /*
+ * Enable certificate status verifying.
+ */
+ if(!Curl_ssl_cert_status_request()) {
+ result = CURLE_NOT_BUILT_IN;
+ break;
+ }
+
+ data->set.ssl.verifystatus = (0 != va_arg(param, long))?TRUE:FALSE;
+ break;
case CURLOPT_SSL_CTX_FUNCTION:
#ifdef have_curlssl_ssl_ctx
/*
@@ -2017,6 +2059,17 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
result = CURLE_NOT_BUILT_IN;
#endif
break;
+ case CURLOPT_SSL_FALSESTART:
+ /*
+ * Enable TLS false start.
+ */
+ if(!Curl_ssl_false_start()) {
+ result = CURLE_NOT_BUILT_IN;
+ break;
+ }
+
+ data->set.ssl.falsestart = (0 != va_arg(param, long))?TRUE:FALSE;
+ break;
case CURLOPT_CERTINFO:
#ifdef have_curlssl_certinfo
data->set.ssl.certinfo = (0 != va_arg(param, long))?TRUE:FALSE;
@@ -2132,16 +2185,15 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
data->share->dirty++;
- if(data->share->hostcache) {
+ if(data->share->specifier & (1<< CURL_LOCK_DATA_DNS)) {
/* use shared host cache */
- data->dns.hostcache = data->share->hostcache;
+ data->dns.hostcache = &data->share->hostcache;
data->dns.hostcachetype = HCACHE_SHARED;
}
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
if(data->share->cookies) {
/* use shared cookie list, first free own one if any */
- if(data->cookies)
- Curl_cookie_cleanup(data->cookies);
+ Curl_cookie_cleanup(data->cookies);
/* enable cookies since we now use a share that uses cookies! */
data->cookies = data->share->cookies;
}
@@ -2182,7 +2234,8 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
case CURLOPT_SSL_OPTIONS:
arg = va_arg(param, long);
- data->set.ssl_enable_beast = arg&CURLSSLOPT_ALLOW_BEAST?TRUE:FALSE;
+ data->set.ssl_enable_beast = !!(arg & CURLSSLOPT_ALLOW_BEAST);
+ data->set.ssl_no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
break;
#endif
@@ -2593,6 +2646,12 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
break;
#endif
+ case CURLOPT_PATH_AS_IS:
+ data->set.path_as_is = (0 != va_arg(param, long))?TRUE:FALSE;
+ break;
+ case CURLOPT_PIPEWAIT:
+ data->set.pipewait = (0 != va_arg(param, long))?TRUE:FALSE;
+ break;
default:
/* unknown tag and its companion, just ignore: */
result = CURLE_UNKNOWN_OPTION;
@@ -2718,16 +2777,15 @@ CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
free(conn->host.encalloc); /* encoded host name buffer, must be freed with
idn_free() since this was allocated by
curl_win32_idn_to_ascii */
- if(conn->proxy.encalloc)
- free(conn->proxy.encalloc); /* encoded proxy name buffer, must be freed
- with idn_free() since this was allocated by
- curl_win32_idn_to_ascii */
+ free(conn->proxy.encalloc); /* encoded proxy name buffer, must be freed
+ with idn_free() since this was allocated by
+ curl_win32_idn_to_ascii */
#endif
Curl_ssl_close(conn, FIRSTSOCKET);
/* Indicate to all handles on the pipe that we're dead */
- if(Curl_multi_pipeline_enabled(data->multi)) {
+ if(Curl_pipeline_wanted(data->multi, CURLPIPE_ANY)) {
signalPipeClose(conn->send_pipe, TRUE);
signalPipeClose(conn->recv_pipe, TRUE);
}
@@ -2755,32 +2813,31 @@ static bool SocketIsDead(curl_socket_t sock)
return ret_val;
}
+/*
+ * IsPipeliningPossible() returns TRUE if the options set would allow
+ * pipelining/multiplexing and the connection is using a HTTP protocol.
+ */
static bool IsPipeliningPossible(const struct SessionHandle *handle,
const struct connectdata *conn)
{
- if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
- Curl_multi_pipeline_enabled(handle->multi) &&
- (handle->set.httpreq == HTTPREQ_GET ||
- handle->set.httpreq == HTTPREQ_HEAD) &&
- handle->set.httpversion != CURL_HTTP_VERSION_1_0)
- return TRUE;
+ /* If a HTTP protocol and pipelining is enabled */
+ if(conn->handler->protocol & PROTO_FAMILY_HTTP) {
+
+ if(Curl_pipeline_wanted(handle->multi, CURLPIPE_HTTP1) &&
+ (handle->set.httpversion != CURL_HTTP_VERSION_1_0) &&
+ (handle->set.httpreq == HTTPREQ_GET ||
+ handle->set.httpreq == HTTPREQ_HEAD))
+ /* didn't ask for HTTP/1.0 and a GET or HEAD */
+ return TRUE;
+ if(Curl_pipeline_wanted(handle->multi, CURLPIPE_MULTIPLEX) &&
+ (handle->set.httpversion == CURL_HTTP_VERSION_2_0))
+ /* allows HTTP/2 */
+ return TRUE;
+ }
return FALSE;
}
-bool Curl_isPipeliningEnabled(const struct SessionHandle *handle)
-{
- return Curl_multi_pipeline_enabled(handle->multi);
-}
-
-CURLcode Curl_addHandleToPipeline(struct SessionHandle *data,
- struct curl_llist *pipeline)
-{
- if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
- return CURLE_OUT_OF_MEMORY;
- return CURLE_OK;
-}
-
int Curl_removeHandleFromPipeline(struct SessionHandle *handle,
struct curl_llist *pipeline)
{
@@ -2828,15 +2885,14 @@ void Curl_getoff_all_pipelines(struct SessionHandle *data,
struct connectdata *conn)
{
bool recv_head = (conn->readchannel_inuse &&
- (gethandleathead(conn->recv_pipe) == data)) ? TRUE : FALSE;
-
+ Curl_recvpipe_head(data, conn));
bool send_head = (conn->writechannel_inuse &&
- (gethandleathead(conn->send_pipe) == data)) ? TRUE : FALSE;
+ Curl_sendpipe_head(data, conn));
if(Curl_removeHandleFromPipeline(data, conn->recv_pipe) && recv_head)
- conn->readchannel_inuse = FALSE;
+ Curl_pipeline_leave_read(conn);
if(Curl_removeHandleFromPipeline(data, conn->send_pipe) && send_head)
- conn->writechannel_inuse = FALSE;
+ Curl_pipeline_leave_write(conn);
}
static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke)
@@ -2888,7 +2944,7 @@ find_oldest_idle_connection(struct SessionHandle *data)
now = Curl_tvnow();
- Curl_hash_start_iterate(bc->hash, &iter);
+ Curl_hash_start_iterate(&bc->hash, &iter);
he = Curl_hash_next_element(&iter);
while(he) {
@@ -3022,6 +3078,13 @@ static void prune_dead_connections(struct SessionHandle *data)
}
}
+
+static size_t max_pipeline_length(struct Curl_multi *multi)
+{
+ return multi ? multi->max_pipeline_length : 0;
+}
+
+
/*
* Given one filled in connection struct (named needle), this function should
* detect if there already is one that has all the significant details
@@ -3038,17 +3101,21 @@ static bool
ConnectionExists(struct SessionHandle *data,
struct connectdata *needle,
struct connectdata **usethis,
- bool *force_reuse)
+ bool *force_reuse,
+ bool *waitpipe)
{
struct connectdata *check;
struct connectdata *chosen = 0;
bool canPipeline = IsPipeliningPossible(data, needle);
+#ifdef USE_NTLM
bool wantNTLMhttp = ((data->state.authhost.want & CURLAUTH_NTLM) ||
(data->state.authhost.want & CURLAUTH_NTLM_WB)) &&
(needle->handler->protocol & PROTO_FAMILY_HTTP) ? TRUE : FALSE;
+#endif
struct connectbundle *bundle;
*force_reuse = FALSE;
+ *waitpipe = FALSE;
/* We can't pipe if the site is blacklisted */
if(canPipeline && Curl_pipeline_site_blacklisted(data, needle)) {
@@ -3057,10 +3124,11 @@ ConnectionExists(struct SessionHandle *data,
/* Look up the bundle with all the connections to this
particular host */
- bundle = Curl_conncache_find_bundle(data->state.conn_cache,
- needle->host.name);
+ bundle = Curl_conncache_find_bundle(needle, data->state.conn_cache);
if(bundle) {
- size_t max_pipe_len = Curl_multi_max_pipeline_length(data->multi);
+ /* Max pipe length is zero (unlimited) for multiplexed connections */
+ size_t max_pipe_len = (bundle->multiuse != BUNDLE_MULTIPLEX)?
+ max_pipeline_length(data->multi):0;
size_t best_pipe_len = max_pipe_len;
struct curl_llist_element *curr;
@@ -3068,9 +3136,17 @@ ConnectionExists(struct SessionHandle *data,
needle->host.name, (void *)bundle);
/* We can't pipe if we don't know anything about the server */
- if(canPipeline && !bundle->server_supports_pipelining) {
- infof(data, "Server doesn't support pipelining\n");
- canPipeline = FALSE;
+ if(canPipeline) {
+ if(bundle->multiuse <= BUNDLE_UNKNOWN) {
+ if((bundle->multiuse == BUNDLE_UNKNOWN) && data->set.pipewait) {
+ infof(data, "Server doesn't support multi-use yet, wait\n");
+ *waitpipe = TRUE;
+ return FALSE; /* no re-use */
+ }
+
+ infof(data, "Server doesn't support multi-use (yet)\n");
+ canPipeline = FALSE;
+ }
}
curr = bundle->conn_list->head;
@@ -3094,16 +3170,19 @@ ConnectionExists(struct SessionHandle *data,
pipeLen = check->send_pipe->size + check->recv_pipe->size;
if(canPipeline) {
- /* Make sure the pipe has only GET requests */
- struct SessionHandle* sh = gethandleathead(check->send_pipe);
- struct SessionHandle* rh = gethandleathead(check->recv_pipe);
- if(sh) {
- if(!IsPipeliningPossible(sh, check))
- continue;
- }
- else if(rh) {
- if(!IsPipeliningPossible(rh, check))
- continue;
+
+ if(!check->bits.multiplex) {
+ /* If not multiplexing, make sure the pipe has only GET requests */
+ struct SessionHandle* sh = gethandleathead(check->send_pipe);
+ struct SessionHandle* rh = gethandleathead(check->recv_pipe);
+ if(sh) {
+ if(!IsPipeliningPossible(sh, check))
+ continue;
+ }
+ else if(rh) {
+ if(!IsPipeliningPossible(rh, check))
+ continue;
+ }
}
}
else {
@@ -3183,8 +3262,11 @@ ConnectionExists(struct SessionHandle *data,
continue;
}
- if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) ||
- wantNTLMhttp) {
+ if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST))
+#ifdef USE_NTLM
+ || (wantNTLMhttp || check->ntlm.state != NTLMSTATE_NONE)
+#endif
+ ) {
/* This protocol requires credentials per connection or is HTTP+NTLM,
so verify that we're using the same name and password as well */
if(!strequal(needle->user, check->user) ||
@@ -3279,19 +3361,42 @@ ConnectionExists(struct SessionHandle *data,
}
/* We can't use the connection if the pipe is full */
- if(pipeLen >= max_pipe_len)
+ if(max_pipe_len && (pipeLen >= max_pipe_len)) {
+ infof(data, "Pipe is full, skip (%zu)\n", pipeLen);
continue;
-
+ }
+#ifdef USE_NGHTTP2
+ /* If multiplexed, make sure we don't go over concurrency limit */
+ if(check->bits.multiplex) {
+ /* Multiplexed connections can only be HTTP/2 for now */
+ struct http_conn *httpc = &check->proto.httpc;
+ if(pipeLen >= httpc->settings.max_concurrent_streams) {
+ infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)\n",
+ pipeLen);
+ continue;
+ }
+ }
+#endif
/* We can't use the connection if the pipe is penalized */
- if(Curl_pipeline_penalized(data, check))
+ if(Curl_pipeline_penalized(data, check)) {
+ infof(data, "Penalized, skip\n");
continue;
+ }
- if(pipeLen < best_pipe_len) {
- /* This connection has a shorter pipe so far. We'll pick this
- and continue searching */
+ if(max_pipe_len) {
+ if(pipeLen < best_pipe_len) {
+ /* This connection has a shorter pipe so far. We'll pick this
+ and continue searching */
+ chosen = check;
+ best_pipe_len = pipeLen;
+ continue;
+ }
+ }
+ else {
+ /* When not pipelining (== multiplexed), we have a match here! */
chosen = check;
- best_pipe_len = pipeLen;
- continue;
+ infof(data, "Multiplexed connection found!\n");
+ break;
}
}
else {
@@ -3343,20 +3448,6 @@ ConnectionDone(struct SessionHandle *data, struct connectdata *conn)
return (conn_candidate == conn) ? FALSE : TRUE;
}
-/*
- * The given input connection struct pointer is to be stored in the connection
- * cache. If the cache is already full, least interesting existing connection
- * (if any) gets closed.
- *
- * The given connection should be unique. That must've been checked prior to
- * this call.
- */
-static CURLcode ConnectionStore(struct SessionHandle *data,
- struct connectdata *conn)
-{
- return Curl_conncache_add_conn(data->state.conn_cache, conn);
-}
-
/* after a TCP connection to the proxy has been verified, this function does
the next magic step.
@@ -3602,7 +3693,7 @@ static void fix_hostname(struct SessionHandle *data,
host->dispname = host->name;
len = strlen(host->name);
- if(host->name[len-1] == '.')
+ if(len && (host->name[len-1] == '.'))
/* strip off a single trailing dot if present, primarily for SNI but
there's no use for it */
host->name[len-1]=0;
@@ -3619,7 +3710,7 @@ static void fix_hostname(struct SessionHandle *data,
stringprep_locale_charset ());
if(rc != IDNA_SUCCESS)
infof(data, "Failed to convert %s to ACE; %s\n",
- host->name, Curl_idn_strerror(conn,rc));
+ host->name, Curl_idn_strerror(conn, rc));
else {
/* tld_check_name() displays a warning if the host name contains
"illegal" characters for this TLD */
@@ -3732,9 +3823,9 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
conn->response_header = NULL;
#endif
- if(Curl_multi_pipeline_enabled(data->multi) &&
- !conn->master_buffer) {
- /* Allocate master_buffer to be used for pipelining */
+ if(Curl_pipeline_wanted(data->multi, CURLPIPE_HTTP1) &&
+ !conn->master_buffer) {
+ /* Allocate master_buffer to be used for HTTP/1 pipelining */
conn->master_buffer = calloc(BUFSIZE, sizeof (char));
if(!conn->master_buffer)
goto error;
@@ -3773,9 +3864,9 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
conn->send_pipe = NULL;
conn->recv_pipe = NULL;
- Curl_safefree(conn->master_buffer);
- Curl_safefree(conn->localdev);
- Curl_safefree(conn);
+ free(conn->master_buffer);
+ free(conn->localdev);
+ free(conn);
return NULL;
}
@@ -4018,7 +4109,7 @@ static CURLcode parseurlandfillconn(struct SessionHandle *data,
path[0] = '/';
rebuild_url = TRUE;
}
- else {
+ else if(!data->set.path_as_is) {
/* sanitise paths and remove ../ and ./ sequences according to RFC3986 */
char *newp = Curl_dedotdotify(path);
if(!newp)
@@ -4413,8 +4504,7 @@ static char *detect_proxy(struct connectdata *conn)
}
} /* if(!check_noproxy(conn->host.name, no_proxy)) - it wasn't specified
non-proxy */
- if(no_proxy)
- free(no_proxy);
+ free(no_proxy);
#else /* !CURL_DISABLE_HTTP */
@@ -4428,7 +4518,6 @@ static char *detect_proxy(struct connectdata *conn)
* If this is supposed to use a proxy, we need to figure out the proxy
* host name, so that we can re-use an existing connection
* that may exist registered to the same proxy host.
- * proxy will be freed before this function returns.
*/
static CURLcode parse_proxy(struct SessionHandle *data,
struct connectdata *conn, char *proxy)
@@ -4502,8 +4591,8 @@ static CURLcode parse_proxy(struct SessionHandle *data,
}
}
- Curl_safefree(proxyuser);
- Curl_safefree(proxypasswd);
+ free(proxyuser);
+ free(proxypasswd);
if(result)
return result;
@@ -4715,9 +4804,9 @@ static CURLcode parse_url_login(struct SessionHandle *data,
out:
- Curl_safefree(userp);
- Curl_safefree(passwdp);
- Curl_safefree(optionsp);
+ free(userp);
+ free(passwdp);
+ free(optionsp);
return result;
}
@@ -4805,7 +4894,7 @@ static CURLcode parse_login_details(const char *login, const size_t len,
if(!result && passwdp && plen) {
pbuf = malloc(plen + 1);
if(!pbuf) {
- Curl_safefree(ubuf);
+ free(ubuf);
result = CURLE_OUT_OF_MEMORY;
}
}
@@ -4814,8 +4903,8 @@ static CURLcode parse_login_details(const char *login, const size_t len,
if(!result && optionsp && olen) {
obuf = malloc(olen + 1);
if(!obuf) {
- Curl_safefree(pbuf);
- Curl_safefree(ubuf);
+ free(pbuf);
+ free(ubuf);
result = CURLE_OUT_OF_MEMORY;
}
}
@@ -5177,8 +5266,7 @@ static CURLcode resolve_server(struct SessionHandle *data,
static void reuse_conn(struct connectdata *old_conn,
struct connectdata *conn)
{
- if(old_conn->proxy.rawalloc)
- free(old_conn->proxy.rawalloc);
+ free(old_conn->proxy.rawalloc);
/* free the SSL config struct from this connection struct as this was
allocated in vain and is targeted for destruction */
@@ -5266,8 +5354,9 @@ static CURLcode create_conn(struct SessionHandle *data,
bool reuse;
char *proxy = NULL;
bool prot_missing = FALSE;
- bool no_connections_available = FALSE;
+ bool connections_available = TRUE;
bool force_reuse = FALSE;
+ bool waitpipe = FALSE;
size_t max_host_connections = Curl_multi_max_host_connections(data->multi);
size_t max_total_connections = Curl_multi_max_total_connections(data->multi);
@@ -5427,10 +5516,8 @@ static CURLcode create_conn(struct SessionHandle *data,
if(data->set.str[STRING_NOPROXY] &&
check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY])) {
- if(proxy) {
- free(proxy); /* proxy is in exception list */
- proxy = NULL;
- }
+ free(proxy); /* proxy is in exception list */
+ proxy = NULL;
}
else if(!proxy)
proxy = detect_proxy(conn);
@@ -5456,7 +5543,8 @@ static CURLcode create_conn(struct SessionHandle *data,
if(proxy) {
result = parse_proxy(data, conn, proxy);
- Curl_safefree(proxy); /* parse_proxy copies the proxy string */
+ free(proxy); /* parse_proxy copies the proxy string */
+ proxy = NULL;
if(result)
goto out;
@@ -5477,8 +5565,10 @@ static CURLcode create_conn(struct SessionHandle *data,
conn->bits.httpproxy = TRUE;
#endif
}
- else
+ else {
conn->bits.httpproxy = FALSE; /* not a HTTP proxy */
+ conn->bits.tunnel_proxy = FALSE; /* no tunneling if not HTTP */
+ }
conn->bits.proxy = TRUE;
}
else {
@@ -5543,7 +5633,7 @@ static CURLcode create_conn(struct SessionHandle *data,
conn->data = data;
conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */
- ConnectionStore(data, conn);
+ Curl_conncache_add_conn(data->state.conn_cache, conn);
/*
* Setup whatever necessary for a resumed transfer
@@ -5561,7 +5651,7 @@ static CURLcode create_conn(struct SessionHandle *data,
}
/* since we skip do_init() */
- do_init(conn);
+ Curl_init_do(data, conn);
goto out;
}
@@ -5608,7 +5698,7 @@ static CURLcode create_conn(struct SessionHandle *data,
if(data->set.reuse_fresh && !data->state.this_is_a_follow)
reuse = FALSE;
else
- reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse);
+ reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe);
/* If we found a reusable connection, we may still want to
open a new connection if we are pipelining. */
@@ -5645,18 +5735,24 @@ static CURLcode create_conn(struct SessionHandle *data,
/* set a pointer to the hostname we display */
fix_hostname(data, conn, &conn->host);
- infof(data, "Re-using existing connection! (#%ld) with host %s\n",
+ infof(data, "Re-using existing connection! (#%ld) with %s %s\n",
conn->connection_id,
+ conn->bits.proxy?"proxy":"host",
conn->proxy.name?conn->proxy.dispname:conn->host.dispname);
}
else {
/* We have decided that we want a new connection. However, we may not
be able to do that if we have reached the limit of how many
connections we are allowed to open. */
- struct connectbundle *bundle;
+ struct connectbundle *bundle = NULL;
+
+ if(waitpipe)
+ /* There is a connection that *might* become usable for pipelining
+ "soon", and we wait for that */
+ connections_available = FALSE;
+ else
+ bundle = Curl_conncache_find_bundle(conn, data->state.conn_cache);
- bundle = Curl_conncache_find_bundle(data->state.conn_cache,
- conn->host.name);
if(max_host_connections > 0 && bundle &&
(bundle->num_connections >= max_host_connections)) {
struct connectdata *conn_candidate;
@@ -5669,11 +5765,15 @@ static CURLcode create_conn(struct SessionHandle *data,
conn_candidate->data = data;
(void)Curl_disconnect(conn_candidate, /* dead_connection */ FALSE);
}
- else
- no_connections_available = TRUE;
+ else {
+ infof(data, "No more connections allowed to host: %d\n",
+ max_host_connections);
+ connections_available = FALSE;
+ }
}
- if(max_total_connections > 0 &&
+ if(connections_available &&
+ (max_total_connections > 0) &&
(data->state.conn_cache->num_connections >= max_total_connections)) {
struct connectdata *conn_candidate;
@@ -5685,12 +5785,13 @@ static CURLcode create_conn(struct SessionHandle *data,
conn_candidate->data = data;
(void)Curl_disconnect(conn_candidate, /* dead_connection */ FALSE);
}
- else
- no_connections_available = TRUE;
+ else {
+ infof(data, "No connections available in cache\n");
+ connections_available = FALSE;
+ }
}
-
- if(no_connections_available) {
+ if(!connections_available) {
infof(data, "No connections available.\n");
conn_free(conn);
@@ -5704,7 +5805,7 @@ static CURLcode create_conn(struct SessionHandle *data,
* This is a brand new connection, so let's store it in the connection
* cache of ours!
*/
- ConnectionStore(data, conn);
+ Curl_conncache_add_conn(data->state.conn_cache, conn);
}
#if defined(USE_NTLM)
@@ -5729,7 +5830,7 @@ static CURLcode create_conn(struct SessionHandle *data,
conn->inuse = TRUE;
/* Setup and init stuff before DO starts, in preparing for the transfer. */
- do_init(conn);
+ Curl_init_do(data, conn);
/*
* Setup whatever necessary for a resumed transfer
@@ -5744,8 +5845,6 @@ static CURLcode create_conn(struct SessionHandle *data,
* Inherit the proper values from the urldata struct AFTER we have arranged
* the persistent connection stuff
*/
- conn->fread_func = data->set.fread_func;
- conn->fread_in = data->set.in;
conn->seek_func = data->set.seek_func;
conn->seek_client = data->set.seek_client;
@@ -5756,10 +5855,10 @@ static CURLcode create_conn(struct SessionHandle *data,
out:
- Curl_safefree(options);
- Curl_safefree(passwd);
- Curl_safefree(user);
- Curl_safefree(proxy);
+ free(options);
+ free(passwd);
+ free(user);
+ free(proxy);
return result;
}
@@ -5903,37 +6002,19 @@ CURLcode Curl_done(struct connectdata **connp,
conn = *connp;
data = conn->data;
- if(conn->bits.done)
+ DEBUGF(infof(data, "Curl_done\n"));
+
+ if(data->state.done)
/* Stop if Curl_done() has already been called */
return CURLE_OK;
Curl_getoff_all_pipelines(data, conn);
- if((conn->send_pipe->size + conn->recv_pipe->size != 0 &&
- !data->set.reuse_forbid &&
- !conn->bits.close))
- /* Stop if pipeline is not empty and we do not have to close
- connection. */
- return CURLE_OK;
-
- conn->bits.done = TRUE; /* called just now! */
-
/* Cleanup possible redirect junk */
- if(data->req.newurl) {
- free(data->req.newurl);
- data->req.newurl = NULL;
- }
- if(data->req.location) {
- free(data->req.location);
- data->req.location = NULL;
- }
-
- Curl_resolver_cancel(conn);
-
- if(conn->dns_entry) {
- Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
- conn->dns_entry = NULL;
- }
+ free(data->req.newurl);
+ data->req.newurl = NULL;
+ free(data->req.location);
+ data->req.location = NULL;
switch(status) {
case CURLE_ABORTED_BY_CALLBACK:
@@ -5957,12 +6038,27 @@ CURLcode Curl_done(struct connectdata **connp,
if(!result && Curl_pgrsDone(conn))
result = CURLE_ABORTED_BY_CALLBACK;
+ if((conn->send_pipe->size + conn->recv_pipe->size != 0 &&
+ !data->set.reuse_forbid &&
+ !conn->bits.close)) {
+ /* Stop if pipeline is not empty and we do not have to close
+ connection. */
+ DEBUGF(infof(data, "Connection still in use, no more Curl_done now!\n"));
+ return CURLE_OK;
+ }
+
+ data->state.done = TRUE; /* called just now! */
+ Curl_resolver_cancel(conn);
+
+ if(conn->dns_entry) {
+ Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
+ conn->dns_entry = NULL;
+ }
+
/* if the transfer was completed in a paused state there can be buffered
data left to write and then kill */
- if(data->state.tempwrite) {
- free(data->state.tempwrite);
- data->state.tempwrite = NULL;
- }
+ free(data->state.tempwrite);
+ data->state.tempwrite = NULL;
/* if data->set.reuse_forbid is TRUE, it means the libcurl client has
forced us to close this connection. This is ignored for requests taking
@@ -6016,20 +6112,24 @@ CURLcode Curl_done(struct connectdata **connp,
}
/*
- * do_init() inits the readwrite session. This is inited each time (in the DO
- * function before the protocol-specific DO functions are invoked) for a
- * transfer, sometimes multiple times on the same SessionHandle. Make sure
+ * Curl_init_do() inits the readwrite session. This is inited each time (in
+ * the DO function before the protocol-specific DO functions are invoked) for
+ * a transfer, sometimes multiple times on the same SessionHandle. Make sure
* nothing in here depends on stuff that are setup dynamically for the
* transfer.
+ *
+ * Allow this function to get called with 'conn' set to NULL.
*/
-static CURLcode do_init(struct connectdata *conn)
+CURLcode Curl_init_do(struct SessionHandle *data, struct connectdata *conn)
{
- struct SessionHandle *data = conn->data;
struct SingleRequest *k = &data->req;
- conn->bits.done = FALSE; /* Curl_done() is not called yet */
- conn->bits.do_more = FALSE; /* by default there's no curl_do_more() to use */
+ if(conn)
+ conn->bits.do_more = FALSE; /* by default there's no curl_do_more() to
+ * use */
+
+ data->state.done = FALSE; /* Curl_done() is not called yet */
data->state.expect100header = FALSE;
if(data->set.opt_no_body)
diff --git a/lib/url.h b/lib/url.h
index cd46a92c3..f9667cbc3 100644
--- a/lib/url.h
+++ b/lib/url.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -27,6 +27,7 @@
* Prototypes for library-wide functions provided by url.c
*/
+CURLcode Curl_init_do(struct SessionHandle *data, struct connectdata *conn);
CURLcode Curl_open(struct SessionHandle **curl);
CURLcode Curl_init_userdefined(struct UserDefined *set);
CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
@@ -69,6 +70,9 @@ void Curl_close_connections(struct SessionHandle *data);
#define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */
#define CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE "rcmd" /* default socks5 gssapi
service */
+#define CURL_DEFAULT_PROXY_SERVICE_NAME "HTTP" /* default negotiate proxy
+ service */
+#define CURL_DEFAULT_SERVICE_NAME "HTTP" /* default negotiate service */
CURLcode Curl_connected_proxy(struct connectdata *conn, int sockindex);
diff --git a/lib/urldata.h b/lib/urldata.h
index 5f774704a..b1c2056c5 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -82,38 +82,12 @@
#include "cookie.h"
#include "formdata.h"
-#ifdef USE_SSLEAY
#ifdef USE_OPENSSL
-#include <openssl/rsa.h>
-#include <openssl/crypto.h>
-#include <openssl/x509.h>
-#include <openssl/pem.h>
#include <openssl/ssl.h>
-#include <openssl/err.h>
#ifdef HAVE_OPENSSL_ENGINE_H
#include <openssl/engine.h>
#endif
-#ifdef HAVE_OPENSSL_PKCS12_H
-#include <openssl/pkcs12.h>
-#endif
-#else /* SSLeay-style includes */
-#include <rsa.h>
-#include <crypto.h>
-#include <x509.h>
-#include <pem.h>
-#include <ssl.h>
-#include <err.h>
-#ifdef HAVE_OPENSSL_ENGINE_H
-#include <engine.h>
-#endif
-#ifdef HAVE_OPENSSL_PKCS12_H
-#include <pkcs12.h>
-#endif
#endif /* USE_OPENSSL */
-#ifdef USE_GNUTLS
-#error Configuration error; cannot use GnuTLS *and* OpenSSL.
-#endif
-#endif /* USE_SSLEAY */
#ifdef USE_GNUTLS
#include <gnutls/gnutls.h>
@@ -146,6 +120,7 @@
#endif
#ifdef USE_AXTLS
+#include <axTLS/config.h>
#include <axTLS/ssl.h>
#undef malloc
#undef calloc
@@ -223,6 +198,8 @@
#define HEADERSIZE 256
#define CURLEASY_MAGIC_NUMBER 0xc0dedbadU
+#define GOOD_EASY_HANDLE(x) \
+ ((x) && (((struct SessionHandle *)(x))->magic == CURLEASY_MAGIC_NUMBER))
/* Some convenience macros to get the larger/smaller value out of two given.
We prefix with CURL to prevent name collisions. */
@@ -288,16 +265,13 @@ struct ssl_connect_data {
current state of the connection. */
bool use;
ssl_connection_state state;
-#ifdef USE_NGHTTP2
- bool asked_for_h2;
-#endif
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
/* these ones requires specific SSL-types */
SSL_CTX* ctx;
SSL* handle;
X509* server_cert;
ssl_connect_state connecting_state;
-#endif /* USE_SSLEAY */
+#endif /* USE_OPENSSL */
#ifdef USE_GNUTLS
gnutls_session_t session;
gnutls_certificate_credentials_t cred;
@@ -350,6 +324,9 @@ struct ssl_connect_data {
size_t encdata_offset, decdata_offset;
unsigned char *encdata_buffer, *decdata_buffer;
unsigned long req_flags, ret_flags;
+ CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
+ bool recv_sspi_close_notify; /* true if connection closed by close_notify */
+ bool recv_connection_closed; /* true if connection closed, regardless how */
#endif /* USE_SCHANNEL */
#ifdef USE_DARWINSSL
SSLContextRef ssl_ctx;
@@ -366,6 +343,7 @@ struct ssl_config_data {
bool verifypeer; /* set TRUE if this is desired */
bool verifyhost; /* set TRUE if CN/SAN must match hostname */
+ bool verifystatus; /* set TRUE if certificate status must be checked */
char *CApath; /* certificate dir (doesn't work on windows) */
char *CAfile; /* certificate to verify peer against */
const char *CRLfile; /* CRL to check certificate revocation */
@@ -378,6 +356,7 @@ struct ssl_config_data {
void *fsslctxp; /* parameter for call back */
bool sessionid; /* cache session IDs or not */
bool certinfo; /* gather lots of certificate info */
+ bool falsestart;
#ifdef USE_TLS_SRP
char *username; /* TLS username (for, e.g., SRP) */
@@ -542,11 +521,6 @@ struct ConnectBits {
requests */
bool netrc; /* name+password provided by netrc */
bool userpwd_in_url; /* name+password found in url */
-
- bool done; /* set to FALSE when Curl_do() is called and set to TRUE
- when Curl_done() is called, to prevent Curl_done() to
- get invoked twice when the multi interface is
- used. */
bool stream_was_rewound; /* Indicates that the stream was rewound after a
request read past the end of its response byte
boundary */
@@ -556,6 +530,7 @@ struct ConnectBits {
bool bound; /* set true if bind() has already been done on this socket/
connection */
bool type_set; /* type= was used in the URL */
+ bool multiplex; /* connection is multiplexed */
};
struct hostname {
@@ -628,12 +603,6 @@ enum upgrade101 {
UPGR101_WORKING /* talking upgraded protocol */
};
-enum negotiatenpn {
- NPN_INIT, /* default state */
- NPN_HTTP1_1, /* HTTP/1.1 negotiated */
- NPN_HTTP2 /* HTTP2 (draft-xx) negotiated */
-};
-
/*
* Request specific data in the easy handle (SessionHandle). Previously,
* these members were on the connectdata struct but since a conn struct may
@@ -691,7 +660,6 @@ struct SingleRequest {
#define IDENTITY 0 /* No encoding */
#define DEFLATE 1 /* zlib deflate [RFC 1950 & 1951] */
#define GZIP 2 /* gzip algorithm [RFC 1952] */
-#define COMPRESS 3 /* Not handled, added for completeness */
#ifdef HAVE_LIBZ
zlibInitState zlib_init; /* possible zlib init state;
@@ -1024,10 +992,6 @@ struct connectdata {
/*************** Request - specific items ************/
- /* previously this was in the urldata struct */
- curl_read_callback fread_func; /* function that reads the input */
- void *fread_in; /* pointer to pass to the fread() above */
-
#if defined(USE_NTLM)
struct ntlmdata ntlm; /* NTLM differs from other authentication schemes
because it authenticates connections, not
@@ -1095,7 +1059,7 @@ struct connectdata {
} tunnel_state[2]; /* two separate ones to allow FTP */
struct connectbundle *bundle; /* The bundle we are member of */
- enum negotiatenpn negnpn;
+ int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */
};
/* The end of connectdata. */
@@ -1293,9 +1257,9 @@ struct UrlState {
void *resolver; /* resolver state, if it is used in the URL state -
ares_channel f.e. */
-#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
+#if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H)
ENGINE *engine;
-#endif /* USE_SSLEAY */
+#endif /* USE_OPENSSL */
struct timeval expiretime; /* set this with Curl_expire() only */
struct Curl_tree timenode; /* for the splay stuff */
struct curl_llist *timeoutlist; /* list of pending timeouts */
@@ -1341,6 +1305,13 @@ struct UrlState {
curl_off_t infilesize; /* size of file to upload, -1 means unknown.
Copied from set.filesize at start of operation */
+
+ int drain; /* Increased when this stream has data to read, even if its
+ socket not necessarily is readable. Decreased when
+ checked. */
+ bool done; /* set to FALSE when Curl_do() is called and set to TRUE when
+ Curl_done() is called, to prevent Curl_done() to get invoked
+ twice when the multi interface is used. */
};
@@ -1421,6 +1392,8 @@ enum dupstring {
#endif
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
STRING_SOCKS5_GSSAPI_SERVICE, /* GSSAPI service name */
+ STRING_PROXY_SERVICE_NAME, /* Proxy service name */
+ STRING_SERVICE_NAME, /* Service name */
#endif
STRING_MAIL_FROM,
STRING_MAIL_AUTH,
@@ -1453,8 +1426,8 @@ struct UserDefined {
long proxyport; /* If non-zero, use this port number by default. If the
proxy string features a ":[port]" that one will override
this. */
- void *out; /* the fetched file goes here */
- void *in; /* the uploaded file is read from here */
+ void *out; /* CURLOPT_WRITEDATA */
+ void *in; /* CURLOPT_READDATA */
void *writeheader; /* write the header to this if non-NULL */
void *rtp_out; /* write RTP to this if non-NULL */
long use_port; /* which port to use (when not using default) */
@@ -1608,6 +1581,7 @@ struct UserDefined {
bool connect_only; /* make connection, let application use the socket */
bool ssl_enable_beast; /* especially allow this flaw for interoperability's
sake*/
+ bool ssl_no_revoke; /* disable SSL certificate revocation checks */
long ssh_auth_types; /* allowed SSH auth types */
bool http_te_skip; /* pass the raw body data to the user, even when
transfer-encoded (chunked, compressed) */
@@ -1649,7 +1623,9 @@ struct UserDefined {
bool ssl_enable_npn; /* TLS NPN extension? */
bool ssl_enable_alpn; /* TLS ALPN extension? */
-
+ bool path_as_is; /* allow dotdots? */
+ bool pipewait; /* wait for pipe/multiplex status before starting a
+ new connection */
long expect_100_timeout; /* in milliseconds */
};
diff --git a/lib/version.c b/lib/version.c
index 9ac922665..1727c5a7d 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -26,9 +26,7 @@
#include "urldata.h"
#include "vtls/vtls.h"
#include "http2.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#ifdef USE_ARES
# if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
diff --git a/lib/vtls/axtls.c b/lib/vtls/axtls.c
index 1b577b152..1038432b9 100644
--- a/lib/vtls/axtls.c
+++ b/lib/vtls/axtls.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010, DirecTV, Contact: Eric Hu, <ehu@directv.com>.
- * Copyright (C) 2010 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2015, 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
@@ -29,6 +29,7 @@
#include "curl_setup.h"
#ifdef USE_AXTLS
+#include <axTLS/config.h>
#include <axTLS/ssl.h>
#include "axtls.h"
@@ -38,13 +39,13 @@
#include "parsedate.h"
#include "connect.h" /* for the connect timeout */
#include "select.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-#include "curl_memory.h"
+#include "curl_printf.h"
+#include "hostcheck.h"
#include <unistd.h>
-/* The last #include file should be: */
+
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
-#include "hostcheck.h"
/* Global axTLS init, called from Curl_ssl_init() */
@@ -463,9 +464,11 @@ Curl_axtls_connect(struct connectdata *conn,
int sockindex)
{
+ struct SessionHandle *data = conn->data;
CURLcode conn_step = connect_prep(conn, sockindex);
int ssl_fcn_return;
SSL *ssl = conn->ssl[sockindex].ssl;
+ long timeout_ms;
if(conn_step != CURLE_OK) {
Curl_axtls_close(conn, sockindex);
@@ -474,14 +477,23 @@ Curl_axtls_connect(struct connectdata *conn,
/* Check to make sure handshake was ok. */
while(ssl_handshake_status(ssl) != SSL_OK) {
+ /* check allowed time left */
+ timeout_ms = Curl_timeleft(data, NULL, TRUE);
+
+ if(timeout_ms < 0) {
+ /* no need to continue if time already is up */
+ failf(data, "SSL connection timeout");
+ return CURLE_OPERATION_TIMEDOUT;
+ }
+
ssl_fcn_return = ssl_read(ssl, NULL);
if(ssl_fcn_return < 0) {
Curl_axtls_close(conn, sockindex);
ssl_display_error(ssl_fcn_return); /* goes to stdout. */
return map_error_to_curl(ssl_fcn_return);
}
+ /* TODO: avoid polling */
usleep(10000);
- /* TODO: check for timeout as this could hang indefinitely otherwise */
}
infof (conn->data, "handshake completed successfully\n");
@@ -515,12 +527,6 @@ static ssize_t axtls_send(struct connectdata *conn,
return rc;
}
-void Curl_axtls_close_all(struct SessionHandle *data)
-{
- (void)data;
- infof(data, " Curl_axtls_close_all\n");
-}
-
void Curl_axtls_close(struct connectdata *conn, int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -677,7 +683,7 @@ int Curl_axtls_random(struct SessionHandle *data,
* race condition is that some global resources will leak. */
RNG_initialize();
}
- get_random(length, entropy);
+ get_random((int)length, entropy);
return 0;
}
diff --git a/lib/vtls/axtls.h b/lib/vtls/axtls.h
index 62b4ab0e6..223ecb8c9 100644
--- a/lib/vtls/axtls.h
+++ b/lib/vtls/axtls.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010, DirecTV, Contact: Eric Hu <ehu@directv.com>
- * Copyright (C) 2010 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2015, 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
@@ -35,10 +35,6 @@ CURLcode Curl_axtls_connect_nonblocking(
int sockindex,
bool *done);
-/* tell axTLS to close down all open information regarding connections (and
- thus session ID caching etc) */
-void Curl_axtls_close_all(struct SessionHandle *data);
-
/* close a SSL connection */
void Curl_axtls_close(struct connectdata *conn, int sockindex);
@@ -50,13 +46,16 @@ int Curl_axtls_random(struct SessionHandle *data,
unsigned char *entropy,
size_t length);
+/* Set the API backend definition to axTLS */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
+
/* API setup for axTLS */
#define curlssl_init Curl_axtls_init
#define curlssl_cleanup Curl_axtls_cleanup
#define curlssl_connect Curl_axtls_connect
#define curlssl_connect_nonblocking Curl_axtls_connect_nonblocking
#define curlssl_session_free(x) Curl_axtls_session_free(x)
-#define curlssl_close_all Curl_axtls_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_axtls_close
#define curlssl_shutdown(x,y) Curl_axtls_shutdown(x,y)
#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -66,7 +65,6 @@ int Curl_axtls_random(struct SessionHandle *data,
#define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
#define curlssl_random(x,y,z) Curl_axtls_random(x,y,z)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
#endif /* USE_AXTLS */
#endif /* HEADER_CURL_AXTLS_H */
diff --git a/lib/vtls/cyassl.c b/lib/vtls/cyassl.c
index 3333fc3a0..3ded7f11d 100644
--- a/lib/vtls/cyassl.c
+++ b/lib/vtls/cyassl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -30,6 +30,20 @@
#ifdef USE_CYASSL
+#define WOLFSSL_OPTIONS_IGNORE_SYS
+/* CyaSSL's version.h, which should contain only the version, should come
+before all other CyaSSL includes and be immediately followed by build config
+aka options.h. http://curl.haxx.se/mail/lib-2015-04/0069.html */
+#include <cyassl/version.h>
+#if defined(HAVE_CYASSL_OPTIONS_H) && (LIBCYASSL_VERSION_HEX > 0x03004008)
+#if defined(CYASSL_API) || defined(WOLFSSL_API)
+/* Safety measure. If either is defined some API include was already included
+and that's a problem since options.h hasn't been included yet. */
+#error "CyaSSL API was included before the CyaSSL build options."
+#endif
+#include <cyassl/options.h>
+#endif
+
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
@@ -43,10 +57,8 @@
#include "connect.h" /* for the connect timeout */
#include "select.h"
#include "rawstr.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-#include "curl_memory.h"
+#include "x509asn1.h"
+#include "curl_printf.h"
#include <cyassl/ssl.h>
#ifdef HAVE_CYASSL_ERROR_SSL_H
@@ -55,10 +67,16 @@
#include <cyassl/error.h>
#endif
#include <cyassl/ctaocrypt/random.h>
+#include <cyassl/ctaocrypt/sha256.h>
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
+#if LIBCYASSL_VERSION_HEX < 0x02007002 /* < 2.7.2 */
+#define CYASSL_MAX_ERROR_SZ 80
+#endif
+
static Curl_recv cyassl_recv;
static Curl_send cyassl_send;
@@ -82,42 +100,58 @@ static CURLcode
cyassl_connect_step1(struct connectdata *conn,
int sockindex)
{
+ char error_buffer[CYASSL_MAX_ERROR_SZ];
struct SessionHandle *data = conn->data;
struct ssl_connect_data* conssl = &conn->ssl[sockindex];
SSL_METHOD* req_method = NULL;
void* ssl_sessionid = NULL;
curl_socket_t sockfd = conn->sock[sockindex];
+#ifdef HAVE_SNI
+ bool sni = FALSE;
+#define use_sni(x) sni = (x)
+#else
+#define use_sni(x) Curl_nop_stmt
+#endif
if(conssl->state == ssl_connection_complete)
return CURLE_OK;
- /* CyaSSL doesn't support SSLv2 */
- if(data->set.ssl.version == CURL_SSLVERSION_SSLv2) {
- failf(data, "CyaSSL does not support SSLv2");
- return CURLE_SSL_CONNECT_ERROR;
- }
-
/* check to see if we've been told to use an explicit SSL/TLS version */
switch(data->set.ssl.version) {
- default:
case CURL_SSLVERSION_DEFAULT:
case CURL_SSLVERSION_TLSv1:
- infof(data, "CyaSSL cannot be configured to use TLS 1.0-1.2, "
+#if LIBCYASSL_VERSION_HEX >= 0x03003000 /* >= 3.3.0 */
+ /* minimum protocol version is set later after the CTX object is created */
+ req_method = SSLv23_client_method();
+#else
+ infof(data, "CyaSSL <3.3.0 cannot be configured to use TLS 1.0-1.2, "
"TLS 1.0 is used exclusively\n");
req_method = TLSv1_client_method();
+#endif
+ use_sni(TRUE);
break;
case CURL_SSLVERSION_TLSv1_0:
req_method = TLSv1_client_method();
+ use_sni(TRUE);
break;
case CURL_SSLVERSION_TLSv1_1:
req_method = TLSv1_1_client_method();
+ use_sni(TRUE);
break;
case CURL_SSLVERSION_TLSv1_2:
req_method = TLSv1_2_client_method();
+ use_sni(TRUE);
break;
case CURL_SSLVERSION_SSLv3:
req_method = SSLv3_client_method();
+ use_sni(FALSE);
break;
+ case CURL_SSLVERSION_SSLv2:
+ failf(data, "CyaSSL does not support SSLv2");
+ return CURLE_SSL_CONNECT_ERROR;
+ default:
+ failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
+ return CURLE_SSL_CONNECT_ERROR;
}
if(!req_method) {
@@ -134,15 +168,36 @@ cyassl_connect_step1(struct connectdata *conn,
return CURLE_OUT_OF_MEMORY;
}
+ switch(data->set.ssl.version) {
+ case CURL_SSLVERSION_DEFAULT:
+ case CURL_SSLVERSION_TLSv1:
+#if LIBCYASSL_VERSION_HEX > 0x03004006 /* > 3.4.6 */
+ /* Versions 3.3.0 to 3.4.6 we know the minimum protocol version is whatever
+ minimum version of TLS was built in and at least TLS 1.0. For later library
+ versions that could change (eg TLS 1.0 built in but defaults to TLS 1.1) so
+ we have this short circuit evaluation to find the minimum supported TLS
+ version. We use wolfSSL_CTX_SetMinVersion and not CyaSSL_SetMinVersion
+ because only the former will work before the user's CTX callback is called.
+ */
+ if((wolfSSL_CTX_SetMinVersion(conssl->ctx, WOLFSSL_TLSV1) != 1) &&
+ (wolfSSL_CTX_SetMinVersion(conssl->ctx, WOLFSSL_TLSV1_1) != 1) &&
+ (wolfSSL_CTX_SetMinVersion(conssl->ctx, WOLFSSL_TLSV1_2) != 1)) {
+ failf(data, "SSL: couldn't set the minimum protocol version");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+#endif
+ break;
+ }
+
#ifndef NO_FILESYSTEM
/* load trusted cacert */
if(data->set.str[STRING_SSL_CAFILE]) {
- if(!SSL_CTX_load_verify_locations(conssl->ctx,
- data->set.str[STRING_SSL_CAFILE],
- data->set.str[STRING_SSL_CAPATH])) {
+ if(1 != SSL_CTX_load_verify_locations(conssl->ctx,
+ data->set.str[STRING_SSL_CAFILE],
+ data->set.str[STRING_SSL_CAPATH])) {
if(data->set.ssl.verifypeer) {
/* Fail if we insist on successfully verifying the server. */
- failf(data,"error setting certificate verify locations:\n"
+ failf(data, "error setting certificate verify locations:\n"
" CAfile: %s\n CApath: %s",
data->set.str[STRING_SSL_CAFILE]?
data->set.str[STRING_SSL_CAFILE]: "none",
@@ -188,11 +243,7 @@ cyassl_connect_step1(struct connectdata *conn,
return CURLE_SSL_CONNECT_ERROR;
}
}
-#else
- if(CyaSSL_no_filesystem_verify(conssl->ctx)!= SSL_SUCCESS) {
- return CURLE_SSL_CONNECT_ERROR;
- }
-#endif /* NO_FILESYSTEM */
+#endif /* !NO_FILESYSTEM */
/* SSL always tries to verify the peer, this only says whether it should
* fail to connect if the verification fails, or if it should continue
@@ -202,6 +253,46 @@ cyassl_connect_step1(struct connectdata *conn,
data->set.ssl.verifypeer?SSL_VERIFY_PEER:SSL_VERIFY_NONE,
NULL);
+#ifdef HAVE_SNI
+ if(sni) {
+ struct in_addr addr4;
+#ifdef ENABLE_IPV6
+ struct in6_addr addr6;
+#endif
+ size_t hostname_len = strlen(conn->host.name);
+ if((hostname_len < USHRT_MAX) &&
+ (0 == Curl_inet_pton(AF_INET, conn->host.name, &addr4)) &&
+#ifdef ENABLE_IPV6
+ (0 == Curl_inet_pton(AF_INET6, conn->host.name, &addr6)) &&
+#endif
+ (CyaSSL_CTX_UseSNI(conssl->ctx, CYASSL_SNI_HOST_NAME, conn->host.name,
+ (unsigned short)hostname_len) != 1)) {
+ infof(data, "WARNING: failed to configure server name indication (SNI) "
+ "TLS extension\n");
+ }
+ }
+#endif
+
+ /* give application a chance to interfere with SSL set up. */
+ if(data->set.ssl.fsslctx) {
+ CURLcode result = CURLE_OK;
+ result = (*data->set.ssl.fsslctx)(data, conssl->ctx,
+ data->set.ssl.fsslctxp);
+ if(result) {
+ failf(data, "error signaled by ssl ctx callback");
+ return result;
+ }
+ }
+#ifdef NO_FILESYSTEM
+ else if(data->set.ssl.verifypeer) {
+ failf(data, "SSL: Certificates couldn't be loaded because CyaSSL was built"
+ " with \"no filesystem\". Either disable peer verification"
+ " (insecure) or if you are building an application with libcurl you"
+ " can load certificates via CURLOPT_SSL_CTX_FUNCTION.");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+#endif
+
/* Let's make an SSL structure */
if(conssl->handle)
SSL_free(conssl->handle);
@@ -216,7 +307,7 @@ cyassl_connect_step1(struct connectdata *conn,
/* we got a session id, use it! */
if(!SSL_set_session(conssl->handle, ssl_sessionid)) {
failf(data, "SSL: SSL_set_session failed: %s",
- ERR_error_string(SSL_get_error(conssl->handle, 0),NULL));
+ ERR_error_string(SSL_get_error(conssl->handle, 0), error_buffer));
return CURLE_SSL_CONNECT_ERROR;
}
/* Informational message */
@@ -242,9 +333,6 @@ cyassl_connect_step2(struct connectdata *conn,
struct SessionHandle *data = conn->data;
struct ssl_connect_data* conssl = &conn->ssl[sockindex];
- infof(data, "CyaSSL: Connecting to %s:%d\n",
- conn->host.name, conn->remote_port);
-
conn->recv[sockindex] = cyassl_recv;
conn->send[sockindex] = cyassl_send;
@@ -257,7 +345,7 @@ cyassl_connect_step2(struct connectdata *conn,
ret = SSL_connect(conssl->handle);
if(ret != 1) {
- char error_buffer[80];
+ char error_buffer[CYASSL_MAX_ERROR_SZ];
int detail = SSL_get_error(conssl->handle, ret);
if(SSL_ERROR_WANT_READ == detail) {
@@ -317,6 +405,44 @@ cyassl_connect_step2(struct connectdata *conn,
}
}
+ if(data->set.str[STRING_SSL_PINNEDPUBLICKEY]) {
+ X509 *x509;
+ const char *x509_der;
+ int x509_der_len;
+ curl_X509certificate x509_parsed;
+ curl_asn1Element *pubkey;
+ CURLcode result;
+
+ x509 = SSL_get_peer_certificate(conssl->handle);
+ if(!x509) {
+ failf(data, "SSL: failed retrieving server certificate");
+ return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+ }
+
+ x509_der = (const char *)CyaSSL_X509_get_der(x509, &x509_der_len);
+ if(!x509_der) {
+ failf(data, "SSL: failed retrieving ASN.1 server certificate");
+ return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+ }
+
+ memset(&x509_parsed, 0, sizeof x509_parsed);
+ Curl_parseX509(&x509_parsed, x509_der, x509_der + x509_der_len);
+
+ pubkey = &x509_parsed.subjectPublicKeyInfo;
+ if(!pubkey->header || pubkey->end <= pubkey->header) {
+ failf(data, "SSL: failed retrieving public key from server certificate");
+ return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+ }
+
+ result = Curl_pin_peer_pubkey(data->set.str[STRING_SSL_PINNEDPUBLICKEY],
+ (const unsigned char *)pubkey->header,
+ (size_t)(pubkey->end - pubkey->header));
+ if(result) {
+ failf(data, "SSL: public key does not match pinned public key!");
+ return result;
+ }
+ }
+
conssl->connecting_state = ssl_connect_3;
infof(data, "SSL connected\n");
@@ -369,7 +495,7 @@ static ssize_t cyassl_send(struct connectdata *conn,
size_t len,
CURLcode *curlcode)
{
- char error_buffer[80];
+ char error_buffer[CYASSL_MAX_ERROR_SZ];
int memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
int rc = SSL_write(conn->ssl[sockindex].handle, mem, memlen);
@@ -393,11 +519,6 @@ static ssize_t cyassl_send(struct connectdata *conn,
return rc;
}
-void Curl_cyassl_close_all(struct SessionHandle *data)
-{
- (void)data;
-}
-
void Curl_cyassl_close(struct connectdata *conn, int sockindex)
{
struct ssl_connect_data *conssl = &conn->ssl[sockindex];
@@ -419,7 +540,7 @@ static ssize_t cyassl_recv(struct connectdata *conn,
size_t buffersize,
CURLcode *curlcode)
{
- char error_buffer[80];
+ char error_buffer[CYASSL_MAX_ERROR_SZ];
int buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
int nread = SSL_read(conn->ssl[num].handle, buf, buffsize);
@@ -455,7 +576,9 @@ void Curl_cyassl_session_free(void *ptr)
size_t Curl_cyassl_version(char *buffer, size_t size)
{
-#ifdef CYASSL_VERSION
+#ifdef WOLFSSL_VERSION
+ return snprintf(buffer, size, "wolfSSL/%s", WOLFSSL_VERSION);
+#elif defined(CYASSL_VERSION)
return snprintf(buffer, size, "CyaSSL/%s", CYASSL_VERSION);
#else
return snprintf(buffer, size, "CyaSSL/%s", "<1.8.8");
@@ -465,10 +588,7 @@ size_t Curl_cyassl_version(char *buffer, size_t size)
int Curl_cyassl_init(void)
{
- if(CyaSSL_Init() == 0)
- return 1;
-
- return -1;
+ return (CyaSSL_Init() == SSL_SUCCESS);
}
@@ -644,9 +764,23 @@ int Curl_cyassl_random(struct SessionHandle *data,
(void)data;
if(InitRng(&rng))
return 1;
- if(RNG_GenerateBlock(&rng, entropy, length))
+ if(length > UINT_MAX)
+ return 1;
+ if(RNG_GenerateBlock(&rng, entropy, (unsigned)length))
return 1;
return 0;
}
+void Curl_cyassl_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum /* output */,
+ size_t unused)
+{
+ Sha256 SHA256pw;
+ (void)unused;
+ InitSha256(&SHA256pw);
+ Sha256Update(&SHA256pw, tmp, tmplen);
+ Sha256Final(&SHA256pw, sha256sum);
+}
+
#endif
diff --git a/lib/vtls/cyassl.h b/lib/vtls/cyassl.h
index a691e16c3..167de74f3 100644
--- a/lib/vtls/cyassl.h
+++ b/lib/vtls/cyassl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -26,13 +26,9 @@
#ifdef USE_CYASSL
CURLcode Curl_cyassl_connect(struct connectdata *conn, int sockindex);
-bool Curl_cyassl_data_pending(const struct connectdata* conn,int connindex);
+bool Curl_cyassl_data_pending(const struct connectdata* conn, int connindex);
int Curl_cyassl_shutdown(struct connectdata* conn, int sockindex);
-/* tell CyaSSL to close down all open information regarding connections (and
- thus session ID caching etc) */
-void Curl_cyassl_close_all(struct SessionHandle *data);
-
/* close a SSL connection */
void Curl_cyassl_close(struct connectdata *conn, int sockindex);
@@ -46,6 +42,16 @@ CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
int Curl_cyassl_random(struct SessionHandle *data,
unsigned char *entropy,
size_t length);
+void Curl_cyassl_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum, /* output */
+ size_t unused);
+
+/* Set the API backend definition to Schannel */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL
+
+/* this backend supports CURLOPT_SSL_CTX_* */
+#define have_curlssl_ssl_ctx 1
/* API setup for CyaSSL */
#define curlssl_init Curl_cyassl_init
@@ -53,7 +59,7 @@ int Curl_cyassl_random(struct SessionHandle *data,
#define curlssl_connect Curl_cyassl_connect
#define curlssl_connect_nonblocking Curl_cyassl_connect_nonblocking
#define curlssl_session_free(x) Curl_cyassl_session_free(x)
-#define curlssl_close_all Curl_cyassl_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_cyassl_close
#define curlssl_shutdown(x,y) Curl_cyassl_shutdown(x,y)
#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -63,7 +69,7 @@ int Curl_cyassl_random(struct SessionHandle *data,
#define curlssl_check_cxn(x) ((void)x, -1)
#define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
#define curlssl_random(x,y,z) Curl_cyassl_random(x,y,z)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL
+#define curlssl_sha256sum(a,b,c,d) Curl_cyassl_sha256sum(a,b,c,d)
#endif /* USE_CYASSL */
#endif /* HEADER_CURL_CYASSL_H */
diff --git a/lib/vtls/curl_darwinssl.c b/lib/vtls/darwinssl.c
index c056198bb..03adcef28 100644
--- a/lib/vtls/curl_darwinssl.c
+++ b/lib/vtls/darwinssl.c
@@ -102,10 +102,8 @@
#include "connect.h"
#include "select.h"
#include "vtls.h"
-#include "curl_darwinssl.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "darwinssl.h"
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -1461,9 +1459,12 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
/* We want to enable 1/n-1 when using a CBC cipher unless the user
specifically doesn't want us doing that: */
- if(SSLSetSessionOption != NULL)
+ if(SSLSetSessionOption != NULL) {
SSLSetSessionOption(connssl->ssl_ctx, kSSLSessionOptionSendOneByteRecord,
!data->set.ssl_enable_beast);
+ SSLSetSessionOption(connssl->ssl_ctx, kSSLSessionOptionFalseStart,
+ data->set.ssl.falsestart); /* false start support */
+ }
#endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */
/* Check if there's a cached ID we can/should use here! */
@@ -2229,12 +2230,6 @@ void Curl_darwinssl_close(struct connectdata *conn, int sockindex)
connssl->ssl_sockfd = 0;
}
-void Curl_darwinssl_close_all(struct SessionHandle *data)
-{
- /* SecureTransport doesn't separate sessions from contexts, so... */
- (void)data;
-}
-
int Curl_darwinssl_shutdown(struct connectdata *conn, int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -2372,6 +2367,14 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
(void)CC_MD5(tmp, (CC_LONG)tmplen, md5sum);
}
+bool Curl_darwinssl_false_start(void) {
+#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
+ if(SSLSetSessionOption != NULL)
+ return TRUE;
+#endif
+ return FALSE;
+}
+
static ssize_t darwinssl_send(struct connectdata *conn,
int sockindex,
const void *mem,
diff --git a/lib/vtls/curl_darwinssl.h b/lib/vtls/darwinssl.h
index 7c80edfc6..3bb69c01a 100644
--- a/lib/vtls/curl_darwinssl.h
+++ b/lib/vtls/darwinssl.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -32,9 +32,6 @@ CURLcode Curl_darwinssl_connect_nonblocking(struct connectdata *conn,
int sockindex,
bool *done);
-/* this function doesn't actually do anything */
-void Curl_darwinssl_close_all(struct SessionHandle *data);
-
/* close a SSL connection */
void Curl_darwinssl_close(struct connectdata *conn, int sockindex);
@@ -51,6 +48,10 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *md5sum, /* output */
size_t md5len);
+bool Curl_darwinssl_false_start(void);
+
+/* Set the API backend definition to SecureTransport */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL
/* API setup for SecureTransport */
#define curlssl_init() (1)
@@ -58,7 +59,7 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
#define curlssl_connect Curl_darwinssl_connect
#define curlssl_connect_nonblocking Curl_darwinssl_connect_nonblocking
#define curlssl_session_free(x) Curl_darwinssl_session_free(x)
-#define curlssl_close_all Curl_darwinssl_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_darwinssl_close
#define curlssl_shutdown(x,y) 0
#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -69,7 +70,7 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y)
#define curlssl_random(x,y,z) ((void)x, Curl_darwinssl_random(y,z))
#define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL
+#define curlssl_false_start() Curl_darwinssl_false_start()
#endif /* USE_DARWINSSL */
#endif /* HEADER_CURL_DARWINSSL_H */
diff --git a/lib/vtls/gskit.c b/lib/vtls/gskit.c
index ac05f05bb..d884bd4c4 100644
--- a/lib/vtls/gskit.c
+++ b/lib/vtls/gskit.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -74,9 +74,7 @@
#include "select.h"
#include "strequal.h"
#include "x509asn1.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -625,7 +623,7 @@ static CURLcode gskit_connect_step1(struct connectdata *conn, int sockindex)
sni = (char *) NULL;
break;
case CURL_SSLVERSION_SSLv3:
- protoflags = CURL_GSKPROTO_SSLV2_MASK;
+ protoflags = CURL_GSKPROTO_SSLV3_MASK;
sni = (char *) NULL;
break;
case CURL_SSLVERSION_TLSv1:
@@ -986,13 +984,6 @@ void Curl_gskit_close(struct connectdata *conn, int sockindex)
}
-void Curl_gskit_close_all(struct SessionHandle *data)
-{
- /* Unimplemented. */
- (void) data;
-}
-
-
int Curl_gskit_shutdown(struct connectdata *conn, int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
diff --git a/lib/vtls/gskit.h b/lib/vtls/gskit.h
index baec82323..af31fafad 100644
--- a/lib/vtls/gskit.h
+++ b/lib/vtls/gskit.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -32,15 +32,17 @@
#ifdef USE_GSKIT
int Curl_gskit_init(void);
void Curl_gskit_cleanup(void);
-CURLcode Curl_gskit_connect(struct connectdata * conn, int sockindex);
-CURLcode Curl_gskit_connect_nonblocking(struct connectdata * conn,
- int sockindex, bool * done);
+CURLcode Curl_gskit_connect(struct connectdata *conn, int sockindex);
+CURLcode Curl_gskit_connect_nonblocking(struct connectdata *conn,
+ int sockindex, bool *done);
void Curl_gskit_close(struct connectdata *conn, int sockindex);
-void Curl_gskit_close_all(struct SessionHandle * data);
-int Curl_gskit_shutdown(struct connectdata * conn, int sockindex);
+int Curl_gskit_shutdown(struct connectdata *conn, int sockindex);
-size_t Curl_gskit_version(char * buffer, size_t size);
-int Curl_gskit_check_cxn(struct connectdata * cxn);
+size_t Curl_gskit_version(char *buffer, size_t size);
+int Curl_gskit_check_cxn(struct connectdata *cxn);
+
+/* Set the API backend definition to GSKit */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
/* this backend supports CURLOPT_CERTINFO */
#define have_curlssl_certinfo 1
@@ -53,7 +55,7 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
/* No session handling for GSKit */
#define curlssl_session_free(x) Curl_nop_stmt
-#define curlssl_close_all Curl_gskit_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_gskit_close
#define curlssl_shutdown(x,y) Curl_gskit_shutdown(x,y)
#define curlssl_set_engine(x,y) CURLE_NOT_BUILT_IN
@@ -63,7 +65,7 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
#define curlssl_check_cxn(x) Curl_gskit_check_cxn(x)
#define curlssl_data_pending(x,y) 0
#define curlssl_random(x,y,z) -1
-#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
+
#endif /* USE_GSKIT */
#endif /* HEADER_CURL_GSKIT_H */
diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
index 5d4e48a25..c54dfc1d2 100644
--- a/lib/vtls/gtls.c
+++ b/lib/vtls/gtls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -39,6 +39,7 @@
#ifdef USE_GNUTLS_NETTLE
#include <gnutls/crypto.h>
#include <nettle/md5.h>
+#include <nettle/sha2.h>
#else
#include <gcrypt.h>
#endif
@@ -53,9 +54,8 @@
#include "select.h"
#include "rawstr.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "x509asn1.h"
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -92,14 +92,23 @@ static bool gtls_inited = FALSE;
# define GNUTLS_MAPS_WINSOCK_ERRORS 1
# endif
-# ifdef USE_NGHTTP2
-# undef HAS_ALPN
-# if (GNUTLS_VERSION_NUMBER >= 0x030200)
-# define HAS_ALPN
-# endif
+# if (GNUTLS_VERSION_NUMBER >= 0x030200)
+# define HAS_ALPN
+# endif
+
+# if (GNUTLS_VERSION_NUMBER >= 0x03020d)
+# define HAS_OCSP
+# endif
+
+# if (GNUTLS_VERSION_NUMBER >= 0x030306)
+# define HAS_CAPATH
# endif
#endif
+#ifdef HAS_OCSP
+# include <gnutls/ocsp.h>
+#endif
+
/*
* Custom push and pull callback functions used by GNU TLS to read and write
* to the socket. These functions are simple wrappers to send() and recv()
@@ -204,7 +213,7 @@ static void showtime(struct SessionHandle *data,
snprintf(data->state.buffer,
BUFSIZE,
- "\t %s: %s, %02d %s %4d %02d:%02d:%02d GMT\n",
+ "\t %s: %s, %02d %s %4d %02d:%02d:%02d GMT",
text,
Curl_wkday[tm->tm_wday?tm->tm_wday-1:6],
tm->tm_mday,
@@ -223,7 +232,7 @@ static gnutls_datum_t load_file (const char *file)
long filelen;
void *ptr;
- if(!(f = fopen(file, "r")))
+ if(!(f = fopen(file, "rb")))
return loaded_file;
if(fseek(f, 0, SEEK_END) != 0
|| (filelen = ftell(f)) < 0
@@ -319,7 +328,8 @@ static CURLcode handshake(struct connectdata *conn,
if(strerr == NULL)
strerr = gnutls_strerror(rc);
- failf(data, "gnutls_handshake() warning: %s", strerr);
+ infof(data, "gnutls_handshake() warning: %s\n", strerr);
+ continue;
}
else if(rc < 0) {
const char *strerr = NULL;
@@ -392,10 +402,6 @@ gtls_connect_step1(struct connectdata *conn,
const char* prioritylist;
const char *err = NULL;
#endif
-#ifdef HAS_ALPN
- int protocols_size = 2;
- gnutls_datum_t protocols[2];
-#endif
if(conn->ssl[sockindex].state == ssl_connection_complete)
/* to make us tolerant against being called more than once for the
@@ -463,6 +469,24 @@ gtls_connect_step1(struct connectdata *conn,
rc, data->set.ssl.CAfile);
}
+#ifdef HAS_CAPATH
+ if(data->set.ssl.CApath) {
+ /* set the trusted CA cert directory */
+ rc = gnutls_certificate_set_x509_trust_dir(conn->ssl[sockindex].cred,
+ data->set.ssl.CApath,
+ GNUTLS_X509_FMT_PEM);
+ if(rc < 0) {
+ infof(data, "error reading ca cert file %s (%s)\n",
+ data->set.ssl.CAfile, gnutls_strerror(rc));
+ if(data->set.ssl.verifypeer)
+ return CURLE_SSL_CACERT_BADFILE;
+ }
+ else
+ infof(data, "found %d certificates in %s\n",
+ rc, data->set.ssl.CApath);
+ }
+#endif
+
if(data->set.ssl.CRLfile) {
/* set the CRL list file */
rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred,
@@ -609,20 +633,25 @@ gtls_connect_step1(struct connectdata *conn,
#endif
#ifdef HAS_ALPN
- if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
- if(data->set.ssl_enable_alpn) {
- protocols[0].data = NGHTTP2_PROTO_VERSION_ID;
- protocols[0].size = NGHTTP2_PROTO_VERSION_ID_LEN;
- protocols[1].data = ALPN_HTTP_1_1;
- protocols[1].size = ALPN_HTTP_1_1_LENGTH;
- gnutls_alpn_set_protocols(session, protocols, protocols_size, 0);
- infof(data, "ALPN, offering %s, %s\n", NGHTTP2_PROTO_VERSION_ID,
- ALPN_HTTP_1_1);
- connssl->asked_for_h2 = TRUE;
- }
- else {
- infof(data, "SSL, can't negotiate HTTP/2.0 without ALPN\n");
+ if(data->set.ssl_enable_alpn) {
+ int cur = 0;
+ gnutls_datum_t protocols[2];
+
+#ifdef USE_NGHTTP2
+ if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+ protocols[cur].data = (unsigned char *)NGHTTP2_PROTO_VERSION_ID;
+ protocols[cur].size = NGHTTP2_PROTO_VERSION_ID_LEN;
+ cur++;
+ infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
}
+#endif
+
+ protocols[cur].data = (unsigned char *)ALPN_HTTP_1_1;
+ protocols[cur].size = ALPN_HTTP_1_1_LENGTH;
+ cur++;
+ infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
+
+ gnutls_alpn_set_protocols(session, protocols, cur, 0);
}
#endif
@@ -644,13 +673,21 @@ gtls_connect_step1(struct connectdata *conn,
if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
rc = gnutls_credentials_set(session, GNUTLS_CRD_SRP,
conn->ssl[sockindex].srp_client_cred);
- if(rc != GNUTLS_E_SUCCESS)
+ if(rc != GNUTLS_E_SUCCESS) {
failf(data, "gnutls_credentials_set() failed: %s", gnutls_strerror(rc));
+ return CURLE_SSL_CONNECT_ERROR;
+ }
}
else
#endif
+ {
rc = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE,
conn->ssl[sockindex].cred);
+ if(rc != GNUTLS_E_SUCCESS) {
+ failf(data, "gnutls_credentials_set() failed: %s", gnutls_strerror(rc));
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ }
/* set the connection handle (file descriptor for the socket) */
gnutls_transport_set_ptr(session,
@@ -663,6 +700,16 @@ gtls_connect_step1(struct connectdata *conn,
/* lowat must be set to zero when using custom push and pull functions. */
gnutls_transport_set_lowat(session, 0);
+#ifdef HAS_OCSP
+ if(data->set.ssl.verifystatus) {
+ rc = gnutls_ocsp_status_request_enable_client(session, NULL, 0, NULL);
+ if(rc != GNUTLS_E_SUCCESS) {
+ failf(data, "gnutls_ocsp_status_request_enable_client() failed: %d", rc);
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ }
+#endif
+
/* This might be a reconnect, so we check for a session ID in the cache
to speed up things */
@@ -742,8 +789,8 @@ gtls_connect_step3(struct connectdata *conn,
{
unsigned int cert_list_size;
const gnutls_datum_t *chainp;
- unsigned int verify_status;
- gnutls_x509_crt_t x509_cert,x509_issuer;
+ unsigned int verify_status = 0;
+ gnutls_x509_crt_t x509_cert, x509_issuer;
gnutls_datum_t issuerp;
char certbuf[256] = ""; /* big enough? */
size_t size;
@@ -761,6 +808,16 @@ gtls_connect_step3(struct connectdata *conn,
#endif
CURLcode result = CURLE_OK;
+ gnutls_protocol_t version = gnutls_protocol_get_version(session);
+
+ /* the name of the cipher suite used, e.g. ECDHE_RSA_AES_256_GCM_SHA384. */
+ ptr = gnutls_cipher_suite_get_name(gnutls_kx_get(session),
+ gnutls_cipher_get(session),
+ gnutls_mac_get(session));
+
+ infof(data, "SSL connection using %s / %s\n",
+ gnutls_protocol_get_name(version), ptr);
+
/* This function will return the peer's raw certificate (chain) as sent by
the peer. These certificates are in raw format (DER encoded for
X.509). In case of a X.509 then a certificate list may be present. The
@@ -791,6 +848,23 @@ gtls_connect_step3(struct connectdata *conn,
infof(data, "\t common name: WARNING couldn't obtain\n");
}
+ if(data->set.ssl.certinfo && chainp) {
+ unsigned int i;
+
+ result = Curl_ssl_init_certinfo(data, cert_list_size);
+ if(result)
+ return result;
+
+ for(i = 0; i < cert_list_size; i++) {
+ const char *beg = (const char *) chainp[i].data;
+ const char *end = beg + chainp[i].size;
+
+ result = Curl_extract_certinfo(conn, i, beg, end);
+ if(result)
+ return result;
+ }
+ }
+
if(data->set.ssl.verifypeer) {
/* This function will try to verify the peer's certificate and return its
status (trusted, invalid etc.). The value of status should be one or
@@ -822,6 +896,111 @@ gtls_connect_step3(struct connectdata *conn,
else
infof(data, "\t server certificate verification SKIPPED\n");
+#ifdef HAS_OCSP
+ if(data->set.ssl.verifystatus) {
+ if(gnutls_ocsp_status_request_is_checked(session, 0) == 0) {
+ gnutls_datum_t status_request;
+ gnutls_ocsp_resp_t ocsp_resp;
+
+ gnutls_ocsp_cert_status_t status;
+ gnutls_x509_crl_reason_t reason;
+
+ rc = gnutls_ocsp_status_request_get(session, &status_request);
+
+ infof(data, "\t server certificate status verification FAILED\n");
+
+ if(rc == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) {
+ failf(data, "No OCSP response received");
+ return CURLE_SSL_INVALIDCERTSTATUS;
+ }
+
+ if(rc < 0) {
+ failf(data, "Invalid OCSP response received");
+ return CURLE_SSL_INVALIDCERTSTATUS;
+ }
+
+ gnutls_ocsp_resp_init(&ocsp_resp);
+
+ rc = gnutls_ocsp_resp_import(ocsp_resp, &status_request);
+ if(rc < 0) {
+ failf(data, "Invalid OCSP response received");
+ return CURLE_SSL_INVALIDCERTSTATUS;
+ }
+
+ rc = gnutls_ocsp_resp_get_single(ocsp_resp, 0, NULL, NULL, NULL, NULL,
+ &status, NULL, NULL, NULL, &reason);
+
+ switch(status) {
+ case GNUTLS_OCSP_CERT_GOOD:
+ break;
+
+ case GNUTLS_OCSP_CERT_REVOKED: {
+ const char *crl_reason;
+
+ switch(reason) {
+ default:
+ case GNUTLS_X509_CRLREASON_UNSPECIFIED:
+ crl_reason = "unspecified reason";
+ break;
+
+ case GNUTLS_X509_CRLREASON_KEYCOMPROMISE:
+ crl_reason = "private key compromised";
+ break;
+
+ case GNUTLS_X509_CRLREASON_CACOMPROMISE:
+ crl_reason = "CA compromised";
+ break;
+
+ case GNUTLS_X509_CRLREASON_AFFILIATIONCHANGED:
+ crl_reason = "affiliation has changed";
+ break;
+
+ case GNUTLS_X509_CRLREASON_SUPERSEDED:
+ crl_reason = "certificate superseded";
+ break;
+
+ case GNUTLS_X509_CRLREASON_CESSATIONOFOPERATION:
+ crl_reason = "operation has ceased";
+ break;
+
+ case GNUTLS_X509_CRLREASON_CERTIFICATEHOLD:
+ crl_reason = "certificate is on hold";
+ break;
+
+ case GNUTLS_X509_CRLREASON_REMOVEFROMCRL:
+ crl_reason = "will be removed from delta CRL";
+ break;
+
+ case GNUTLS_X509_CRLREASON_PRIVILEGEWITHDRAWN:
+ crl_reason = "privilege withdrawn";
+ break;
+
+ case GNUTLS_X509_CRLREASON_AACOMPROMISE:
+ crl_reason = "AA compromised";
+ break;
+ }
+
+ failf(data, "Server certificate was revoked: %s", crl_reason);
+ break;
+ }
+
+ default:
+ case GNUTLS_OCSP_CERT_UNKNOWN:
+ failf(data, "Server certificate status is unknown");
+ break;
+ }
+
+ gnutls_ocsp_resp_deinit(ocsp_resp);
+
+ return CURLE_SSL_INVALIDCERTSTATUS;
+ }
+ else
+ infof(data, "\t server certificate status verification OK\n");
+ }
+ else
+ infof(data, "\t server certificate status verification SKIPPED\n");
+#endif
+
/* initialize an X.509 certificate structure. */
gnutls_x509_crt_init(&x509_cert);
@@ -834,7 +1013,7 @@ gtls_connect_step3(struct connectdata *conn,
gnutls_x509_crt_init(&x509_issuer);
issuerp = load_file(data->set.ssl.issuercert);
gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM);
- rc = gnutls_x509_crt_check_issuer(x509_cert,x509_issuer);
+ rc = gnutls_x509_crt_check_issuer(x509_cert, x509_issuer);
gnutls_x509_crt_deinit(x509_issuer);
unload_file(issuerp);
if(rc <= 0) {
@@ -843,7 +1022,7 @@ gtls_connect_step3(struct connectdata *conn,
gnutls_x509_crt_deinit(x509_cert);
return CURLE_SSL_ISSUER_ERROR;
}
- infof(data,"\t server certificate issuer check OK (Issuer Cert: %s)\n",
+ infof(data, "\t server certificate issuer check OK (Issuer Cert: %s)\n",
data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
}
@@ -983,7 +1162,6 @@ gtls_connect_step3(struct connectdata *conn,
/* Show:
- - ciphers used
- subject
- start date
- expire date
@@ -1023,14 +1201,6 @@ gtls_connect_step3(struct connectdata *conn,
/* the *_get_name() says "NULL" if GNUTLS_COMP_NULL is returned */
infof(data, "\t compression: %s\n", ptr);
- /* the name of the cipher used. ie 3DES. */
- ptr = gnutls_cipher_get_name(gnutls_cipher_get(session));
- infof(data, "\t cipher: %s\n", ptr);
-
- /* the MAC algorithms name. ie SHA1 */
- ptr = gnutls_mac_get_name(gnutls_mac_get(session));
- infof(data, "\t MAC: %s\n", ptr);
-
#ifdef HAS_ALPN
if(data->set.ssl_enable_alpn) {
rc = gnutls_alpn_get_selected_protocol(session, &proto);
@@ -1038,19 +1208,21 @@ gtls_connect_step3(struct connectdata *conn,
infof(data, "ALPN, server accepted to use %.*s\n", proto.size,
proto.data);
+#ifdef USE_NGHTTP2
if(proto.size == NGHTTP2_PROTO_VERSION_ID_LEN &&
- memcmp(NGHTTP2_PROTO_VERSION_ID, proto.data,
- NGHTTP2_PROTO_VERSION_ID_LEN) == 0) {
- conn->negnpn = NPN_HTTP2;
+ !memcmp(NGHTTP2_PROTO_VERSION_ID, proto.data,
+ NGHTTP2_PROTO_VERSION_ID_LEN)) {
+ conn->negnpn = CURL_HTTP_VERSION_2_0;
}
- else if(proto.size == ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1,
- proto.data, ALPN_HTTP_1_1_LENGTH) == 0) {
- conn->negnpn = NPN_HTTP1_1;
+ else
+#endif
+ if(proto.size == ALPN_HTTP_1_1_LENGTH &&
+ !memcmp(ALPN_HTTP_1_1, proto.data, ALPN_HTTP_1_1_LENGTH)) {
+ conn->negnpn = CURL_HTTP_VERSION_1_1;
}
}
- else if(connssl->asked_for_h2) {
+ else
infof(data, "ALPN, server did not agree to a protocol\n");
- }
}
#endif
@@ -1182,12 +1354,6 @@ static ssize_t gtls_send(struct connectdata *conn,
return rc;
}
-void Curl_gtls_close_all(struct SessionHandle *data)
-{
- /* FIX: make the OpenSSL code more generic and use parts of it here */
- (void)data;
-}
-
static void close_one(struct connectdata *conn,
int idx)
{
@@ -1392,4 +1558,32 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
#endif
}
+void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum, /* output */
+ size_t sha256len)
+{
+#if defined(USE_GNUTLS_NETTLE)
+ struct sha256_ctx SHA256pw;
+ sha256_init(&SHA256pw);
+ sha256_update(&SHA256pw, (unsigned int)tmplen, tmp);
+ sha256_digest(&SHA256pw, (unsigned int)sha256len, sha256sum);
+#elif defined(USE_GNUTLS)
+ gcry_md_hd_t SHA256pw;
+ gcry_md_open(&SHA256pw, GCRY_MD_SHA256, 0);
+ gcry_md_write(SHA256pw, tmp, tmplen);
+ memcpy(sha256sum, gcry_md_read (SHA256pw, 0), sha256len);
+ gcry_md_close(SHA256pw);
+#endif
+}
+
+bool Curl_gtls_cert_status_request(void)
+{
+#ifdef HAS_OCSP
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
#endif /* USE_GNUTLS */
diff --git a/lib/vtls/gtls.h b/lib/vtls/gtls.h
index 12460beda..0afd9b94a 100644
--- a/lib/vtls/gtls.h
+++ b/lib/vtls/gtls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -35,10 +35,6 @@ CURLcode Curl_gtls_connect_nonblocking(struct connectdata *conn,
int sockindex,
bool *done);
-/* tell GnuTLS to close down all open information regarding connections (and
- thus session ID caching etc) */
-void Curl_gtls_close_all(struct SessionHandle *data);
-
/* close a SSL connection */
void Curl_gtls_close(struct connectdata *conn, int sockindex);
@@ -52,6 +48,21 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *md5sum, /* output */
size_t md5len);
+void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum, /* output */
+ size_t sha256len);
+
+bool Curl_gtls_cert_status_request(void);
+
+/* Set the API backend definition to GnuTLS */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
+
+/* this backend supports the CAPATH option */
+#define have_curlssl_ca_path 1
+
+/* this backend supports CURLOPT_CERTINFO */
+#define have_curlssl_certinfo 1
/* API setup for GnuTLS */
#define curlssl_init Curl_gtls_init
@@ -59,7 +70,7 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
#define curlssl_connect Curl_gtls_connect
#define curlssl_connect_nonblocking Curl_gtls_connect_nonblocking
#define curlssl_session_free(x) Curl_gtls_session_free(x)
-#define curlssl_close_all Curl_gtls_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_gtls_close
#define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -70,7 +81,8 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
#define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
+#define curlssl_sha256sum(a,b,c,d) Curl_gtls_sha256sum(a,b,c,d)
+#define curlssl_cert_status_request() Curl_gtls_cert_status_request()
#endif /* USE_GNUTLS */
#endif /* HEADER_CURL_GTLS_H */
diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c
index dd83a9d68..91727c7c3 100644
--- a/lib/vtls/nss.c
+++ b/lib/vtls/nss.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -38,10 +38,7 @@
#include "select.h"
#include "vtls.h"
#include "llist.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "nssg.h"
#include <nspr.h>
#include <nss.h>
@@ -59,13 +56,20 @@
#include <base64.h>
#include <cert.h>
#include <prerror.h>
+#include <keyhi.h> /* for SECKEY_DestroyPublicKey() */
+
+#define NSSVERNUM ((NSS_VMAJOR<<16)|(NSS_VMINOR<<8)|NSS_VPATCH)
+
+#if NSSVERNUM >= 0x030f00 /* 3.15.0 */
+#include <ocsp.h>
+#endif
-#include "curl_memory.h"
#include "rawstr.h"
#include "warnless.h"
#include "x509asn1.h"
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#define SSL_DIR "/etc/pki/nssdb"
@@ -639,6 +643,34 @@ static SECStatus nss_auth_cert_hook(void *arg, PRFileDesc *fd, PRBool checksig,
PRBool isServer)
{
struct connectdata *conn = (struct connectdata *)arg;
+
+#ifdef SSL_ENABLE_OCSP_STAPLING
+ if(conn->data->set.ssl.verifystatus) {
+ SECStatus cacheResult;
+
+ const SECItemArray *csa = SSL_PeerStapledOCSPResponses(fd);
+ if(!csa) {
+ failf(conn->data, "Invalid OCSP response");
+ return SECFailure;
+ }
+
+ if(csa->len == 0) {
+ failf(conn->data, "No OCSP response received");
+ return SECFailure;
+ }
+
+ cacheResult = CERT_CacheOCSPResponseFromSideChannel(
+ CERT_GetDefaultCertDB(), SSL_PeerCertificate(fd),
+ PR_Now(), &csa->items[0], arg
+ );
+
+ if(cacheResult != SECSuccess) {
+ failf(conn->data, "Invalid OCSP response");
+ return cacheResult;
+ }
+ }
+#endif
+
if(!conn->data->set.ssl.verifypeer) {
infof(conn->data, "skipping SSL peer certificate verification\n");
return SECSuccess;
@@ -652,7 +684,6 @@ static SECStatus nss_auth_cert_hook(void *arg, PRFileDesc *fd, PRBool checksig,
*/
static void HandshakeCallback(PRFileDesc *sock, void *arg)
{
-#ifdef USE_NGHTTP2
struct connectdata *conn = (struct connectdata*) arg;
unsigned int buflenmax = 50;
unsigned char buf[50];
@@ -668,8 +699,7 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
switch(state) {
case SSL_NEXT_PROTO_NO_SUPPORT:
case SSL_NEXT_PROTO_NO_OVERLAP:
- if(connssl->asked_for_h2)
- infof(conn->data, "TLS, neither ALPN nor NPN succeeded\n");
+ infof(conn->data, "ALPN/NPN, server did not agree to a protocol\n");
return;
#ifdef SSL_ENABLE_ALPN
case SSL_NEXT_PROTO_SELECTED:
@@ -681,22 +711,80 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
break;
}
+#ifdef USE_NGHTTP2
if(buflen == NGHTTP2_PROTO_VERSION_ID_LEN &&
- memcmp(NGHTTP2_PROTO_VERSION_ID, buf, NGHTTP2_PROTO_VERSION_ID_LEN)
- == 0) {
- conn->negnpn = NPN_HTTP2;
+ !memcmp(NGHTTP2_PROTO_VERSION_ID, buf, NGHTTP2_PROTO_VERSION_ID_LEN)) {
+ conn->negnpn = CURL_HTTP_VERSION_2_0;
}
- else if(buflen == ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1, buf,
- ALPN_HTTP_1_1_LENGTH)) {
- conn->negnpn = NPN_HTTP1_1;
+ else
+#endif
+ if(buflen == ALPN_HTTP_1_1_LENGTH &&
+ !memcmp(ALPN_HTTP_1_1, buf, ALPN_HTTP_1_1_LENGTH)) {
+ conn->negnpn = CURL_HTTP_VERSION_1_1;
}
}
-#else
- (void)sock;
- (void)arg;
-#endif
}
+#if NSSVERNUM >= 0x030f04 /* 3.15.4 */
+static SECStatus CanFalseStartCallback(PRFileDesc *sock, void *client_data,
+ PRBool *canFalseStart)
+{
+ struct connectdata *conn = client_data;
+ struct SessionHandle *data = conn->data;
+
+ SSLChannelInfo channelInfo;
+ SSLCipherSuiteInfo cipherInfo;
+
+ SECStatus rv;
+ PRBool negotiatedExtension;
+
+ *canFalseStart = PR_FALSE;
+
+ if(SSL_GetChannelInfo(sock, &channelInfo, sizeof(channelInfo)) != SECSuccess)
+ return SECFailure;
+
+ if(SSL_GetCipherSuiteInfo(channelInfo.cipherSuite, &cipherInfo,
+ sizeof(cipherInfo)) != SECSuccess)
+ return SECFailure;
+
+ /* Prevent version downgrade attacks from TLS 1.2, and avoid False Start for
+ * TLS 1.3 and later. See https://bugzilla.mozilla.org/show_bug.cgi?id=861310
+ */
+ if(channelInfo.protocolVersion != SSL_LIBRARY_VERSION_TLS_1_2)
+ goto end;
+
+ /* Only allow ECDHE key exchange algorithm.
+ * See https://bugzilla.mozilla.org/show_bug.cgi?id=952863 */
+ if(cipherInfo.keaType != ssl_kea_ecdh)
+ goto end;
+
+ /* Prevent downgrade attacks on the symmetric cipher. We do not allow CBC
+ * mode due to BEAST, POODLE, and other attacks on the MAC-then-Encrypt
+ * design. See https://bugzilla.mozilla.org/show_bug.cgi?id=1109766 */
+ if(cipherInfo.symCipher != ssl_calg_aes_gcm)
+ goto end;
+
+ /* Enforce ALPN or NPN to do False Start, as an indicator of server
+ * compatibility. */
+ rv = SSL_HandshakeNegotiatedExtension(sock, ssl_app_layer_protocol_xtn,
+ &negotiatedExtension);
+ if(rv != SECSuccess || !negotiatedExtension) {
+ rv = SSL_HandshakeNegotiatedExtension(sock, ssl_next_proto_nego_xtn,
+ &negotiatedExtension);
+ }
+
+ if(rv != SECSuccess || !negotiatedExtension)
+ goto end;
+
+ *canFalseStart = PR_TRUE;
+
+ infof(data, "Trying TLS False Start\n");
+
+end:
+ return SECSuccess;
+}
+#endif
+
static void display_cert_info(struct SessionHandle *data,
CERTCertificate *cert)
{
@@ -830,7 +918,7 @@ static SECStatus BadCertHandler(void *arg, PRFileDesc *sock)
static SECStatus check_issuer_cert(PRFileDesc *sock,
char *issuer_nickname)
{
- CERTCertificate *cert,*cert_issuer,*issuer;
+ CERTCertificate *cert, *cert_issuer, *issuer;
SECStatus res=SECSuccess;
void *proto_win = NULL;
@@ -841,7 +929,7 @@ static SECStatus check_issuer_cert(PRFileDesc *sock,
*/
cert = SSL_PeerCertificate(sock);
- cert_issuer = CERT_FindCertIssuer(cert,PR_Now(),certUsageObjectSigner);
+ cert_issuer = CERT_FindCertIssuer(cert, PR_Now(), certUsageObjectSigner);
proto_win = SSL_RevealPinArg(sock);
issuer = PK11_FindCertFromNickname(issuer_nickname, proto_win);
@@ -858,6 +946,53 @@ static SECStatus check_issuer_cert(PRFileDesc *sock,
return res;
}
+static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
+ const char *pinnedpubkey)
+{
+ CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+ struct SessionHandle *data = connssl->data;
+ CERTCertificate *cert;
+
+ if(!pinnedpubkey)
+ /* no pinned public key specified */
+ return CURLE_OK;
+
+ /* get peer certificate */
+ cert = SSL_PeerCertificate(connssl->handle);
+ if(cert) {
+ /* extract public key from peer certificate */
+ SECKEYPublicKey *pubkey = CERT_ExtractPublicKey(cert);
+ if(pubkey) {
+ /* encode the public key as DER */
+ SECItem *cert_der = PK11_DEREncodePublicKey(pubkey);
+ if(cert_der) {
+ /* compare the public key with the pinned public key */
+ result = Curl_pin_peer_pubkey(pinnedpubkey,
+ cert_der->data,
+ cert_der->len);
+ SECITEM_FreeItem(cert_der, PR_TRUE);
+ }
+ SECKEY_DestroyPublicKey(pubkey);
+ }
+ CERT_DestroyCertificate(cert);
+ }
+
+ /* report the resulting status */
+ switch(result) {
+ case CURLE_OK:
+ infof(data, "pinned public key verified successfully!\n");
+ break;
+ case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
+ failf(data, "failed to verify pinned public key");
+ break;
+ default:
+ /* OOM, etc. */
+ break;
+ }
+
+ return result;
+}
+
/**
*
* Callback to pick the SSL client certificate.
@@ -999,6 +1134,7 @@ static PRStatus nspr_io_close(PRFileDesc *fd)
return close_fn(fd);
}
+/* data might be NULL */
static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
{
NSSInitParameters initparams;
@@ -1036,6 +1172,7 @@ static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
return CURLE_SSL_CACERT_BADFILE;
}
+/* data might be NULL */
static CURLcode nss_init(struct SessionHandle *data)
{
char *cert_dir;
@@ -1114,12 +1251,14 @@ int Curl_nss_init(void)
return 1;
}
+/* data might be NULL */
CURLcode Curl_nss_force_init(struct SessionHandle *data)
{
CURLcode result;
if(!nss_initlock) {
- failf(data, "unable to initialize NSS, curl_global_init() should have "
- "been called with CURL_GLOBAL_SSL or CURL_GLOBAL_ALL");
+ if(data)
+ failf(data, "unable to initialize NSS, curl_global_init() should have "
+ "been called with CURL_GLOBAL_SSL or CURL_GLOBAL_ALL");
return CURLE_FAILED_INIT;
}
@@ -1210,10 +1349,8 @@ void Curl_nss_close(struct connectdata *conn, int sockindex)
* authentication data from a previous connection. */
SSL_InvalidateSession(connssl->handle);
- if(connssl->client_nickname != NULL) {
- free(connssl->client_nickname);
- connssl->client_nickname = NULL;
- }
+ free(connssl->client_nickname);
+ connssl->client_nickname = NULL;
/* destroy all NSS objects in order to avoid failure of NSS shutdown */
Curl_llist_destroy(connssl->obj_list, NULL);
connssl->obj_list = NULL;
@@ -1224,15 +1361,6 @@ void Curl_nss_close(struct connectdata *conn, int sockindex)
}
}
-/*
- * This function is called when the 'data' struct is going away. Close
- * down everything and free all resources!
- */
-void Curl_nss_close_all(struct SessionHandle *data)
-{
- (void)data;
-}
-
/* return true if NSS can provide error code (and possibly msg) for the
error */
static bool is_nss_error(CURLcode err)
@@ -1429,16 +1557,6 @@ static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
SSL_LIBRARY_VERSION_TLS_1_0 /* max */
};
-#ifdef USE_NGHTTP2
-#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
- unsigned int alpn_protos_len = NGHTTP2_PROTO_VERSION_ID_LEN +
- ALPN_HTTP_1_1_LENGTH + 2;
- unsigned char alpn_protos[NGHTTP2_PROTO_VERSION_ID_LEN + ALPN_HTTP_1_1_LENGTH
- + 2];
- int cur = 0;
-#endif
-#endif
-
connssl->data = data;
/* list of all NSS objects we need to destroy in Curl_nss_close() */
@@ -1618,43 +1736,57 @@ static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
SSL_SetPKCS11PinArg(connssl->handle, data->set.str[STRING_KEY_PASSWD]);
}
-#ifdef USE_NGHTTP2
- if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+#ifdef SSL_ENABLE_OCSP_STAPLING
+ if(data->set.ssl.verifystatus) {
+ if(SSL_OptionSet(connssl->handle, SSL_ENABLE_OCSP_STAPLING, PR_TRUE)
+ != SECSuccess)
+ goto error;
+ }
+#endif
+
#ifdef SSL_ENABLE_NPN
- if(data->set.ssl_enable_npn) {
- if(SSL_OptionSet(connssl->handle, SSL_ENABLE_NPN, PR_TRUE) != SECSuccess)
- goto error;
- }
+ if(SSL_OptionSet(connssl->handle, SSL_ENABLE_NPN, data->set.ssl_enable_npn
+ ? PR_TRUE : PR_FALSE) != SECSuccess)
+ goto error;
#endif
#ifdef SSL_ENABLE_ALPN
- if(data->set.ssl_enable_alpn) {
- if(SSL_OptionSet(connssl->handle, SSL_ENABLE_ALPN, PR_TRUE)
- != SECSuccess)
- goto error;
- }
+ if(SSL_OptionSet(connssl->handle, SSL_ENABLE_ALPN, data->set.ssl_enable_alpn
+ ? PR_TRUE : PR_FALSE) != SECSuccess)
+ goto error;
+#endif
+
+#if NSSVERNUM >= 0x030f04 /* 3.15.4 */
+ if(data->set.ssl.falsestart) {
+ if(SSL_OptionSet(connssl->handle, SSL_ENABLE_FALSE_START, PR_TRUE)
+ != SECSuccess)
+ goto error;
+
+ if(SSL_SetCanFalseStartCallback(connssl->handle, CanFalseStartCallback,
+ conn) != SECSuccess)
+ goto error;
+ }
#endif
#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
- if(data->set.ssl_enable_npn || data->set.ssl_enable_alpn) {
- alpn_protos[cur] = NGHTTP2_PROTO_VERSION_ID_LEN;
- cur++;
- memcpy(&alpn_protos[cur], NGHTTP2_PROTO_VERSION_ID,
+ if(data->set.ssl_enable_npn || data->set.ssl_enable_alpn) {
+ int cur = 0;
+ unsigned char protocols[128];
+
+#ifdef USE_NGHTTP2
+ if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+ protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;
+ memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
NGHTTP2_PROTO_VERSION_ID_LEN);
cur += NGHTTP2_PROTO_VERSION_ID_LEN;
- alpn_protos[cur] = ALPN_HTTP_1_1_LENGTH;
- cur++;
- memcpy(&alpn_protos[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
-
- if(SSL_SetNextProtoNego(connssl->handle, alpn_protos, alpn_protos_len)
- != SECSuccess)
- goto error;
- connssl->asked_for_h2 = TRUE;
- }
- else {
- infof(data, "SSL, can't negotiate HTTP/2.0 with neither NPN nor ALPN\n");
}
#endif
+ protocols[cur++] = ALPN_HTTP_1_1_LENGTH;
+ memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
+ cur += ALPN_HTTP_1_1_LENGTH;
+
+ if(SSL_SetNextProtoNego(connssl->handle, protocols, cur) != SECSuccess)
+ goto error;
}
#endif
@@ -1715,7 +1847,7 @@ static CURLcode nss_do_connect(struct connectdata *conn, int sockindex)
}
if(SECFailure == ret) {
- infof(data,"SSL certificate issuer check failed\n");
+ infof(data, "SSL certificate issuer check failed\n");
result = CURLE_SSL_ISSUER_ERROR;
goto error;
}
@@ -1724,6 +1856,11 @@ static CURLcode nss_do_connect(struct connectdata *conn, int sockindex)
}
}
+ result = cmp_peer_pubkey(connssl, data->set.str[STRING_SSL_PINNEDPUBLICKEY]);
+ if(result)
+ /* status already printed */
+ goto error;
+
return CURLE_OK;
error:
@@ -1870,6 +2007,7 @@ size_t Curl_nss_version(char *buffer, size_t size)
return snprintf(buffer, size, "NSS/%s", NSS_VERSION);
}
+/* data might be NULL */
int Curl_nss_seed(struct SessionHandle *data)
{
/* make sure that NSS is initialized */
@@ -1881,14 +2019,11 @@ int Curl_nss_random(struct SessionHandle *data,
unsigned char *entropy,
size_t length)
{
- if(data)
- Curl_nss_seed(data); /* Initiate the seed if not already done */
+ Curl_nss_seed(data); /* Initiate the seed if not already done */
- if(SECSuccess != PK11_GenerateRandom(entropy, curlx_uztosi(length))) {
- /* no way to signal a failure from here, we have to abort */
- failf(data, "PK11_GenerateRandom() failed, calling abort()...");
- abort();
- }
+ if(SECSuccess != PK11_GenerateRandom(entropy, curlx_uztosi(length)))
+ /* signal a failure */
+ return -1;
return 0;
}
@@ -1906,4 +2041,34 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
PK11_DestroyContext(MD5pw, PR_TRUE);
}
+void Curl_nss_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum, /* output */
+ size_t sha256len)
+{
+ PK11Context *SHA256pw = PK11_CreateDigestContext(SEC_OID_SHA256);
+ unsigned int SHA256out;
+
+ PK11_DigestOp(SHA256pw, tmp, curlx_uztoui(tmplen));
+ PK11_DigestFinal(SHA256pw, sha256sum, &SHA256out, curlx_uztoui(sha256len));
+ PK11_DestroyContext(SHA256pw, PR_TRUE);
+}
+
+bool Curl_nss_cert_status_request(void)
+{
+#ifdef SSL_ENABLE_OCSP_STAPLING
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+bool Curl_nss_false_start(void) {
+#if NSSVERNUM >= 0x030f04 /* 3.15.4 */
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
#endif /* USE_NSS */
diff --git a/lib/vtls/nssg.h b/lib/vtls/nssg.h
index 74840e831..5fd72751d 100644
--- a/lib/vtls/nssg.h
+++ b/lib/vtls/nssg.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -37,10 +37,6 @@ CURLcode Curl_nss_connect_nonblocking(struct connectdata *conn,
/* close a SSL connection */
void Curl_nss_close(struct connectdata *conn, int sockindex);
-/* tell NSS to close down all open information regarding connections (and
- thus session ID caching etc) */
-void Curl_nss_close_all(struct SessionHandle *data);
-
int Curl_nss_init(void);
void Curl_nss_cleanup(void);
@@ -60,6 +56,18 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
unsigned char *md5sum, /* output */
size_t md5len);
+void Curl_nss_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum, /* output */
+ size_t sha256len);
+
+bool Curl_nss_cert_status_request(void);
+
+bool Curl_nss_false_start(void);
+
+/* Set the API backend definition to NSS */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS
+
/* this backend supports the CAPATH option */
#define have_curlssl_ca_path 1
@@ -74,7 +82,7 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
/* NSS has its own session ID cache */
#define curlssl_session_free(x) Curl_nop_stmt
-#define curlssl_close_all Curl_nss_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_nss_close
/* NSS has no shutdown function provided and thus always fail */
#define curlssl_shutdown(x,y) ((void)x, (void)y, 1)
@@ -86,7 +94,9 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
#define curlssl_random(x,y,z) Curl_nss_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_nss_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS
+#define curlssl_sha256sum(a,b,c,d) Curl_nss_sha256sum(a,b,c,d)
+#define curlssl_cert_status_request() Curl_nss_cert_status_request()
+#define curlssl_false_start() Curl_nss_false_start()
#endif /* USE_NSS */
#endif /* HEADER_CURL_NSSG_H */
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index a68d88eae..90e4c2b32 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -32,6 +32,8 @@
#include "curl_setup.h"
+#ifdef USE_OPENSSL
+
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
@@ -49,13 +51,9 @@
#include "vtls.h"
#include "rawstr.h"
#include "hostcheck.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
-#ifdef USE_SSLEAY
-
-#ifdef USE_OPENSSL
+#include <openssl/ssl.h>
#include <openssl/rand.h>
#include <openssl/x509v3.h>
#include <openssl/dsa.h>
@@ -64,36 +62,28 @@
#include <openssl/md5.h>
#include <openssl/conf.h>
#include <openssl/bn.h>
-#else
-#include <rand.h>
-#include <x509v3.h>
-#include <md5.h>
+#include <openssl/rsa.h>
+
+#ifdef HAVE_OPENSSL_PKCS12_H
+#include <openssl/pkcs12.h>
+#endif
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_IS_BORINGSSL)
+#include <openssl/ocsp.h>
#endif
#include "warnless.h"
-#include "curl_memory.h"
#include "non-ascii.h" /* for Curl_convert_from_utf8 prototype */
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
#ifndef OPENSSL_VERSION_NUMBER
#error "OPENSSL_VERSION_NUMBER not defined"
#endif
-#if OPENSSL_VERSION_NUMBER >= 0x0090581fL
-#define HAVE_SSL_GET1_SESSION 1
-#else
-#undef HAVE_SSL_GET1_SESSION
-#endif
-
-#if OPENSSL_VERSION_NUMBER >= 0x00904100L
-#define HAVE_USERDATA_IN_PWD_CALLBACK 1
-#else
-#undef HAVE_USERDATA_IN_PWD_CALLBACK
-#endif
-
-#if OPENSSL_VERSION_NUMBER >= 0x00907001L
+#if OPENSSL_VERSION_NUMBER >= 0x00907001L && !defined(OPENSSL_IS_BORINGSSL)
/* ENGINE_load_private_key() takes four arguments */
#define HAVE_ENGINE_LOAD_FOUR_ARGS
#include <openssl/ui.h>
@@ -102,18 +92,16 @@
#undef HAVE_ENGINE_LOAD_FOUR_ARGS
#endif
-#if (OPENSSL_VERSION_NUMBER >= 0x00903001L) && defined(HAVE_OPENSSL_PKCS12_H)
-/* OpenSSL has PKCS 12 support */
+#if (OPENSSL_VERSION_NUMBER >= 0x00903001L) && \
+ defined(HAVE_OPENSSL_PKCS12_H) && \
+ !defined(OPENSSL_IS_BORINGSSL)
+/* OpenSSL has PKCS 12 support, BoringSSL does not */
#define HAVE_PKCS12_SUPPORT
#else
-/* OpenSSL/SSLEay does not have PKCS12 support */
+/* OpenSSL does not have PKCS12 support */
#undef HAVE_PKCS12_SUPPORT
#endif
-#if OPENSSL_VERSION_NUMBER >= 0x00906001L
-#define HAVE_ERR_ERROR_STRING_N 1
-#endif
-
#if OPENSSL_VERSION_NUMBER >= 0x00909000L
#define SSL_METHOD_QUAL const
#else
@@ -127,7 +115,10 @@
#define X509_STORE_set_flags(x,y) Curl_nop_stmt
#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+#ifdef OPENSSL_IS_BORINGSSL
+/* BoringSSL has no ERR_remove_state() */
+#define ERR_remove_state(x)
+#elif (OPENSSL_VERSION_NUMBER >= 0x10000000L)
#define HAVE_ERR_REMOVE_THREAD_STATE 1
#endif
@@ -137,6 +128,19 @@
#define OPENSSL_NO_SSL2
#endif
+#if defined(OPENSSL_IS_BORINGSSL)
+#define NO_RAND_SEED 1
+/* In BoringSSL OpenSSL_add_all_algorithms does nothing */
+#define OpenSSL_add_all_algorithms()
+/* BoringSSL does not have CONF_modules_load_file */
+#define CONF_modules_load_file(a,b,c)
+#endif
+
+#if (OPENSSL_VERSION_NUMBER < 0x0090808fL) || defined(OPENSSL_IS_BORINGSSL)
+/* not present in BoringSSL or older OpenSSL */
+#define OPENSSL_load_builtin_modules(x)
+#endif
+
/*
* Number of bytes to read from the random number seed file. This must be
* a finite value (because some entropy "files" like /dev/urandom have
@@ -145,18 +149,8 @@
*/
#define RAND_LOAD_LENGTH 1024
-#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
-static char global_passwd[64];
-#endif
-
-static int passwd_callback(char *buf, int num, int encrypting
-#ifdef HAVE_USERDATA_IN_PWD_CALLBACK
- /* This was introduced in 0.9.4, we can set this
- using SSL_CTX_set_default_passwd_cb_userdata()
- */
- , void *global_passwd
-#endif
- )
+static int passwd_callback(char *buf, int num, int encrypting,
+ void *global_passwd)
{
DEBUGASSERT(0 == encrypting);
@@ -177,6 +171,7 @@ static int passwd_callback(char *buf, int num, int encrypting
* pass in an argument that is never used.
*/
+#ifndef NO_RAND_SEED
#ifdef HAVE_RAND_STATUS
#define seed_enough(x) rand_enough()
static bool rand_enough(void)
@@ -261,7 +256,7 @@ static int ossl_seed(struct SessionHandle *data)
return nread;
}
-static int Curl_ossl_seed(struct SessionHandle *data)
+static void Curl_ossl_seed(struct SessionHandle *data)
{
/* we have the "SSL is seeded" boolean static to prevent multiple
time-consuming seedings in vain */
@@ -272,8 +267,11 @@ static int Curl_ossl_seed(struct SessionHandle *data)
ossl_seed(data);
ssl_seeded = TRUE;
}
- return 0;
}
+#else
+/* BoringSSL needs no seeding */
+#define Curl_ossl_seed(x)
+#endif
#ifndef SSL_FILETYPE_ENGINE
@@ -357,37 +355,23 @@ int cert_stuff(struct connectdata *conn,
int cert_done = 0;
if(data->set.str[STRING_KEY_PASSWD]) {
-#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
- /*
- * If password has been given, we store that in the global
- * area (*shudder*) for a while:
- */
- size_t len = strlen(data->set.str[STRING_KEY_PASSWD]);
- if(len < sizeof(global_passwd))
- memcpy(global_passwd, data->set.str[STRING_KEY_PASSWD], len+1);
- else
- global_passwd[0] = '\0';
-#else
- /*
- * We set the password in the callback userdata
- */
+ /* set the password in the callback userdata */
SSL_CTX_set_default_passwd_cb_userdata(ctx,
data->set.str[STRING_KEY_PASSWD]);
-#endif
/* Set passwd callback: */
SSL_CTX_set_default_passwd_cb(ctx, passwd_callback);
}
-#define SSL_CLIENT_CERT_ERR \
- "unable to use client certificate (no key found or wrong pass phrase?)"
-
switch(file_type) {
case SSL_FILETYPE_PEM:
/* SSL_CTX_use_certificate_chain_file() only works on PEM files */
if(SSL_CTX_use_certificate_chain_file(ctx,
cert_file) != 1) {
- failf(data, SSL_CLIENT_CERT_ERR);
+ failf(data,
+ "could not load PEM client certificate, OpenSSL error %s, "
+ "(no key found, wrong pass phrase, or wrong file format?)",
+ ERR_error_string(ERR_get_error(), NULL) );
return 0;
}
break;
@@ -399,7 +383,10 @@ int cert_stuff(struct connectdata *conn,
if(SSL_CTX_use_certificate_file(ctx,
cert_file,
file_type) != 1) {
- failf(data, SSL_CLIENT_CERT_ERR);
+ failf(data,
+ "could not load ASN1 client certificate, OpenSSL error %s, "
+ "(no key found, wrong pass phrase, or wrong file format?)",
+ ERR_error_string(ERR_get_error(), NULL) );
return 0;
}
break;
@@ -465,7 +452,7 @@ int cert_stuff(struct connectdata *conn,
STACK_OF(X509) *ca = NULL;
int i;
- f = fopen(cert_file,"rb");
+ f = fopen(cert_file, "rb");
if(!f) {
failf(data, "could not open PKCS12 file '%s'", cert_file);
return 0;
@@ -474,7 +461,7 @@ int cert_stuff(struct connectdata *conn,
fclose(f);
if(!p12) {
- failf(data, "error reading PKCS12 file '%s'", cert_file );
+ failf(data, "error reading PKCS12 file '%s'", cert_file);
return 0;
}
@@ -492,7 +479,9 @@ int cert_stuff(struct connectdata *conn,
PKCS12_free(p12);
if(SSL_CTX_use_certificate(ctx, x509) != 1) {
- failf(data, SSL_CLIENT_CERT_ERR);
+ failf(data,
+ "could not load PKCS12 client certificate, OpenSSL error %s",
+ ERR_error_string(ERR_get_error(), NULL) );
goto fail;
}
@@ -586,7 +575,7 @@ int cert_stuff(struct connectdata *conn,
#endif
/* the typecast below was added to please mingw32 */
priv_key = (EVP_PKEY *)
- ENGINE_load_private_key(data->state.engine,key_file,
+ ENGINE_load_private_key(data->state.engine, key_file,
#ifdef HAVE_ENGINE_LOAD_FOUR_ARGS
ui_method,
#endif
@@ -628,7 +617,7 @@ int cert_stuff(struct connectdata *conn,
ssl=SSL_new(ctx);
if(!ssl) {
- failf(data,"unable to create an SSL structure");
+ failf(data, "unable to create an SSL structure");
return 0;
}
@@ -638,7 +627,7 @@ int cert_stuff(struct connectdata *conn,
leak memory as the previous version: */
if(x509) {
EVP_PKEY *pktmp = X509_get_pubkey(x509);
- EVP_PKEY_copy_parameters(pktmp,SSL_get_privatekey(ssl));
+ EVP_PKEY_copy_parameters(pktmp, SSL_get_privatekey(ssl));
EVP_PKEY_free(pktmp);
}
@@ -654,10 +643,6 @@ int cert_stuff(struct connectdata *conn,
failf(data, "Private key does not match the certificate public key");
return 0;
}
-#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
- /* erase it now */
- memset(global_passwd, 0, sizeof(global_passwd));
-#endif
}
return 1;
}
@@ -692,36 +677,17 @@ static int x509_name_oneline(X509_NAME *a, char *buf, size_t size)
#endif
}
-static
-int cert_verify_callback(int ok, X509_STORE_CTX *ctx)
-{
- X509 *err_cert;
- char buf[256];
-
- err_cert=X509_STORE_CTX_get_current_cert(ctx);
- (void)x509_name_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf));
- return ok;
-}
-
/* Return error string for last OpenSSL error
*/
static char *SSL_strerror(unsigned long error, char *buf, size_t size)
{
-#ifdef HAVE_ERR_ERROR_STRING_N
/* OpenSSL 0.9.6 and later has a function named
- ERRO_error_string_n() that takes the size of the buffer as a
+ ERR_error_string_n() that takes the size of the buffer as a
third argument */
ERR_error_string_n(error, buf, size);
-#else
- (void) size;
- ERR_error_string(error, buf);
-#endif
return buf;
}
-#endif /* USE_SSLEAY */
-
-#ifdef USE_SSLEAY
/**
* Global SSL init
*
@@ -730,6 +696,8 @@ static char *SSL_strerror(unsigned long error, char *buf, size_t size)
*/
int Curl_ossl_init(void)
{
+ OPENSSL_load_builtin_modules();
+
#ifdef HAVE_ENGINE_LOAD_BUILTIN_ENGINES
ENGINE_load_builtin_engines();
#endif
@@ -756,17 +724,13 @@ int Curl_ossl_init(void)
#define CONF_MFLAGS_DEFAULT_SECTION 0x0
#endif
- (void)CONF_modules_load_file(NULL, NULL,
- CONF_MFLAGS_DEFAULT_SECTION|
- CONF_MFLAGS_IGNORE_MISSING_FILE);
+ CONF_modules_load_file(NULL, NULL,
+ CONF_MFLAGS_DEFAULT_SECTION|
+ CONF_MFLAGS_IGNORE_MISSING_FILE);
return 1;
}
-#endif /* USE_SSLEAY */
-
-#ifdef USE_SSLEAY
-
/* Global cleanup */
void Curl_ossl_cleanup(void)
{
@@ -821,7 +785,7 @@ int Curl_ossl_check_cxn(struct connectdata *conn)
*/
CURLcode Curl_ossl_set_engine(struct SessionHandle *data, const char *engine)
{
-#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
+#if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H)
ENGINE *e;
#if OPENSSL_VERSION_NUMBER >= 0x00909000L
@@ -869,7 +833,7 @@ CURLcode Curl_ossl_set_engine_default(struct SessionHandle *data)
#ifdef HAVE_OPENSSL_ENGINE_H
if(data->state.engine) {
if(ENGINE_set_default(data->state.engine, ENGINE_METHOD_ALL) > 0) {
- infof(data,"set default crypto engine '%s'\n",
+ infof(data, "set default crypto engine '%s'\n",
ENGINE_get_id(data->state.engine));
}
else {
@@ -889,7 +853,7 @@ CURLcode Curl_ossl_set_engine_default(struct SessionHandle *data)
struct curl_slist *Curl_ossl_engines_list(struct SessionHandle *data)
{
struct curl_slist *list = NULL;
-#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
+#if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H)
struct curl_slist *beg;
ENGINE *e;
@@ -1058,7 +1022,7 @@ static int asn1_output(const ASN1_UTCTIME *tm,
const char *asn1_string;
int gmt=FALSE;
int i;
- int year=0,month=0,day=0,hour=0,minute=0,second=0;
+ int year=0, month=0, day=0, hour=0, minute=0, second=0;
i=tm->length;
asn1_string=(const char *)tm->data;
@@ -1217,14 +1181,14 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
else {
/* we have to look to the last occurrence of a commonName in the
distinguished one to get the most significant one. */
- int j,i=-1 ;
+ int j, i=-1;
/* The following is done because of a bug in 0.9.6b */
unsigned char *nulstr = (unsigned char *)"";
unsigned char *peer_CN = nulstr;
- X509_NAME *name = X509_get_subject_name(server_cert) ;
+ X509_NAME *name = X509_get_subject_name(server_cert);
if(name)
while((j = X509_NAME_get_index_by_NID(name, NID_commonName, i))>=0)
i=j;
@@ -1234,7 +1198,8 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
UTF8 etc. */
if(i>=0) {
- ASN1_STRING *tmp = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name,i));
+ ASN1_STRING *tmp =
+ X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, i));
/* In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input
is already UTF-8 encoded. We check for this case and copy the raw
@@ -1298,7 +1263,135 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
return result;
}
-#endif /* USE_SSLEAY */
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+ !defined(OPENSSL_IS_BORINGSSL)
+static CURLcode verifystatus(struct connectdata *conn,
+ struct ssl_connect_data *connssl)
+{
+ int i, ocsp_status;
+ const unsigned char *p;
+ CURLcode result = CURLE_OK;
+ struct SessionHandle *data = conn->data;
+
+ OCSP_RESPONSE *rsp = NULL;
+ OCSP_BASICRESP *br = NULL;
+ X509_STORE *st = NULL;
+ STACK_OF(X509) *ch = NULL;
+
+ long len = SSL_get_tlsext_status_ocsp_resp(connssl->handle, &p);
+
+ if(!p) {
+ failf(data, "No OCSP response received");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+
+ rsp = d2i_OCSP_RESPONSE(NULL, &p, len);
+ if(!rsp) {
+ failf(data, "Invalid OCSP response");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+
+ ocsp_status = OCSP_response_status(rsp);
+ if(ocsp_status != OCSP_RESPONSE_STATUS_SUCCESSFUL) {
+ failf(data, "Invalid OCSP response status: %s (%d)",
+ OCSP_response_status_str(ocsp_status), ocsp_status);
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+
+ br = OCSP_response_get1_basic(rsp);
+ if(!br) {
+ failf(data, "Invalid OCSP response");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+
+ ch = SSL_get_peer_cert_chain(connssl->handle);
+ st = SSL_CTX_get_cert_store(connssl->ctx);
+
+#if ((OPENSSL_VERSION_NUMBER <= 0x1000201fL) /* Fixed after 1.0.2a */ || \
+ defined(LIBRESSL_VERSION_NUMBER))
+ /* The authorized responder cert in the OCSP response MUST be signed by the
+ peer cert's issuer (see RFC6960 section 4.2.2.2). If that's a root cert,
+ no problem, but if it's an intermediate cert OpenSSL has a bug where it
+ expects this issuer to be present in the chain embedded in the OCSP
+ response. So we add it if necessary. */
+
+ /* First make sure the peer cert chain includes both a peer and an issuer,
+ and the OCSP response contains a responder cert. */
+ if(sk_X509_num(ch) >= 2 && sk_X509_num(br->certs) >= 1) {
+ X509 *responder = sk_X509_value(br->certs, sk_X509_num(br->certs) - 1);
+
+ /* Find issuer of responder cert and add it to the OCSP response chain */
+ for(i = 0; i < sk_X509_num(ch); i++) {
+ X509 *issuer = sk_X509_value(ch, i);
+ if(X509_check_issued(issuer, responder) == X509_V_OK) {
+ if(!OCSP_basic_add1_cert(br, issuer)) {
+ failf(data, "Could not add issuer cert to OCSP response");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+ }
+ }
+ }
+#endif
+
+ if(OCSP_basic_verify(br, ch, st, 0) <= 0) {
+ failf(data, "OCSP response verification failed");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+
+ for(i = 0; i < OCSP_resp_count(br); i++) {
+ int cert_status, crl_reason;
+ OCSP_SINGLERESP *single = NULL;
+
+ ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
+
+ if(!(single = OCSP_resp_get0(br, i)))
+ continue;
+
+ cert_status = OCSP_single_get0_status(single, &crl_reason, &rev,
+ &thisupd, &nextupd);
+
+ if(!OCSP_check_validity(thisupd, nextupd, 300L, -1L)) {
+ failf(data, "OCSP response has expired");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+
+ infof(data, "SSL certificate status: %s (%d)\n",
+ OCSP_cert_status_str(cert_status), cert_status);
+
+ switch(cert_status) {
+ case V_OCSP_CERTSTATUS_GOOD:
+ break;
+
+ case V_OCSP_CERTSTATUS_REVOKED:
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+
+ failf(data, "SSL certificate revocation reason: %s (%d)",
+ OCSP_crl_reason_str(crl_reason), crl_reason);
+ goto end;
+
+ case V_OCSP_CERTSTATUS_UNKNOWN:
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
+ }
+
+end:
+ if(br) OCSP_BASICRESP_free(br);
+ OCSP_RESPONSE_free(rsp);
+
+ return result;
+}
+#endif
+
+#endif /* USE_OPENSSL */
/* The SSL_CTRL_SET_MSG_CALLBACK doesn't exist in ancient OpenSSL versions
and thus this cannot be done there. */
@@ -1339,8 +1432,12 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
return "Client hello";
case SSL3_MT_SERVER_HELLO:
return "Server hello";
+#ifdef SSL3_MT_NEWSESSION_TICKET
+ case SSL3_MT_NEWSESSION_TICKET:
+ return "Newsession Ticket";
+#endif
case SSL3_MT_CERTIFICATE:
- return "CERT";
+ return "Certificate";
case SSL3_MT_SERVER_KEY_EXCHANGE:
return "Server key exchange";
case SSL3_MT_CLIENT_KEY_EXCHANGE:
@@ -1353,6 +1450,10 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
return "CERT verify";
case SSL3_MT_FINISHED:
return "Finished";
+#ifdef SSL3_MT_CERTIFICATE_STATUS
+ case SSL3_MT_CERTIFICATE_STATUS:
+ return "Certificate Status";
+#endif
}
}
return "Unknown";
@@ -1360,12 +1461,22 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
static const char *tls_rt_type(int type)
{
- return (
- type == SSL3_RT_CHANGE_CIPHER_SPEC ? "TLS change cipher, " :
- type == SSL3_RT_ALERT ? "TLS alert, " :
- type == SSL3_RT_HANDSHAKE ? "TLS handshake, " :
- type == SSL3_RT_APPLICATION_DATA ? "TLS app data, " :
- "TLS Unknown, ");
+ switch(type) {
+#ifdef SSL3_RT_HEADER
+ case SSL3_RT_HEADER:
+ return "TLS header";
+#endif
+ case SSL3_RT_CHANGE_CIPHER_SPEC:
+ return "TLS change cipher";
+ case SSL3_RT_ALERT:
+ return "TLS alert";
+ case SSL3_RT_HANDSHAKE:
+ return "TLS handshake";
+ case SSL3_RT_APPLICATION_DATA:
+ return "TLS app data";
+ default:
+ return "TLS Unknown";
+ }
}
@@ -1373,15 +1484,16 @@ static const char *tls_rt_type(int type)
* Our callback from the SSL/TLS layers.
*/
static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
- const void *buf, size_t len, const SSL *ssl,
- struct connectdata *conn)
+ const void *buf, size_t len, SSL *ssl,
+ void *userp)
{
struct SessionHandle *data;
const char *msg_name, *tls_rt_name;
char ssl_buf[1024];
char unknown[32];
int msg_type, txt_len;
- const char *verstr;
+ const char *verstr = NULL;
+ struct connectdata *conn = userp;
if(!conn || !conn->data || !conn->data->set.fdebug ||
(direction != 0 && direction != 1))
@@ -1390,8 +1502,8 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
data = conn->data;
switch(ssl_ver) {
-#ifdef SSL2_VERSION_MAJOR /* removed in recent versions */
- case SSL2_VERSION_MAJOR:
+#ifdef SSL2_VERSION /* removed in recent versions */
+ case SSL2_VERSION:
verstr = "SSLv2";
break;
#endif
@@ -1413,29 +1525,36 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
verstr = "TLSv1.2";
break;
#endif
+ case 0:
+ break;
default:
snprintf(unknown, sizeof(unknown), "(%x)", ssl_ver);
verstr = unknown;
break;
}
- ssl_ver >>= 8; /* check the upper 8 bits only below */
+ if(ssl_ver) {
+ /* the info given when the version is zero is not that useful for us */
- /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
- * always pass-up content-type as 0. But the interesting message-type
- * is at 'buf[0]'.
- */
- if(ssl_ver == SSL3_VERSION_MAJOR && content_type != 0)
- tls_rt_name = tls_rt_type(content_type);
- else
- tls_rt_name = "";
+ ssl_ver >>= 8; /* check the upper 8 bits only below */
- msg_type = *(char*)buf;
- msg_name = ssl_msg_type(ssl_ver, msg_type);
+ /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
+ * always pass-up content-type as 0. But the interesting message-type
+ * is at 'buf[0]'.
+ */
+ if(ssl_ver == SSL3_VERSION_MAJOR && content_type)
+ tls_rt_name = tls_rt_type(content_type);
+ else
+ tls_rt_name = "";
+
+ msg_type = *(char*)buf;
+ msg_name = ssl_msg_type(ssl_ver, msg_type);
- txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s, %s%s (%d):\n",
- verstr, tls_rt_name, msg_name, msg_type);
- Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
+ txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s (%s), %s, %s (%d):\n",
+ verstr, direction?"OUT":"IN",
+ tls_rt_name, msg_name, msg_type);
+ Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
+ }
Curl_debug(data, (direction == 1) ? CURLINFO_SSL_DATA_OUT :
CURLINFO_SSL_DATA_IN, (char *)buf, len, NULL);
@@ -1443,7 +1562,7 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
}
#endif
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
/* ====================================================== */
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
@@ -1452,8 +1571,6 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
# define use_sni(x) Curl_nop_stmt
#endif
-#ifdef USE_NGHTTP2
-
/* Check for OpenSSL 1.0.2 which has ALPN support. */
#undef HAS_ALPN
#if OPENSSL_VERSION_NUMBER >= 0x10002000L \
@@ -1475,6 +1592,23 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
* in is a list of lenght prefixed strings. this function has to select
* the protocol we want to use from the list and write its string into out.
*/
+
+static int
+select_next_protocol(unsigned char **out, unsigned char *outlen,
+ const unsigned char *in, unsigned int inlen,
+ const char *key, unsigned int keylen)
+{
+ unsigned int i;
+ for(i = 0; i + keylen <= inlen; i += in[i] + 1) {
+ if(memcmp(&in[i + 1], key, keylen) == 0) {
+ *out = (unsigned char *) &in[i + 1];
+ *outlen = in[i];
+ return 0;
+ }
+ }
+ return -1;
+}
+
static int
select_next_proto_cb(SSL *ssl,
unsigned char **out, unsigned char *outlen,
@@ -1482,40 +1616,43 @@ select_next_proto_cb(SSL *ssl,
void *arg)
{
struct connectdata *conn = (struct connectdata*) arg;
- int retval = nghttp2_select_next_protocol(out, outlen, in, inlen);
(void)ssl;
- if(retval == 1) {
+#ifdef USE_NGHTTP2
+ if(conn->data->set.httpversion == CURL_HTTP_VERSION_2_0 &&
+ !select_next_protocol(out, outlen, in, inlen, NGHTTP2_PROTO_VERSION_ID,
+ NGHTTP2_PROTO_VERSION_ID_LEN)) {
infof(conn->data, "NPN, negotiated HTTP2 (%s)\n",
NGHTTP2_PROTO_VERSION_ID);
- conn->negnpn = NPN_HTTP2;
+ conn->negnpn = CURL_HTTP_VERSION_2_0;
+ return SSL_TLSEXT_ERR_OK;
}
- else if(retval == 0) {
+#endif
+
+ if(!select_next_protocol(out, outlen, in, inlen, ALPN_HTTP_1_1,
+ ALPN_HTTP_1_1_LENGTH)) {
infof(conn->data, "NPN, negotiated HTTP1.1\n");
- conn->negnpn = NPN_HTTP1_1;
- }
- else {
- infof(conn->data, "NPN, no overlap, use HTTP1.1\n",
- NGHTTP2_PROTO_VERSION_ID);
- *out = (unsigned char*)"http/1.1";
- *outlen = sizeof("http/1.1") - 1;
- conn->negnpn = NPN_HTTP1_1;
+ conn->negnpn = CURL_HTTP_VERSION_1_1;
+ return SSL_TLSEXT_ERR_OK;
}
+ infof(conn->data, "NPN, no overlap, use HTTP1.1\n");
+ *out = (unsigned char *)ALPN_HTTP_1_1;
+ *outlen = ALPN_HTTP_1_1_LENGTH;
+ conn->negnpn = CURL_HTTP_VERSION_1_1;
+
return SSL_TLSEXT_ERR_OK;
}
#endif /* HAS_NPN */
-#endif /* USE_NGHTTP2 */
-
static const char *
-get_ssl_version_txt(SSL_SESSION *session)
+get_ssl_version_txt(SSL *ssl)
{
- if(!session)
+ if(!ssl)
return "";
- switch(session->ssl_version) {
+ switch(SSL_version(ssl)) {
#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
case TLS1_2_VERSION:
return "TLSv1.2";
@@ -1551,9 +1688,6 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
struct in_addr addr;
#endif
#endif
-#ifdef HAS_ALPN
- unsigned char protocols[128];
-#endif
DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
@@ -1572,7 +1706,12 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
case CURL_SSLVERSION_TLSv1_1:
case CURL_SSLVERSION_TLSv1_2:
/* it will be handled later with the context options */
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \
+ !defined(LIBRESSL_VERSION_NUMBER) && !defined(OPENSSL_IS_BORINGSSL)
+ req_method = TLS_client_method();
+#else
req_method = SSLv23_client_method();
+#endif
use_sni(TRUE);
break;
case CURL_SSLVERSION_SSLv2:
@@ -1589,6 +1728,10 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
break;
#endif
case CURL_SSLVERSION_SSLv3:
+#ifdef OPENSSL_NO_SSL3_METHOD
+ failf(data, "OpenSSL was built without SSLv3 support");
+ return CURLE_NOT_BUILT_IN;
+#else
#ifdef USE_TLS_SRP
if(data->set.ssl.authtype == CURL_TLSAUTH_SRP)
return CURLE_SSL_CONNECT_ERROR;
@@ -1596,6 +1739,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
req_method = SSLv3_client_method();
use_sni(FALSE);
break;
+#endif
}
if(connssl->ctx)
@@ -1614,16 +1758,9 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
#ifdef SSL_CTRL_SET_MSG_CALLBACK
if(data->set.fdebug && data->set.verbose) {
- /* the SSL trace callback is only used for verbose logging so we only
- inform about failures of setting it */
- if(!SSL_CTX_callback_ctrl(connssl->ctx, SSL_CTRL_SET_MSG_CALLBACK,
- (void (*)(void))ssl_tls_trace)) {
- infof(data, "SSL: couldn't set callback!\n");
- }
- else if(!SSL_CTX_ctrl(connssl->ctx, SSL_CTRL_SET_MSG_CALLBACK_ARG, 0,
- conn)) {
- infof(data, "SSL: couldn't set callback argument!\n");
- }
+ /* the SSL trace callback is only used for verbose logging */
+ SSL_CTX_set_msg_callback(connssl->ctx, ssl_tls_trace);
+ SSL_CTX_set_msg_callback_arg(connssl->ctx, conn);
}
#endif
@@ -1636,7 +1773,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
The "-no_ticket" option was introduced in Openssl0.9.8j. It's a flag to
disable "rfc4507bis session ticket support". rfc4507bis was later turned
- into the proper RFC5077 it seems: http://tools.ietf.org/html/rfc5077
+ into the proper RFC5077 it seems: https://tools.ietf.org/html/rfc5077
The enabled extension concerns the session management. I wonder how often
libcurl stops a connection and then resumes a TLS session. also, sending
@@ -1656,7 +1793,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
this option regardless of OpenSSL version and SSL_OP_ALL definition.
OpenSSL added a work-around for a SSL 3.0/TLS 1.0 CBC vulnerability
- (http://www.openssl.org/~bodo/tls-cbc.txt). In 0.9.6e they added a bit to
+ (https://www.openssl.org/~bodo/tls-cbc.txt). In 0.9.6e they added a bit to
SSL_OP_ALL that _disables_ that work-around despite the fact that
SSL_OP_ALL is documented to do "rather harmless" workarounds. In order to
keep the secure work-around, the SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS bit
@@ -1749,36 +1886,36 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
SSL_CTX_set_options(connssl->ctx, ctx_options);
-#ifdef USE_NGHTTP2
- if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
#ifdef HAS_NPN
- if(data->set.ssl_enable_npn) {
- SSL_CTX_set_next_proto_select_cb(connssl->ctx, select_next_proto_cb,
- conn);
- }
+ if(data->set.ssl_enable_npn)
+ SSL_CTX_set_next_proto_select_cb(connssl->ctx, select_next_proto_cb, conn);
#endif
#ifdef HAS_ALPN
- if(data->set.ssl_enable_alpn) {
- protocols[0] = NGHTTP2_PROTO_VERSION_ID_LEN;
- memcpy(&protocols[1], NGHTTP2_PROTO_VERSION_ID,
- NGHTTP2_PROTO_VERSION_ID_LEN);
-
- protocols[NGHTTP2_PROTO_VERSION_ID_LEN+1] = ALPN_HTTP_1_1_LENGTH;
- memcpy(&protocols[NGHTTP2_PROTO_VERSION_ID_LEN+2], ALPN_HTTP_1_1,
- ALPN_HTTP_1_1_LENGTH);
+ if(data->set.ssl_enable_alpn) {
+ int cur = 0;
+ unsigned char protocols[128];
- /* expects length prefixed preference ordered list of protocols in wire
- * format
- */
- SSL_CTX_set_alpn_protos(connssl->ctx, protocols,
- NGHTTP2_PROTO_VERSION_ID_LEN + ALPN_HTTP_1_1_LENGTH + 2);
+#ifdef USE_NGHTTP2
+ if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+ protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;
- infof(data, "ALPN, offering %s, %s\n", NGHTTP2_PROTO_VERSION_ID,
- ALPN_HTTP_1_1);
- connssl->asked_for_h2 = TRUE;
+ memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
+ NGHTTP2_PROTO_VERSION_ID_LEN);
+ cur += NGHTTP2_PROTO_VERSION_ID_LEN;
+ infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
}
#endif
+
+ protocols[cur++] = ALPN_HTTP_1_1_LENGTH;
+ memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
+ cur += ALPN_HTTP_1_1_LENGTH;
+ infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
+
+ /* expects length prefixed preference ordered list of protocols in wire
+ * format
+ */
+ SSL_CTX_set_alpn_protos(connssl->ctx, protocols, cur);
}
#endif
@@ -1801,6 +1938,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
failf(data, "failed setting cipher list: %s", ciphers);
return CURLE_SSL_CIPHER;
}
+ infof(data, "Cipher selection: %s\n", ciphers);
#ifdef USE_TLS_SRP
if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
@@ -1810,7 +1948,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
failf(data, "Unable to set SRP user name");
return CURLE_BAD_FUNCTION_ARGUMENT;
}
- if(!SSL_CTX_set_srp_password(connssl->ctx,data->set.ssl.password)) {
+ if(!SSL_CTX_set_srp_password(connssl->ctx, data->set.ssl.password)) {
failf(data, "failed setting SRP password");
return CURLE_BAD_FUNCTION_ARGUMENT;
}
@@ -1832,7 +1970,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
data->set.str[STRING_SSL_CAPATH])) {
if(data->set.ssl.verifypeer) {
/* Fail if we insist on successfully verifying the server. */
- failf(data,"error setting certificate verify locations:\n"
+ failf(data, "error setting certificate verify locations:\n"
" CAfile: %s\n CApath: %s",
data->set.str[STRING_SSL_CAFILE]?
data->set.str[STRING_SSL_CAFILE]: "none",
@@ -1866,9 +2004,9 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
lookup=X509_STORE_add_lookup(SSL_CTX_get_cert_store(connssl->ctx),
X509_LOOKUP_file());
if(!lookup ||
- (!X509_load_crl_file(lookup,data->set.str[STRING_SSL_CRLFILE],
+ (!X509_load_crl_file(lookup, data->set.str[STRING_SSL_CRLFILE],
X509_FILETYPE_PEM)) ) {
- failf(data,"error loading CRL file: %s",
+ failf(data, "error loading CRL file: %s",
data->set.str[STRING_SSL_CRLFILE]);
return CURLE_SSL_CRL_BADFILE;
}
@@ -1883,20 +2021,34 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
data->set.str[STRING_SSL_CRLFILE]: "none");
}
+ /* Try building a chain using issuers in the trusted store first to avoid
+ problems with server-sent legacy intermediates.
+ Newer versions of OpenSSL do alternate chain checking by default which
+ gives us the same fix without as much of a performance hit (slight), so we
+ prefer that if available.
+ https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
+ */
+#if defined(X509_V_FLAG_TRUSTED_FIRST) && !defined(X509_V_FLAG_NO_ALT_CHAINS)
+ if(data->set.ssl.verifypeer) {
+ X509_STORE_set_flags(SSL_CTX_get_cert_store(connssl->ctx),
+ X509_V_FLAG_TRUSTED_FIRST);
+ }
+#endif
+
/* SSL always tries to verify the peer, this only says whether it should
* fail to connect if the verification fails, or if it should continue
* anyway. In the latter case the result of the verification is checked with
* SSL_get_verify_result() below. */
SSL_CTX_set_verify(connssl->ctx,
data->set.ssl.verifypeer?SSL_VERIFY_PEER:SSL_VERIFY_NONE,
- cert_verify_callback);
+ NULL);
/* give application a chance to interfere with SSL set up. */
if(data->set.ssl.fsslctx) {
result = (*data->set.ssl.fsslctx)(data, connssl->ctx,
data->set.ssl.fsslctxp);
if(result) {
- failf(data,"error signaled by ssl ctx callback");
+ failf(data, "error signaled by ssl ctx callback");
return result;
}
}
@@ -1909,6 +2061,13 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
failf(data, "SSL: couldn't create a context (handle)!");
return CURLE_OUT_OF_MEMORY;
}
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+ !defined(OPENSSL_IS_BORINGSSL)
+ if(data->set.ssl.verifystatus)
+ SSL_set_tlsext_status_type(connssl->handle, TLSEXT_STATUSTYPE_ocsp);
+#endif
+
SSL_set_connect_state(connssl->handle);
connssl->server_cert = 0x0;
@@ -1929,7 +2088,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
/* we got a session id, use it! */
if(!SSL_set_session(connssl->handle, ssl_sessionid)) {
failf(data, "SSL: SSL_set_session failed: %s",
- ERR_error_string(ERR_get_error(),NULL));
+ ERR_error_string(ERR_get_error(), NULL));
return CURLE_SSL_CONNECT_ERROR;
}
/* Informational message */
@@ -1939,7 +2098,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
/* pass the raw socket into the SSL layers */
if(!SSL_set_fd(connssl->handle, (int)sockfd)) {
failf(data, "SSL: SSL_set_fd failed: %s",
- ERR_error_string(ERR_get_error(),NULL));
+ ERR_error_string(ERR_get_error(), NULL));
return CURLE_SSL_CONNECT_ERROR;
}
@@ -1978,10 +2137,9 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
else {
/* untreated error */
unsigned long errdetail;
- char error_buffer[256]; /* OpenSSL documents that this must be at least
- 256 bytes long. */
+ char error_buffer[256]=""; /* OpenSSL documents that this must be at
+ least 256 bytes long. */
CURLcode result;
- const char *cert_problem = NULL;
long lerr;
connssl->connecting_state = ssl_connect_2; /* the connection failed,
@@ -2013,9 +2171,10 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
X509_verify_cert_error_string(lerr));
}
else
- cert_problem = "SSL certificate problem, verify that the CA cert is"
- " OK.";
-
+ /* strcpy() is fine here as long as the string fits within
+ error_buffer */
+ strcpy(error_buffer,
+ "SSL certificate problem, check your CA cert");
break;
default:
result = CURLE_SSL_CONNECT_ERROR;
@@ -2036,7 +2195,7 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
}
/* Could be a CERT problem */
- failf(data, "%s%s", cert_problem ? cert_problem : "", error_buffer);
+ failf(data, "%s", error_buffer);
return result;
}
@@ -2047,7 +2206,7 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
/* Informational message */
infof(data, "SSL connection using %s / %s\n",
- get_ssl_version_txt(SSL_get_session(connssl->handle)),
+ get_ssl_version_txt(connssl->handle),
SSL_get_cipher(connssl->handle));
#ifdef HAS_ALPN
@@ -2061,18 +2220,19 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
if(len != 0) {
infof(data, "ALPN, server accepted to use %.*s\n", len, neg_protocol);
+#ifdef USE_NGHTTP2
if(len == NGHTTP2_PROTO_VERSION_ID_LEN &&
- memcmp(NGHTTP2_PROTO_VERSION_ID, neg_protocol, len) == 0) {
- conn->negnpn = NPN_HTTP2;
+ !memcmp(NGHTTP2_PROTO_VERSION_ID, neg_protocol, len)) {
+ conn->negnpn = CURL_HTTP_VERSION_2_0;
}
- else if(len ==
- ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1,
- neg_protocol,
- ALPN_HTTP_1_1_LENGTH) == 0) {
- conn->negnpn = NPN_HTTP1_1;
+ else
+#endif
+ if(len == ALPN_HTTP_1_1_LENGTH &&
+ !memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) {
+ conn->negnpn = CURL_HTTP_VERSION_1_1;
}
}
- else if(connssl->asked_for_h2)
+ else
infof(data, "ALPN, server did not agree to a protocol\n");
}
#endif
@@ -2167,7 +2327,7 @@ static int X509V3_ext(struct SessionHandle *data,
X509_EXTENSION_get_critical(ext)?"(critical)":"");
if(!X509V3_EXT_print(bio_out, ext, 0, 0))
- M_ASN1_OCTET_STRING_print(bio_out, ext->value);
+ ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
BIO_get_mem_ptr(bio_out, &biomem);
@@ -2297,28 +2457,22 @@ static CURLcode get_cert_chain(struct connectdata *conn,
Curl_ssl_push_certinfo(data, i, "Version", bufp); /* hex */
num=X509_get_serialNumber(x);
- if(num->length <= 4) {
- value = ASN1_INTEGER_get(num);
- infof(data," Serial Number: %ld (0x%lx)\n", value, value);
- snprintf(bufp, CERTBUFFERSIZE, "%lx", value);
- }
- else {
+ {
int left = CERTBUFFERSIZE;
ptr = bufp;
- *ptr++ = 0;
- if(num->type == V_ASN1_NEG_INTEGER)
+ if(num->type == V_ASN1_NEG_INTEGER) {
*ptr++='-';
+ left--;
+ }
- for(j=0; (j<num->length) && (left>=4); j++) {
- /* TODO: length restrictions */
- snprintf(ptr, 3, "%02x%c",num->data[j],
- ((j+1 == num->length)?'\n':':'));
- ptr += 3;
- left-=4;
+ for(j=0; (j<num->length) && (left>=3); j++) {
+ snprintf(ptr, left, "%02x", num->data[j]);
+ ptr += 2;
+ left -= 2;
}
if(num->length)
- infof(data," Serial Number: %s\n", bufp);
+ infof(data, " Serial Number: %s\n", bufp);
else
bufp[0]=0;
}
@@ -2427,23 +2581,23 @@ static CURLcode pkp_pin_peer_pubkey(X509* cert, const char *pinnedpubkey)
/* Begin Gyrations to get the subjectPublicKeyInfo */
/* Thanks to Viktor Dukhovni on the OpenSSL mailing list */
- /* http://groups.google.com/group/mailing.openssl.users/browse_thread
+ /* https://groups.google.com/group/mailing.openssl.users/browse_thread
/thread/d61858dae102c6c7 */
len1 = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), NULL);
if(len1 < 1)
break; /* failed */
- /* http://www.openssl.org/docs/crypto/buffer.html */
+ /* https://www.openssl.org/docs/crypto/buffer.html */
buff1 = temp = OPENSSL_malloc(len1);
if(!buff1)
break; /* failed */
- /* http://www.openssl.org/docs/crypto/d2i_X509.html */
+ /* https://www.openssl.org/docs/crypto/d2i_X509.html */
len2 = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), &temp);
/*
* These checks are verifying we got back the same values as when we
- * sized the buffer.Its pretty weak since they should always be the
+ * sized the buffer. It's pretty weak since they should always be the
* same. But it gives us something to test.
*/
if((len1 != len2) || !temp || ((temp - buff1) != len1))
@@ -2455,7 +2609,7 @@ static CURLcode pkp_pin_peer_pubkey(X509* cert, const char *pinnedpubkey)
result = Curl_pin_peer_pubkey(pinnedpubkey, buff1, len1);
} while(0);
- /* http://www.openssl.org/docs/crypto/buffer.html */
+ /* https://www.openssl.org/docs/crypto/buffer.html */
if(buff1)
OPENSSL_free(buff1);
@@ -2533,7 +2687,7 @@ static CURLcode servercert(struct connectdata *conn,
/* e.g. match issuer name with provided issuer certificate */
if(data->set.str[STRING_SSL_ISSUERCERT]) {
- fp = fopen(data->set.str[STRING_SSL_ISSUERCERT], "r");
+ fp = fopen(data->set.str[STRING_SSL_ISSUERCERT], FOPEN_READTEXT);
if(!fp) {
if(strict)
failf(data, "SSL: Unable to open issuer cert (%s)",
@@ -2556,7 +2710,7 @@ static CURLcode servercert(struct connectdata *conn,
fclose(fp);
- if(X509_check_issued(issuer,connssl->server_cert) != X509_V_OK) {
+ if(X509_check_issued(issuer, connssl->server_cert) != X509_V_OK) {
if(strict)
failf(data, "SSL: Certificate issuer check failed (%s)",
data->set.str[STRING_SSL_ISSUERCERT]);
@@ -2592,6 +2746,22 @@ static CURLcode servercert(struct connectdata *conn,
infof(data, "\t SSL certificate verify ok.\n");
}
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+ !defined(OPENSSL_IS_BORINGSSL)
+ if(data->set.ssl.verifystatus) {
+ result = verifystatus(conn, connssl);
+ if(result) {
+ X509_free(connssl->server_cert);
+ connssl->server_cert = NULL;
+ return result;
+ }
+ }
+#endif
+
+ if(!strict)
+ /* when not strict, we don't bother about the verify cert problems */
+ result = CURLE_OK;
+
ptr = data->set.str[STRING_SSL_PINNEDPUBLICKEY];
if(!result && ptr) {
result = pkp_pin_peer_pubkey(connssl->server_cert, ptr);
@@ -2617,25 +2787,11 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
-#ifdef HAVE_SSL_GET1_SESSION
our_ssl_sessionid = SSL_get1_session(connssl->handle);
- /* SSL_get1_session() will increment the reference
- count and the session will stay in memory until explicitly freed with
- SSL_SESSION_free(3), regardless of its state.
- This function was introduced in openssl 0.9.5a. */
-#else
- our_ssl_sessionid = SSL_get_session(connssl->handle);
-
- /* if SSL_get1_session() is unavailable, use SSL_get_session().
- This is an inferior option because the session can be flushed
- at any time by openssl. It is included only so curl compiles
- under versions of openssl < 0.9.5a.
-
- WARNING: How curl behaves if it's session is flushed is
- untested.
- */
-#endif
+ /* SSL_get1_session() will increment the reference count and the session
+ will stay in memory until explicitly freed with SSL_SESSION_free(3),
+ regardless of its state. */
incache = !(Curl_ssl_getsessionid(conn, &old_ssl_sessionid, NULL));
if(incache) {
@@ -2654,7 +2810,6 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
return result;
}
}
-#ifdef HAVE_SSL_GET1_SESSION
else {
/* Session was incache, so refcount already incremented earlier.
* Avoid further increments with each SSL_get1_session() call.
@@ -2662,7 +2817,6 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
*/
SSL_SESSION_free(our_ssl_sessionid);
}
-#endif
/*
* We check certificates to authenticate the server; otherwise we risk
@@ -2671,10 +2825,8 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
* operations.
*/
- if(!data->set.ssl.verifypeer && !data->set.ssl.verifyhost)
- (void)servercert(conn, connssl, FALSE);
- else
- result = servercert(conn, connssl, TRUE);
+ result = servercert(conn, connssl,
+ (data->set.ssl.verifypeer || data->set.ssl.verifyhost));
if(!result)
connssl->connecting_state = ssl_connect_done;
@@ -2912,7 +3064,7 @@ static ssize_t ossl_recv(struct connectdata *conn, /* connection data */
default:
/* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return
value/errno" */
- /* http://www.openssl.org/docs/crypto/ERR_get_error.html */
+ /* https://www.openssl.org/docs/crypto/ERR_get_error.html */
sslerror = ERR_get_error();
if((nread < 0) || sslerror) {
/* If the return code was negative or there actually is an error in the
@@ -2935,8 +3087,11 @@ size_t Curl_ossl_version(char *buffer, size_t size)
to OpenSSL in all other aspects */
return snprintf(buffer, size, "yassl/%s", YASSL_VERSION);
#else /* YASSL_VERSION */
+#ifdef OPENSSL_IS_BORINGSSL
+ return snprintf(buffer, size, "BoringSSL");
+#else /* OPENSSL_IS_BORINGSSL */
-#if(SSLEAY_VERSION_NUMBER >= 0x905000)
+#if(OPENSSL_VERSION_NUMBER >= 0x905000)
{
char sub[3];
unsigned long ssleay_value;
@@ -2964,47 +3119,44 @@ size_t Curl_ossl_version(char *buffer, size_t size)
}
return snprintf(buffer, size, "%s/%lx.%lx.%lx%s",
-#ifdef OPENSSL_IS_BORINGSSL
- "BoringSSL"
-#else
#ifdef LIBRESSL_VERSION_NUMBER
"LibreSSL"
#else
"OpenSSL"
#endif
-#endif
, (ssleay_value>>28)&0xf,
(ssleay_value>>20)&0xff,
(ssleay_value>>12)&0xff,
sub);
}
-#else /* SSLEAY_VERSION_NUMBER is less than 0.9.5 */
+#else /* OPENSSL_VERSION_NUMBER is less than 0.9.5 */
-#if(SSLEAY_VERSION_NUMBER >= 0x900000)
+#if(OPENSSL_VERSION_NUMBER >= 0x900000)
return snprintf(buffer, size, "OpenSSL/%lx.%lx.%lx",
- (SSLEAY_VERSION_NUMBER>>28)&0xff,
- (SSLEAY_VERSION_NUMBER>>20)&0xff,
- (SSLEAY_VERSION_NUMBER>>12)&0xf);
+ (OPENSSL_VERSION_NUMBER>>28)&0xff,
+ (OPENSSL_VERSION_NUMBER>>20)&0xff,
+ (OPENSSL_VERSION_NUMBER>>12)&0xf);
-#else /* (SSLEAY_VERSION_NUMBER >= 0x900000) */
+#else /* (OPENSSL_VERSION_NUMBER >= 0x900000) */
{
char sub[2];
sub[1]='\0';
- if(SSLEAY_VERSION_NUMBER&0x0f) {
- sub[0]=(SSLEAY_VERSION_NUMBER&0x0f) + 'a' -1;
+ if(OPENSSL_VERSION_NUMBER&0x0f) {
+ sub[0]=(OPENSSL_VERSION_NUMBER&0x0f) + 'a' -1;
}
else
sub[0]='\0';
return snprintf(buffer, size, "SSL/%x.%x.%x%s",
- (SSLEAY_VERSION_NUMBER>>12)&0xff,
- (SSLEAY_VERSION_NUMBER>>8)&0xf,
- (SSLEAY_VERSION_NUMBER>>4)&0xf, sub);
+ (OPENSSL_VERSION_NUMBER>>12)&0xff,
+ (OPENSSL_VERSION_NUMBER>>8)&0xf,
+ (OPENSSL_VERSION_NUMBER>>4)&0xf, sub);
}
-#endif /* (SSLEAY_VERSION_NUMBER >= 0x900000) */
-#endif /* SSLEAY_VERSION_NUMBER is less than 0.9.5 */
+#endif /* (OPENSSL_VERSION_NUMBER >= 0x900000) */
+#endif /* OPENSSL_VERSION_NUMBER is less than 0.9.5 */
+#endif /* OPENSSL_IS_BORINGSSL */
#endif /* YASSL_VERSION */
}
@@ -3012,8 +3164,9 @@ size_t Curl_ossl_version(char *buffer, size_t size)
int Curl_ossl_random(struct SessionHandle *data, unsigned char *entropy,
size_t length)
{
- if(data)
+ if(data) {
Curl_ossl_seed(data); /* Initiate the seed if not already done */
+ }
RAND_bytes(entropy, curlx_uztosi(length));
return 0; /* 0 as in no problem */
}
@@ -3029,4 +3182,28 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
MD5_Update(&MD5pw, tmp, tmplen);
MD5_Final(md5sum, &MD5pw);
}
-#endif /* USE_SSLEAY */
+
+#ifndef OPENSSL_NO_SHA256
+void Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum /* output */,
+ size_t unused)
+{
+ SHA256_CTX SHA256pw;
+ (void)unused;
+ SHA256_Init(&SHA256pw);
+ SHA256_Update(&SHA256pw, tmp, tmplen);
+ SHA256_Final(sha256sum, &SHA256pw);
+}
+#endif
+
+bool Curl_ossl_cert_status_request(void)
+{
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+ !defined(OPENSSL_IS_BORINGSSL)
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+#endif /* USE_OPENSSL */
diff --git a/lib/vtls/openssl.h b/lib/vtls/openssl.h
index 9f5f3a28f..a1f347a05 100644
--- a/lib/vtls/openssl.h
+++ b/lib/vtls/openssl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -24,7 +24,7 @@
#include "curl_setup.h"
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
/*
* This header should only be needed to get included by vtls.c and openssl.c
*/
@@ -72,6 +72,15 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *md5sum /* output */,
size_t unused);
+void Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *sha256sum /* output */,
+ size_t unused);
+
+bool Curl_ossl_cert_status_request(void);
+
+/* Set the API backend definition to OpenSSL */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL
/* this backend supports the CAPATH option */
#define have_curlssl_ca_path 1
@@ -99,9 +108,13 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) Curl_ossl_data_pending(x,y)
#define curlssl_random(x,y,z) Curl_ossl_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_ossl_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL
+#ifndef OPENSSL_NO_SHA256
+#define curlssl_sha256sum(a,b,c,d) Curl_ossl_sha256sum(a,b,c,d)
+#endif
+#define curlssl_cert_status_request() Curl_ossl_cert_status_request()
-#define DEFAULT_CIPHER_SELECTION "ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4"
+#define DEFAULT_CIPHER_SELECTION \
+ "ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH"
-#endif /* USE_SSLEAY */
+#endif /* USE_OPENSSL */
#endif /* HEADER_CURL_SSLUSE_H */
diff --git a/lib/vtls/polarssl.c b/lib/vtls/polarssl.c
index 05fcfc208..066c055e6 100644
--- a/lib/vtls/polarssl.c
+++ b/lib/vtls/polarssl.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -55,9 +55,7 @@
#include "select.h"
#include "rawstr.h"
#include "polarssl_threadlock.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -120,11 +118,8 @@ static void polarssl_debug(void *context, int level, const char *line)
#endif
/* ALPN for http2? */
-#ifdef USE_NGHTTP2
-# undef HAS_ALPN
-# ifdef POLARSSL_SSL_ALPN
-# define HAS_ALPN
-# endif
+#ifdef POLARSSL_SSL_ALPN
+# define HAS_ALPN
#endif
static Curl_recv polarssl_recv;
@@ -289,27 +284,36 @@ polarssl_connect_step1(struct connectdata *conn,
switch(data->set.ssl.version) {
default:
case CURL_SSLVERSION_DEFAULT:
+ case CURL_SSLVERSION_TLSv1:
ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
SSL_MINOR_VERSION_1);
break;
case CURL_SSLVERSION_SSLv3:
ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
SSL_MINOR_VERSION_0);
+ ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+ SSL_MINOR_VERSION_0);
infof(data, "PolarSSL: Forced min. SSL Version to be SSLv3\n");
break;
case CURL_SSLVERSION_TLSv1_0:
ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
SSL_MINOR_VERSION_1);
+ ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+ SSL_MINOR_VERSION_1);
infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.0\n");
break;
case CURL_SSLVERSION_TLSv1_1:
ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
SSL_MINOR_VERSION_2);
+ ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+ SSL_MINOR_VERSION_2);
infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.1\n");
break;
case CURL_SSLVERSION_TLSv1_2:
ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
SSL_MINOR_VERSION_3);
+ ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+ SSL_MINOR_VERSION_3);
infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.2\n");
break;
}
@@ -350,16 +354,23 @@ polarssl_connect_step1(struct connectdata *conn,
}
#ifdef HAS_ALPN
- if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
- if(data->set.ssl_enable_alpn) {
- static const char* protocols[] = {
- NGHTTP2_PROTO_VERSION_ID, ALPN_HTTP_1_1, NULL
- };
- ssl_set_alpn_protocols(&connssl->ssl, protocols);
- infof(data, "ALPN, offering %s, %s\n", protocols[0],
- protocols[1]);
- connssl->asked_for_h2 = TRUE;
+ if(data->set.ssl_enable_alpn) {
+ static const char* protocols[3];
+ int cur = 0;
+
+#ifdef USE_NGHTTP2
+ if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+ protocols[cur++] = NGHTTP2_PROTO_VERSION_ID;
+ infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
}
+#endif
+
+ protocols[cur++] = ALPN_HTTP_1_1;
+ infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
+
+ protocols[cur] = NULL;
+
+ ssl_set_alpn_protocols(&connssl->ssl, protocols);
}
#endif
@@ -381,47 +392,37 @@ polarssl_connect_step2(struct connectdata *conn,
struct ssl_connect_data* connssl = &conn->ssl[sockindex];
char buffer[1024];
-#ifdef HAS_ALPN
- const char* next_protocol;
-#endif
-
char errorbuf[128];
errorbuf[0] = 0;
conn->recv[sockindex] = polarssl_recv;
conn->send[sockindex] = polarssl_send;
- for(;;) {
- if(!(ret = ssl_handshake(&connssl->ssl)))
- break;
- else if(ret != POLARSSL_ERR_NET_WANT_READ &&
- ret != POLARSSL_ERR_NET_WANT_WRITE) {
-#ifdef POLARSSL_ERROR_C
- error_strerror(ret, errorbuf, sizeof(errorbuf));
-#endif /* POLARSSL_ERROR_C */
- failf(data, "ssl_handshake returned - PolarSSL: (-0x%04X) %s",
- -ret, errorbuf);
+ ret = ssl_handshake(&connssl->ssl);
- return CURLE_SSL_CONNECT_ERROR;
- }
- else {
- if(ret == POLARSSL_ERR_NET_WANT_READ) {
- connssl->connecting_state = ssl_connect_2_reading;
- return CURLE_OK;
- }
- if(ret == POLARSSL_ERR_NET_WANT_WRITE) {
- connssl->connecting_state = ssl_connect_2_writing;
- return CURLE_OK;
- }
- failf(data, "SSL_connect failed with error %d.", ret);
- return CURLE_SSL_CONNECT_ERROR;
+ switch(ret) {
+ case 0:
+ break;
- }
+ case POLARSSL_ERR_NET_WANT_READ:
+ connssl->connecting_state = ssl_connect_2_reading;
+ return CURLE_OK;
+
+ case POLARSSL_ERR_NET_WANT_WRITE:
+ connssl->connecting_state = ssl_connect_2_writing;
+ return CURLE_OK;
+
+ default:
+#ifdef POLARSSL_ERROR_C
+ error_strerror(ret, errorbuf, sizeof(errorbuf));
+#endif /* POLARSSL_ERROR_C */
+ failf(data, "ssl_handshake returned - PolarSSL: (-0x%04X) %s",
+ -ret, errorbuf);
+ return CURLE_SSL_CONNECT_ERROR;
}
infof(data, "PolarSSL: Handshake complete, cipher is %s\n",
- ssl_get_ciphersuite(&conn->ssl[sockindex].ssl)
- );
+ ssl_get_ciphersuite(&conn->ssl[sockindex].ssl) );
ret = ssl_get_verify_result(&conn->ssl[sockindex].ssl);
@@ -454,22 +455,24 @@ polarssl_connect_step2(struct connectdata *conn,
#ifdef HAS_ALPN
if(data->set.ssl_enable_alpn) {
- next_protocol = ssl_get_alpn_protocol(&connssl->ssl);
+ const char *next_protocol = ssl_get_alpn_protocol(&connssl->ssl);
if(next_protocol != NULL) {
infof(data, "ALPN, server accepted to use %s\n", next_protocol);
- if(strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
+#ifdef USE_NGHTTP2
+ if(!strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
NGHTTP2_PROTO_VERSION_ID_LEN)) {
- conn->negnpn = NPN_HTTP2;
+ conn->negnpn = CURL_HTTP_VERSION_2_0;
}
- else if(strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) {
- conn->negnpn = NPN_HTTP1_1;
+ else
+#endif
+ if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) {
+ conn->negnpn = CURL_HTTP_VERSION_1_1;
}
}
- else if(connssl->asked_for_h2) {
+ else
infof(data, "ALPN, server did not agree to a protocol\n");
- }
}
#endif
@@ -487,7 +490,7 @@ polarssl_connect_step3(struct connectdata *conn,
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct SessionHandle *data = conn->data;
void *old_ssl_sessionid = NULL;
- ssl_session *our_ssl_sessionid = &conn->ssl[sockindex].ssn ;
+ ssl_session *our_ssl_sessionid = &conn->ssl[sockindex].ssn;
bool incache;
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
@@ -544,11 +547,6 @@ static ssize_t polarssl_send(struct connectdata *conn,
return ret;
}
-void Curl_polarssl_close_all(struct SessionHandle *data)
-{
- (void)data;
-}
-
void Curl_polarssl_close(struct connectdata *conn, int sockindex)
{
rsa_free(&conn->ssl[sockindex].rsa);
@@ -589,11 +587,15 @@ void Curl_polarssl_session_free(void *ptr)
free(ptr);
}
+/* 1.3.10 was the first rebranded version. All new releases (in 1.3 branch and
+ higher) will be mbed TLS branded.. */
+
size_t Curl_polarssl_version(char *buffer, size_t size)
{
unsigned int version = version_get_number();
- return snprintf(buffer, size, "PolarSSL/%d.%d.%d", version>>24,
- (version>>16)&0xff, (version>>8)&0xff);
+ return snprintf(buffer, size, "%s/%d.%d.%d",
+ version >= 0x01030A00?"mbedTLS":"PolarSSL",
+ version>>24, (version>>16)&0xff, (version>>8)&0xff);
}
static CURLcode
diff --git a/lib/vtls/polarssl.h b/lib/vtls/polarssl.h
index 57dfb6763..f980dbb2e 100644
--- a/lib/vtls/polarssl.h
+++ b/lib/vtls/polarssl.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -37,10 +37,6 @@ CURLcode Curl_polarssl_connect_nonblocking(struct connectdata *conn,
int sockindex,
bool *done);
-/* tell PolarSSL to close down all open information regarding connections (and
- thus session ID caching etc) */
-void Curl_polarssl_close_all(struct SessionHandle *data);
-
/* close a SSL connection */
void Curl_polarssl_close(struct connectdata *conn, int sockindex);
@@ -48,6 +44,9 @@ void Curl_polarssl_session_free(void *ptr);
size_t Curl_polarssl_version(char *buffer, size_t size);
int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
+/* Set the API backend definition to PolarSSL */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL
+
/* this backend supports the CAPATH option */
#define have_curlssl_ca_path 1
@@ -57,7 +56,7 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
#define curlssl_connect Curl_polarssl_connect
#define curlssl_connect_nonblocking Curl_polarssl_connect_nonblocking
#define curlssl_session_free(x) Curl_polarssl_session_free(x)
-#define curlssl_close_all Curl_polarssl_close_all
+#define curlssl_close_all(x) ((void)x)
#define curlssl_close Curl_polarssl_close
#define curlssl_shutdown(x,y) 0
#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -66,7 +65,6 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
#define curlssl_version Curl_polarssl_version
#define curlssl_check_cxn(x) ((void)x, -1)
#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL
/* This might cause libcurl to use a weeker random!
TODO: implement proper use of Polarssl's CTR-DRBG or HMAC-DRBG and use that
diff --git a/lib/vtls/polarssl_threadlock.c b/lib/vtls/polarssl_threadlock.c
index ad1871537..62abf43b2 100644
--- a/lib/vtls/polarssl_threadlock.c
+++ b/lib/vtls/polarssl_threadlock.c
@@ -36,10 +36,7 @@
#endif
#include "polarssl_threadlock.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
diff --git a/lib/vtls/curl_schannel.c b/lib/vtls/schannel.c
index b3fe52695..2174e21a3 100644
--- a/lib/vtls/curl_schannel.c
+++ b/lib/vtls/schannel.c
@@ -5,9 +5,9 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Marc Hoersken, <info@marc-hoersken.de>
+ * Copyright (C) 2012 - 2015, Marc Hoersken, <info@marc-hoersken.de>
* Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -38,19 +38,6 @@
* Thanks for code and inspiration!
*/
-/*
- * TODO list for TLS/SSL implementation:
- * - implement client certificate authentication
- * - implement custom server certificate validation
- * - implement cipher/algorithm option
- *
- * Related articles on MSDN:
- * - Getting a Certificate for Schannel
- * http://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
- * - Specifying Schannel Ciphers and Cipher Strengths
- * http://msdn.microsoft.com/en-us/library/windows/desktop/aa380161.aspx
- */
-
#include "curl_setup.h"
#ifdef USE_SCHANNEL
@@ -60,7 +47,7 @@
#endif
#include "curl_sspi.h"
-#include "curl_schannel.h"
+#include "schannel.h"
#include "vtls.h"
#include "sendf.h"
#include "connect.h" /* for the connect timeout */
@@ -69,10 +56,7 @@
#include "inet_pton.h" /* for IP addr SNI check */
#include "curl_multibyte.h"
#include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -121,7 +105,7 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
struct in6_addr addr6;
#endif
TCHAR *host_name;
- CURLcode code;
+ CURLcode result;
infof(data, "schannel: SSL/TLS connection with %s port %hu (step 1/3)\n",
conn->host.name, conn->remote_port);
@@ -141,56 +125,64 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
/* certificate validation on CE doesn't seem to work right; we'll
do it following a more manual process. */
schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
- SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
- SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+ SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+ SCH_CRED_IGNORE_REVOCATION_OFFLINE;
#else
- schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION |
- SCH_CRED_REVOCATION_CHECK_CHAIN;
+ schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;
+ if(data->set.ssl_no_revoke)
+ schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+ SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+ else
+ schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
#endif
- infof(data, "schannel: checking server certificate revocation\n");
+ if(data->set.ssl_no_revoke)
+ infof(data, "schannel: disabled server certificate revocation "
+ "checks\n");
+ else
+ infof(data, "schannel: checking server certificate revocation\n");
}
else {
schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
- SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
- SCH_CRED_IGNORE_REVOCATION_OFFLINE;
- infof(data, "schannel: disable server certificate revocation checks\n");
+ SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+ SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+ infof(data, "schannel: disabled server certificate revocation checks\n");
}
if(!data->set.ssl.verifyhost) {
schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
infof(data, "schannel: verifyhost setting prevents Schannel from "
- "comparing the supplied target name with the subject "
- "names in server certificates. Also disables SNI.\n");
+ "comparing the supplied target name with the subject "
+ "names in server certificates. Also disables SNI.\n");
}
switch(data->set.ssl.version) {
- default:
- case CURL_SSLVERSION_DEFAULT:
- case CURL_SSLVERSION_TLSv1:
- schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
- SP_PROT_TLS1_1_CLIENT |
- SP_PROT_TLS1_2_CLIENT;
- break;
- case CURL_SSLVERSION_TLSv1_0:
- schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT;
- break;
- case CURL_SSLVERSION_TLSv1_1:
- schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_1_CLIENT;
- break;
- case CURL_SSLVERSION_TLSv1_2:
- schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;
- break;
- case CURL_SSLVERSION_SSLv3:
- schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;
- break;
- case CURL_SSLVERSION_SSLv2:
- schannel_cred.grbitEnabledProtocols = SP_PROT_SSL2_CLIENT;
- break;
+ default:
+ case CURL_SSLVERSION_DEFAULT:
+ case CURL_SSLVERSION_TLSv1:
+ schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
+ SP_PROT_TLS1_1_CLIENT |
+ SP_PROT_TLS1_2_CLIENT;
+ break;
+ case CURL_SSLVERSION_TLSv1_0:
+ schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT;
+ break;
+ case CURL_SSLVERSION_TLSv1_1:
+ schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_1_CLIENT;
+ break;
+ case CURL_SSLVERSION_TLSv1_2:
+ schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;
+ break;
+ case CURL_SSLVERSION_SSLv3:
+ schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;
+ break;
+ case CURL_SSLVERSION_SSLv2:
+ schannel_cred.grbitEnabledProtocols = SP_PROT_SSL2_CLIENT;
+ break;
}
/* allocate memory for the re-usable credential handle */
connssl->cred = (struct curl_schannel_cred *)
- malloc(sizeof(struct curl_schannel_cred));
+ malloc(sizeof(struct curl_schannel_cred));
if(!connssl->cred) {
failf(data, "schannel: unable to allocate memory");
return CURLE_OUT_OF_MEMORY;
@@ -198,9 +190,12 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
memset(connssl->cred, 0, sizeof(struct curl_schannel_cred));
/* http://msdn.microsoft.com/en-us/library/windows/desktop/aa374716.aspx */
- sspi_status = s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
- SECPKG_CRED_OUTBOUND, NULL, &schannel_cred, NULL, NULL,
- &connssl->cred->cred_handle, &connssl->cred->time_stamp);
+ sspi_status =
+ s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
+ SECPKG_CRED_OUTBOUND, NULL,
+ &schannel_cred, NULL, NULL,
+ &connssl->cred->cred_handle,
+ &connssl->cred->time_stamp);
if(sspi_status != SEC_E_OK) {
if(sspi_status == SEC_E_WRONG_PRINCIPAL)
@@ -229,12 +224,12 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
/* setup request flags */
connssl->req_flags = ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT |
- ISC_REQ_CONFIDENTIALITY | ISC_REQ_ALLOCATE_MEMORY |
- ISC_REQ_STREAM;
+ ISC_REQ_CONFIDENTIALITY | ISC_REQ_ALLOCATE_MEMORY |
+ ISC_REQ_STREAM;
/* allocate memory for the security context handle */
connssl->ctxt = (struct curl_schannel_ctxt *)
- malloc(sizeof(struct curl_schannel_ctxt));
+ malloc(sizeof(struct curl_schannel_ctxt));
if(!connssl->ctxt) {
failf(data, "schannel: unable to allocate memory");
return CURLE_OUT_OF_MEMORY;
@@ -269,10 +264,10 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
"sending %lu bytes...\n", outbuf.cbBuffer);
/* send initial handshake data which is now stored in output buffer */
- code = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
- outbuf.cbBuffer, &written);
+ result = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
+ outbuf.cbBuffer, &written);
s_pSecFn->FreeContextBuffer(outbuf.pvBuffer);
- if((code != CURLE_OK) || (outbuf.cbBuffer != (size_t)written)) {
+ if((result != CURLE_OK) || (outbuf.cbBuffer != (size_t) written)) {
failf(data, "schannel: failed to send initial handshake data: "
"sent %zd of %lu bytes", written, outbuf.cbBuffer);
return CURLE_SSL_CONNECT_ERROR;
@@ -281,6 +276,10 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
infof(data, "schannel: sent initial handshake data: "
"sent %zd bytes\n", written);
+ connssl->recv_unrecoverable_err = CURLE_OK;
+ connssl->recv_sspi_close_notify = false;
+ connssl->recv_connection_closed = false;
+
/* continue to second handshake step */
connssl->connecting_state = ssl_connect_2;
@@ -296,13 +295,13 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
unsigned char *reallocated_buffer;
size_t reallocated_length;
- SecBuffer outbuf[2];
+ SecBuffer outbuf[3];
SecBufferDesc outbuf_desc;
SecBuffer inbuf[2];
SecBufferDesc inbuf_desc;
SECURITY_STATUS sspi_status = SEC_E_OK;
TCHAR *host_name;
- CURLcode code;
+ CURLcode result;
bool doread;
doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE;
@@ -313,6 +312,17 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
if(!connssl->cred || !connssl->ctxt)
return CURLE_SSL_CONNECT_ERROR;
+ /* buffer to store previously received and decrypted data */
+ if(connssl->decdata_buffer == NULL) {
+ connssl->decdata_offset = 0;
+ connssl->decdata_length = CURL_SCHANNEL_BUFFER_INIT_SIZE;
+ connssl->decdata_buffer = malloc(connssl->decdata_length);
+ if(connssl->decdata_buffer == NULL) {
+ failf(data, "schannel: unable to allocate memory");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+
/* buffer to store previously received and encrypted data */
if(connssl->encdata_buffer == NULL) {
connssl->encdata_offset = 0;
@@ -329,7 +339,7 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
CURL_SCHANNEL_BUFFER_FREE_SIZE) {
/* increase internal encrypted data buffer */
reallocated_length = connssl->encdata_offset +
- CURL_SCHANNEL_BUFFER_FREE_SIZE;
+ CURL_SCHANNEL_BUFFER_FREE_SIZE;
reallocated_buffer = realloc(connssl->encdata_buffer,
reallocated_length);
@@ -346,18 +356,20 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
for(;;) {
if(doread) {
/* read encrypted handshake data from socket */
- code = Curl_read_plain(conn->sock[sockindex],
- (char *) (connssl->encdata_buffer + connssl->encdata_offset),
- connssl->encdata_length - connssl->encdata_offset,
- &nread);
- if(code == CURLE_AGAIN) {
+ result = Curl_read_plain(conn->sock[sockindex],
+ (char *) (connssl->encdata_buffer +
+ connssl->encdata_offset),
+ connssl->encdata_length -
+ connssl->encdata_offset,
+ &nread);
+ if(result == CURLE_AGAIN) {
if(connssl->connecting_state != ssl_connect_2_writing)
connssl->connecting_state = ssl_connect_2_reading;
infof(data, "schannel: failed to receive handshake, "
"need more data\n");
return CURLE_OK;
}
- else if((code != CURLE_OK) || (nread == 0)) {
+ else if((result != CURLE_OK) || (nread == 0)) {
failf(data, "schannel: failed to receive handshake, "
"SSL/TLS connection failed");
return CURLE_SSL_CONNECT_ERROR;
@@ -368,7 +380,7 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
}
infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
- connssl->encdata_offset, connssl->encdata_length);
+ connssl->encdata_offset, connssl->encdata_length);
/* setup input buffers */
InitSecBuffer(&inbuf[0], SECBUFFER_TOKEN, malloc(connssl->encdata_offset),
@@ -379,7 +391,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
/* setup output buffers */
InitSecBuffer(&outbuf[0], SECBUFFER_TOKEN, NULL, 0);
InitSecBuffer(&outbuf[1], SECBUFFER_ALERT, NULL, 0);
- InitSecBufferDesc(&outbuf_desc, outbuf, 2);
+ InitSecBuffer(&outbuf[2], SECBUFFER_EMPTY, NULL, 0);
+ InitSecBufferDesc(&outbuf_desc, outbuf, 3);
if(inbuf[0].pvBuffer == NULL) {
failf(data, "schannel: unable to allocate memory");
@@ -413,19 +426,31 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
return CURLE_OK;
}
+ /* If the server has requested a client certificate, attempt to continue
+ the handshake without one. This will allow connections to servers which
+ request a client certificate but do not require it. */
+ if(sspi_status == SEC_I_INCOMPLETE_CREDENTIALS &&
+ !(connssl->req_flags & ISC_REQ_USE_SUPPLIED_CREDS)) {
+ connssl->req_flags |= ISC_REQ_USE_SUPPLIED_CREDS;
+ connssl->connecting_state = ssl_connect_2_writing;
+ infof(data, "schannel: a client certificate has been requested\n");
+ return CURLE_OK;
+ }
+
/* check if the handshake needs to be continued */
if(sspi_status == SEC_I_CONTINUE_NEEDED || sspi_status == SEC_E_OK) {
- for(i = 0; i < 2; i++) {
+ for(i = 0; i < 3; i++) {
/* search for handshake tokens that need to be send */
if(outbuf[i].BufferType == SECBUFFER_TOKEN && outbuf[i].cbBuffer > 0) {
infof(data, "schannel: sending next handshake data: "
"sending %lu bytes...\n", outbuf[i].cbBuffer);
/* send handshake token to server */
- code = Curl_write_plain(conn, conn->sock[sockindex],
- outbuf[i].pvBuffer, outbuf[i].cbBuffer,
- &written);
- if((code != CURLE_OK) || (outbuf[i].cbBuffer != (size_t)written)) {
+ result = Curl_write_plain(conn, conn->sock[sockindex],
+ outbuf[i].pvBuffer, outbuf[i].cbBuffer,
+ &written);
+ if((result != CURLE_OK) ||
+ (outbuf[i].cbBuffer != (size_t) written)) {
failf(data, "schannel: failed to send next handshake data: "
"sent %zd of %lu bytes", written, outbuf[i].cbBuffer);
return CURLE_SSL_CONNECT_ERROR;
@@ -452,21 +477,21 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
if(inbuf[1].BufferType == SECBUFFER_EXTRA && inbuf[1].cbBuffer > 0) {
infof(data, "schannel: encrypted data length: %lu\n", inbuf[1].cbBuffer);
/*
- There are two cases where we could be getting extra data here:
- 1) If we're renegotiating a connection and the handshake is already
- complete (from the server perspective), it can encrypted app data
- (not handshake data) in an extra buffer at this point.
- 2) (sspi_status == SEC_I_CONTINUE_NEEDED) We are negotiating a
- connection and this extra data is part of the handshake.
- We should process the data immediately; waiting for the socket to
- be ready may fail since the server is done sending handshake data.
- */
+ There are two cases where we could be getting extra data here:
+ 1) If we're renegotiating a connection and the handshake is already
+ complete (from the server perspective), it can encrypted app data
+ (not handshake data) in an extra buffer at this point.
+ 2) (sspi_status == SEC_I_CONTINUE_NEEDED) We are negotiating a
+ connection and this extra data is part of the handshake.
+ We should process the data immediately; waiting for the socket to
+ be ready may fail since the server is done sending handshake data.
+ */
/* check if the remaining data is less than the total amount
and therefore begins after the already processed data */
if(connssl->encdata_offset > inbuf[1].cbBuffer) {
memmove(connssl->encdata_buffer,
(connssl->encdata_buffer + connssl->encdata_offset) -
- inbuf[1].cbBuffer, inbuf[1].cbBuffer);
+ inbuf[1].cbBuffer, inbuf[1].cbBuffer);
connssl->encdata_offset = inbuf[1].cbBuffer;
if(sspi_status == SEC_I_CONTINUE_NEEDED) {
doread = FALSE;
@@ -691,14 +716,14 @@ schannel_send(struct connectdata *conn, int sockindex,
SecBuffer outbuf[4];
SecBufferDesc outbuf_desc;
SECURITY_STATUS sspi_status = SEC_E_OK;
- CURLcode code;
+ CURLcode result;
/* check if the maximum stream sizes were queried */
if(connssl->stream_sizes.cbMaximumMessage == 0) {
sspi_status = s_pSecFn->QueryContextAttributes(
- &connssl->ctxt->ctxt_handle,
- SECPKG_ATTR_STREAM_SIZES,
- &connssl->stream_sizes);
+ &connssl->ctxt->ctxt_handle,
+ SECPKG_ATTR_STREAM_SIZES,
+ &connssl->stream_sizes);
if(sspi_status != SEC_E_OK) {
*err = CURLE_SEND_ERROR;
return -1;
@@ -713,7 +738,7 @@ schannel_send(struct connectdata *conn, int sockindex,
/* calculate the complete message length and allocate a buffer for it */
data_len = connssl->stream_sizes.cbHeader + len +
- connssl->stream_sizes.cbTrailer;
+ connssl->stream_sizes.cbTrailer;
data = (unsigned char *) malloc(data_len);
if(data == NULL) {
*err = CURLE_OUT_OF_MEMORY;
@@ -746,19 +771,19 @@ schannel_send(struct connectdata *conn, int sockindex,
len = outbuf[0].cbBuffer + outbuf[1].cbBuffer + outbuf[2].cbBuffer;
/*
- It's important to send the full message which includes the header,
- encrypted payload, and trailer. Until the client receives all the
- data a coherent message has not been delivered and the client
- can't read any of it.
-
- If we wanted to buffer the unwritten encrypted bytes, we would
- tell the client that all data it has requested to be sent has been
- sent. The unwritten encrypted bytes would be the first bytes to
- send on the next invocation.
- Here's the catch with this - if we tell the client that all the
- bytes have been sent, will the client call this method again to
- send the buffered data? Looking at who calls this function, it
- seems the answer is NO.
+ It's important to send the full message which includes the header,
+ encrypted payload, and trailer. Until the client receives all the
+ data a coherent message has not been delivered and the client
+ can't read any of it.
+
+ If we wanted to buffer the unwritten encrypted bytes, we would
+ tell the client that all data it has requested to be sent has been
+ sent. The unwritten encrypted bytes would be the first bytes to
+ send on the next invocation.
+ Here's the catch with this - if we tell the client that all the
+ bytes have been sent, will the client call this method again to
+ send the buffered data? Looking at who calls this function, it
+ seems the answer is NO.
*/
/* send entire message or fail */
@@ -797,12 +822,12 @@ schannel_send(struct connectdata *conn, int sockindex,
}
/* socket is writable */
- code = Curl_write_plain(conn, conn->sock[sockindex], data + written,
- len - written, &this_write);
- if(code == CURLE_AGAIN)
+ result = Curl_write_plain(conn, conn->sock[sockindex], data + written,
+ len - written, &this_write);
+ if(result == CURLE_AGAIN)
continue;
- else if(code != CURLE_OK) {
- *err = code;
+ else if(result != CURLE_OK) {
+ *err = result;
written = -1;
break;
}
@@ -832,8 +857,7 @@ schannel_recv(struct connectdata *conn, int sockindex,
char *buf, size_t len, CURLcode *err)
{
size_t size = 0;
- ssize_t nread = 0, ret = -1;
- CURLcode result;
+ ssize_t nread = -1;
struct SessionHandle *data = conn->data;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
unsigned char *reallocated_buffer;
@@ -842,72 +866,103 @@ schannel_recv(struct connectdata *conn, int sockindex,
SecBuffer inbuf[4];
SecBufferDesc inbuf_desc;
SECURITY_STATUS sspi_status = SEC_E_OK;
+ /* we want the length of the encrypted buffer to be at least large enough
+ that it can hold all the bytes requested and some TLS record overhead. */
+ size_t min_encdata_length = len + CURL_SCHANNEL_BUFFER_FREE_SIZE;
+
+ /****************************************************************************
+ * Don't return or set connssl->recv_unrecoverable_err unless in the cleanup.
+ * The pattern for return error is set *err, optional infof, goto cleanup.
+ *
+ * Our priority is to always return as much decrypted data to the caller as
+ * possible, even if an error occurs. The state of the decrypted buffer must
+ * always be valid. Transfer of decrypted data to the caller's buffer is
+ * handled in the cleanup.
+ */
infof(data, "schannel: client wants to read %zu bytes\n", len);
*err = CURLE_OK;
- /* buffer to store previously received and decrypted data */
- if(connssl->decdata_buffer == NULL) {
- connssl->decdata_offset = 0;
- connssl->decdata_length = CURL_SCHANNEL_BUFFER_INIT_SIZE;
- connssl->decdata_buffer = malloc(connssl->decdata_length);
- if(connssl->decdata_buffer == NULL) {
- failf(data, "schannel: unable to allocate memory");
- *err = CURLE_OUT_OF_MEMORY;
- return -1;
- }
+ if(len && len <= connssl->decdata_offset) {
+ infof(data, "schannel: enough decrypted data is already available\n");
+ goto cleanup;
}
+ else if(connssl->recv_unrecoverable_err) {
+ *err = connssl->recv_unrecoverable_err;
+ infof(data, "schannel: an unrecoverable error occurred in a prior call\n");
+ goto cleanup;
+ }
+ else if(connssl->recv_sspi_close_notify) {
+ /* once a server has indicated shutdown there is no more encrypted data */
+ infof(data, "schannel: server indicated shutdown in a prior call\n");
+ goto cleanup;
+ }
+ else if(!len) {
+ /* It's debatable what to return when !len. Regardless we can't return
+ immediately because there may be data to decrypt (in the case we want to
+ decrypt all encrypted cached data) so handle !len later in cleanup.
+ */
+ ; /* do nothing */
+ }
+ else if(!connssl->recv_connection_closed) {
+ /* increase enc buffer in order to fit the requested amount of data */
+ size = connssl->encdata_length - connssl->encdata_offset;
+ if(size < CURL_SCHANNEL_BUFFER_FREE_SIZE ||
+ connssl->encdata_length < min_encdata_length) {
+ reallocated_length = connssl->encdata_offset +
+ CURL_SCHANNEL_BUFFER_FREE_SIZE;
+ if(reallocated_length < min_encdata_length) {
+ reallocated_length = min_encdata_length;
+ }
+ reallocated_buffer = realloc(connssl->encdata_buffer,
+ reallocated_length);
+ if(reallocated_buffer == NULL) {
+ *err = CURLE_OUT_OF_MEMORY;
+ failf(data, "schannel: unable to re-allocate memory");
+ goto cleanup;
+ }
- /* increase buffer in order to fit the requested amount of data */
- if(connssl->encdata_length - connssl->encdata_offset <
- CURL_SCHANNEL_BUFFER_FREE_SIZE || connssl->encdata_length < len) {
- /* increase internal encrypted data buffer */
- reallocated_length = connssl->encdata_offset +
- CURL_SCHANNEL_BUFFER_FREE_SIZE;
- /* make sure that the requested amount of data fits */
- if(reallocated_length < len) {
- reallocated_length = len;
- }
- reallocated_buffer = realloc(connssl->encdata_buffer,
- reallocated_length);
-
- if(reallocated_buffer == NULL) {
- failf(data, "schannel: unable to re-allocate memory");
- *err = CURLE_OUT_OF_MEMORY;
- return -1;
- }
- else {
connssl->encdata_buffer = reallocated_buffer;
connssl->encdata_length = reallocated_length;
+ size = connssl->encdata_length - connssl->encdata_offset;
+ infof(data, "schannel: encdata_buffer resized %zu\n",
+ connssl->encdata_length);
}
- }
- /* read encrypted data from socket */
- infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
- connssl->encdata_offset, connssl->encdata_length);
- size = connssl->encdata_length - connssl->encdata_offset;
- if(size > 0) {
+ infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
+ connssl->encdata_offset, connssl->encdata_length);
+
+ /* read encrypted data from socket */
*err = Curl_read_plain(conn->sock[sockindex],
- (char *) (connssl->encdata_buffer + connssl->encdata_offset),
+ (char *)(connssl->encdata_buffer +
+ connssl->encdata_offset),
size, &nread);
- /* check for received data */
- if(*err != CURLE_OK)
- ret = -1;
- else {
- if(nread > 0)
- /* increase encrypted data buffer offset */
- connssl->encdata_offset += nread;
- ret = nread;
+ if(*err) {
+ nread = -1;
+ if(*err == CURLE_AGAIN)
+ infof(data, "schannel: Curl_read_plain returned CURLE_AGAIN\n");
+ else if(*err == CURLE_RECV_ERROR)
+ infof(data, "schannel: Curl_read_plain returned CURLE_RECV_ERROR\n");
+ else
+ infof(data, "schannel: Curl_read_plain returned error %d\n", *err);
+ }
+ else if(nread == 0) {
+ connssl->recv_connection_closed = true;
+ infof(data, "schannel: server closed the connection\n");
+ }
+ else if(nread > 0) {
+ connssl->encdata_offset += (size_t)nread;
+ infof(data, "schannel: encrypted data got %zd\n", nread);
}
- infof(data, "schannel: encrypted data got %zd\n", ret);
}
infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
connssl->encdata_offset, connssl->encdata_length);
- /* check if we still have some data in our buffers */
+ /* decrypt loop */
while(connssl->encdata_offset > 0 && sspi_status == SEC_E_OK &&
- connssl->decdata_offset < len) {
+ (!len || connssl->decdata_offset < len ||
+ connssl->recv_connection_closed)) {
/* prepare data buffer for DecryptMessage call */
InitSecBuffer(&inbuf[0], SECBUFFER_DATA, connssl->encdata_buffer,
curlx_uztoul(connssl->encdata_offset));
@@ -916,24 +971,16 @@ schannel_recv(struct connectdata *conn, int sockindex,
InitSecBuffer(&inbuf[1], SECBUFFER_EMPTY, NULL, 0);
InitSecBuffer(&inbuf[2], SECBUFFER_EMPTY, NULL, 0);
InitSecBuffer(&inbuf[3], SECBUFFER_EMPTY, NULL, 0);
-
InitSecBufferDesc(&inbuf_desc, inbuf, 4);
/* http://msdn.microsoft.com/en-us/library/windows/desktop/aa375348.aspx */
sspi_status = s_pSecFn->DecryptMessage(&connssl->ctxt->ctxt_handle,
&inbuf_desc, 0, NULL);
- /* check if we need more data */
- if(sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
- infof(data, "schannel: failed to decrypt data, need more data\n");
- *err = CURLE_AGAIN;
- return -1;
- }
-
/* check if everything went fine (server may want to renegotiate
or shutdown the connection context) */
if(sspi_status == SEC_E_OK || sspi_status == SEC_I_RENEGOTIATE ||
- sspi_status == SEC_I_CONTEXT_EXPIRED) {
+ sspi_status == SEC_I_CONTEXT_EXPIRED) {
/* check for successfully decrypted data, even before actual
renegotiation or shutdown of the connection context */
if(inbuf[1].BufferType == SECBUFFER_DATA) {
@@ -953,21 +1000,18 @@ schannel_recv(struct connectdata *conn, int sockindex,
}
reallocated_buffer = realloc(connssl->decdata_buffer,
reallocated_length);
-
if(reallocated_buffer == NULL) {
- failf(data, "schannel: unable to re-allocate memory");
*err = CURLE_OUT_OF_MEMORY;
- return -1;
- }
- else {
- connssl->decdata_buffer = reallocated_buffer;
- connssl->decdata_length = reallocated_length;
+ failf(data, "schannel: unable to re-allocate memory");
+ goto cleanup;
}
+ connssl->decdata_buffer = reallocated_buffer;
+ connssl->decdata_length = reallocated_length;
}
/* copy decrypted data to internal buffer */
size = inbuf[1].cbBuffer;
- if(size > 0) {
+ if(size) {
memcpy(connssl->decdata_buffer + connssl->decdata_offset,
inbuf[1].pvBuffer, size);
connssl->decdata_offset += size;
@@ -985,83 +1029,151 @@ schannel_recv(struct connectdata *conn, int sockindex,
/* check if the remaining data is less than the total amount
* and therefore begins after the already processed data
- */
+ */
if(connssl->encdata_offset > inbuf[3].cbBuffer) {
/* move remaining encrypted data forward to the beginning of
buffer */
memmove(connssl->encdata_buffer,
(connssl->encdata_buffer + connssl->encdata_offset) -
- inbuf[3].cbBuffer, inbuf[3].cbBuffer);
+ inbuf[3].cbBuffer, inbuf[3].cbBuffer);
connssl->encdata_offset = inbuf[3].cbBuffer;
}
infof(data, "schannel: encrypted data cached: offset %zu length %zu\n",
connssl->encdata_offset, connssl->encdata_length);
}
- else{
+ else {
/* reset encrypted buffer offset, because there is no data remaining */
connssl->encdata_offset = 0;
}
- }
- /* check if server wants to renegotiate the connection context */
- if(sspi_status == SEC_I_RENEGOTIATE) {
- infof(data, "schannel: remote party requests SSL/TLS renegotiation\n");
-
- /* begin renegotiation */
- infof(data, "schannel: renegotiating SSL/TLS connection\n");
- connssl->state = ssl_connection_negotiating;
- connssl->connecting_state = ssl_connect_2_writing;
- result = schannel_connect_common(conn, sockindex, FALSE, &done);
- if(result)
- *err = result;
- else {
- infof(data, "schannel: SSL/TLS connection renegotiated\n");
+ /* check if server wants to renegotiate the connection context */
+ if(sspi_status == SEC_I_RENEGOTIATE) {
+ infof(data, "schannel: remote party requests renegotiation\n");
+ if(*err && *err != CURLE_AGAIN) {
+ infof(data, "schannel: can't renogotiate, an error is pending\n");
+ goto cleanup;
+ }
+ if(connssl->encdata_offset) {
+ *err = CURLE_RECV_ERROR;
+ infof(data, "schannel: can't renogotiate, "
+ "encrypted data available\n");
+ goto cleanup;
+ }
+ /* begin renegotiation */
+ infof(data, "schannel: renegotiating SSL/TLS connection\n");
+ connssl->state = ssl_connection_negotiating;
+ connssl->connecting_state = ssl_connect_2_writing;
+ *err = schannel_connect_common(conn, sockindex, FALSE, &done);
+ if(*err) {
+ infof(data, "schannel: renegotiation failed\n");
+ goto cleanup;
+ }
/* now retry receiving data */
- return schannel_recv(conn, sockindex, buf, len, err);
+ sspi_status = SEC_E_OK;
+ infof(data, "schannel: SSL/TLS connection renegotiated\n");
+ continue;
+ }
+ /* check if the server closed the connection */
+ else if(sspi_status == SEC_I_CONTEXT_EXPIRED) {
+ /* In Windows 2000 SEC_I_CONTEXT_EXPIRED (close_notify) is not
+ returned so we have to work around that in cleanup. */
+ connssl->recv_sspi_close_notify = true;
+ if(!connssl->recv_connection_closed) {
+ connssl->recv_connection_closed = true;
+ infof(data, "schannel: server closed the connection\n");
+ }
+ goto cleanup;
}
}
+ else if(sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
+ if(!*err)
+ *err = CURLE_AGAIN;
+ infof(data, "schannel: failed to decrypt data, need more data\n");
+ goto cleanup;
+ }
+ else {
+ *err = CURLE_RECV_ERROR;
+ infof(data, "schannel: failed to read data from server: %s\n",
+ Curl_sspi_strerror(conn, sspi_status));
+ goto cleanup;
+ }
}
+ infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
+ connssl->encdata_offset, connssl->encdata_length);
+
infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
connssl->decdata_offset, connssl->decdata_length);
- /* copy requested decrypted data to supplied buffer */
+cleanup:
+ /* Warning- there is no guarantee the encdata state is valid at this point */
+ infof(data, "schannel: schannel_recv cleanup\n");
+
+ /* Error if the connection has closed without a close_notify.
+ Behavior here is a matter of debate. We don't want to be vulnerable to a
+ truncation attack however there's some browser precedent for ignoring the
+ close_notify for compatibility reasons.
+ Additionally, Windows 2000 (v5.0) is a special case since it seems it doesn't
+ return close_notify. In that case if the connection was closed we assume it
+ was graceful (close_notify) since there doesn't seem to be a way to tell.
+ */
+ if(len && !connssl->decdata_offset && connssl->recv_connection_closed &&
+ !connssl->recv_sspi_close_notify) {
+ BOOL isWin2k;
+ ULONGLONG cm;
+ OSVERSIONINFOEX osver;
+
+ memset(&osver, 0, sizeof(osver));
+ osver.dwOSVersionInfoSize = sizeof(osver);
+ osver.dwMajorVersion = 5;
+
+ cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+ cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+
+ isWin2k = VerifyVersionInfo(&osver,
+ (VER_MAJORVERSION | VER_MINORVERSION |
+ VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR),
+ cm);
+
+ if(isWin2k && sspi_status == SEC_E_OK)
+ connssl->recv_sspi_close_notify = true;
+ else {
+ *err = CURLE_RECV_ERROR;
+ infof(data, "schannel: server closed abruptly (missing close_notify)\n");
+ }
+ }
+
+ /* Any error other than CURLE_AGAIN is an unrecoverable error. */
+ if(*err && *err != CURLE_AGAIN)
+ connssl->recv_unrecoverable_err = *err;
+
size = len < connssl->decdata_offset ? len : connssl->decdata_offset;
- if(size > 0) {
+ if(size) {
memcpy(buf, connssl->decdata_buffer, size);
- ret = size;
-
- /* move remaining decrypted data forward to the beginning of buffer */
memmove(connssl->decdata_buffer, connssl->decdata_buffer + size,
connssl->decdata_offset - size);
connssl->decdata_offset -= size;
- infof(data, "schannel: decrypted data returned %zd\n", size);
+ infof(data, "schannel: decrypted data returned %zu\n", size);
infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
connssl->decdata_offset, connssl->decdata_length);
- }
- else
- ret = 0;
-
- /* check if the server closed the connection */
- if(ret <= 0 && ( /* special check for Windows 2000 Professional */
- sspi_status == SEC_I_CONTEXT_EXPIRED || (sspi_status == SEC_E_OK &&
- connssl->encdata_offset > 0 && connssl->encdata_buffer[0] == 0x15))) {
- infof(data, "schannel: server closed the connection\n");
*err = CURLE_OK;
- return 0;
+ return (ssize_t)size;
}
- /* check if something went wrong and we need to return an error */
- if(ret < 0 && sspi_status != SEC_E_OK) {
- infof(data, "schannel: failed to read data from server: %s\n",
- Curl_sspi_strerror(conn, sspi_status));
- *err = CURLE_RECV_ERROR;
- return -1;
- }
+ if(!*err && !connssl->recv_connection_closed)
+ *err = CURLE_AGAIN;
+
+ /* It's debatable what to return when !len. We could return whatever error we
+ got from decryption but instead we override here so the return is consistent.
+ */
+ if(!len)
+ *err = CURLE_OK;
- return ret;
+ return *err ? -1 : 0;
}
CURLcode
@@ -1121,7 +1233,7 @@ int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
SECURITY_STATUS sspi_status;
SecBuffer outbuf;
SecBufferDesc outbuf_desc;
- CURLcode code;
+ CURLcode result;
TCHAR *host_name;
DWORD dwshut = SCHANNEL_SHUTDOWN;
@@ -1144,31 +1256,31 @@ int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
InitSecBufferDesc(&outbuf_desc, &outbuf, 1);
sspi_status = s_pSecFn->InitializeSecurityContext(
- &connssl->cred->cred_handle,
- &connssl->ctxt->ctxt_handle,
- host_name,
- connssl->req_flags,
- 0,
- 0,
- NULL,
- 0,
- &connssl->ctxt->ctxt_handle,
- &outbuf_desc,
- &connssl->ret_flags,
- &connssl->ctxt->time_stamp);
+ &connssl->cred->cred_handle,
+ &connssl->ctxt->ctxt_handle,
+ host_name,
+ connssl->req_flags,
+ 0,
+ 0,
+ NULL,
+ 0,
+ &connssl->ctxt->ctxt_handle,
+ &outbuf_desc,
+ &connssl->ret_flags,
+ &connssl->ctxt->time_stamp);
Curl_unicodefree(host_name);
if((sspi_status == SEC_E_OK) || (sspi_status == SEC_I_CONTEXT_EXPIRED)) {
/* send close message which is in output buffer */
ssize_t written;
- code = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
- outbuf.cbBuffer, &written);
+ result = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
+ outbuf.cbBuffer, &written);
s_pSecFn->FreeContextBuffer(outbuf.pvBuffer);
- if((code != CURLE_OK) || (outbuf.cbBuffer != (size_t)written)) {
+ if((result != CURLE_OK) || (outbuf.cbBuffer != (size_t) written)) {
infof(data, "schannel: failed to send close msg: %s"
- " (bytes written: %zd)\n", curl_easy_strerror(code), written);
+ " (bytes written: %zd)\n", curl_easy_strerror(result), written);
}
}
}
@@ -1218,9 +1330,14 @@ void Curl_schannel_session_free(void *ptr)
{
struct curl_schannel_cred *cred = ptr;
- if(cred && cred->cached && cred->refcount == 0) {
- s_pSecFn->FreeCredentialsHandle(&cred->cred_handle);
- Curl_safefree(cred);
+ if(cred && cred->cached) {
+ if(cred->refcount == 0) {
+ s_pSecFn->FreeCredentialsHandle(&cred->cred_handle);
+ Curl_safefree(cred);
+ }
+ else {
+ cred->cached = FALSE;
+ }
}
}
@@ -1288,7 +1405,8 @@ static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
NULL,
pCertContextServer->hCertStore,
&ChainPara,
- 0,
+ (data->set.ssl_no_revoke ? 0 :
+ CERT_CHAIN_REVOCATION_CHECK_CHAIN),
NULL,
&pChainContext)) {
failf(data, "schannel: CertGetCertificateChain failed: %s",
@@ -1299,21 +1417,24 @@ static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
if(result == CURLE_OK) {
CERT_SIMPLE_CHAIN *pSimpleChain = pChainContext->rgpChain[0];
- DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED|
- CERT_TRUST_REVOCATION_STATUS_UNKNOWN);
+ DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);
dwTrustErrorMask &= pSimpleChain->TrustStatus.dwErrorStatus;
if(dwTrustErrorMask) {
- if(dwTrustErrorMask & CERT_TRUST_IS_PARTIAL_CHAIN)
+ if(dwTrustErrorMask & CERT_TRUST_IS_REVOKED)
+ failf(data, "schannel: CertGetCertificateChain trust error"
+ " CERT_TRUST_IS_REVOKED");
+ else if(dwTrustErrorMask & CERT_TRUST_IS_PARTIAL_CHAIN)
failf(data, "schannel: CertGetCertificateChain trust error"
- " CERT_TRUST_IS_PARTIAL_CHAIN");
- if(dwTrustErrorMask & CERT_TRUST_IS_UNTRUSTED_ROOT)
+ " CERT_TRUST_IS_PARTIAL_CHAIN");
+ else if(dwTrustErrorMask & CERT_TRUST_IS_UNTRUSTED_ROOT)
failf(data, "schannel: CertGetCertificateChain trust error"
- " CERT_TRUST_IS_UNTRUSTED_ROOT");
- if(dwTrustErrorMask & CERT_TRUST_IS_NOT_TIME_VALID)
+ " CERT_TRUST_IS_UNTRUSTED_ROOT");
+ else if(dwTrustErrorMask & CERT_TRUST_IS_NOT_TIME_VALID)
failf(data, "schannel: CertGetCertificateChain trust error"
- " CERT_TRUST_IS_NOT_TIME_VALID");
- failf(data, "schannel: CertGetCertificateChain error mask: 0x%08x",
- dwTrustErrorMask);
+ " CERT_TRUST_IS_NOT_TIME_VALID");
+ else
+ failf(data, "schannel: CertGetCertificateChain error mask: 0x%08x",
+ dwTrustErrorMask);
result = CURLE_PEER_FAILED_VERIFICATION;
}
}
@@ -1329,6 +1450,14 @@ static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
cert_hostname.const_tchar_ptr = cert_hostname_buff;
hostname.tchar_ptr = Curl_convert_UTF8_to_tchar(conn->host.name);
+ /* TODO: Fix this for certificates with multiple alternative names.
+ Right now we're only asking for the first preferred alternative name.
+ Instead we'd need to do all via CERT_NAME_SEARCH_ALL_NAMES_FLAG
+ (if WinCE supports that?) and run this section in a loop for each.
+ https://msdn.microsoft.com/en-us/library/windows/desktop/aa376086.aspx
+ curl: (51) schannel: CertGetNameString() certificate hostname
+ (.google.com) did not match connection (google.com)
+ */
len = CertGetNameString(pCertContextServer,
CERT_NAME_DNS_TYPE,
0,
diff --git a/lib/vtls/curl_schannel.h b/lib/vtls/schannel.h
index 11e83f9e5..532958483 100644
--- a/lib/vtls/curl_schannel.h
+++ b/lib/vtls/schannel.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, 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
@@ -72,6 +72,7 @@
#define SECBUFFER_ALERT 17
#endif
+/* Both schannel buffer sizes must be > 0 */
#define CURL_SCHANNEL_BUFFER_INIT_SIZE 4096
#define CURL_SCHANNEL_BUFFER_FREE_SIZE 1024
@@ -93,6 +94,9 @@ size_t Curl_schannel_version(char *buffer, size_t size);
int Curl_schannel_random(unsigned char *entropy, size_t length);
+/* Set the API backend definition to Schannel */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
+
/* API setup for Schannel */
#define curlssl_init Curl_schannel_init
#define curlssl_cleanup Curl_schannel_cleanup
@@ -108,7 +112,6 @@ int Curl_schannel_random(unsigned char *entropy, size_t length);
#define curlssl_version Curl_schannel_version
#define curlssl_check_cxn(x) ((void)x, -1)
#define curlssl_data_pending Curl_schannel_data_pending
-#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
#define curlssl_random(x,y,z) ((void)x, Curl_schannel_random(y,z))
#endif /* USE_SCHANNEL */
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index a53ff4ad6..01bbc6130 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -63,18 +63,16 @@
#include "sendf.h"
#include "rawstr.h"
#include "url.h"
-#include "curl_memory.h"
#include "progress.h"
#include "share.h"
#include "timeval.h"
#include "curl_md5.h"
#include "warnless.h"
#include "curl_base64.h"
+#include "curl_printf.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
#include "memdebug.h"
/* convenience macro to check if this handle is using a shared SSL session */
@@ -278,10 +276,25 @@ void Curl_ssl_cleanup(void)
}
}
+static bool ssl_prefs_check(struct SessionHandle *data)
+{
+ /* check for CURLOPT_SSLVERSION invalid parameter value */
+ if((data->set.ssl.version < 0)
+ || (data->set.ssl.version >= CURL_SSLVERSION_LAST)) {
+ failf(data, "Unrecognized parameter value passed via CURLOPT_SSLVERSION");
+ return FALSE;
+ }
+ return TRUE;
+}
+
CURLcode
Curl_ssl_connect(struct connectdata *conn, int sockindex)
{
CURLcode result;
+
+ if(!ssl_prefs_check(conn->data))
+ return CURLE_SSL_CONNECT_ERROR;
+
/* mark this is being ssl-enabled from here on. */
conn->ssl[sockindex].use = TRUE;
conn->ssl[sockindex].state = ssl_connection_negotiating;
@@ -299,6 +312,10 @@ Curl_ssl_connect_nonblocking(struct connectdata *conn, int sockindex,
bool *done)
{
CURLcode result;
+
+ if(!ssl_prefs_check(conn->data))
+ return CURLE_SSL_CONNECT_ERROR;
+
/* mark this is being ssl requested from here on. */
conn->ssl[sockindex].use = TRUE;
#ifdef curlssl_connect_nonblocking
@@ -465,9 +482,8 @@ CURLcode Curl_ssl_addsessionid(struct connectdata *conn,
store->sessionid = ssl_sessionid;
store->idsize = idsize;
store->age = *general_age; /* set current age */
- if(store->name)
/* free it if there's one already present */
- free(store->name);
+ free(store->name);
store->name = clone_host; /* clone host name */
store->remote_port = conn->remote_port; /* port number */
@@ -758,12 +774,78 @@ CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
size_t size, pem_len;
CURLcode pem_read;
CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+#ifdef curlssl_sha256sum
+ size_t pinkeylen;
+ char *pinkeycopy, *begin_pos, *end_pos;
+ unsigned char *sha256sumdigest = NULL, *expectedsha256sumdigest = NULL;
+#endif
/* if a path wasn't specified, don't pin */
if(!pinnedpubkey)
return CURLE_OK;
if(!pubkey || !pubkeylen)
return result;
+
+#ifdef curlssl_sha256sum
+ /* only do this if pinnedpubkey starts with "sha256//", length 8 */
+ if(strncmp(pinnedpubkey, "sha256//", 8) == 0) {
+ /* compute sha256sum of public key */
+ sha256sumdigest = malloc(SHA256_DIGEST_LENGTH);
+ if(!sha256sumdigest)
+ return CURLE_OUT_OF_MEMORY;
+ curlssl_sha256sum(pubkey, pubkeylen,
+ sha256sumdigest, SHA256_DIGEST_LENGTH);
+
+ /* it starts with sha256//, copy so we can modify it */
+ pinkeylen = strlen(pinnedpubkey) + 1;
+ pinkeycopy = malloc(pinkeylen);
+ if(!pinkeycopy) {
+ Curl_safefree(sha256sumdigest);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ memcpy(pinkeycopy, pinnedpubkey, pinkeylen);
+ /* point begin_pos to the copy, and start extracting keys */
+ begin_pos = pinkeycopy;
+ do {
+ end_pos = strstr(begin_pos, ";sha256//");
+ /*
+ * if there is an end_pos, null terminate,
+ * otherwise it'll go to the end of the original string
+ */
+ if(end_pos)
+ end_pos[0] = '\0';
+
+ /* decode base64 pinnedpubkey, 8 is length of "sha256//" */
+ pem_read = Curl_base64_decode(begin_pos + 8,
+ &expectedsha256sumdigest, &size);
+ /* if not valid base64, don't bother comparing or freeing */
+ if(!pem_read) {
+ /* compare sha256 digests directly */
+ if(SHA256_DIGEST_LENGTH == size &&
+ !memcmp(sha256sumdigest, expectedsha256sumdigest,
+ SHA256_DIGEST_LENGTH)) {
+ result = CURLE_OK;
+ Curl_safefree(expectedsha256sumdigest);
+ break;
+ }
+ Curl_safefree(expectedsha256sumdigest);
+ }
+
+ /*
+ * change back the null-terminator we changed earlier,
+ * and look for next begin
+ */
+ if(end_pos) {
+ end_pos[0] = ';';
+ begin_pos = strstr(end_pos, "sha256//");
+ }
+ } while(end_pos && begin_pos);
+ Curl_safefree(sha256sumdigest);
+ Curl_safefree(pinkeycopy);
+ return result;
+ }
+#endif
+
fp = fopen(pinnedpubkey, "rb");
if(!fp)
return result;
@@ -830,10 +912,11 @@ CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
return result;
}
-void Curl_ssl_md5sum(unsigned char *tmp, /* input */
- size_t tmplen,
- unsigned char *md5sum, /* output */
- size_t md5len)
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+CURLcode Curl_ssl_md5sum(unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *md5sum, /* output */
+ size_t md5len)
{
#ifdef curlssl_md5sum
curlssl_md5sum(tmp, tmplen, md5sum, md5len);
@@ -843,9 +926,37 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
(void) md5len;
MD5pw = Curl_MD5_init(Curl_DIGEST_MD5);
+ if(!MD5pw)
+ return CURLE_OUT_OF_MEMORY;
Curl_MD5_update(MD5pw, tmp, curlx_uztoui(tmplen));
Curl_MD5_final(MD5pw, md5sum);
#endif
+ return CURLE_OK;
+}
+#endif
+
+/*
+ * Check whether the SSL backend supports the status_request extension.
+ */
+bool Curl_ssl_cert_status_request(void)
+{
+#ifdef curlssl_cert_status_request
+ return curlssl_cert_status_request();
+#else
+ return FALSE;
+#endif
+}
+
+/*
+ * Check whether the SSL backend supports false start.
+ */
+bool Curl_ssl_false_start(void)
+{
+#ifdef curlssl_false_start
+ return curlssl_false_start();
+#else
+ return FALSE;
+#endif
}
#endif /* USE_SSL */
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index 19ef1cd6e..2349e5b93 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -30,8 +30,8 @@
#include "polarssl.h" /* PolarSSL versions */
#include "axtls.h" /* axTLS versions */
#include "cyassl.h" /* CyaSSL versions */
-#include "curl_schannel.h" /* Schannel SSPI version */
-#include "curl_darwinssl.h" /* SecureTransport (Darwin) version */
+#include "schannel.h" /* Schannel SSPI version */
+#include "darwinssl.h" /* SecureTransport (Darwin) version */
#ifndef MAX_PINNED_PUBKEY_SIZE
#define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
@@ -41,6 +41,10 @@
#define MD5_DIGEST_LENGTH 16 /* fixed size */
#endif
+#ifndef SHA256_DIGEST_LENGTH
+#define SHA256_DIGEST_LENGTH 32 /* fixed size */
+#endif
+
/* see http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04 */
#define ALPN_HTTP_1_1_LENGTH 8
#define ALPN_HTTP_1_1 "http/1.1"
@@ -108,17 +112,24 @@ void Curl_ssl_delsessionid(struct connectdata *conn, void *ssl_sessionid);
in */
int Curl_ssl_random(struct SessionHandle *data, unsigned char *buffer,
size_t length);
-void Curl_ssl_md5sum(unsigned char *tmp, /* input */
- size_t tmplen,
- unsigned char *md5sum, /* output */
- size_t md5len);
+CURLcode Curl_ssl_md5sum(unsigned char *tmp, /* input */
+ size_t tmplen,
+ unsigned char *md5sum, /* output */
+ size_t md5len);
/* Check pinned public key. */
CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
const unsigned char *pubkey, size_t pubkeylen);
+bool Curl_ssl_cert_status_request(void);
+
+bool Curl_ssl_false_start(void);
+
#define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */
#else
+/* Set the API backend definition to none */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
+
/* When SSL support is not present, just define away these function calls */
#define Curl_ssl_init() 1
#define Curl_ssl_cleanup() Curl_nop_stmt
@@ -139,7 +150,8 @@ CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
#define Curl_ssl_connect_nonblocking(x,y,z) CURLE_NOT_BUILT_IN
#define Curl_ssl_kill_session(x) Curl_nop_stmt
#define Curl_ssl_random(x,y,z) ((void)x, CURLE_NOT_BUILT_IN)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
+#define Curl_ssl_cert_status_request() FALSE
+#define Curl_ssl_false_start() FALSE
#endif
#endif /* HEADER_CURL_VTLS_H */
diff --git a/lib/wildcard.c b/lib/wildcard.c
index 7130d5e49..6f55839db 100644
--- a/lib/wildcard.c
+++ b/lib/wildcard.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -25,10 +25,7 @@
#include "wildcard.h"
#include "llist.h"
#include "fileinfo.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -62,15 +59,10 @@ void Curl_wildcard_dtor(struct WildcardData *wc)
wc->filelist = NULL;
}
- if(wc->path) {
- free(wc->path);
- wc->path = NULL;
- }
-
- if(wc->pattern) {
- free(wc->pattern);
- wc->pattern = NULL;
- }
+ free(wc->path);
+ wc->path = NULL;
+ free(wc->pattern);
+ wc->pattern = NULL;
wc->customptr = NULL;
wc->state = CURLWC_INIT;
diff --git a/lib/x509asn1.c b/lib/x509asn1.c
index af08cee54..a3dfd646b 100644
--- a/lib/x509asn1.c
+++ b/lib/x509asn1.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -22,7 +22,8 @@
#include "curl_setup.h"
-#if defined(USE_GSKIT) || defined(USE_NSS)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+ defined(USE_CYASSL)
#include <curl/curl.h>
#include "urldata.h"
@@ -33,10 +34,7 @@
#include "inet_pton.h"
#include "curl_base64.h"
#include "x509asn1.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -212,7 +210,6 @@ static const char * octet2str(const char * beg, const char * end)
}
static const char * bit2str(const char * beg, const char * end)
-
{
/* Convert an ASN.1 bit string to a printable string.
Return the dynamically allocated string, or NULL if an error occurs. */
@@ -301,8 +298,10 @@ utf8asn1str(char * * to, int type, const char * from, const char * end)
case 4:
wc = (wc << 8) | *(const unsigned char *) from++;
wc = (wc << 8) | *(const unsigned char *) from++;
+ /* fallthrough */
case 2:
wc = (wc << 8) | *(const unsigned char *) from++;
+ /* fallthrough */
default: /* case 1: */
wc = (wc << 8) | *(const unsigned char *) from++;
}
@@ -540,8 +539,6 @@ static const char * UTime2str(const char * beg, const char * end)
const char * Curl_ASN1tostr(curl_asn1Element * elem, int type)
{
- static const char zero = '\0';
-
/* Convert an ASN.1 element to a printable string.
Return the dynamically allocated string, or NULL if an error occurs. */
@@ -562,7 +559,7 @@ const char * Curl_ASN1tostr(curl_asn1Element * elem, int type)
case CURL_ASN1_OCTET_STRING:
return octet2str(elem->beg, elem->end);
case CURL_ASN1_NULL:
- return strdup(&zero);
+ return strdup("");
case CURL_ASN1_OBJECT_IDENTIFIER:
return OID2str(elem->beg, elem->end, TRUE);
case CURL_ASN1_UTC_TIME:
@@ -824,7 +821,7 @@ static void do_pubkey(struct SessionHandle * data, int certnum,
/* Compute key length. */
for(q = elem.beg; !*q && q < elem.end; q++)
;
- len = (elem.end - q) * 8;
+ len = (unsigned long)((elem.end - q) * 8);
if(len)
for(i = *(unsigned char *) q; !(i & 0x80); i <<= 1)
len--;
@@ -1027,7 +1024,7 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
return CURLE_OK;
}
-#endif /* USE_GSKIT or USE_NSS */
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_CYASSL */
#if defined(USE_GSKIT)
@@ -1119,8 +1116,7 @@ CURLcode Curl_verifyhost(struct connectdata * conn,
if(len > 0)
if(strlen(dnsname) == (size_t) len)
i = Curl_cert_hostcheck((const char *) dnsname, conn->host.name);
- if(dnsname)
- free(dnsname);
+ free(dnsname);
if(!i)
return CURLE_PEER_FAILED_VERIFICATION;
matched = i;
diff --git a/lib/x509asn1.h b/lib/x509asn1.h
index 075c424f3..eb23e506a 100644
--- a/lib/x509asn1.h
+++ b/lib/x509asn1.h
@@ -8,7 +8,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -25,7 +25,8 @@
#include "curl_setup.h"
-#if defined(USE_GSKIT) || defined(USE_NSS)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+ defined(USE_CYASSL)
#include "urldata.h"
@@ -127,5 +128,5 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn, int certnum,
CURLcode Curl_verifyhost(struct connectdata * conn,
const char * beg, const char * end);
-#endif /* USE_GSKIT or USE_NSS */
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_CYASSL */
#endif /* HEADER_CURL_X509ASN1_H */
diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4
index 44b018e40..05c2d4b10 100644
--- a/m4/curl-confopts.m4
+++ b/m4/curl-confopts.m4
@@ -316,6 +316,42 @@ dnl AC_MSG_ERROR([options --enable-ares and --enable-threads are mutually ex
dnl fi
dnl ])
+dnl CURL_CHECK_OPTION_RT
+dnl -------------------------------------------------
+dnl Verify if configure has been involed with option
+dnl --disable-rt and set shell variable dontwant_rt
+dnl as appropriate.
+
+AC_DEFUN([CURL_CHECK_OPTION_RT], [
+ AC_BEFORE([$0], [CURL_CHECK_LIB_THREADS])dnl
+ AC_MSG_CHECKING([whether to disable dependency on -lrt])
+ OPT_RT="default"
+ AC_ARG_ENABLE(rt,
+ AC_HELP_STRING([--disable-rt],[disable dependency on -lrt]),
+ OPT_RT=$enableval)
+ case "$OPT_RT" in
+ no)
+ dnl --disable-rt used (reverse logic)
+ dontwant_rt="yes"
+ AC_MSG_RESULT([yes])
+ ;;
+ default)
+ dnl configure option not specified (so not disabled)
+ dontwant_rt="no"
+ AC_MSG_RESULT([(assumed no)]
+ ;;
+ *)
+ dnl --enable-rt option used (reverse logic)
+ dontwant_rt="no"
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+ dnl TODO: may require mutual exclusion
+ if test "$dontwant_rt" = "yes" && test "$want_thres" = "yes" ; then
+ AC_MSG_ERROR([options --disable-rt and --enable-thread-resolver are mutually exclusive, at most one can be selected.])
+ fi
+])
+
dnl CURL_CHECK_OPTION_WARNINGS
dnl -------------------------------------------------
diff --git a/m4/curl-openssl.m4 b/m4/curl-openssl.m4
index cd9074b02..5f5f87ae8 100644
--- a/m4/curl-openssl.m4
+++ b/m4/curl-openssl.m4
@@ -67,6 +67,7 @@ AC_DEFUN([CURL_CHECK_OPENSSL_API_HEADERS], [
esac
case $tst_api in
0x110) tst_show="1.1.0" ;;
+ 0x102) tst_show="1.0.2" ;;
0x101) tst_show="1.0.1" ;;
0x100) tst_show="1.0.0" ;;
0x099) tst_show="0.9.9" ;;
@@ -140,6 +141,13 @@ AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
fi
if test "$tst_api" = "unknown"; then
AC_LINK_IFELSE([
+ AC_LANG_FUNC_LINK_TRY([SSL_CONF_CTX_new])
+ ],[
+ tst_api="0x102"
+ ])
+ fi
+ if test "$tst_api" = "unknown"; then
+ AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated])
],[
tst_api="0x101"
@@ -210,6 +218,7 @@ AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
fi
case $tst_api in
0x110) tst_show="1.1.0" ;;
+ 0x102) tst_show="1.0.2" ;;
0x101) tst_show="1.0.1" ;;
0x100) tst_show="1.0.0" ;;
0x099) tst_show="0.9.9" ;;
diff --git a/maketgz b/maketgz
index 5aba1a3dc..d80461c1c 100755
--- a/maketgz
+++ b/maketgz
@@ -9,7 +9,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -60,8 +60,9 @@ sed -e 's/^#define LIBCURL_VERSION .*/#define LIBCURL_VERSION "'$libversion'"/g'
# Replace version number in header file:
sed 's/#define CURL_VERSION .*/#define CURL_VERSION "'$curlversion'"/g' $CHEADER >$CHEADER.dist
-# Generate VC8, VC9, and VC10 versions from the VC6 Makefile versions
-for ver in vc8 vc9 vc10; do
+# Generate VC7, VC8, VC9, VC10, VC11, VC12 and VC14 versions from the VC6
+# Makefile versions
+for ver in vc7 vc8 vc9 vc10 vc11 vc12 vc14; do
make -f Makefile.dist $ver
mv src/Makefile.$ver src/Makefile.$ver.dist
mv lib/Makefile.$ver lib/Makefile.$ver.dist
@@ -128,7 +129,7 @@ echo "make vc-ide"
make -s vc-ide
echo "produce CHANGES"
-git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./log2changes.pl > CHANGES.dist
+git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./scripts/log2changes.pl > CHANGES.dist
############################################################################
#
diff --git a/missing b/missing
index a9f9d941e..f62bbae30 100755
--- a/missing
+++ b/missing
@@ -1,7 +1,10 @@
#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,9 +17,7 @@
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -24,260 +25,191 @@
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
+case $1 in
-case "$1" in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- ;;
-esac
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`curl_config.h.in'
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing 0.3 - GNU automake"
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
- aclocal)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="curl_config.h"
- touch_files=
- for f in $files; do
- case "$f" in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- bison|yacc)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if [ ! -f y.tab.h ]; then
- echo >y.tab.h
- fi
- if [ ! -f y.tab.c ]; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex|flex)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if [ ! -f lex.yy.c ]; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit 1
- fi
- ;;
-
- makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
- fi
- touch $file
- ;;
-
- tar)
- shift
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar ${1+"$@"} && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar ${1+"$@"} && exit 0
- fi
- firstarg="$1"
- if shift; then
- case "$firstarg" in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" ${1+"$@"} && exit 0
- ;;
- esac
- case "$firstarg" in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" ${1+"$@"} && exit 0
- ;;
- esac
- fi
+esac
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequirements for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'autom4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
;;
-esac
-
-exit 0
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755
index 55d537f87..000000000
--- a/mkinstalldirs
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2009-04-28.21; # UTC
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-IFS=" "" $nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage"
- exit $?
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --version)
- echo "$0 $scriptversion"
- exit $?
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error. This is a problem when calling mkinstalldirs
-# from a parallel make. We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
- '')
- if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- else
- # On NextStep and OpenStep, the 'mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because '.' already
- # exists.
- test -d ./-p && rmdir ./-p
- test -d ./--version && rmdir ./--version
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
- test ! -d ./--version; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- else
- # Clean up after NextStep and OpenStep mkdir.
- for d in ./-m ./-p ./--version "./$dirmode";
- do
- test -d $d && rmdir $d
- done
- fi
- ;;
-esac
-
-for file
-do
- case $file in
- /*) pathcomp=/ ;;
- *) pathcomp= ;;
- esac
- oIFS=$IFS
- IFS=/
- set fnord $file
- shift
- IFS=$oIFS
-
- for d
- do
- test "x$d" = x && continue
-
- pathcomp=$pathcomp$d
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp=$pathcomp/
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/packages/AIX/Makefile.in b/packages/AIX/Makefile.in
index b898d16a0..1b8b5de8b 100644
--- a/packages/AIX/Makefile.in
+++ b/packages/AIX/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/AIX
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -389,7 +399,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/AIX/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -684,6 +693,8 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/AIX/RPM/Makefile.in b/packages/AIX/RPM/Makefile.in
index a8d5ba535..76e6a336a 100644
--- a/packages/AIX/RPM/Makefile.in
+++ b/packages/AIX/RPM/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/AIX/RPM
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(srcdir)/curl.spec.in README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES = curl.spec
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl.spec.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -328,7 +338,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/RPM/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/AIX/RPM/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -505,6 +514,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/EPM/Makefile.in b/packages/EPM/Makefile.in
index 489dd95b0..9339d7cd1 100644
--- a/packages/EPM/Makefile.in
+++ b/packages/EPM/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/EPM
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(srcdir)/curl.list.in README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES = curl.list
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl.list.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -329,7 +339,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/EPM/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/EPM/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -506,6 +515,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/Linux/Makefile.in b/packages/Linux/Makefile.in
index 1ddd000cd..fa9b56533 100644
--- a/packages/Linux/Makefile.in
+++ b/packages/Linux/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/Linux
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -388,7 +398,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Linux/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/Linux/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -683,6 +692,8 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/Linux/RPM/Makefile.in b/packages/Linux/RPM/Makefile.in
index 164e0e014..023994bc8 100644
--- a/packages/Linux/RPM/Makefile.in
+++ b/packages/Linux/RPM/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,9 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/Linux/RPM
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(srcdir)/curl.spec.in \
- $(srcdir)/curl-ssl.spec.in README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -101,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES = curl.spec curl-ssl.spec
@@ -126,6 +134,8 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-ssl.spec.in \
+ $(srcdir)/curl.spec.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -184,7 +194,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -237,6 +247,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -253,7 +264,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -329,7 +339,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Linux/RPM/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/Linux/RPM/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -508,6 +517,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/Makefile.in b/packages/Makefile.in
index 7bbde3da4..0d49b63ba 100644
--- a/packages/Makefile.in
+++ b/packages/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -420,7 +430,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -715,6 +724,8 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index 99b606c89..269ead33e 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -93,12 +93,14 @@ options:
CURLOPT_PROXYPASSWORD
CURLOPT_PROXYUSERNAME
CURLOPT_PROXYUSERPWD
+ CURLOPT_PROXY_SERVICE_NAME
CURLOPT_RANDOM_FILE
CURLOPT_RANGE
CURLOPT_REFERER
CURLOPT_RTSP_SESSION_UID
CURLOPT_RTSP_STREAM_URI
CURLOPT_RTSP_TRANSPORT
+ CURLOPT_SERVICE_NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 Note: SSH not available on OS400.
CURLOPT_SSH_KNOWNHOSTS Note: SSH not available on OS400.
@@ -146,7 +148,7 @@ parameter/array boundary.
Please note that CURLFORM_PTRCONTENTS and CURLFORM_BUFFERPTR are considered
unconvertible strings and thus are NOT followed by a CCSID.
-_ curl_easy_getinfo_ccsid
+_ curl_easy_getinfo_ccsid()
The following options are followed by a 'char * *' and a CCSID. Unlike
curl_easy_getinfo(), the value returned in the pointer should be freed after
use:
@@ -167,6 +169,14 @@ CCSID. Returned structures sould be free'ed using curl_certinfo_free_all() after
use.
Other options are processed like in curl_easy_getinfo().
+_ curl_pushheader_bynum_cssid() and curl_pushheader_byname_ccsid()
+ Although the prototypes are self-explanatory, the returned string pointer
+should be freed after use, as opposite to the non-ccsid versions of these
+procedures.
+ Please note that HTTP2 is not (yet) implemented on OS/400, thus these
+functions will always return NULL.
+
+
Standard compilation environment does support neither autotools nor make;
in fact, very few common utilities are available. As a consequence, the
config-os400.h has been coded manually and the compilation scripts are
@@ -263,14 +273,14 @@ _ Do not use original source include files unless you know what you are doing.
ILE/RPG support:
Since 95% of the OS/400 programmers use ILE/RPG exclusively, a definition
- /COPY member is provided for this language. To include all libcurl
+ /INCLUDE member is provided for this language. To include all libcurl
definitions in an ILE/RPG module, line
h bnddir('CURL/CURL')
must figure in the program header, and line
- d/copy curl/h,curl.inc
+ d/include curl/h,curl.inc
in the global data section of the module's source code.
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
index d0e6827b7..7b7607130 100644
--- a/packages/OS400/ccsidcurl.c
+++ b/packages/OS400/ccsidcurl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -1154,12 +1154,14 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
case CURLOPT_PROXYPASSWORD:
case CURLOPT_PROXYUSERNAME:
case CURLOPT_PROXYUSERPWD:
+ case CURLOPT_PROXY_SERVICE_NAME:
case CURLOPT_RANDOM_FILE:
case CURLOPT_RANGE:
case CURLOPT_REFERER:
case CURLOPT_RTSP_SESSION_ID:
case CURLOPT_RTSP_STREAM_URI:
case CURLOPT_RTSP_TRANSPORT:
+ case CURLOPT_SERVICE_NAME:
case CURLOPT_SOCKS5_GSSAPI_SERVICE:
case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5:
case CURLOPT_SSH_KNOWNHOSTS:
@@ -1193,10 +1195,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
}
result = curl_easy_setopt(curl, tag, s);
-
- if(s)
- free(s);
-
+ free(s);
break;
case CURLOPT_COPYPOSTFIELDS:
@@ -1279,3 +1278,42 @@ curl_form_long_value(long value)
return (char *) value;
}
+
+
+char *
+curl_pushheader_bynum_cssid(struct curl_pushheaders *h,
+ size_t num, unsigned int ccsid)
+
+{
+ char *d = (char *) NULL;
+ char *s = curl_pushheader_bynum(h, num);
+
+ if(s)
+ d = dynconvert(ccsid, s, -1, ASCII_CCSID);
+
+ return d;
+}
+
+
+char *
+curl_pushheader_byname_ccsid(struct curl_pushheaders *h, const char *header,
+ unsigned int ccsidin, unsigned int ccsidout)
+
+{
+ char *d = (char *) NULL;
+ char *s;
+
+ if(header) {
+ header = dynconvert(ASCII_CCSID, header, -1, ccsidin);
+
+ if(header) {
+ s = curl_pushheader_byname(h, header);
+ free((char *) header);
+
+ if(s)
+ d = dynconvert(ccsidout, s, -1, ASCII_CCSID);
+ }
+ }
+
+ return d;
+}
diff --git a/packages/OS400/ccsidcurl.h b/packages/OS400/ccsidcurl.h
index 3d1fe7949..cb15cced8 100644
--- a/packages/OS400/ccsidcurl.h
+++ b/packages/OS400/ccsidcurl.h
@@ -61,5 +61,11 @@ CURL_EXTERN int curl_formget_ccsid(struct curl_httppost * form, void * arg,
unsigned int ccsid);
CURL_EXTERN CURLcode curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...);
CURL_EXTERN void curl_certinfo_free_all(struct curl_certinfo *info);
+CURL_EXTERN char *curl_pushheader_bynum_cssid(struct curl_pushheaders *h,
+ size_t num, unsigned int ccsid);
+CURL_EXTERN char *curl_pushheader_byname_ccsid(struct curl_pushheaders *h,
+ const char *header,
+ unsigned int ccsidin,
+ unsigned int ccsidout);
#endif
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index fcbf7c7c5..1221015e5 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -222,6 +222,8 @@
d c 2
d CURL_HTTP_VERSION_2_0...
d c 3
+ d CURL_HTTP_VERSION_2...
+ d c 3
*
d CURL_NETRC_IGNORED...
d c 0
@@ -276,6 +278,9 @@
d CURL_CSELECT_ERR...
d c X'00000004'
*
+ d CURL_PUSH_OK c 0
+ d CURL_PUSH_DENY c 1
+ *
d CURLPAUSE_RECV c X'00000001'
d CURLPAUSE_RECV_CONT...
d c X'00000000'
@@ -517,6 +522,8 @@
d c 89
d CURLE_SSL_PINNEDPUBKEYNOTMATCH...
d c 90
+ d CURLE_SSL_INVALIDCERTSTATUS...
+ d c 91
*
/if not defined(CURL_NO_OLDIES)
d CURLE_URL_MALFORMAT_USER...
@@ -674,7 +681,9 @@
d c 3
*
d CURLSSLOPT_ALLOW_BEAST...
- d c 1
+ d c X'0001'
+ d CURLSSLOPT_NO_REVOKE...
+ d c X'0002'
*
/if not defined(CURL_NO_OLDIES)
d curl_ftpssl s like(curl_usessl)
@@ -1203,6 +1212,18 @@
d c 10230
d CURLOPT_UNIX_SOCKET_PATH...
d c 10231
+ d CURLOPT_SSL_VERIFYSTATUS...
+ d c 00232
+ d CURLOPT_SSL_FALSESTART...
+ d c 00233
+ d CURLOPT_PATH_AS_IS...
+ d c 00234
+ d CURLOPT_PROXY_SERVICE_NAME...
+ d c 10235
+ d CURLOPT_SERVICE_NAME...
+ d c 10236
+ d CURLOPT_PIPEWAIT...
+ d c 00237
*
/if not defined(CURL_NO_OLDIES)
d CURLOPT_FILE c 10001
@@ -1561,6 +1582,18 @@
d c 10012
d CURLMOPT_MAX_TOTAL_CONNECTIONS...
d c 00013
+ d CURLMOPT_PUSHFUNCTION...
+ d c 20014
+ d CURLMOPT_PUSHDATA...
+ d c 10015
+ *
+ * Bitmask bits for CURLMOPT_PIPELING.
+ *
+ d CURLPIPE_NOTHING...
+ d c x'00000000'
+ d CURLPIPE_HTTP1 c x'00000001'
+ d CURLPIPE_MULTIPLEX...
+ d c x'00000002'
*
* Public API enums for RTSP requests.
*
@@ -1779,6 +1812,12 @@
d curl_socket_callback...
d s * based(######ptr######) procptr
*
+ d curl_multi_timer_callback...
+ d s * based(######ptr######) procptr
+ *
+ d curl_push_callback...
+ d s * based(######ptr######) procptr
+ *
d curl_opensocket_callback...
d s * based(######ptr######) procptr
*
@@ -2094,6 +2133,16 @@
d pr * extproc('curl_multi_strerror') char *
d code value like(CURLMcode)
*
+ d curl_pushheader_bynum...
+ d pr * extproc('curl_pushheader_bynum') char *
+ d h * value curl_pushheaders *
+ d num 10u 0 value
+ *
+ d curl_pushheader_byname...
+ d pr * extproc('curl_pushheader_byname') char *
+ d h * value curl_pushheaders *
+ d header * value options(*string) const char *
+ *
d curl_multi_socket...
d pr extproc('curl_multi_socket')
d like(CURLMcode)
@@ -2261,4 +2310,19 @@
d objectarg * value options(*string: *nopass)
d ccsid 10u 0 value options(*nopass)
*
+ d curl_pushheader_bynum_ccsid...
+ d pr * extproc( char *
+ d 'curl_pushheader_bynum_ccsid')
+ d h * value curl_pushheaders *
+ d num 10u 0 value
+ d ccsid 10u 0 value
+ *
+ d curl_pushheader_byname_ccsid...
+ d pr * extproc( char *
+ d 'curl_pushheader_byname_ccsid')
+ d h * value curl_pushheaders *
+ d header * value options(*string) const char *
+ d ccsidin 10u 0 value
+ d ccsidout 10u 0 value
+ *
/endif
diff --git a/packages/OS400/makefile.sh b/packages/OS400/makefile.sh
index d2b6bc98a..141d8778c 100644
--- a/packages/OS400/makefile.sh
+++ b/packages/OS400/makefile.sh
@@ -21,7 +21,7 @@ fi
# Create the DOCS source file if it does not exist.
if action_needed "${LIBIFSNAME}/DOCS.FILE"
-then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)"
+then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(240)"
CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')"
system "${CMD}"
fi
diff --git a/packages/OS400/os400sys.c b/packages/OS400/os400sys.c
index caeaa9559..4be1deaa5 100644
--- a/packages/OS400/os400sys.c
+++ b/packages/OS400/os400sys.c
@@ -99,9 +99,7 @@ thdbufdestroy(void * private)
localkey_t i;
for(i = (localkey_t) 0; i < LK_LAST; i++) {
- if(p->buf)
- free(p->buf);
-
+ free(p->buf);
p++;
}
@@ -281,9 +279,7 @@ Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
if(servname && servnamelen)
if(!(eservname = malloc(servnamelen))) {
- if(enodename)
- free(enodename);
-
+ free(enodename);
return EAI_MEMORY;
}
@@ -304,12 +300,8 @@ Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
}
}
- if(enodename)
- free(enodename);
-
- if(eservname)
- free(eservname);
-
+ free(enodename);
+ free(eservname);
return status;
}
@@ -342,9 +334,7 @@ Curl_getaddrinfo_a(const char * nodename, const char * servname,
i = strlen(servname);
if(!(eservname = malloc(i + 1))) {
- if(enodename)
- free(enodename);
-
+ free(enodename);
return EAI_MEMORY;
}
@@ -353,13 +343,8 @@ Curl_getaddrinfo_a(const char * nodename, const char * servname,
}
status = getaddrinfo(enodename, eservname, hints, res);
-
- if(enodename)
- free(enodename);
-
- if(eservname)
- free(eservname);
-
+ free(enodename);
+ free(eservname);
return status;
}
@@ -886,9 +871,7 @@ Curl_gss_init_sec_context_a(OM_uint32 * minor_status,
target_name, mech_type, req_flags, time_req,
input_chan_bindings, inp, actual_mech_type,
output_token, ret_flags, time_rec);
-
- if(in.value)
- free(in.value);
+ free(in.value);
if(rc != GSS_S_COMPLETE || !output_token ||
!output_token->length || !output_token->value)
@@ -985,9 +968,7 @@ Curl_ldap_simple_bind_s_a(void * ld, char * dn, char * passwd)
i = strlen(passwd);
if(!(epasswd = malloc(i + 1))) {
- if(edn)
- free(edn);
-
+ free(edn);
return LDAP_NO_MEMORY;
}
@@ -996,13 +977,8 @@ Curl_ldap_simple_bind_s_a(void * ld, char * dn, char * passwd)
}
i = ldap_simple_bind_s(ld, edn, epasswd);
-
- if(epasswd)
- free(epasswd);
-
- if(edn)
- free(edn);
-
+ free(epasswd);
+ free(edn);
return i;
}
@@ -1079,12 +1055,8 @@ Curl_ldap_search_s_a(void * ld, char * base, int scope, char * filter,
free(eattrs);
}
- if(efilter)
- free(efilter);
-
- if(ebase)
- free(ebase);
-
+ free(efilter);
+ free(ebase);
return status;
}
@@ -1112,9 +1084,7 @@ Curl_ldap_get_values_len_a(void * ld, LDAPMessage * entry, const char * attr)
}
result = ldap_get_values_len(ld, entry, cp);
-
- if(cp)
- free(cp);
+ free(cp);
/* Result data are binary in nature, so they haven't been
converted to EBCDIC. Therefore do not convert. */
diff --git a/packages/Solaris/Makefile.in b/packages/Solaris/Makefile.in
index 60a005adb..0e43d89b8 100644
--- a/packages/Solaris/Makefile.in
+++ b/packages/Solaris/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
#
#
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -81,8 +91,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/Solaris
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -103,7 +111,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -128,6 +137,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -186,7 +196,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -239,6 +249,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -255,7 +266,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -335,7 +345,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Solaris/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/Solaris/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -510,6 +519,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
package:
if [ ! -f release ]; then echo 0 > release; fi
diff --git a/packages/Symbian/group/libcurl.mmp b/packages/Symbian/group/libcurl.mmp
index 2419c206c..545cdee94 100644
--- a/packages/Symbian/group/libcurl.mmp
+++ b/packages/Symbian/group/libcurl.mmp
@@ -16,7 +16,7 @@ MACRO BUILDING_LIBCURL
MACRO HAVE_LIBZ
#endif
#ifdef ENABLE_SSL
-MACRO USE_SSLEAY
+MACRO USE_OPENSSL
#endif
SOURCEPATH ../../../lib
@@ -38,9 +38,9 @@ SOURCE \
vtls/axtls.c idn_win32.c http_negotiate_sspi.c vtls/cyassl.c \
http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \
curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c \
- curl_sasl.c vtls/curl_schannel.c curl_multibyte.c \
- vtls/curl_darwinssl.c bundles.c conncache.c curl_sasl_sspi.c smb.c \
- curl_sasl_gssapi.c curl_endian.c
+ curl_sasl.c vtls/schannel.c curl_multibyte.c vtls/darwinssl.c \
+ conncache.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c \
+ curl_endian.c curl_des.c
USERINCLUDE ../../../lib ../../../include/curl
#ifdef ENABLE_SSL
diff --git a/packages/TPF/curl.mak b/packages/TPF/curl.mak
index 6e9340464..5ef2ae16d 100644
--- a/packages/TPF/curl.mak
+++ b/packages/TPF/curl.mak
@@ -43,7 +43,6 @@ CFLAGS_CURL += -w
# use SSL
# (overrides Curl's lib/config-tpf.h file)
CFLAGS_CURL += -DUSE_OPENSSL
-CFLAGS_CURL += -DUSE_SSLEAY
# disable all protocols except FTP and HTTP
# (overrides Curl's lib/config-tpf.h file)
diff --git a/packages/Win32/Makefile.in b/packages/Win32/Makefile.in
index 9c818362e..eb8ec1ce3 100644
--- a/packages/Win32/Makefile.in
+++ b/packages/Win32/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/Win32
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -389,7 +399,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Win32/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/Win32/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -684,6 +693,8 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/Win32/cygwin/Makefile.in b/packages/Win32/cygwin/Makefile.in
index eedce1183..1b05aeee3 100644
--- a/packages/Win32/cygwin/Makefile.in
+++ b/packages/Win32/cygwin/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/Win32/cygwin
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -345,7 +355,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Win32/cygwin/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/Win32/cygwin/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -520,6 +529,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
cygwinbin:
rm -rf $(cygwintmp)
diff --git a/packages/vms/Makefile.in b/packages/vms/Makefile.in
index 99e63137d..35cd98139 100644
--- a/packages/vms/Makefile.in
+++ b/packages/vms/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/vms
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -364,7 +374,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign packages/vms/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -539,6 +548,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/packages/vms/build_gnv_curl_pcsi_desc.com b/packages/vms/build_gnv_curl_pcsi_desc.com
index 572b9b8ba..3b4cd803f 100644
--- a/packages/vms/build_gnv_curl_pcsi_desc.com
+++ b/packages/vms/build_gnv_curl_pcsi_desc.com
@@ -113,6 +113,7 @@ $! Required product dependencies.
$!----------------------------------
$ vmsprd = "DEC"
$ if base .eqs. "I64VMS" then vmsprd = "HP"
+$ vsiprd = "VSI"
$!
$ write pdsc " software ''vmsprd' ''base' VMS ;"
$ arch_type = f$getsyi("ARCH_NAME")
@@ -126,8 +127,11 @@ $ if dashver .eqs. "-" then dashver = ""
$ vmstag = majver + minver + dashver
$ code = f$extract(0, 1, arch_type)
$ arch_code = f$extract(0, 1, arch_type)
-$ write pdsc -
- " if (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>) ;"
+$ line_out = -
+ " if ((not <software ''vsiprd' ''base' VMS version minimum" + -
+ " ''node_swvers'>) and" + -
+ " (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>));"
+$ write pdsc line_out
$ write pdsc " error NEED_VMS''vmstag';"
$ write pdsc " end if;"
$!
diff --git a/packages/vms/build_vms.com b/packages/vms/build_vms.com
index d7edc463e..e21e57c47 100644
--- a/packages/vms/build_vms.com
+++ b/packages/vms/build_vms.com
@@ -549,7 +549,7 @@ $ if (.not. nossl)
$ then
$ if (f$trnlnm("OPENSSL") .nes. "")
$ then
-$! cc_defs = cc_defs + ", USE_SSLEAY=1"
+$! cc_defs = cc_defs + ", USE_OPENSSL=1"
$ if ((f$trnlnm("SSL$INCLUDE") .nes. "") .and. (.not. nohpssl))
$ then
$! Use HP SSL.
diff --git a/packages/vms/gnv_link_curl.com b/packages/vms/gnv_link_curl.com
index 960c24392..b7e608386 100644
--- a/packages/vms/gnv_link_curl.com
+++ b/packages/vms/gnv_link_curl.com
@@ -173,9 +173,17 @@ $ full_version = f$element(1, " ", hp_ssl_version)
$ ver_maj = f$element(0, ".", full_version)
$ ver_min = f$element(1, ".", full_version)
$ ver_patch = f$element(2, ".", full_version)
+$! ! ver_patch is typically both a number and some letters
$ ver_patch_len = f$length(ver_patch)
-$ ver_patchnum = f$extract(0, ver_patch_len - 1, ver_patch)
-$ ver_patchltr = f$extract(ver_patch_len - 1, 1, ver_patch)
+$ ver_patchltr = ""
+$ver_patch_loop:
+$ ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch)
+$ if ver_patchltr_c .les. "9" then goto ver_patch_loop_end
+$ ver_patchltr = ver_patchltr_c + ver_patchltr
+$ ver_patch_len = ver_patch_len - 1
+$ goto ver_patch_loop
+$ver_patch_loop_end:
+$ ver_patchnum = ver_patch - ver_patchltr
$ if 'ver_maj' .ge. 0
$ then
$ if 'ver_min' .ge. 9
@@ -186,6 +194,7 @@ $ if ver_patchltr .ges. "w" then use_hp_ssl = 1
$ endif
$ endif
$ endif
+$set nover
$ if use_hp_ssl .eq. 0
$ then
$ write sys$output -
diff --git a/projects/README b/projects/README
index b45d78397..f83302813 100644
--- a/projects/README
+++ b/projects/README
@@ -88,6 +88,46 @@ Building with Visual C++
well as a configuration that includes both, it is recommend that you use the
all-in-one configuration.
+Running DLL based configurations
+================================
+
+ If you are a developer and plan to run the curl tool from Visual Studio (eg
+ you are debugging) with any third-party libraries (such as OpenSSL, wolfSSL
+ or LibSSH2) then you will need to add the search path of these DLLs to the
+ configuration's PATH environment. To do that:
+
+ * Open the 'curl-all.sln' or 'curl.sln' solutions
+
+ * Right-click on the 'curl' project and select Properties
+
+ * Navigate to 'Configuration Properties > Debugging > Environment'
+
+ * Add PATH='Path to DLL';C:\Windows\system32;C:\Windows;
+ C:\Windows\System32\Wbem
+
+ ... where 'Path to DLL` is the configuration specific path. For example the
+ following configurations in Visual Studio 2010 might be:
+
+ DLL Debug - DLL OpenSSL (Win32):
+ PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+ DLL Debug - DLL OpenSSL (x64):
+ PATH=..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+ DLL Debug - DLL wolfSSL (Win32):
+ PATH=..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+ DLL Debug - DLL wolfSSL (x64):
+ PATH=..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+ If you are using a configuration that uses multiple third-party library DLLs
+ (such as DLL Debug - DLL OpenSSL - DLL LibSSH2) then 'Path to DLL' will need
+ to contain the path to both of these.
+
Notes
=====
@@ -110,6 +150,16 @@ Notes
stored in the git repositoty) will need to be modified rather than the
generated project files that Visual Studio uses.
+Legacy Windows and SSL
+======================
+
+ Some of the project configurations allow the use of WinSSL (specifically
+ SChannel from Windows SSPI), the native SSL library in Windows. However,
+ WinSSL in Windows <= XP is unable to connect to servers that no longer
+ support the legacy handshakes and algorithms used by those versions. If
+ you will be using curl in one of those earlier versions of Windows you
+ should choose another SSL backend such as OpenSSL.
+
TODO
====
@@ -121,5 +171,6 @@ TODO
* Generate *.vcxproj.filters files for VC10, VC11 and VC12
* Add the Test Suite components
* Support for other development IDEs
+ * Add PATH environment variables for third-party DLLs
Any additional help would be appreciated ;-) \ No newline at end of file
diff --git a/projects/Windows/VC10/curl.sln b/projects/Windows/VC10/curl-all.sln
index 450127210..7bd131c35 100644
--- a/projects/Windows/VC10/curl.sln
+++ b/projects/Windows/VC10/curl-all.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
EndProjectSection
@@ -17,6 +17,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -27,6 +29,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -41,6 +45,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -55,6 +61,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -75,6 +83,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -95,6 +107,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -123,6 +139,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -151,6 +171,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
@@ -171,6 +195,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -191,6 +219,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -219,6 +251,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -247,6 +283,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC10/lib/libcurl.sln b/projects/Windows/VC10/lib/libcurl.sln
index f29eccdda..15461ef9a 100644
--- a/projects/Windows/VC10/lib/libcurl.sln
+++ b/projects/Windows/VC10/lib/libcurl.sln
@@ -12,6 +12,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,26 +78,34 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC10/lib/libcurl.vcxproj b/projects/Windows/VC10/lib/libcurl.vcxproj
index 5023bf7dd..ed43a1580 100644
--- a/projects/Windows/VC10/lib/libcurl.vcxproj
+++ b/projects/Windows/VC10/lib/libcurl.vcxproj
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +49,14 @@
<Configuration>DLL Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -113,6 +129,14 @@
<Configuration>LIB Debug - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -169,6 +193,14 @@
<Configuration>LIB Release - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -304,21 +336,41 @@
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
@@ -424,21 +476,41 @@
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -505,15 +577,27 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -577,38 +661,70 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
@@ -706,7 +822,9 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
@@ -716,7 +834,9 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
@@ -734,7 +854,6 @@
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -743,12 +862,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -758,27 +876,52 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -787,12 +930,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -802,26 +944,50 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -836,7 +1002,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -845,25 +1010,50 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -878,7 +1068,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -887,29 +1076,73 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -918,13 +1151,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
<Midl>
@@ -933,12 +1161,34 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -947,13 +1197,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
<ClCompile>
@@ -965,7 +1210,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -973,13 +1217,28 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
<Midl>
@@ -994,7 +1253,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1002,19 +1260,36 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1023,12 +1298,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1038,27 +1312,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1067,12 +1332,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1082,26 +1346,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1111,12 +1366,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1125,25 +1379,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1153,12 +1398,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1167,24 +1411,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1193,12 +1428,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1208,27 +1442,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1237,12 +1462,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1252,27 +1476,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1281,12 +1496,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1296,26 +1510,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1324,12 +1529,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1339,26 +1543,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1373,7 +1568,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1382,25 +1576,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1415,7 +1600,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1424,25 +1608,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1457,7 +1632,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1466,24 +1640,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1498,7 +1663,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1507,24 +1671,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1533,12 +1688,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1548,27 +1702,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1577,12 +1722,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1592,26 +1736,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1621,12 +1756,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1635,25 +1769,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1663,12 +1788,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1677,29 +1801,20 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1708,13 +1823,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
<Midl>
@@ -1723,12 +1833,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1737,24 +1846,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1763,13 +1866,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1778,12 +1876,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1792,24 +1889,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1818,24 +1909,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1844,13 +1929,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -1859,12 +1939,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1873,13 +1952,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1888,12 +1962,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1902,24 +1975,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1928,13 +1995,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
<Midl>
@@ -1943,12 +2005,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1957,24 +2018,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1983,13 +2038,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -1998,12 +2048,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2012,25 +2061,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2038,13 +2081,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
<Midl>
@@ -2054,12 +2092,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2067,25 +2104,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2093,13 +2124,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2109,12 +2135,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2122,13 +2147,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
<ClCompile>
@@ -2140,7 +2160,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2148,13 +2167,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<ClCompile>
@@ -2166,7 +2180,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2174,13 +2187,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
<Midl>
@@ -2195,7 +2203,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2203,13 +2210,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2224,7 +2226,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2232,25 +2233,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2258,13 +2253,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
<Midl>
@@ -2274,12 +2264,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2287,25 +2276,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2313,13 +2296,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2329,12 +2307,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2342,25 +2319,20 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
<ClCompile Include="..\..\..\..\lib\base64.c" />
- <ClCompile Include="..\..\..\..\lib\bundles.c" />
<ClCompile Include="..\..\..\..\lib\conncache.c" />
<ClCompile Include="..\..\..\..\lib\connect.c" />
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
<ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />
@@ -2456,22 +2428,21 @@
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
<ClCompile Include="..\..\..\..\lib\x509asn1.c" />
<ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
- <ClInclude Include="..\..\..\..\lib\bundles.h" />
<ClInclude Include="..\..\..\..\lib\config-win32.h" />
<ClInclude Include="..\..\..\..\lib\conncache.h" />
<ClInclude Include="..\..\..\..\lib\connect.h" />
@@ -2479,6 +2450,7 @@
<ClInclude Include="..\..\..\..\lib\cookie.h" />
<ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />
<ClInclude Include="..\..\..\..\lib\curl_base64.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_des.h" />
<ClInclude Include="..\..\..\..\lib\curl_endian.h" />
<ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />
<ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />
@@ -2494,6 +2466,7 @@
<ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />
<ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />
<ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_printf.h" />
<ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />
<ClInclude Include="..\..\..\..\lib\curl_sasl.h" />
<ClInclude Include="..\..\..\..\lib\curl_sec.h" />
@@ -2568,15 +2541,15 @@
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
<ClInclude Include="..\..\..\..\lib\x509asn1.h" />
<ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC10/src/curlsrc.sln b/projects/Windows/VC10/src/curl.sln
index 13fc1d354..131f27b7a 100644
--- a/projects/Windows/VC10/src/curlsrc.sln
+++ b/projects/Windows/VC10/src/curl.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,6 +78,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -90,6 +102,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC10/src/curlsrc.vcxproj b/projects/Windows/VC10/src/curl.vcxproj
index d25946558..13ee0b505 100644
--- a/projects/Windows/VC10/src/curlsrc.vcxproj
+++ b/projects/Windows/VC10/src/curl.vcxproj
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +49,14 @@
<Configuration>DLL Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -113,6 +129,14 @@
<Configuration>LIB Debug - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -169,6 +193,14 @@
<Configuration>LIB Release - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -196,7 +228,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>
- <RootNamespace>curlsrc</RootNamespace>
+ <RootNamespace>curl</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
@@ -304,21 +336,41 @@
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
@@ -424,21 +476,41 @@
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -505,15 +577,27 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -577,42 +661,78 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
@@ -733,54 +853,62 @@
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
<Midl>
@@ -797,7 +925,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -807,18 +934,41 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
<Midl>
@@ -836,7 +986,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -846,18 +995,42 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
<Midl>
@@ -874,7 +1047,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -884,18 +1056,41 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
<Midl>
@@ -913,7 +1108,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -923,18 +1117,42 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
<Midl>
@@ -945,12 +1163,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -961,20 +1178,43 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
<Midl>
@@ -986,12 +1226,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1002,20 +1241,44 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
<Midl>
@@ -1026,12 +1289,42 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1042,20 +1335,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
<Midl>
@@ -1067,12 +1352,43 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1083,20 +1399,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
<Midl>
@@ -1107,12 +1415,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1123,20 +1430,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
<Midl>
@@ -1148,12 +1447,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1164,20 +1462,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
<Midl>
@@ -1188,12 +1478,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1204,20 +1493,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -1228,12 +1509,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1244,20 +1524,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -1269,12 +1541,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1285,20 +1556,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1310,12 +1573,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1326,20 +1588,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
<Midl>
@@ -1356,7 +1610,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1366,18 +1619,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
<Midl>
@@ -1395,7 +1640,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1405,18 +1649,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
<Midl>
@@ -1433,7 +1669,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1443,18 +1678,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -1471,7 +1698,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1481,18 +1707,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
<Midl>
@@ -1510,7 +1728,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1520,18 +1737,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1549,7 +1758,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1559,18 +1767,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -1581,12 +1781,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1597,20 +1796,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1622,12 +1813,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1638,20 +1828,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -1668,7 +1850,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1678,18 +1859,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1707,7 +1880,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1717,18 +1889,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<Midl>
@@ -1739,12 +1903,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1755,20 +1918,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
<Midl>
@@ -1780,12 +1935,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1796,20 +1950,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
<Midl>
@@ -1826,7 +1972,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1836,18 +1981,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
<Midl>
@@ -1865,7 +2002,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1875,18 +2011,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<Midl>
@@ -1897,12 +2025,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1913,20 +2040,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -1938,12 +2057,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1954,20 +2072,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
<Midl>
@@ -1984,7 +2094,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1994,18 +2103,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2023,7 +2124,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2033,18 +2133,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<Midl>
@@ -2055,12 +2147,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2071,20 +2162,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
<Midl>
@@ -2096,12 +2179,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2112,20 +2194,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
<Midl>
@@ -2142,7 +2216,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2152,18 +2225,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
<Midl>
@@ -2181,7 +2246,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2191,18 +2255,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -2213,12 +2269,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2229,20 +2284,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2254,12 +2301,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2270,20 +2316,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -2300,7 +2338,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2310,18 +2347,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2339,7 +2368,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2349,18 +2377,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
<Midl>
@@ -2371,12 +2391,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2387,20 +2406,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -2411,12 +2422,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2427,20 +2437,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -2452,12 +2454,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2468,20 +2469,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2493,12 +2486,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2509,20 +2501,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
<Midl>
@@ -2539,7 +2523,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2549,18 +2532,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -2577,7 +2552,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2587,18 +2561,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
<Midl>
@@ -2616,7 +2582,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2626,18 +2591,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2655,7 +2612,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2665,18 +2621,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
diff --git a/projects/Windows/VC11/curl.sln b/projects/Windows/VC11/curl-all.sln
index c9085a936..bec0ad84c 100644
--- a/projects/Windows/VC11/curl.sln
+++ b/projects/Windows/VC11/curl-all.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
EndProjectSection
@@ -17,6 +17,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -27,6 +29,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -41,6 +45,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -55,6 +61,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -75,6 +83,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -95,6 +107,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -123,6 +139,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -151,6 +171,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
@@ -171,6 +195,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -191,6 +219,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -219,6 +251,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -247,6 +283,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC11/lib/libcurl.sln b/projects/Windows/VC11/lib/libcurl.sln
index 9e3b9edf5..780dc91a2 100644
--- a/projects/Windows/VC11/lib/libcurl.sln
+++ b/projects/Windows/VC11/lib/libcurl.sln
@@ -12,6 +12,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,26 +78,34 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC11/lib/libcurl.vcxproj b/projects/Windows/VC11/lib/libcurl.vcxproj
index 6a13105d3..714e36af1 100644
--- a/projects/Windows/VC11/lib/libcurl.vcxproj
+++ b/projects/Windows/VC11/lib/libcurl.vcxproj
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +49,14 @@
<Configuration>DLL Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -113,6 +129,14 @@
<Configuration>LIB Debug - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -169,6 +193,14 @@
<Configuration>LIB Release - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -325,24 +357,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
@@ -469,24 +525,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -553,15 +633,27 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -625,38 +717,70 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
@@ -754,7 +878,9 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
@@ -764,7 +890,9 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
@@ -782,7 +910,6 @@
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -791,12 +918,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -806,27 +932,52 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -835,12 +986,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -850,26 +1000,50 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -884,7 +1058,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -893,25 +1066,50 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -926,7 +1124,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -935,29 +1132,73 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -966,13 +1207,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
<Midl>
@@ -981,12 +1217,34 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -995,13 +1253,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
<ClCompile>
@@ -1013,7 +1266,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1021,13 +1273,28 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
<Midl>
@@ -1042,7 +1309,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1050,19 +1316,36 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1071,12 +1354,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1086,27 +1368,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1115,12 +1388,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1130,26 +1402,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1159,12 +1422,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1173,25 +1435,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1201,12 +1454,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1215,24 +1467,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1241,12 +1484,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1256,27 +1498,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1285,12 +1518,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1300,27 +1532,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1329,12 +1552,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1344,26 +1566,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1372,12 +1585,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1387,26 +1599,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1421,7 +1624,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1430,25 +1632,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1463,7 +1656,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1472,25 +1664,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1505,7 +1688,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1514,24 +1696,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1546,7 +1719,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1555,24 +1727,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1581,12 +1744,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1596,27 +1758,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1625,12 +1778,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1640,26 +1792,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1669,12 +1812,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1683,25 +1825,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1711,12 +1844,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1725,29 +1857,20 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1756,13 +1879,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
<Midl>
@@ -1771,12 +1889,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1785,24 +1902,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1811,13 +1922,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1826,12 +1932,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1840,24 +1945,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1866,24 +1965,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1892,13 +1985,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -1907,12 +1995,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1921,13 +2008,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1936,12 +2018,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1950,24 +2031,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1976,13 +2051,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
<Midl>
@@ -1991,12 +2061,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2005,24 +2074,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2031,13 +2094,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2046,12 +2104,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2060,25 +2117,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2086,13 +2137,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
<Midl>
@@ -2102,12 +2148,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2115,25 +2160,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2141,13 +2180,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2157,12 +2191,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2170,13 +2203,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
<ClCompile>
@@ -2188,7 +2216,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2196,13 +2223,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<ClCompile>
@@ -2214,7 +2236,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2222,13 +2243,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
<Midl>
@@ -2243,7 +2259,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2251,13 +2266,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2272,7 +2282,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2280,25 +2289,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2306,13 +2309,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
<Midl>
@@ -2322,12 +2320,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2335,25 +2332,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2361,13 +2352,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2377,12 +2363,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2390,25 +2375,20 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
<ClCompile Include="..\..\..\..\lib\base64.c" />
- <ClCompile Include="..\..\..\..\lib\bundles.c" />
<ClCompile Include="..\..\..\..\lib\conncache.c" />
<ClCompile Include="..\..\..\..\lib\connect.c" />
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
<ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />
@@ -2504,22 +2484,21 @@
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
<ClCompile Include="..\..\..\..\lib\x509asn1.c" />
<ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
- <ClInclude Include="..\..\..\..\lib\bundles.h" />
<ClInclude Include="..\..\..\..\lib\config-win32.h" />
<ClInclude Include="..\..\..\..\lib\conncache.h" />
<ClInclude Include="..\..\..\..\lib\connect.h" />
@@ -2527,6 +2506,7 @@
<ClInclude Include="..\..\..\..\lib\cookie.h" />
<ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />
<ClInclude Include="..\..\..\..\lib\curl_base64.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_des.h" />
<ClInclude Include="..\..\..\..\lib\curl_endian.h" />
<ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />
<ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />
@@ -2542,6 +2522,7 @@
<ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />
<ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />
<ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_printf.h" />
<ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />
<ClInclude Include="..\..\..\..\lib\curl_sasl.h" />
<ClInclude Include="..\..\..\..\lib\curl_sec.h" />
@@ -2616,15 +2597,15 @@
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
<ClInclude Include="..\..\..\..\lib\x509asn1.h" />
<ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC11/src/curlsrc.sln b/projects/Windows/VC11/src/curl.sln
index 88b4f7eb6..e12253e9b 100644
--- a/projects/Windows/VC11/src/curlsrc.sln
+++ b/projects/Windows/VC11/src/curl.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,6 +78,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -90,6 +102,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC11/src/curlsrc.vcxproj b/projects/Windows/VC11/src/curl.vcxproj
index 297262dfc..92463c00c 100644
--- a/projects/Windows/VC11/src/curlsrc.vcxproj
+++ b/projects/Windows/VC11/src/curl.vcxproj
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +49,14 @@
<Configuration>DLL Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -113,6 +129,14 @@
<Configuration>LIB Debug - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -169,6 +193,14 @@
<Configuration>LIB Release - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -196,7 +228,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>
- <RootNamespace>curlsrc</RootNamespace>
+ <RootNamespace>curl</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
@@ -325,24 +357,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
@@ -469,24 +525,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -553,15 +633,27 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -625,42 +717,78 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
@@ -781,54 +909,62 @@
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
<Midl>
@@ -845,7 +981,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -855,18 +990,41 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
<Midl>
@@ -884,7 +1042,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -894,18 +1051,42 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
<Midl>
@@ -922,7 +1103,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -932,18 +1112,41 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
<Midl>
@@ -961,7 +1164,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -971,18 +1173,42 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
<Midl>
@@ -993,12 +1219,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1009,20 +1234,43 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
<Midl>
@@ -1034,12 +1282,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1050,20 +1297,44 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
<Midl>
@@ -1074,12 +1345,42 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1090,20 +1391,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
<Midl>
@@ -1115,12 +1408,43 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1131,20 +1455,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
<Midl>
@@ -1155,12 +1471,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1171,20 +1486,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
<Midl>
@@ -1196,12 +1503,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1212,20 +1518,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
<Midl>
@@ -1236,12 +1534,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1252,20 +1549,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -1276,12 +1565,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1292,20 +1580,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -1317,12 +1597,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1333,20 +1612,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1358,12 +1629,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1374,20 +1644,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
<Midl>
@@ -1404,7 +1666,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1414,18 +1675,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
<Midl>
@@ -1443,7 +1696,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1453,18 +1705,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
<Midl>
@@ -1481,7 +1725,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1491,18 +1734,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -1519,7 +1754,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1529,18 +1763,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
<Midl>
@@ -1558,7 +1784,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1568,18 +1793,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1597,7 +1814,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1607,18 +1823,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -1629,12 +1837,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1645,20 +1852,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1670,12 +1869,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1686,20 +1884,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -1716,7 +1906,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1726,18 +1915,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1755,7 +1936,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1765,18 +1945,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<Midl>
@@ -1787,12 +1959,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1803,20 +1974,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
<Midl>
@@ -1828,12 +1991,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1844,20 +2006,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
<Midl>
@@ -1874,7 +2028,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1884,18 +2037,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
<Midl>
@@ -1913,7 +2058,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1923,18 +2067,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<Midl>
@@ -1945,12 +2081,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1961,20 +2096,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -1986,12 +2113,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2002,20 +2128,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
<Midl>
@@ -2032,7 +2150,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2042,18 +2159,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2071,7 +2180,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2081,18 +2189,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<Midl>
@@ -2103,12 +2203,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2119,20 +2218,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
<Midl>
@@ -2144,12 +2235,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2160,20 +2250,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
<Midl>
@@ -2190,7 +2272,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2200,18 +2281,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
<Midl>
@@ -2229,7 +2302,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2239,18 +2311,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -2261,12 +2325,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2277,20 +2340,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2302,12 +2357,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2318,20 +2372,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -2348,7 +2394,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2358,18 +2403,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2387,7 +2424,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2397,18 +2433,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
<Midl>
@@ -2419,12 +2447,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2435,20 +2462,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -2459,12 +2478,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2475,20 +2493,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -2500,12 +2510,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2516,20 +2525,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2541,12 +2542,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2557,20 +2557,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
<Midl>
@@ -2587,7 +2579,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2597,18 +2588,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -2625,7 +2608,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2635,18 +2617,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
<Midl>
@@ -2664,7 +2638,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2674,18 +2647,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2703,7 +2668,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2713,18 +2677,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
diff --git a/projects/Windows/VC12/curl.sln b/projects/Windows/VC12/curl-all.sln
index 57064c49f..38b33e6f5 100644
--- a/projects/Windows/VC12/curl.sln
+++ b/projects/Windows/VC12/curl-all.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
EndProjectSection
@@ -17,6 +17,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -27,6 +29,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -41,6 +45,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -55,6 +61,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -75,6 +83,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -95,6 +107,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -123,6 +139,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -151,6 +171,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
@@ -171,6 +195,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -191,6 +219,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -219,6 +251,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -247,6 +283,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC12/lib/libcurl.sln b/projects/Windows/VC12/lib/libcurl.sln
index 6fe27721b..860a06028 100644
--- a/projects/Windows/VC12/lib/libcurl.sln
+++ b/projects/Windows/VC12/lib/libcurl.sln
@@ -12,6 +12,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,26 +78,34 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC12/lib/libcurl.vcxproj b/projects/Windows/VC12/lib/libcurl.vcxproj
index 739efa2d9..bab12fb76 100644
--- a/projects/Windows/VC12/lib/libcurl.vcxproj
+++ b/projects/Windows/VC12/lib/libcurl.vcxproj
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +49,14 @@
<Configuration>DLL Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -113,6 +129,14 @@
<Configuration>LIB Debug - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -169,6 +193,14 @@
<Configuration>LIB Release - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -325,24 +357,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
@@ -469,24 +525,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -553,15 +633,27 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -625,38 +717,70 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
@@ -754,7 +878,9 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
@@ -764,7 +890,9 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
@@ -782,7 +910,6 @@
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -791,12 +918,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -806,27 +932,52 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -835,12 +986,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -850,26 +1000,50 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -884,7 +1058,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -893,25 +1066,50 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -926,7 +1124,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -935,29 +1132,73 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -966,13 +1207,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
<Midl>
@@ -981,12 +1217,34 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -995,13 +1253,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
<ClCompile>
@@ -1013,7 +1266,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1021,13 +1273,28 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
<Midl>
@@ -1042,7 +1309,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1050,19 +1316,36 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1071,12 +1354,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1086,27 +1368,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1115,12 +1388,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1130,26 +1402,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1159,12 +1422,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1173,25 +1435,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1201,12 +1454,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1215,24 +1467,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1241,12 +1484,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1256,27 +1498,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1285,12 +1518,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1300,27 +1532,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1329,12 +1552,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1344,26 +1566,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1372,12 +1585,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1387,26 +1599,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1421,7 +1624,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1430,25 +1632,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1463,7 +1656,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1472,25 +1664,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1505,7 +1688,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1514,24 +1696,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1546,7 +1719,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1555,24 +1727,15 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1581,12 +1744,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1596,27 +1758,18 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1625,12 +1778,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1640,26 +1792,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1669,12 +1812,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1683,25 +1825,16 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
@@ -1711,12 +1844,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1725,29 +1857,20 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1756,13 +1879,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
<Midl>
@@ -1771,12 +1889,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1785,24 +1902,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1811,13 +1922,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1826,12 +1932,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1840,24 +1945,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1866,24 +1965,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1892,13 +1985,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -1907,12 +1995,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1921,13 +2008,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1936,12 +2018,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1950,24 +2031,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1976,13 +2051,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
<Midl>
@@ -1991,12 +2061,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2005,24 +2074,18 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2031,13 +2094,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2046,12 +2104,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2060,25 +2117,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2086,13 +2137,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
<Midl>
@@ -2102,12 +2148,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2115,25 +2160,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2141,13 +2180,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2157,12 +2191,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2170,13 +2203,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
<ClCompile>
@@ -2188,7 +2216,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2196,13 +2223,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<ClCompile>
@@ -2214,7 +2236,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2222,13 +2243,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
<Midl>
@@ -2243,7 +2259,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2251,13 +2266,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2272,7 +2282,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2280,25 +2289,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2306,13 +2309,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
<Midl>
@@ -2322,12 +2320,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2335,25 +2332,19 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2361,13 +2352,8 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2377,12 +2363,11 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2390,25 +2375,20 @@
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
</Lib>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
<ClCompile Include="..\..\..\..\lib\base64.c" />
- <ClCompile Include="..\..\..\..\lib\bundles.c" />
<ClCompile Include="..\..\..\..\lib\conncache.c" />
<ClCompile Include="..\..\..\..\lib\connect.c" />
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
<ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />
@@ -2504,22 +2484,21 @@
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
<ClCompile Include="..\..\..\..\lib\x509asn1.c" />
<ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
- <ClInclude Include="..\..\..\..\lib\bundles.h" />
<ClInclude Include="..\..\..\..\lib\config-win32.h" />
<ClInclude Include="..\..\..\..\lib\conncache.h" />
<ClInclude Include="..\..\..\..\lib\connect.h" />
@@ -2527,6 +2506,7 @@
<ClInclude Include="..\..\..\..\lib\cookie.h" />
<ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />
<ClInclude Include="..\..\..\..\lib\curl_base64.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_des.h" />
<ClInclude Include="..\..\..\..\lib\curl_endian.h" />
<ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />
<ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />
@@ -2542,6 +2522,7 @@
<ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />
<ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />
<ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_printf.h" />
<ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />
<ClInclude Include="..\..\..\..\lib\curl_sasl.h" />
<ClInclude Include="..\..\..\..\lib\curl_sec.h" />
@@ -2616,15 +2597,15 @@
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
<ClInclude Include="..\..\..\..\lib\x509asn1.h" />
<ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC12/src/curlsrc.sln b/projects/Windows/VC12/src/curl.sln
index 292699cab..7b5244c1f 100644
--- a/projects/Windows/VC12/src/curlsrc.sln
+++ b/projects/Windows/VC12/src/curl.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
DLL Debug|Win32 = DLL Debug|Win32
DLL Debug|x64 = DLL Debug|x64
DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
DLL Release|Win32 = DLL Release|Win32
DLL Release|x64 = DLL Release|x64
LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
LIB Debug|Win32 = LIB Debug|Win32
LIB Debug|x64 = LIB Debug|x64
LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,6 +78,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -90,6 +102,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
{5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
diff --git a/projects/Windows/VC12/src/curlsrc.vcxproj b/projects/Windows/VC12/src/curl.vcxproj
index 7fc0c29a6..24d0a6295 100644
--- a/projects/Windows/VC12/src/curlsrc.vcxproj
+++ b/projects/Windows/VC12/src/curl.vcxproj
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +49,14 @@
<Configuration>DLL Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
<Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -113,6 +129,14 @@
<Configuration>LIB Debug - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -169,6 +193,14 @@
<Configuration>LIB Release - DLL Windows SSPI</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
<ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
<Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
<Platform>Win32</Platform>
@@ -196,7 +228,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>
- <RootNamespace>curlsrc</RootNamespace>
+ <RootNamespace>curl</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
@@ -325,24 +357,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
@@ -469,24 +525,48 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -553,15 +633,27 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -625,42 +717,78 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
@@ -781,54 +909,62 @@
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
<Midl>
@@ -845,7 +981,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -855,18 +990,41 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
<Midl>
@@ -884,7 +1042,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -894,18 +1051,42 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
<Midl>
@@ -922,7 +1103,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -932,18 +1112,41 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
<Midl>
@@ -961,7 +1164,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -971,18 +1173,42 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
<Midl>
@@ -993,12 +1219,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1009,20 +1234,43 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
<Midl>
@@ -1034,12 +1282,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1050,20 +1297,44 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
<Midl>
@@ -1074,12 +1345,42 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1090,20 +1391,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
<Midl>
@@ -1115,12 +1408,43 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1131,20 +1455,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
<Midl>
@@ -1155,12 +1471,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1171,20 +1486,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
<Midl>
@@ -1196,12 +1503,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1212,20 +1518,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
<Midl>
@@ -1236,12 +1534,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1252,20 +1549,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -1276,12 +1565,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1292,20 +1580,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -1317,12 +1597,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1333,20 +1612,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1358,12 +1629,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1374,20 +1644,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
<Midl>
@@ -1404,7 +1666,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1414,18 +1675,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
<Midl>
@@ -1443,7 +1696,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1453,18 +1705,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
<Midl>
@@ -1481,7 +1725,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1491,18 +1734,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -1519,7 +1754,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1529,18 +1763,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
<Midl>
@@ -1558,7 +1784,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1568,18 +1793,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -1597,7 +1814,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1607,18 +1823,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -1629,12 +1837,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1645,20 +1852,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1670,12 +1869,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1686,20 +1884,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -1716,7 +1906,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1726,18 +1915,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -1755,7 +1936,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1765,18 +1945,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<Midl>
@@ -1787,12 +1959,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1803,20 +1974,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
<Midl>
@@ -1828,12 +1991,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1844,20 +2006,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
<Midl>
@@ -1874,7 +2028,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1884,18 +2037,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
<Midl>
@@ -1913,7 +2058,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1923,18 +2067,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<Midl>
@@ -1945,12 +2081,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -1961,20 +2096,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -1986,12 +2113,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2002,20 +2128,12 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
<Midl>
@@ -2032,7 +2150,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2042,18 +2159,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
<Midl>
@@ -2071,7 +2180,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2081,18 +2189,10 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<Midl>
@@ -2103,12 +2203,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2119,20 +2218,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
<Midl>
@@ -2144,12 +2235,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2160,20 +2250,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
<Midl>
@@ -2190,7 +2272,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2200,18 +2281,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
<Midl>
@@ -2229,7 +2302,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2239,18 +2311,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -2261,12 +2325,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2277,20 +2340,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2302,12 +2357,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2318,20 +2372,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
<Midl>
@@ -2348,7 +2394,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2358,18 +2403,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
<Midl>
@@ -2387,7 +2424,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2397,18 +2433,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
<Midl>
@@ -2419,12 +2447,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2435,20 +2462,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -2459,12 +2478,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2475,20 +2493,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
<Midl>
@@ -2500,12 +2510,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2516,20 +2525,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2541,12 +2542,11 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
@@ -2557,20 +2557,12 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
<Midl>
@@ -2587,7 +2579,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2597,18 +2588,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
<Midl>
@@ -2625,7 +2608,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2635,18 +2617,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
<Midl>
@@ -2664,7 +2638,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2674,18 +2647,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
<Midl>
@@ -2703,7 +2668,6 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -2713,18 +2677,10 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
diff --git a/projects/Windows/VC14/curl-all.sln b/projects/Windows/VC14/curl-all.sln
new file mode 100644
index 000000000..05820e1f4
--- /dev/null
+++ b/projects/Windows/VC14/curl-all.sln
@@ -0,0 +1,298 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+ DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+ DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+ DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
+ DLL Debug|Win32 = DLL Debug|Win32
+ DLL Debug|x64 = DLL Debug|x64
+ DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+ DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+ DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+ DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
+ DLL Release|Win32 = DLL Release|Win32
+ DLL Release|x64 = DLL Release|x64
+ LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+ LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+ LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+ LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+ LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+ LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
+ LIB Debug|Win32 = LIB Debug|Win32
+ LIB Debug|x64 = LIB Debug|x64
+ LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+ LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+ LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+ LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+ LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+ LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
+ LIB Release|Win32 = LIB Release|Win32
+ LIB Release|x64 = LIB Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC14/lib/libcurl.sln b/projects/Windows/VC14/lib/libcurl.sln
new file mode 100644
index 000000000..cd8afe248
--- /dev/null
+++ b/projects/Windows/VC14/lib/libcurl.sln
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+ DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+ DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+ DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
+ DLL Debug|Win32 = DLL Debug|Win32
+ DLL Debug|x64 = DLL Debug|x64
+ DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+ DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+ DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+ DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
+ DLL Release|Win32 = DLL Release|Win32
+ DLL Release|x64 = DLL Release|x64
+ LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+ LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+ LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+ LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+ LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+ LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
+ LIB Debug|Win32 = LIB Debug|Win32
+ LIB Debug|x64 = LIB Debug|x64
+ LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+ LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+ LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+ LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+ LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+ LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
+ LIB Release|Win32 = LIB Release|Win32
+ LIB Release|x64 = LIB Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC14/lib/libcurl.vcxproj b/projects/Windows/VC14/lib/libcurl.vcxproj
new file mode 100644
index 000000000..e5fc80ec0
--- /dev/null
+++ b/projects/Windows/VC14/lib/libcurl.vcxproj
@@ -0,0 +1,2617 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|Win32">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|x64">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|Win32">
+ <Configuration>DLL Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|x64">
+ <Configuration>DLL Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|Win32">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|x64">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|Win32">
+ <Configuration>LIB Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|x64">
+ <Configuration>LIB Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>
+ <RootNamespace>libcurl</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\amigaos.c" />
+ <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
+ <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
+ <ClCompile Include="..\..\..\..\lib\base64.c" />
+ <ClCompile Include="..\..\..\..\lib\conncache.c" />
+ <ClCompile Include="..\..\..\..\lib\connect.c" />
+ <ClCompile Include="..\..\..\..\lib\content_encoding.c" />
+ <ClCompile Include="..\..\..\..\lib\cookie.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_des.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_endian.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_ntlm.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_ntlm_msgs.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_sasl_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_sasl_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_threads.c" />
+ <ClCompile Include="..\..\..\..\lib\dict.c" />
+ <ClCompile Include="..\..\..\..\lib\dotdot.c" />
+ <ClCompile Include="..\..\..\..\lib\easy.c" />
+ <ClCompile Include="..\..\..\..\lib\escape.c" />
+ <ClCompile Include="..\..\..\..\lib\file.c" />
+ <ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\formdata.c" />
+ <ClCompile Include="..\..\..\..\lib\ftp.c" />
+ <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
+ <ClCompile Include="..\..\..\..\lib\getenv.c" />
+ <ClCompile Include="..\..\..\..\lib\getinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\hmac.c" />
+ <ClCompile Include="..\..\..\..\lib\hostasyn.c" />
+ <ClCompile Include="..\..\..\..\lib\hostcheck.c" />
+ <ClCompile Include="..\..\..\..\lib\hostip4.c" />
+ <ClCompile Include="..\..\..\..\lib\hostip6.c" />
+ <ClCompile Include="..\..\..\..\lib\hostip.c" />
+ <ClCompile Include="..\..\..\..\lib\hostsyn.c" />
+ <ClCompile Include="..\..\..\..\lib\http2.c" />
+ <ClCompile Include="..\..\..\..\lib\http.c" />
+ <ClCompile Include="..\..\..\..\lib\http_chunks.c" />
+ <ClCompile Include="..\..\..\..\lib\http_digest.c" />
+ <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />
+ <ClCompile Include="..\..\..\..\lib\http_negotiate_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\http_proxy.c" />
+ <ClCompile Include="..\..\..\..\lib\idn_win32.c" />
+ <ClCompile Include="..\..\..\..\lib\if2ip.c" />
+ <ClCompile Include="..\..\..\..\lib\imap.c" />
+ <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />
+ <ClCompile Include="..\..\..\..\lib\inet_pton.c" />
+ <ClCompile Include="..\..\..\..\lib\krb5.c" />
+ <ClCompile Include="..\..\..\..\lib\ldap.c" />
+ <ClCompile Include="..\..\..\..\lib\llist.c" />
+ <ClCompile Include="..\..\..\..\lib\md4.c" />
+ <ClCompile Include="..\..\..\..\lib\md5.c" />
+ <ClCompile Include="..\..\..\..\lib\memdebug.c" />
+ <ClCompile Include="..\..\..\..\lib\mprintf.c" />
+ <ClCompile Include="..\..\..\..\lib\multi.c" />
+ <ClCompile Include="..\..\..\..\lib\netrc.c" />
+ <ClCompile Include="..\..\..\..\lib\non-ascii.c" />
+ <ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\openldap.c" />
+ <ClCompile Include="..\..\..\..\lib\parsedate.c" />
+ <ClCompile Include="..\..\..\..\lib\pingpong.c" />
+ <ClCompile Include="..\..\..\..\lib\pipeline.c" />
+ <ClCompile Include="..\..\..\..\lib\pop3.c" />
+ <ClCompile Include="..\..\..\..\lib\progress.c" />
+ <ClCompile Include="..\..\..\..\lib\rawstr.c" />
+ <ClCompile Include="..\..\..\..\lib\rtsp.c" />
+ <ClCompile Include="..\..\..\..\lib\security.c" />
+ <ClCompile Include="..\..\..\..\lib\select.c" />
+ <ClCompile Include="..\..\..\..\lib\sendf.c" />
+ <ClCompile Include="..\..\..\..\lib\share.c" />
+ <ClCompile Include="..\..\..\..\lib\slist.c" />
+ <ClCompile Include="..\..\..\..\lib\smb.c" />
+ <ClCompile Include="..\..\..\..\lib\smtp.c" />
+ <ClCompile Include="..\..\..\..\lib\socks.c" />
+ <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
+ <ClCompile Include="..\..\..\..\lib\splay.c" />
+ <ClCompile Include="..\..\..\..\lib\ssh.c" />
+ <ClCompile Include="..\..\..\..\lib\strdup.c" />
+ <ClCompile Include="..\..\..\..\lib\strequal.c" />
+ <ClCompile Include="..\..\..\..\lib\strerror.c" />
+ <ClCompile Include="..\..\..\..\lib\strtok.c" />
+ <ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\telnet.c" />
+ <ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timeval.c" />
+ <ClCompile Include="..\..\..\..\lib\transfer.c" />
+ <ClCompile Include="..\..\..\..\lib\url.c" />
+ <ClCompile Include="..\..\..\..\lib\version.c" />
+ <ClCompile Include="..\..\..\..\lib\warnless.c" />
+ <ClCompile Include="..\..\..\..\lib\wildcard.c" />
+ <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\amigaos.h" />
+ <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
+ <ClInclude Include="..\..\..\..\lib\asyn.h" />
+ <ClInclude Include="..\..\..\..\lib\config-win32.h" />
+ <ClInclude Include="..\..\..\..\lib\conncache.h" />
+ <ClInclude Include="..\..\..\..\lib\connect.h" />
+ <ClInclude Include="..\..\..\..\lib\content_encoding.h" />
+ <ClInclude Include="..\..\..\..\lib\cookie.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_base64.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_des.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_endian.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_md4.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_md5.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_memory.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_printf.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_sec.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_setup.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_threads.h" />
+ <ClInclude Include="..\..\..\..\lib\curlx.h" />
+ <ClInclude Include="..\..\..\..\lib\dict.h" />
+ <ClInclude Include="..\..\..\..\lib\dotdot.h" />
+ <ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\escape.h" />
+ <ClInclude Include="..\..\..\..\lib\file.h" />
+ <ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\formdata.h" />
+ <ClInclude Include="..\..\..\..\lib\ftp.h" />
+ <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\getinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\hash.h" />
+ <ClInclude Include="..\..\..\..\lib\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\hostip.h" />
+ <ClInclude Include="..\..\..\..\lib\http2.h" />
+ <ClInclude Include="..\..\..\..\lib\http_chunks.h" />
+ <ClInclude Include="..\..\..\..\lib\http_digest.h" />
+ <ClInclude Include="..\..\..\..\lib\http.h" />
+ <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />
+ <ClInclude Include="..\..\..\..\lib\http_proxy.h" />
+ <ClInclude Include="..\..\..\..\lib\if2ip.h" />
+ <ClInclude Include="..\..\..\..\lib\imap.h" />
+ <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
+ <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
+ <ClInclude Include="..\..\..\..\lib\llist.h" />
+ <ClInclude Include="..\..\..\..\lib\memdebug.h" />
+ <ClInclude Include="..\..\..\..\lib\multihandle.h" />
+ <ClInclude Include="..\..\..\..\lib\multiif.h" />
+ <ClInclude Include="..\..\..\..\lib\netrc.h" />
+ <ClInclude Include="..\..\..\..\lib\non-ascii.h" />
+ <ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\parsedate.h" />
+ <ClInclude Include="..\..\..\..\lib\pingpong.h" />
+ <ClInclude Include="..\..\..\..\lib\pipeline.h" />
+ <ClInclude Include="..\..\..\..\lib\pop3.h" />
+ <ClInclude Include="..\..\..\..\lib\progress.h" />
+ <ClInclude Include="..\..\..\..\lib\rawstr.h" />
+ <ClInclude Include="..\..\..\..\lib\rtsp.h" />
+ <ClInclude Include="..\..\..\..\lib\select.h" />
+ <ClInclude Include="..\..\..\..\lib\sendf.h" />
+ <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
+ <ClInclude Include="..\..\..\..\lib\share.h" />
+ <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
+ <ClInclude Include="..\..\..\..\lib\slist.h" />
+ <ClInclude Include="..\..\..\..\lib\smb.h" />
+ <ClInclude Include="..\..\..\..\lib\smtp.h" />
+ <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
+ <ClInclude Include="..\..\..\..\lib\socks.h" />
+ <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\splay.h" />
+ <ClInclude Include="..\..\..\..\lib\ssh.h" />
+ <ClInclude Include="..\..\..\..\lib\strdup.h" />
+ <ClInclude Include="..\..\..\..\lib\strequal.h" />
+ <ClInclude Include="..\..\..\..\lib\strerror.h" />
+ <ClInclude Include="..\..\..\..\lib\strtok.h" />
+ <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\telnet.h" />
+ <ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timeval.h" />
+ <ClInclude Include="..\..\..\..\lib\transfer.h" />
+ <ClInclude Include="..\..\..\..\lib\urldata.h" />
+ <ClInclude Include="..\..\..\..\lib\url.h" />
+ <ClInclude Include="..\..\..\..\lib\warnless.h" />
+ <ClInclude Include="..\..\..\..\lib\wildcard.h" />
+ <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/projects/Windows/VC14/src/curl.sln b/projects/Windows/VC14/src/curl.sln
new file mode 100644
index 000000000..b40c18bed
--- /dev/null
+++ b/projects/Windows/VC14/src/curl.sln
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+ DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+ DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+ DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+ DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
+ DLL Debug|Win32 = DLL Debug|Win32
+ DLL Debug|x64 = DLL Debug|x64
+ DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+ DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+ DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+ DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+ DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
+ DLL Release|Win32 = DLL Release|Win32
+ DLL Release|x64 = DLL Release|x64
+ LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+ LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+ LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+ LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+ LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+ LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+ LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
+ LIB Debug|Win32 = LIB Debug|Win32
+ LIB Debug|x64 = LIB Debug|x64
+ LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+ LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+ LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+ LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+ LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+ LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+ LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
+ LIB Release|Win32 = LIB Release|Win32
+ LIB Release|x64 = LIB Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC14/src/curl.vcxproj b/projects/Windows/VC14/src/curl.vcxproj
new file mode 100644
index 000000000..91c090bbe
--- /dev/null
+++ b/projects/Windows/VC14/src/curl.vcxproj
@@ -0,0 +1,2786 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|Win32">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|x64">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|Win32">
+ <Configuration>DLL Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|x64">
+ <Configuration>DLL Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|Win32">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|x64">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|Win32">
+ <Configuration>LIB Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|x64">
+ <Configuration>LIB Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>
+ <RootNamespace>curl</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\rawstr.c" />
+ <ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\warnless.c" />
+ <ClCompile Include="..\..\..\..\src\tool_binmode.c" />
+ <ClCompile Include="..\..\..\..\src\tool_bname.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
+ <ClCompile Include="..\..\..\..\src\tool_convert.c" />
+ <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
+ <ClCompile Include="..\..\..\..\src\tool_doswin.c" />
+ <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
+ <ClCompile Include="..\..\..\..\src\tool_formparse.c" />
+ <ClCompile Include="..\..\..\..\src\tool_getparam.c" />
+ <ClCompile Include="..\..\..\..\src\tool_getpass.c" />
+ <ClCompile Include="..\..\..\..\src\tool_help.c" />
+ <ClCompile Include="..\..\..\..\src\tool_helpers.c" />
+ <ClCompile Include="..\..\..\..\src\tool_homedir.c" />
+ <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />
+ <ClCompile Include="..\..\..\..\src\tool_main.c" />
+ <ClCompile Include="..\..\..\..\src\tool_metalink.c" />
+ <ClCompile Include="..\..\..\..\src\tool_mfiles.c" />
+ <ClCompile Include="..\..\..\..\src\tool_msgs.c" />
+ <ClCompile Include="..\..\..\..\src\tool_operate.c" />
+ <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_panykey.c" />
+ <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_setopt.c" />
+ <ClCompile Include="..\..\..\..\src\tool_sleep.c" />
+ <ClCompile Include="..\..\..\..\src\tool_strdup.c" />
+ <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />
+ <ClCompile Include="..\..\..\..\src\tool_util.c" />
+ <ClCompile Include="..\..\..\..\src\tool_vms.c" />
+ <ClCompile Include="..\..\..\..\src\tool_writeenv.c" />
+ <ClCompile Include="..\..\..\..\src\tool_writeout.c" />
+ <ClCompile Include="..\..\..\..\src\tool_xattr.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\config-win32.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_setup.h" />
+ <ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\rawstr.h" />
+ <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\warnless.h" />
+ <ClInclude Include="..\..\..\..\src\tool_binmode.h" />
+ <ClInclude Include="..\..\..\..\src\tool_bname.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
+ <ClInclude Include="..\..\..\..\src\tool_convert.h" />
+ <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
+ <ClInclude Include="..\..\..\..\src\tool_doswin.h" />
+ <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
+ <ClInclude Include="..\..\..\..\src\tool_formparse.h" />
+ <ClInclude Include="..\..\..\..\src\tool_getparam.h" />
+ <ClInclude Include="..\..\..\..\src\tool_getpass.h" />
+ <ClInclude Include="..\..\..\..\src\tool_helpers.h" />
+ <ClInclude Include="..\..\..\..\src\tool_help.h" />
+ <ClInclude Include="..\..\..\..\src\tool_homedir.h" />
+ <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />
+ <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />
+ <ClInclude Include="..\..\..\..\src\tool_main.h" />
+ <ClInclude Include="..\..\..\..\src\tool_metalink.h" />
+ <ClInclude Include="..\..\..\..\src\tool_mfiles.h" />
+ <ClInclude Include="..\..\..\..\src\tool_msgs.h" />
+ <ClInclude Include="..\..\..\..\src\tool_operate.h" />
+ <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />
+ <ClInclude Include="..\..\..\..\src\tool_panykey.h" />
+ <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
+ <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
+ <ClInclude Include="..\..\..\..\src\tool_setopt.h" />
+ <ClInclude Include="..\..\..\..\src\tool_setup.h" />
+ <ClInclude Include="..\..\..\..\src\tool_sleep.h" />
+ <ClInclude Include="..\..\..\..\src\tool_strdup.h" />
+ <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />
+ <ClInclude Include="..\..\..\..\src\tool_util.h" />
+ <ClInclude Include="..\..\..\..\src\tool_version.h" />
+ <ClInclude Include="..\..\..\..\src\tool_vms.h" />
+ <ClInclude Include="..\..\..\..\src\tool_writeenv.h" />
+ <ClInclude Include="..\..\..\..\src\tool_writeout.h" />
+ <ClInclude Include="..\..\..\..\src\tool_xattr.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\..\..\..\src\curl.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/projects/Windows/VC6/curl.dsw b/projects/Windows/VC6/curl-all.dsw
index 0d368d61f..a718e59a9 100644
--- a/projects/Windows/VC6/curl.dsw
+++ b/projects/Windows/VC6/curl-all.dsw
@@ -15,7 +15,7 @@ Package=<4>
###############################################################################
-Project: "curlsrc"=".\src\curlsrc.dsp" - Package Owner=<4>
+Project: "curl"=".\src\curl.dsp" - Package Owner=<4>
Package=<5>
{{{
diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
index 2c0f531f2..dbffdfec9 100644
--- a/projects/Windows/VC6/lib/libcurl.dsp
+++ b/projects/Windows/VC6/lib/libcurl.dsp
@@ -63,8 +63,8 @@ CFG=libcurl - Win32 LIB Debug
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
@@ -93,8 +93,8 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
@@ -123,8 +123,8 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
@@ -153,8 +153,8 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
@@ -183,8 +183,8 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
@@ -242,8 +242,8 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
@@ -272,8 +272,8 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
@@ -360,8 +360,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -385,8 +385,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -410,8 +410,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -435,8 +435,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -460,8 +460,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -485,8 +485,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -510,8 +510,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -560,8 +560,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -585,8 +585,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -660,8 +660,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -685,8 +685,8 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"
# PROP Target_Dir ""
CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -746,10 +746,6 @@ SOURCE=..\..\..\..\lib\base64.c
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\bundles.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\..\..\lib\conncache.c
# End Source File
# Begin Source File
@@ -770,6 +766,10 @@ SOURCE=..\..\..\..\lib\curl_addrinfo.c
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\curl_des.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\curl_endian.c
# End Source File
# Begin Source File
@@ -1150,15 +1150,11 @@ SOURCE=..\..\..\..\lib\vtls\axtls.c
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\vtls\curl_darwinssl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\curl_schannel.c
+SOURCE=..\..\..\..\lib\vtls\cyassl.c
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\vtls\cyassl.c
+SOURCE=..\..\..\..\lib\vtls\darwinssl.c
# End Source File
# Begin Source File
@@ -1186,6 +1182,10 @@ SOURCE=..\..\..\..\lib\vtls\polarssl_threadlock.c
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\vtls\schannel.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\vtls\vtls.c
# End Source File
# End Group
@@ -1206,10 +1206,6 @@ SOURCE=..\..\..\..\lib\asyn.h
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\bundles.h
-# End Source File
-# Begin Source File
-
SOURCE=..\..\..\..\lib\config-win32.h
# End Source File
# Begin Source File
@@ -1238,6 +1234,10 @@ SOURCE=..\..\..\..\lib\curl_base64.h
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\curl_des.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\curl_endian.h
# End Source File
# Begin Source File
@@ -1298,6 +1298,10 @@ SOURCE=..\..\..\..\lib\curl_ntlm_wb.h
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\curl_printf.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\curl_rtmp.h
# End Source File
# Begin Source File
@@ -1594,15 +1598,11 @@ SOURCE=..\..\..\..\lib\vtls\axtls.h
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\vtls\curl_darwinssl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\curl_schannel.h
+SOURCE=..\..\..\..\lib\vtls\cyassl.h
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\vtls\cyassl.h
+SOURCE=..\..\..\..\lib\vtls\darwinssl.h
# End Source File
# Begin Source File
@@ -1630,6 +1630,10 @@ SOURCE=..\..\..\..\lib\vtls\polarssl_threadlock.h
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\vtls\schannel.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\vtls\vtls.h
# End Source File
# End Group
diff --git a/projects/Windows/VC6/src/curlsrc.dsp b/projects/Windows/VC6/src/curl.dsp
index e13674cce..902d1682c 100644
--- a/projects/Windows/VC6/src/curlsrc.dsp
+++ b/projects/Windows/VC6/src/curl.dsp
@@ -1,46 +1,46 @@
-# Microsoft Developer Studio Project File - Name="curlsrc" - Package Owner=<4>
+# Microsoft Developer Studio Project File - Name="curl" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=curlsrc - Win32 LIB Debug
+CFG=curl - Win32 LIB Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
-!MESSAGE NMAKE /f "curlsrc.mak".
+!MESSAGE NMAKE /f "curl.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "curlsrc.mak" CFG="curlsrc - Win32 LIB Debug"
+!MESSAGE NMAKE /f "curl.mak" CFG="curl - Win32 LIB Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "curlsrc - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")
+!MESSAGE "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -50,7 +50,7 @@ CFG=curlsrc - Win32 LIB Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "curlsrc - Win32 DLL Debug"
+!IF "$(CFG)" == "curl - Win32 DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -63,8 +63,8 @@ RSC=rc.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "_DEBUG" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -74,7 +74,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Debug DLL OpenSSL"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -88,8 +88,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -99,7 +99,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -113,8 +113,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -124,7 +124,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Debug DLL Windows SSPI"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -138,8 +138,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -149,7 +149,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -163,8 +163,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -174,7 +174,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Release"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -198,7 +198,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Release DLL OpenSSL"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -223,7 +223,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -248,7 +248,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Release DLL Windows SSPI"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -273,7 +273,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
+!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -298,7 +298,7 @@ LINK32=link.exe
# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no
# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -311,8 +311,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "_DEBUG" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -322,7 +322,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curl.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug DLL OpenSSL"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -336,8 +336,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -347,7 +347,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -361,8 +361,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -372,7 +372,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug DLL Windows SSPI"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -386,8 +386,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -397,7 +397,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -411,8 +411,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -422,7 +422,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no
# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug LIB OpenSSL"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -436,8 +436,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -447,7 +447,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -461,8 +461,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
BSC32=bscmake.exe
@@ -472,7 +472,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -496,7 +496,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release DLL OpenSSL"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -521,7 +521,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -546,7 +546,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release DLL Windows SSPI"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -571,7 +571,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no
# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -596,7 +596,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no
# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release LIB OpenSSL"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -621,7 +621,7 @@ LINK32=link.exe
# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /fixed:no
# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /fixed:no
-!ELSEIF "$(CFG)" == "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
+!ELSEIF "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -650,30 +650,30 @@ LINK32=link.exe
# Begin Target
-# Name "curlsrc - Win32 DLL Debug"
-# Name "curlsrc - Win32 DLL Debug DLL OpenSSL"
-# Name "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
-# Name "curlsrc - Win32 DLL Debug DLL Windows SSPI"
-# Name "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
-# Name "curlsrc - Win32 DLL Release"
-# Name "curlsrc - Win32 DLL Release DLL OpenSSL"
-# Name "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
-# Name "curlsrc - Win32 DLL Release DLL Windows SSPI"
-# Name "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
-# Name "curlsrc - Win32 LIB Debug"
-# Name "curlsrc - Win32 LIB Debug DLL OpenSSL"
-# Name "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
-# Name "curlsrc - Win32 LIB Debug DLL Windows SSPI"
-# Name "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
-# Name "curlsrc - Win32 LIB Debug LIB OpenSSL"
-# Name "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
-# Name "curlsrc - Win32 LIB Release"
-# Name "curlsrc - Win32 LIB Release DLL OpenSSL"
-# Name "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
-# Name "curlsrc - Win32 LIB Release DLL Windows SSPI"
-# Name "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
-# Name "curlsrc - Win32 LIB Release LIB OpenSSL"
-# Name "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
+# Name "curl - Win32 DLL Debug"
+# Name "curl - Win32 DLL Debug DLL OpenSSL"
+# Name "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
+# Name "curl - Win32 DLL Debug DLL Windows SSPI"
+# Name "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
+# Name "curl - Win32 DLL Release"
+# Name "curl - Win32 DLL Release DLL OpenSSL"
+# Name "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
+# Name "curl - Win32 DLL Release DLL Windows SSPI"
+# Name "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
+# Name "curl - Win32 LIB Debug"
+# Name "curl - Win32 LIB Debug DLL OpenSSL"
+# Name "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
+# Name "curl - Win32 LIB Debug DLL Windows SSPI"
+# Name "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
+# Name "curl - Win32 LIB Debug LIB OpenSSL"
+# Name "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
+# Name "curl - Win32 LIB Release"
+# Name "curl - Win32 LIB Release DLL OpenSSL"
+# Name "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
+# Name "curl - Win32 LIB Release DLL Windows SSPI"
+# Name "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
+# Name "curl - Win32 LIB Release LIB OpenSSL"
+# Name "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
# Begin Group "Source Files"
# PROP Default_Filter ""
diff --git a/projects/Windows/VC6/src/curlsrc.dsw b/projects/Windows/VC6/src/curl.dsw
index 2aec0107d..a7adbce26 100644
--- a/projects/Windows/VC6/src/curlsrc.dsw
+++ b/projects/Windows/VC6/src/curl.dsw
@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
###############################################################################
-Project: "curlsrc"=".\curlsrc.dsp" - Package Owner=<4>
+Project: "curl"=".\curl.dsp" - Package Owner=<4>
Package=<5>
{{{
diff --git a/projects/Windows/VC7.1/curl.sln b/projects/Windows/VC7.1/curl-all.sln
index 4475c7759..fc51b9dc0 100644
--- a/projects/Windows/VC7.1/curl.sln
+++ b/projects/Windows/VC7.1/curl-all.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
EndProjectSection
diff --git a/projects/Windows/VC7.1/lib/libcurl.vcproj b/projects/Windows/VC7.1/lib/libcurl.vcproj
index a7d5bf3d1..5b750e90a 100644
--- a/projects/Windows/VC7.1/lib/libcurl.vcproj
+++ b/projects/Windows/VC7.1/lib/libcurl.vcproj
@@ -23,7 +23,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -81,7 +81,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -140,7 +140,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -198,7 +198,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -245,7 +245,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -349,7 +349,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -396,7 +396,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -443,7 +443,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -547,7 +547,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -652,7 +652,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -710,7 +710,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -804,7 +804,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -851,7 +851,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -898,7 +898,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -945,7 +945,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1004,7 +1004,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1051,7 +1051,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1166,7 +1166,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1268,9 +1268,6 @@
RelativePath="..\..\..\..\lib\base64.c">
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.c">
- </File>
- <File
RelativePath="..\..\..\..\lib\conncache.c">
</File>
<File
@@ -1286,6 +1283,9 @@
RelativePath="..\..\..\..\lib\curl_addrinfo.c">
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.c">
</File>
<File
@@ -1581,9 +1581,6 @@
RelativePath="..\..\..\..\lib\asyn.h">
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.h">
- </File>
- <File
RelativePath="..\..\..\..\lib\config-win32.h">
</File>
<File
@@ -1605,6 +1602,9 @@
RelativePath="..\..\..\..\lib\curl_base64.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.h">
</File>
<File
@@ -1650,6 +1650,9 @@
RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_printf.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_rtmp.h">
</File>
<File
@@ -1886,13 +1889,10 @@
RelativePath="..\..\..\..\lib\vtls\axtls.c">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.c">
+ RelativePath="..\..\..\..\lib\vtls\cyassl.c">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.c">
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.c">
</File>
<File
RelativePath="..\..\..\..\lib\vtls\gskit.c">
@@ -1913,6 +1913,9 @@
RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c">
</File>
</Filter>
@@ -1923,13 +1926,10 @@
RelativePath="..\..\..\..\lib\vtls\axtls.h">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.h">
+ RelativePath="..\..\..\..\lib\vtls\cyassl.h">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.h">
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.h">
</File>
<File
RelativePath="..\..\..\..\lib\vtls\gskit.h">
@@ -1950,6 +1950,9 @@
RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h">
</File>
</Filter>
diff --git a/projects/Windows/VC7.1/src/curlsrc.sln b/projects/Windows/VC7.1/src/curl.sln
index cba3b6066..41ebb61ea 100644
--- a/projects/Windows/VC7.1/src/curlsrc.sln
+++ b/projects/Windows/VC7.1/src/curl.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
diff --git a/projects/Windows/VC7.1/src/curlsrc.vcproj b/projects/Windows/VC7.1/src/curl.vcproj
index 024e9d777..954f0e56c 100644
--- a/projects/Windows/VC7.1/src/curlsrc.vcproj
+++ b/projects/Windows/VC7.1/src/curl.vcproj
@@ -2,7 +2,7 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
- Name="curlsrc"
+ Name="curl"
SccProjectName=""
SccLocalPath="">
<Platforms>
@@ -35,7 +35,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"
@@ -90,7 +90,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -145,7 +145,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -187,7 +187,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -200,7 +200,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
@@ -244,7 +244,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -257,7 +257,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"
@@ -301,7 +301,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -314,7 +314,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -358,7 +358,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -371,7 +371,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"
@@ -428,7 +428,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
@@ -483,7 +483,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
@@ -538,7 +538,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -593,7 +593,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"
@@ -635,7 +635,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -648,7 +648,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
@@ -692,7 +692,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -705,7 +705,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -749,7 +749,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -762,7 +762,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -819,7 +819,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -874,7 +874,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -916,7 +916,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -929,7 +929,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -973,7 +973,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -986,7 +986,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -1043,7 +1043,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -1085,7 +1085,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1098,7 +1098,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -1142,7 +1142,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1155,7 +1155,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -1212,7 +1212,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -1254,7 +1254,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1267,7 +1267,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
@@ -1324,7 +1324,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
diff --git a/projects/Windows/VC7/curl.sln b/projects/Windows/VC7/curl-all.sln
index fb7b89a42..b0746d834 100644
--- a/projects/Windows/VC7/curl.sln
+++ b/projects/Windows/VC7/curl-all.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
EndProject
diff --git a/projects/Windows/VC7/lib/libcurl.vcproj b/projects/Windows/VC7/lib/libcurl.vcproj
index e3cbba18e..ee17474eb 100644
--- a/projects/Windows/VC7/lib/libcurl.vcproj
+++ b/projects/Windows/VC7/lib/libcurl.vcproj
@@ -23,7 +23,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -75,7 +75,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -128,7 +128,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -180,7 +180,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -221,7 +221,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -313,7 +313,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -354,7 +354,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -395,7 +395,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -487,7 +487,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -580,7 +580,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -632,7 +632,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -714,7 +714,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -755,7 +755,7 @@
AdditionalOptions="/EHsc "
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -796,7 +796,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -837,7 +837,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -890,7 +890,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -931,7 +931,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1034,7 +1034,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1122,9 +1122,6 @@
RelativePath="..\..\..\..\lib\base64.c">
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.c">
- </File>
- <File
RelativePath="..\..\..\..\lib\conncache.c">
</File>
<File
@@ -1140,6 +1137,9 @@
RelativePath="..\..\..\..\lib\curl_addrinfo.c">
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.c">
</File>
<File
@@ -1435,9 +1435,6 @@
RelativePath="..\..\..\..\lib\asyn.h">
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.h">
- </File>
- <File
RelativePath="..\..\..\..\lib\config-win32.h">
</File>
<File
@@ -1459,6 +1456,9 @@
RelativePath="..\..\..\..\lib\curl_base64.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.h">
</File>
<File
@@ -1504,6 +1504,9 @@
RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_printf.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_rtmp.h">
</File>
<File
@@ -1740,13 +1743,10 @@
RelativePath="..\..\..\..\lib\vtls\axtls.c">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.c">
+ RelativePath="..\..\..\..\lib\vtls\cyassl.c">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.c">
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.c">
</File>
<File
RelativePath="..\..\..\..\lib\vtls\gskit.c">
@@ -1767,6 +1767,9 @@
RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c">
</File>
</Filter>
@@ -1777,13 +1780,10 @@
RelativePath="..\..\..\..\lib\vtls\axtls.h">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.h">
+ RelativePath="..\..\..\..\lib\vtls\cyassl.h">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.h">
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.h">
</File>
<File
RelativePath="..\..\..\..\lib\vtls\gskit.h">
@@ -1804,6 +1804,9 @@
RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h">
</File>
</Filter>
diff --git a/projects/Windows/VC7/src/curlsrc.sln b/projects/Windows/VC7/src/curl.sln
index 651c9b2be..69554619d 100644
--- a/projects/Windows/VC7/src/curlsrc.sln
+++ b/projects/Windows/VC7/src/curl.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
diff --git a/projects/Windows/VC7/src/curlsrc.vcproj b/projects/Windows/VC7/src/curl.vcproj
index bab5237bd..b032c5458 100644
--- a/projects/Windows/VC7/src/curlsrc.vcproj
+++ b/projects/Windows/VC7/src/curl.vcproj
@@ -2,7 +2,7 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
- Name="curlsrc"
+ Name="curl"
SccProjectName=""
SccLocalPath="">
<Platforms>
@@ -35,7 +35,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"
@@ -84,7 +84,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -133,7 +133,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -169,7 +169,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -182,7 +182,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
@@ -220,7 +220,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -233,7 +233,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"
@@ -271,7 +271,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -284,7 +284,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -322,7 +322,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -335,7 +335,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"
@@ -386,7 +386,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
@@ -435,7 +435,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
@@ -484,7 +484,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -533,7 +533,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"
@@ -569,7 +569,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -582,7 +582,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
@@ -620,7 +620,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -633,7 +633,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -671,7 +671,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -684,7 +684,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -735,7 +735,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -784,7 +784,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -820,7 +820,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -833,7 +833,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -871,7 +871,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -884,7 +884,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -935,7 +935,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -971,7 +971,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -984,7 +984,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -1022,7 +1022,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1035,7 +1035,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -1086,7 +1086,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -1122,7 +1122,7 @@
AdditionalOptions="/EHsc "
Optimization="0"
AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
@@ -1135,7 +1135,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
@@ -1186,7 +1186,7 @@
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
diff --git a/projects/Windows/VC8/curl.sln b/projects/Windows/VC8/curl-all.sln
index 0dfbd1a41..9e2c22df4 100644
--- a/projects/Windows/VC8/curl.sln
+++ b/projects/Windows/VC8/curl-all.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
EndProjectSection
diff --git a/projects/Windows/VC8/lib/libcurl.sln b/projects/Windows/VC8/lib/libcurl.sln
index e0cd36c6c..f844fdff1 100644
--- a/projects/Windows/VC8/lib/libcurl.sln
+++ b/projects/Windows/VC8/lib/libcurl.sln
@@ -74,20 +74,20 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
index 06ace9667..8bfb8e313 100644
--- a/projects/Windows/VC8/lib/libcurl.vcproj
+++ b/projects/Windows/VC8/lib/libcurl.vcproj
@@ -42,7 +42,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -51,12 +50,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -75,7 +73,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
@@ -94,8 +91,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -135,7 +130,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -144,12 +138,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -168,7 +161,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -186,8 +178,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -227,7 +217,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -242,7 +231,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -260,7 +248,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
ImportLibrary="$(TargetDir)$(TargetName).lib"
@@ -277,8 +264,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -318,7 +303,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -333,7 +317,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -351,7 +334,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
@@ -367,8 +349,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -411,12 +391,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -433,7 +412,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -443,8 +421,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -482,12 +458,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -504,7 +479,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -514,8 +488,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -558,7 +530,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -574,7 +545,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -584,8 +554,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -629,7 +597,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -645,7 +612,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -655,8 +621,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -690,7 +654,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -699,12 +662,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -723,7 +685,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
@@ -742,8 +703,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -783,7 +742,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -792,12 +750,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -816,7 +773,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -834,8 +790,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -875,7 +829,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -885,12 +838,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -908,7 +860,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
ImportLibrary="$(TargetDir)$(TargetName).lib"
@@ -925,8 +876,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -966,7 +915,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -976,12 +924,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -999,7 +946,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
@@ -1015,8 +961,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1056,7 +1000,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1065,12 +1008,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1089,7 +1031,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
@@ -1108,8 +1049,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1149,7 +1088,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1158,12 +1096,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1182,7 +1119,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1200,8 +1136,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1241,7 +1175,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1256,7 +1189,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1274,7 +1206,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
ImportLibrary="$(TargetDir)$(TargetName).lib"
@@ -1291,8 +1222,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1332,7 +1261,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1347,7 +1275,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1365,7 +1292,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
@@ -1381,8 +1307,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1422,7 +1346,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1431,12 +1354,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1455,7 +1377,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
@@ -1474,8 +1395,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1515,7 +1434,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1524,12 +1442,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1548,7 +1465,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1566,8 +1482,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1607,7 +1521,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1617,12 +1530,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1640,7 +1552,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
ImportLibrary="$(TargetDir)$(TargetName).lib"
@@ -1657,8 +1568,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1698,7 +1607,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1708,12 +1616,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1731,7 +1638,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
@@ -1747,8 +1653,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1791,12 +1695,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1813,7 +1716,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -1823,8 +1725,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1862,12 +1762,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1884,7 +1783,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -1894,8 +1792,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1932,12 +1828,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1954,7 +1849,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -1964,8 +1858,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2003,12 +1895,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2025,7 +1916,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2035,8 +1925,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2073,12 +1961,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2095,7 +1982,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2105,8 +1991,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2144,12 +2028,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2166,7 +2049,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2176,8 +2058,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2214,12 +2094,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2236,7 +2115,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2246,8 +2124,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2285,12 +2161,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2307,7 +2182,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2317,8 +2191,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2355,12 +2227,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2377,7 +2248,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2387,8 +2257,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2426,12 +2294,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2448,7 +2315,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2458,8 +2324,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2497,12 +2361,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2518,7 +2381,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2528,8 +2390,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2568,12 +2428,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2589,7 +2448,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2599,8 +2457,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2638,12 +2494,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2659,7 +2514,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2669,8 +2523,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2709,12 +2561,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2730,7 +2581,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2740,8 +2590,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2784,7 +2632,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2800,7 +2647,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2810,8 +2656,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2855,7 +2699,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2871,7 +2714,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2881,8 +2723,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2920,12 +2760,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2941,7 +2780,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2951,8 +2789,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2991,12 +2827,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3012,7 +2847,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3022,8 +2856,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3061,12 +2893,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3082,7 +2913,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3092,8 +2922,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3132,12 +2960,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3153,7 +2980,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3163,8 +2989,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3198,7 +3022,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3207,12 +3030,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3231,7 +3053,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
@@ -3250,8 +3071,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3291,7 +3110,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3300,12 +3118,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3324,7 +3141,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3342,8 +3158,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3383,7 +3197,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3398,7 +3211,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3416,7 +3228,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
ImportLibrary="$(TargetDir)$(TargetName).lib"
@@ -3433,8 +3244,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3474,7 +3283,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3489,7 +3297,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3507,7 +3314,6 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
@@ -3523,8 +3329,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3567,12 +3371,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3589,7 +3392,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3599,8 +3401,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3638,12 +3438,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3660,7 +3459,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3670,8 +3468,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3714,7 +3510,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3730,7 +3525,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3740,8 +3534,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3785,7 +3577,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3801,7 +3592,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3811,8 +3601,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3845,10 +3633,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.c"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\conncache.c"
>
</File>
@@ -3869,6 +3653,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.c"
>
</File>
@@ -4261,10 +4049,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.h"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\config-win32.h"
>
</File>
@@ -4293,6 +4077,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.h"
>
</File>
@@ -4353,6 +4141,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_printf.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_rtmp.h"
>
</File>
@@ -4664,15 +4456,11 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.c"
+ RelativePath="..\..\..\..\lib\vtls\cyassl.c"
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.c"
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.c"
>
</File>
<File
@@ -4700,6 +4488,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c"
>
</File>
@@ -4712,15 +4504,11 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.h"
+ RelativePath="..\..\..\..\lib\vtls\cyassl.h"
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.h"
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.h"
>
</File>
<File
@@ -4748,6 +4536,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h"
>
</File>
diff --git a/projects/Windows/VC8/src/curlsrc.sln b/projects/Windows/VC8/src/curl.sln
index 2e8ad0752..0c43cbe24 100644
--- a/projects/Windows/VC8/src/curlsrc.sln
+++ b/projects/Windows/VC8/src/curl.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/projects/Windows/VC8/src/curlsrc.vcproj b/projects/Windows/VC8/src/curl.vcproj
index 627bf9798..6b3fdaefa 100644
--- a/projects/Windows/VC8/src/curlsrc.vcproj
+++ b/projects/Windows/VC8/src/curl.vcproj
@@ -2,9 +2,9 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
- Name="curlsrc"
+ Name="curl"
ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
- RootNamespace="curlsrc"
+ RootNamespace="curl"
>
<Platforms>
<Platform
@@ -53,7 +53,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -70,9 +69,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -88,8 +86,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -141,7 +137,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -158,9 +153,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -176,8 +170,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -228,7 +220,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -245,9 +236,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -263,8 +253,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -316,7 +304,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -333,9 +320,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -351,8 +337,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -397,12 +381,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -420,9 +403,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -440,8 +422,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -487,12 +467,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -510,9 +489,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -530,8 +508,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -576,12 +552,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -599,9 +574,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -619,8 +593,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -666,12 +638,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -689,9 +660,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -709,8 +679,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -755,12 +723,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -778,9 +745,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -798,8 +764,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -845,12 +809,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -868,9 +831,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -888,8 +850,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -934,12 +894,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -957,9 +916,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -977,8 +935,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1024,12 +980,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1047,9 +1002,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1067,8 +1021,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1119,7 +1071,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1136,9 +1087,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -1154,8 +1104,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1207,7 +1155,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1224,9 +1171,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -1242,8 +1188,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1294,7 +1238,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1311,9 +1254,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -1329,8 +1271,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1382,7 +1322,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1399,9 +1338,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -1417,8 +1355,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1463,12 +1399,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1486,9 +1421,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1506,8 +1440,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1553,12 +1485,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1576,9 +1507,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1596,8 +1526,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1648,7 +1576,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1665,9 +1592,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -1683,8 +1609,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1736,7 +1660,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1753,9 +1676,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -1771,8 +1693,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1817,12 +1737,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1840,9 +1759,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1860,8 +1778,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1907,12 +1823,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1930,9 +1845,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -1950,8 +1864,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2002,7 +1914,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2019,9 +1930,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"
SubSystem="1"
TargetMachine="1"
@@ -2037,8 +1947,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2090,7 +1998,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2107,9 +2014,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"
SubSystem="1"
TargetMachine="17"
@@ -2125,8 +2031,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2171,12 +2075,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2194,9 +2097,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -2214,8 +2116,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2261,12 +2161,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2284,9 +2183,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -2304,8 +2202,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2356,7 +2252,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2373,9 +2268,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"
SubSystem="1"
TargetMachine="1"
@@ -2391,8 +2285,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2444,7 +2336,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2461,9 +2352,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"
SubSystem="1"
TargetMachine="17"
@@ -2479,8 +2369,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2525,12 +2413,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2548,9 +2435,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -2568,8 +2454,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2615,12 +2499,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2638,9 +2521,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -2658,8 +2540,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2710,7 +2590,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2727,9 +2606,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
SubSystem="1"
TargetMachine="1"
@@ -2745,8 +2623,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2798,7 +2674,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2815,9 +2690,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
SubSystem="1"
TargetMachine="17"
@@ -2833,8 +2707,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2879,12 +2751,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2902,9 +2773,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -2922,8 +2792,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2969,12 +2837,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2992,9 +2859,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3012,8 +2878,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3064,7 +2928,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3081,9 +2944,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
SubSystem="1"
TargetMachine="1"
@@ -3099,8 +2961,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3152,7 +3012,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3169,9 +3028,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
SubSystem="1"
TargetMachine="17"
@@ -3187,8 +3045,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3233,12 +3089,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3256,9 +3111,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3276,8 +3130,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3323,12 +3175,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3346,9 +3197,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3366,8 +3216,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3418,7 +3266,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3435,9 +3282,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -3453,8 +3299,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3506,7 +3350,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3523,9 +3366,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -3541,8 +3383,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3587,12 +3427,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3610,9 +3449,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3630,8 +3468,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3677,12 +3513,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3700,9 +3535,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3720,8 +3554,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3772,7 +3604,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3789,9 +3620,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -3807,8 +3637,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3860,7 +3688,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3877,9 +3704,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -3895,8 +3721,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3941,12 +3765,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3964,9 +3787,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -3984,8 +3806,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -4031,12 +3851,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -4054,9 +3873,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
@@ -4074,8 +3892,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -4126,7 +3942,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -4143,9 +3958,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="1"
@@ -4161,8 +3975,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -4214,7 +4026,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -4231,9 +4042,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
SubSystem="1"
TargetMachine="17"
@@ -4249,8 +4059,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
diff --git a/projects/Windows/VC9/curl.sln b/projects/Windows/VC9/curl-all.sln
index 44151862b..2007cf7ed 100644
--- a/projects/Windows/VC9/curl.sln
+++ b/projects/Windows/VC9/curl-all.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
ProjectSection(ProjectDependencies) = postProject
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
EndProjectSection
diff --git a/projects/Windows/VC9/lib/libcurl.sln b/projects/Windows/VC9/lib/libcurl.sln
index acfbaca5e..a6619d50e 100644
--- a/projects/Windows/VC9/lib/libcurl.sln
+++ b/projects/Windows/VC9/lib/libcurl.sln
@@ -74,20 +74,20 @@ Global
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
- {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
diff --git a/projects/Windows/VC9/lib/libcurl.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
index d609a543c..7f5f81c7f 100644
--- a/projects/Windows/VC9/lib/libcurl.vcproj
+++ b/projects/Windows/VC9/lib/libcurl.vcproj
@@ -43,7 +43,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -52,12 +51,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -76,13 +74,10 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -97,8 +92,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -135,7 +128,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -144,12 +136,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -168,12 +159,9 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -188,8 +176,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -226,7 +212,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -241,7 +226,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -259,11 +243,8 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -278,8 +259,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -316,7 +295,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -331,7 +309,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -349,10 +326,7 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -367,8 +341,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -408,12 +380,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -430,7 +401,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -440,8 +410,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -479,12 +447,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -501,7 +468,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -511,8 +477,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -555,7 +519,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -571,7 +534,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -581,8 +543,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -626,7 +586,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -642,7 +601,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -652,8 +610,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -687,7 +643,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -696,12 +651,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -720,13 +674,10 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -741,8 +692,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -779,7 +728,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -788,12 +736,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -812,12 +759,9 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -832,8 +776,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -870,7 +812,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -880,12 +821,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -903,11 +843,8 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -922,8 +859,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -960,7 +895,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -970,12 +904,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -993,10 +926,7 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -1011,8 +941,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1049,7 +977,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1058,12 +985,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1082,13 +1008,10 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -1103,8 +1026,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1141,7 +1062,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1150,12 +1070,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1174,12 +1093,9 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -1194,8 +1110,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1232,7 +1146,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1247,7 +1160,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1265,11 +1177,8 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -1284,8 +1193,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1322,7 +1229,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1337,7 +1243,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1355,10 +1260,7 @@
AdditionalDependencies="ws2_32.lib wldap32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -1373,8 +1275,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1411,7 +1311,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1420,12 +1319,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1444,13 +1342,10 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -1465,8 +1360,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1503,7 +1396,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1512,12 +1404,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1536,12 +1427,9 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -1556,8 +1444,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1594,7 +1480,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1604,12 +1489,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1627,11 +1511,8 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -1646,8 +1527,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1684,7 +1563,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -1694,12 +1572,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1717,10 +1594,7 @@
AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -1735,8 +1609,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1776,12 +1648,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1798,7 +1669,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -1808,8 +1678,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1847,12 +1715,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1869,7 +1736,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -1879,8 +1745,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1917,12 +1781,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1939,7 +1802,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -1949,8 +1811,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1988,12 +1848,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2010,7 +1869,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2020,8 +1878,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2058,12 +1914,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2080,7 +1935,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2090,8 +1944,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2129,12 +1981,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2151,7 +2002,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2161,8 +2011,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2199,12 +2047,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2221,7 +2068,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2231,8 +2077,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2270,12 +2114,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2292,7 +2135,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2302,8 +2144,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2340,12 +2180,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2362,7 +2201,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2372,8 +2210,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2411,12 +2247,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2433,7 +2268,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2443,8 +2277,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2482,12 +2314,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2503,7 +2334,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2513,8 +2343,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2553,12 +2381,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2574,7 +2401,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2584,8 +2410,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2623,12 +2447,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2644,7 +2467,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2654,8 +2476,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2694,12 +2514,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2715,7 +2534,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2725,8 +2543,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2769,7 +2585,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2785,7 +2600,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2795,8 +2609,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2840,7 +2652,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2856,7 +2667,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2866,8 +2676,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2905,12 +2713,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2926,7 +2733,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -2936,8 +2742,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2976,12 +2780,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2997,7 +2800,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3007,8 +2809,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3046,12 +2846,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3067,7 +2866,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3077,8 +2875,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3117,12 +2913,11 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
+ PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3138,7 +2933,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3148,8 +2942,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3183,7 +2975,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3192,12 +2983,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3216,13 +3006,10 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -3237,8 +3024,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3275,7 +3060,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3284,12 +3068,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3308,12 +3091,9 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName)d.dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -3328,8 +3108,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3366,7 +3144,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3381,7 +3158,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3399,11 +3175,8 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="1"
/>
@@ -3418,8 +3191,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3456,7 +3227,6 @@
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
- SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
HeaderFileName=""
@@ -3471,7 +3241,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3489,10 +3258,7 @@
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
ImportLibrary="$(TargetDir)$(TargetName).lib"
TargetMachine="17"
/>
@@ -3507,8 +3273,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3548,12 +3312,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3570,7 +3333,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3580,8 +3342,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3619,12 +3379,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
+ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3641,7 +3400,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3651,8 +3409,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3695,7 +3451,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3711,7 +3466,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3721,8 +3475,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3766,7 +3518,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3782,7 +3533,6 @@
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -3792,8 +3542,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(OutDir)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3826,10 +3574,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.c"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\conncache.c"
>
</File>
@@ -3850,6 +3594,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.c"
>
</File>
@@ -4242,10 +3990,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\bundles.h"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\config-win32.h"
>
</File>
@@ -4274,6 +4018,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_des.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_endian.h"
>
</File>
@@ -4334,6 +4082,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\curl_printf.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\curl_rtmp.h"
>
</File>
@@ -4645,15 +4397,11 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.c"
+ RelativePath="..\..\..\..\lib\vtls\cyassl.c"
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.c"
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.c"
>
</File>
<File
@@ -4681,6 +4429,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c"
>
</File>
@@ -4693,15 +4445,11 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\curl_schannel.h"
+ RelativePath="..\..\..\..\lib\vtls\cyassl.h"
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\cyassl.h"
+ RelativePath="..\..\..\..\lib\vtls\darwinssl.h"
>
</File>
<File
@@ -4729,6 +4477,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\schannel.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h"
>
</File>
diff --git a/projects/Windows/VC9/src/curlsrc.sln b/projects/Windows/VC9/src/curl.sln
index d673349ea..0fb0586fa 100644
--- a/projects/Windows/VC9/src/curlsrc.sln
+++ b/projects/Windows/VC9/src/curl.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/projects/Windows/VC9/src/curlsrc.vcproj b/projects/Windows/VC9/src/curl.vcproj
index d074b7913..a3d06e174 100644
--- a/projects/Windows/VC9/src/curlsrc.vcproj
+++ b/projects/Windows/VC9/src/curl.vcproj
@@ -2,9 +2,9 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
- Name="curlsrc"
+ Name="curl"
ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
- RootNamespace="curlsrc"
+ RootNamespace="curl"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -54,7 +54,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -71,13 +70,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -91,8 +87,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -141,7 +135,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -158,13 +151,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -178,8 +168,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -227,7 +215,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -244,13 +231,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -264,8 +248,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -314,7 +296,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -331,13 +312,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -351,8 +329,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -394,12 +370,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -417,15 +392,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -439,8 +411,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -483,12 +453,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -506,15 +475,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -528,8 +494,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -571,12 +535,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -594,15 +557,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -616,8 +576,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -660,12 +618,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -683,15 +640,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -705,8 +659,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -748,12 +700,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -771,15 +722,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -793,8 +741,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -837,12 +783,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -860,15 +805,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -882,8 +824,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -925,12 +865,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -948,15 +887,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -970,8 +906,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1014,12 +948,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1037,15 +970,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -1059,8 +989,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1108,7 +1036,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1125,13 +1052,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -1145,8 +1069,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1195,7 +1117,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1212,13 +1133,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -1232,8 +1150,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1281,7 +1197,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1298,13 +1213,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -1318,8 +1230,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1368,7 +1278,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1385,13 +1294,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -1405,8 +1311,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1448,12 +1352,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1471,15 +1374,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -1493,8 +1393,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1537,12 +1435,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1560,15 +1457,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -1582,8 +1476,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1631,7 +1523,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1648,13 +1539,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -1668,8 +1556,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1718,7 +1604,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1735,13 +1620,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -1755,8 +1637,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1798,12 +1678,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1821,15 +1700,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -1843,8 +1719,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1887,12 +1761,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -1910,15 +1783,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -1932,8 +1802,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -1981,7 +1849,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1998,13 +1865,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -2018,8 +1882,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2068,7 +1930,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2085,13 +1946,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -2105,8 +1963,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2148,12 +2004,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2171,15 +2026,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -2193,8 +2045,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2237,12 +2087,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2260,15 +2109,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -2282,8 +2128,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2331,7 +2175,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2348,13 +2191,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -2368,8 +2208,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2418,7 +2256,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2435,13 +2272,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -2455,8 +2289,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2498,12 +2330,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2521,15 +2352,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -2543,8 +2371,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2587,12 +2413,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2610,15 +2435,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -2632,8 +2454,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2681,7 +2501,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2698,13 +2517,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -2718,8 +2534,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2768,7 +2582,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -2785,13 +2598,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -2805,8 +2615,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2848,12 +2656,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2871,15 +2678,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -2893,8 +2697,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -2937,12 +2739,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -2960,15 +2761,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -2982,8 +2780,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3031,7 +2827,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3048,13 +2843,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -3068,8 +2860,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3118,7 +2908,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3135,13 +2924,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -3155,8 +2941,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3198,12 +2982,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3221,15 +3004,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -3243,8 +3023,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3287,12 +3065,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3310,15 +3087,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -3332,8 +3106,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3381,7 +3153,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3398,13 +3169,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -3418,8 +3186,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3468,7 +3234,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3485,13 +3250,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -3505,8 +3267,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3548,12 +3308,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3571,15 +3330,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -3593,8 +3349,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3637,12 +3391,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3660,15 +3413,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -3682,8 +3432,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3731,7 +3479,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3748,13 +3495,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -3768,8 +3512,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3818,7 +3560,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -3835,13 +3576,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -3855,8 +3593,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3898,12 +3634,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -3921,15 +3656,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -3943,8 +3675,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -3987,12 +3717,11 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"
+ PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
- SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
@@ -4010,15 +3739,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\curld.exe"
+ OutputFile="$(OutDir)\$(ProjectName)d.exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -4032,8 +3758,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -4081,7 +3805,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -4098,13 +3821,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@@ -4118,8 +3838,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -4168,7 +3886,6 @@
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -4185,13 +3902,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\curl.exe"
+ OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
- SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
@@ -4205,8 +3919,6 @@
/>
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile="$(TargetDir)$(TargetName).bsc"
/>
<Tool
Name="VCFxCopTool"
diff --git a/projects/build-openssl.bat b/projects/build-openssl.bat
index 3703a3f2d..19b7357cf 100644
--- a/projects/build-openssl.bat
+++ b/projects/build-openssl.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 2012 - 2014, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2012 - 2015, Steve Holme, <steve_holme@hotmail.com>.
rem *
rem * This software is licensed as described in the file COPYING, which
rem * you should have received as part of this distribution. The terms
@@ -24,13 +24,14 @@ rem ***************************************************************************
:begin
rem Check we are running on a Windows NT derived OS
if not "%OS%" == "Windows_NT" goto nodos
+
+ rem Set our variables
setlocal
-
- rem Display the help
+ set VC_VER=
+ set BUILD_PLATFORM=
+
+ rem Ensure we have the required arguments
if /i "%~1" == "" goto syntax
- if /i "%~1" == "-?" goto syntax
- if /i "%~1" == "-h" goto syntax
- if /i "%~1" == "-help" goto syntax
:parseArgs
if "%~1" == "" goto prerequisites
@@ -67,6 +68,10 @@ rem ***************************************************************************
set VC_VER=12.0
set VC_DESC=VC12
set "VC_PATH=Microsoft Visual Studio 12.0\VC"
+ ) else if /i "%~1" == "vc14" (
+ set VC_VER=14.0
+ set VC_DESC=VC14
+ set "VC_PATH=Microsoft Visual Studio 14.0\VC"
) else if /i "%~1%" == "x86" (
set BUILD_PLATFORM=x86
) else if /i "%~1%" == "x64" (
@@ -75,6 +80,12 @@ rem ***************************************************************************
set BUILD_CONFIG=debug
) else if /i "%~1%" == "release" (
set BUILD_CONFIG=release
+ ) else if /i "%~1" == "-?" (
+ goto syntax
+ ) else if /i "%~1" == "-h" (
+ goto syntax
+ ) else if /i "%~1" == "-help" (
+ goto syntax
) else (
if not defined START_DIR (
set START_DIR=%~1%
@@ -86,6 +97,10 @@ rem ***************************************************************************
shift & goto parseArgs
:prerequisites
+ rem Compiler and platform are required parameters.
+ if not defined VC_VER goto syntax
+ if not defined BUILD_PLATFORM goto syntax
+
rem Default the start directory if one isn't specified
if not defined START_DIR set START_DIR=..\..\openssl
@@ -105,6 +120,14 @@ rem ***************************************************************************
rem Check we have Visual Studio installed
if not exist "%PF%\%VC_PATH%" goto novc
+ rem Check we have Perl installed
+ echo %PATH% | findstr /I /C:"\Perl" 1>nul
+ if errorlevel 1 (
+ if not exist "%SystemDrive%\Perl" (
+ if not exist "%SystemDrive%\Perl64" goto noperl
+ )
+ )
+
rem Check the start directory exists
if not exist "%START_DIR%" goto noopenssl
@@ -132,6 +155,7 @@ rem ***************************************************************************
if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
+ if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
)
:start
@@ -156,7 +180,7 @@ rem ***************************************************************************
set OUTDIR=build\Win64\%VC_DESC%
if not exist %OUTDIR% md %OUTDIR%
- if "%BUILD_CONFIG%" == "release" goto x64release
+ if "%BUILD_CONFIG%" == "release" goto x64release
:x64debug
rem Configuring 64-bit Debug Build
@@ -272,6 +296,7 @@ rem ***************************************************************************
echo vc10 - Use Visual Studio 2010
echo vc11 - Use Visual Studio 2012
echo vc12 - Use Visual Studio 2013
+ echo vc14 - Use Visual Studio 2015
echo.
echo Platform:
echo.
@@ -308,6 +333,11 @@ rem ***************************************************************************
echo Error: %VC_DESC% is not installed
goto error
+:noperl
+ echo.
+ echo Error: Perl is not installed
+ goto error
+
:nox64
echo.
echo Error: %VC_DESC% does not support 64-bit builds
diff --git a/projects/build-wolfssl.bat b/projects/build-wolfssl.bat
new file mode 100644
index 000000000..52f714d6a
--- /dev/null
+++ b/projects/build-wolfssl.bat
@@ -0,0 +1,353 @@
+@echo off
+rem ***************************************************************************
+rem * _ _ ____ _
+rem * Project ___| | | | _ \| |
+rem * / __| | | | |_) | |
+rem * | (__| |_| | _ <| |___
+rem * \___|\___/|_| \_\_____|
+rem *
+rem * Copyright (C) 2012 - 2015, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>.
+rem *
+rem * This software is licensed as described in the file COPYING, which
+rem * you should have received as part of this distribution. The terms
+rem * are also available at http://curl.haxx.se/docs/copyright.html.
+rem *
+rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+rem * copies of the Software, and permit persons to whom the Software is
+rem * furnished to do so, under the terms of the COPYING file.
+rem *
+rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+rem * KIND, either express or implied.
+rem *
+rem ***************************************************************************
+
+:begin
+ rem Check we are running on a Windows NT derived OS
+ if not "%OS%" == "Windows_NT" goto nodos
+
+ rem Set our variables
+ setlocal
+ set SUCCESSFUL_BUILDS=
+ set VC_VER=
+ set BUILD_PLATFORM=
+
+ rem Ensure we have the required arguments
+ if /i "%~1" == "" goto syntax
+
+:parseArgs
+ if "%~1" == "" goto prerequisites
+
+ if /i "%~1" == "vc10" (
+ set VC_VER=10.0
+ set VC_DESC=VC10
+ set VC_TOOLSET=v100
+ set "VC_PATH=Microsoft Visual Studio 10.0\VC"
+ ) else if /i "%~1" == "vc11" (
+ set VC_VER=11.0
+ set VC_DESC=VC11
+ set VC_TOOLSET=v110
+ set "VC_PATH=Microsoft Visual Studio 11.0\VC"
+ ) else if /i "%~1" == "vc12" (
+ set VC_VER=12.0
+ set VC_DESC=VC12
+ set VC_TOOLSET=v120
+ set "VC_PATH=Microsoft Visual Studio 12.0\VC"
+ ) else if /i "%~1" == "vc14" (
+ set VC_VER=14.0
+ set VC_DESC=VC14
+ set VC_TOOLSET=v140
+ set "VC_PATH=Microsoft Visual Studio 14.0\VC"
+ ) else if /i "%~1" == "x86" (
+ set BUILD_PLATFORM=x86
+ ) else if /i "%~1" == "x64" (
+ set BUILD_PLATFORM=x64
+ ) else if /i "%~1" == "debug" (
+ set BUILD_CONFIG=debug
+ ) else if /i "%~1" == "release" (
+ set BUILD_CONFIG=release
+ ) else if /i "%~1" == "-?" (
+ goto syntax
+ ) else if /i "%~1" == "-h" (
+ goto syntax
+ ) else if /i "%~1" == "-help" (
+ goto syntax
+ ) else (
+ if not defined START_DIR (
+ set START_DIR=%~1
+ ) else (
+ goto unknown
+ )
+ )
+
+ shift & goto parseArgs
+
+:prerequisites
+ rem Compiler and platform are required parameters.
+ if not defined VC_VER goto syntax
+ if not defined BUILD_PLATFORM goto syntax
+
+ rem Default the start directory if one isn't specified
+ if not defined START_DIR set START_DIR=..\..\wolfssl
+
+ rem Calculate the program files directory
+ if defined PROGRAMFILES (
+ set "PF=%PROGRAMFILES%"
+ set OS_PLATFORM=x86
+ )
+ if defined PROGRAMFILES(x86) (
+ set "PF=%PROGRAMFILES(x86)%"
+ set OS_PLATFORM=x64
+ )
+
+ rem Check we have a program files directory
+ if not defined PF goto nopf
+
+ rem Check we have Visual Studio installed
+ if not exist "%PF%\%VC_PATH%" goto novc
+
+ rem Check the start directory exists
+ if not exist "%START_DIR%" goto nowolfssl
+
+:configure
+ if "%BUILD_PLATFORM%" == "" set BUILD_PLATFORM=%OS_PLATFORM%
+
+ if "%BUILD_PLATFORM%" == "x86" (
+ set VCVARS_PLATFORM=x86
+ ) else if "%BUILD_PLATFORM%" == "x64" (
+ if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
+ if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
+ if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
+ if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
+ )
+
+:start
+ echo.
+ call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
+
+ echo.
+ set SAVED_PATH=%CD%
+ cd %START_DIR%
+ goto %BUILD_PLATFORM%
+
+:x64
+ rem Calculate our output directory
+ set OUTDIR=build\Win64\%VC_DESC%
+ if not exist %OUTDIR% md %OUTDIR%
+
+ if "%BUILD_CONFIG%" == "release" goto x64release
+
+:x64debug
+ rem Perform 64-bit Debug Build
+
+ call :build Debug x64
+ if errorlevel 1 goto error
+
+ call :build "DLL Debug" x64
+ if errorlevel 1 goto error
+
+ if "%BUILD_CONFIG%" == "debug" goto success
+
+:x64release
+ rem Perform 64-bit Release Build
+
+ call :build Release x64
+ if errorlevel 1 goto error
+
+ call :build "DLL Release" x64
+ if errorlevel 1 goto error
+
+ goto success
+
+:x86
+ rem Calculate our output directory
+ set OUTDIR=build\Win32\%VC_DESC%
+ if not exist %OUTDIR% md %OUTDIR%
+
+ if "%BUILD_CONFIG%" == "release" goto x86release
+
+:x86debug
+ rem Perform 32-bit Debug Build
+
+ call :build Debug Win32
+ if errorlevel 1 goto error
+
+ call :build "DLL Debug" Win32
+ if errorlevel 1 goto error
+
+ if "%BUILD_CONFIG%" == "debug" goto success
+
+:x86release
+ rem Perform 32-bit Release Build
+
+ call :build Release Win32
+ if errorlevel 1 goto error
+
+ call :build "DLL Release" Win32
+ if errorlevel 1 goto error
+
+ goto success
+
+:build
+ rem This function builds wolfSSL.
+ rem Usage: CALL :build <configuration> <platform>
+ rem The current directory must be the wolfSSL directory.
+ rem VS Configuration: Debug, Release, DLL Debug or DLL Release.
+ rem VS Platform: Win32 or x64.
+ rem Returns: 1 on fail, 0 on success.
+ rem An informational message should be shown before any return.
+ setlocal
+ set MSBUILD_CONFIG=%~1
+ set MSBUILD_PLATFORM=%~2
+
+ if not exist wolfssl64.sln (
+ echo.
+ echo Error: build: wolfssl64.sln not found in "%CD%"
+ exit /b 1
+ )
+
+ rem OUTDIR isn't a full path, only relative. MSBUILD_OUTDIR must be full and
+ rem not have trailing backslashes, which are handled later.
+ if "%MSBUILD_CONFIG%" == "Debug" (
+ set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Debug"
+ ) else if "%MSBUILD_CONFIG%" == "Release" (
+ set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Release"
+ ) else if "%MSBUILD_CONFIG%" == "DLL Debug" (
+ set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Debug"
+ ) else if "%MSBUILD_CONFIG%" == "DLL Release" (
+ set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Release"
+ ) else (
+ echo.
+ echo Error: build: Configuration not recognized.
+ exit /b 1
+ )
+
+ if not "%MSBUILD_PLATFORM%" == "Win32" if not "%MSBUILD_PLATFORM%" == "x64" (
+ echo.
+ echo Error: build: Platform not recognized.
+ exit /b 1
+ )
+
+ copy /v /y "%~dp0\wolfssl_options.h" .\cyassl\options.h
+ if %ERRORLEVEL% neq 0 (
+ echo.
+ echo Error: build: Couldn't replace .\cyassl\options.h
+ exit /b 1
+ )
+
+ copy /v /y "%~dp0\wolfssl_options.h" .\wolfssl\options.h
+ if %ERRORLEVEL% neq 0 (
+ echo.
+ echo Error: build: Couldn't replace .\wolfssl\options.h
+ exit /b 1
+ )
+
+ rem Extra trailing \ in Dirs because otherwise it thinks a quote is escaped
+ msbuild wolfssl64.sln ^
+ -p:CustomAfterMicrosoftCommonTargets="%~dp0\wolfssl_override.props" ^
+ -p:Configuration="%MSBUILD_CONFIG%" ^
+ -p:Platform="%MSBUILD_PLATFORM%" ^
+ -p:PlatformToolset="%VC_TOOLSET%" ^
+ -p:OutDir="%MSBUILD_OUTDIR%\\" ^
+ -p:IntDir="%MSBUILD_OUTDIR%\obj\\"
+
+ if %ERRORLEVEL% neq 0 (
+ echo.
+ echo Error: Failed building wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
+ exit /b 1
+ )
+
+ rem For tests to run properly the wolfSSL directory must remain the current.
+ set "PATH=%MSBUILD_OUTDIR%;%PATH%"
+ "%MSBUILD_OUTDIR%\testsuite.exe"
+
+ if %ERRORLEVEL% neq 0 (
+ echo.
+ echo Error: Failed testing wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
+ exit /b 1
+ )
+
+ echo.
+ echo Success: Built and tested wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
+ echo.
+ echo.
+ rem This is necessary to export our local variables back to the caller.
+ endlocal & set SUCCESSFUL_BUILDS="%MSBUILD_CONFIG%|%MSBUILD_PLATFORM%" ^
+ %SUCCESSFUL_BUILDS%
+ exit /b 0
+
+:syntax
+ rem Display the help
+ echo.
+ echo Usage: build-wolfssl ^<compiler^> ^<platform^> [configuration] [directory]
+ echo.
+ echo Compiler:
+ echo.
+ echo vc10 - Use Visual Studio 2010
+ echo vc11 - Use Visual Studio 2012
+ echo vc12 - Use Visual Studio 2013
+ echo vc14 - Use Visual Studio 2015
+ echo.
+ echo Platform:
+ echo.
+ echo x86 - Perform a 32-bit build
+ echo x64 - Perform a 64-bit build
+ echo.
+ echo Configuration:
+ echo.
+ echo debug - Perform a debug build
+ echo release - Perform a release build
+ echo.
+ echo Other:
+ echo.
+ echo directory - Specifies the wolfSSL source directory
+ goto error
+
+:unknown
+ echo.
+ echo Error: Unknown argument '%1'
+ goto error
+
+:nodos
+ echo.
+ echo Error: Only a Windows NT based Operating System is supported
+ goto error
+
+:nopf
+ echo.
+ echo Error: Cannot obtain the directory for Program Files
+ goto error
+
+:novc
+ echo.
+ echo Error: %VC_DESC% is not installed
+ goto error
+
+:nox64
+ echo.
+ echo Error: %VC_DESC% does not support 64-bit builds
+ goto error
+
+:nowolfssl
+ echo.
+ echo Error: Cannot locate wolfSSL source directory, expected "%START_DIR%"
+ goto error
+
+:error
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 1
+
+:success
+ if defined SUCCESSFUL_BUILDS (
+ echo.
+ echo.
+ echo Build complete.
+ echo.
+ echo The following configurations were built and tested successfully:
+ echo.
+ echo %SUCCESSFUL_BUILDS%
+ echo.
+ )
+ cd %SAVED_PATH%
+ endlocal
+ exit /B 0
diff --git a/projects/checksrc.bat b/projects/checksrc.bat
index 139914dd8..fa7a7fbed 100644
--- a/projects/checksrc.bat
+++ b/projects/checksrc.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2014 - 2015, Steve Holme, <steve_holme@hotmail.com>.
rem *
rem * This software is licensed as described in the file COPYING, which
rem * you should have received as part of this distribution. The terms
@@ -24,29 +24,61 @@ rem ***************************************************************************
:begin
rem Check we are running on a Windows NT derived OS
if not "%OS%" == "Windows_NT" goto nodos
+
+ rem Set our variables
setlocal
- rem Display the help
- if /i "%~1" == "-?" goto syntax
- if /i "%~1" == "-h" goto syntax
- if /i "%~1" == "-help" goto syntax
+:parseArgs
+ if "%~1" == "" goto prerequisites
+
+ if /i "%~1" == "-?" (
+ goto syntax
+ ) else if /i "%~1" == "-h" (
+ goto syntax
+ ) else if /i "%~1" == "-help" (
+ goto syntax
+ ) else (
+ if not defined SRC_DIR (
+ set SRC_DIR=%~1%
+ ) else (
+ goto unknown
+ )
+ )
+
+ shift & goto parseArgs
:prerequisites
rem Check we have Perl installed
- if not exist "C:\Perl" (
- if not exist "C:\Perl64" goto noperl
+ echo %PATH% | findstr /I /C:"\Perl" 1>nul
+ if errorlevel 1 (
+ if not exist "%SystemDrive%\Perl" (
+ if not exist "%SystemDrive%\Perl64" goto noperl
+ )
)
:configure
- if "%1" == "" set SRC_DIR=..
- if not "%1" == "" set SRC_DIR=%~1%
+ if "%SRC_DIR%" == "" set SRC_DIR=..
if not exist "%SRC_DIR%" goto nosrc
:start
- for /f "delims=" %%i in ('dir %SRC_DIR%\src\*.c.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\src "%%i"
- for /f "delims=" %%i in ('dir %SRC_DIR%\src\*.h.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\src "%%i"
- for /f "delims=" %%i in ('dir %SRC_DIR%\lib\*.c.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\lib "%%i"
- for /f "delims=" %%i in ('dir %SRC_DIR%\lib\*.h.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\lib -Wcurl_config.h.cmake "%%i"
+ rem Check the src directory
+ if exist %SRC_DIR%\src (
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" "%%i"
+ )
+
+ rem Check the lib directory
+ if exist %SRC_DIR%\lib (
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake "%%i"
+ )
+
+ rem Check the lib\vtls directory
+ if exist %SRC_DIR%\lib\vtls (
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
+ )
+
goto success
:syntax
@@ -57,6 +89,11 @@ rem ***************************************************************************
echo directory - Specifies the curl source directory
goto success
+:unknown
+ echo.
+ echo Error: Unknown argument '%1'
+ goto error
+
:nodos
echo.
echo Error: Only a Windows NT based Operating System is supported
diff --git a/scripts/zsh.pl b/scripts/zsh.pl
new file mode 100755
index 000000000..7520a15a6
--- /dev/null
+++ b/scripts/zsh.pl
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+
+# Generate ZSH completion
+
+use strict;
+use warnings;
+
+my $curl = $ARGV[0] || 'curl';
+
+my $regex = '\s+(?:(-[^\s]+),\s)?(--[^\s]+)\s([^\s.]+)?\s+(.*)';
+my @opts = parse_main_opts('--help', $regex);
+
+my $opts_str;
+
+$opts_str .= qq{ $_ \\\n} foreach (@opts);
+chomp $opts_str;
+
+my $tmpl = <<"EOS";
+#compdef curl
+
+# curl zsh completion
+
+local curcontext="\$curcontext" state state_descr line
+typeset -A opt_args
+
+local rc=1
+
+_arguments -C -S \\
+$opts_str
+ '*:URL:_urls' && rc=0
+
+return rc
+EOS
+
+print $tmpl;
+
+sub parse_main_opts {
+ my ($cmd, $regex) = @_;
+
+ my @list;
+ my @lines = split /\n/, `"$curl" $cmd`;
+
+ foreach my $line (@lines) {
+ my ($short, $long, $arg, $desc) = ($line =~ /^$regex/) or next;
+
+ my $option = '';
+
+ $desc =~ s/'/''/g if defined $desc;
+ $desc =~ s/\[/\\\[/g if defined $desc;
+ $desc =~ s/\]/\\\]/g if defined $desc;
+
+ $option .= '{' . trim($short) . ',' if defined $short;
+ $option .= trim($long) if defined $long;
+ $option .= '}' if defined $short;
+ $option .= '\'[' . trim($desc) . ']\'' if defined $desc;
+
+ $option .= ":$arg" if defined $arg;
+
+ $option .= ':_files'
+ if defined $arg and ($arg eq 'FILE' || $arg eq 'DIR');
+
+ push @list, $option;
+ }
+
+ # Sort longest first, because zsh won't complete an option listed
+ # after one that's a prefix of it.
+ @list = sort {
+ $a =~ /([^=]*)/; my $ma = $1;
+ $b =~ /([^=]*)/; my $mb = $1;
+
+ length($mb) <=> length($ma)
+ } @list;
+
+ return @list;
+}
+
+sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9c1fd54ab..bfb866bd9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,18 +6,18 @@ if(USE_MANUAL)
# embedded text. NROFF and MANOPT are set in the parent CMakeLists.txt
add_custom_command(
OUTPUT tool_hugehelp.c
- COMMAND echo "#include \"tool_setup.h\"" > tool_hugehelp.c
- COMMAND echo "#ifndef HAVE_LIBZ" >> 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_SOURCE_DIR}/docs/curl.1" |
"${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
"${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
- COMMAND echo "#else" >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#else" >> tool_hugehelp.c
COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
"${CURL_SOURCE_DIR}/docs/curl.1" |
"${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c
"${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
- COMMAND echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
DEPENDS
"${CURL_SOURCE_DIR}/docs/MANUAL"
"${CURL_SOURCE_DIR}/docs/curl.1"
@@ -27,12 +27,13 @@ if(USE_MANUAL)
else()
add_custom_command(
OUTPUT tool_hugehelp.c
- COMMAND echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
- COMMAND echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
- COMMAND echo "void hugehelp(void) {}" >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "void hugehelp(void) {}" >> 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")
diff --git a/src/Makefile.Watcom b/src/Makefile.Watcom
index c48566560..6ec598d46 100644
--- a/src/Makefile.Watcom
+++ b/src/Makefile.Watcom
@@ -75,7 +75,7 @@ CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
!endif
!ifdef %use_ssl
-CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I"$(OPENSSL_ROOT)/inc32"
+CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_OPENSSL -I"$(OPENSSL_ROOT)/inc32"
!endif
!ifdef %curl_static
@@ -96,7 +96,7 @@ ZLIB_ROOT = ../../zlib-1.2.8
!ifdef %libssh2_root
LIBSSH2_ROOT = $(%libssh2_root)
!else
-LIBSSH2_ROOT = ../../libssh2-1.4.3
+LIBSSH2_ROOT = ../../libssh2-1.5.0
!endif
!ifdef %librtmp_root
@@ -108,7 +108,7 @@ LIBRTMP_ROOT = ../../rtmpdump-2.3
!ifdef %openssl_root
OPENSSL_ROOT = $(%openssl_root)
!else
-OPENSSL_ROOT = ../../openssl-0.9.8zc
+OPENSSL_ROOT = ../../openssl-1.0.2a
!endif
!ifdef %ares_root
diff --git a/src/Makefile.am b/src/Makefile.am
index f96618e5e..f4bc6c9a2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -62,7 +62,7 @@ LIBS = $(BLANK_AT_MAKETIME)
if USE_EXPLICIT_LIB_DEPS
curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
else
-curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
endif
curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
@@ -84,11 +84,11 @@ CLEANFILES = tool_hugehelp.c
# embedded text.
NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
-EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 Makefile.m32 \
- macos/curl.mcp.xml.sit.hqx \
- macos/MACINSTALL.TXT macos/src/curl_GUSIConfig.cpp \
- macos/src/macos_main.cpp makefile.amiga curl.rc \
- Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt
+EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 \
+ Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT \
+ macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
+ curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt \
+ checksrc.whitelist
MANPAGE=$(top_srcdir)/docs/curl.1
README=$(top_srcdir)/docs/MANUAL
diff --git a/src/Makefile.b32 b/src/Makefile.b32
index 6638a0115..85fe49f8d 100644
--- a/src/Makefile.b32
+++ b/src/Makefile.b32
@@ -27,7 +27,7 @@ ZLIB_PATH = ..\..\zlib-1.2.8
# Edit the path below to point to the base of your OpenSSL package.
!ifndef OPENSSL_PATH
-OPENSSL_PATH = ..\..\openssl-0.9.8zc
+OPENSSL_PATH = ..\..\openssl-1.0.2a
!endif
# Set program's name
@@ -67,7 +67,7 @@ LINKLIB = $(LINKLIB) $(ZLIB_PATH)\zlib.lib
# SSL support is enabled setting WITH_SSL=1
!ifdef WITH_SSL
-DEFINES = $(DEFINES) -DUSE_SSLEAY
+DEFINES = $(DEFINES) -DUSE_OPENSSL
INCDIRS = $(INCDIRS);$(OPENSSL_PATH)\inc32;$(OPENSSL_PATH)\inc32\openssl
LINKLIB = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\libeay32.lib
!endif
diff --git a/src/Makefile.in b/src/Makefile.in
index ed6cc0d21..8fae4cd88 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -25,7 +25,17 @@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -90,9 +100,6 @@ build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = curl$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
- $(top_srcdir)/depcomp
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -114,7 +121,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -273,6 +281,8 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -333,7 +343,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -390,6 +400,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -406,7 +417,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -474,7 +484,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -609,7 +619,7 @@ CURL_HFILES = \
CURL_RCFILES = curl.rc
curl_SOURCES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
-@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
@USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
curl_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
@@ -623,11 +633,11 @@ curl_DEPENDENCIES = $(top_builddir)/lib/libcurl.la
@BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(curl_SOURCES)
BUILT_SOURCES = tool_hugehelp.c
CLEANFILES = tool_hugehelp.c
-EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 Makefile.m32 \
- macos/curl.mcp.xml.sit.hqx \
- macos/MACINSTALL.TXT macos/src/curl_GUSIConfig.cpp \
- macos/src/macos_main.cpp makefile.amiga curl.rc \
- Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt
+EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 \
+ Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT \
+ macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
+ curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt \
+ checksrc.whitelist
MANPAGE = $(top_srcdir)/docs/curl.1
README = $(top_srcdir)/docs/MANUAL
@@ -650,7 +660,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -659,7 +668,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -2002,6 +2011,8 @@ uninstall-am: uninstall-binPROGRAMS
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:
diff --git a/src/Makefile.m32 b/src/Makefile.m32
index e54175ced..509380686 100644
--- a/src/Makefile.m32
+++ b/src/Makefile.m32
@@ -1,7 +1,7 @@
###########################################################################
#
## Makefile for building curl.exe with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (0.9.8), libssh2 (1.3), zlib (1.2.5), librtmp (2.3)
+## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4)
##
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-spi-winidn
@@ -18,19 +18,19 @@ ZLIB_PATH = ../../zlib-1.2.8
endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.3
+LIBRTMP_PATH = ../../librtmp-2.4
endif
# Edit the path below to point to the base of your libmetalink package.
ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../libmetalink-0.1.2
+LIBMETALINK_PATH = ../../libmetalink-0.1.3
endif
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
@@ -38,15 +38,15 @@ LIBEXPAT_PATH = ../../expat-2.1.0
endif
# Edit the path below to point to the base of your libxml2 package.
ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../libxml2-2.9.0
+LIBXML2_PATH = ../../libxml2-2.9.2
endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
+LIBIDN_PATH = ../../libidn-1.32
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
+# https://www.microsoft.com/en-us/download/details.aspx?id=734
ifndef WINIDN_PATH
WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
endif
@@ -56,7 +56,7 @@ LDAP_SDK = c:/novell/ndk/cldapsdk/win32
endif
# Edit the path below to point to the base of your nghttp2 package.
ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-0.6.7
+NGHTTP2_PATH = ../../nghttp2-1.0.0
endif
PROOT = ..
@@ -90,10 +90,12 @@ endif
endif
ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
+CFLAGS += -m64 -D_AMD64_
+LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS += -m32
+LDFLAGS += -m32
RCFLAGS += -F pe-i386
endif
@@ -241,7 +243,7 @@ ifdef SSL
OPENSSL_LIBS += -lgdi32 -lcrypt32
endif
INCLUDES += -I"$(OPENSSL_INCLUDE)"
- CFLAGS += -DUSE_SSLEAY -DUSE_OPENSSL
+ CFLAGS += -DUSE_OPENSSL
curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
endif
ifdef ZLIB
@@ -340,4 +342,3 @@ endif
distclean vclean: clean
@$(call DEL, $(curl_PROGRAMS))
-
diff --git a/src/Makefile.netware b/src/Makefile.netware
index b6b4861c8..5065cbfe8 100644
--- a/src/Makefile.netware
+++ b/src/Makefile.netware
@@ -19,12 +19,12 @@ endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
endif
# Edit the path below to point to the base of your axTLS package.
diff --git a/src/Makefile.vc10 b/src/Makefile.vc10
index 348a76354..82af5cedf 100644
--- a/src/Makefile.vc10
+++ b/src/Makefile.vc10
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF ZLIB_PATH
@@ -77,7 +77,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -95,7 +95,7 @@ ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
ZLIB_LIBS = zlib.lib
ZLIB_IMP_LIBS = zdll.lib
-SSL_CFLAGS = /DUSE_SSLEAY
+SSL_CFLAGS = /DUSE_OPENSSL
SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
diff --git a/src/Makefile.vc11 b/src/Makefile.vc11
new file mode 100644
index 000000000..cb7fc2052
--- /dev/null
+++ b/src/Makefile.vc11
@@ -0,0 +1,544 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-users.
+
+#############################################################
+#
+## Makefile for building curl.exe with MSVC11
+## Use: nmake -f makefile.vc11 [release | debug] [CFG=release-ssl]
+## (default is release)
+## "nmake -f makefile.vc11 CFG=release-ssl" statically links OpenSSL
+## into curl.exe producing a standalone SSL-enabled executable.
+##
+#
+#############################################################
+
+PROGRAM_NAME = curl.exe
+
+# -------------------------------------------
+# Verify that current subdir is curl's 'src'
+# -------------------------------------------
+
+!IF ! EXIST(.\tool_main.c)
+! MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.
+! MESSAGE Change to curl's 'src' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC11 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+########################################################
+## Nothing more to do below this line!
+
+ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
+ZLIB_LIBS = zlib.lib
+ZLIB_IMP_LIBS = zdll.lib
+
+SSL_CFLAGS = /DUSE_OPENSSL
+SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
+SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+
+WINSSL_CFLAGS = /DUSE_SCHANNEL
+#WINSSL_LIBS = gdi32.lib user32.lib
+
+!IFDEF USE_IDN
+WINLIBS = $(WINLIBS) normaliz.lib
+!ENDIF
+
+# Runtime library configuration
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+## Release
+CCR = cl.exe $(RTLIB) /O2 /DNDEBUG
+LINKR = link.exe /incremental:no /libpath:"../lib"
+RCR = rc.exe /dDEBUGBUILD=0
+
+## Debug
+CCD = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"
+RCD = rc.exe /dDEBUGBUILD=1
+
+CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+LFLAGS = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)
+RESFLAGS = /i../include
+
+# This manifest thing is for VC8, enabled by the maketgz script that
+# builds the VC8 version of this makefile. Left commented out in the VC11
+# version!
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+RELEASE_OBJS= \
+ nonblockr.obj \
+ rawstrr.obj \
+ strtoofftr.obj \
+ warnless.obj \
+ tool_binmoder.obj \
+ tool_bnamer.obj \
+ tool_cb_dbgr.obj \
+ tool_cb_hdrr.obj \
+ tool_cb_prgr.obj \
+ tool_cb_rear.obj \
+ tool_cb_seer.obj \
+ tool_cb_wrtr.obj \
+ tool_cfgabler.obj \
+ tool_convertr.obj \
+ tool_dirhier.obj \
+ tool_doswinr.obj \
+ tool_easysrcr.obj \
+ tool_formparser.obj \
+ tool_getparamr.obj \
+ tool_getpassr.obj \
+ tool_helpr.obj \
+ tool_helpersr.obj \
+ tool_homedirr.obj \
+ tool_hugehelpr.obj \
+ tool_libinfor.obj \
+ tool_mainr.obj \
+ tool_metalinkr.obj \
+ tool_mfilesr.obj \
+ tool_msgsr.obj \
+ tool_operater.obj \
+ tool_operhlpr.obj \
+ tool_panykeyr.obj \
+ tool_paramhlpr.obj \
+ tool_parsecfgr.obj \
+ tool_setoptr.obj \
+ tool_sleepr.obj \
+ tool_urlglobr.obj \
+ tool_utilr.obj \
+ tool_vmsr.obj \
+ tool_writeenvr.obj \
+ tool_writeoutr.obj \
+ tool_xattrr.obj \
+ curlr.res
+
+DEBUG_OBJS= \
+ nonblockd.obj \
+ rawstrd.obj \
+ strtoofftd.obj \
+ warnlessd.obj \
+ tool_binmoded.obj \
+ tool_bnamed.obj \
+ tool_cb_dbgd.obj \
+ tool_cb_hdrd.obj \
+ tool_cb_prgd.obj \
+ tool_cb_read.obj \
+ tool_cb_seed.obj \
+ tool_cb_wrtd.obj \
+ tool_cfgabled.obj \
+ tool_convertd.obj \
+ tool_dirhied.obj \
+ tool_doswind.obj \
+ tool_easysrcd.obj \
+ tool_formparsed.obj \
+ tool_getparamd.obj \
+ tool_getpassd.obj \
+ tool_helpd.obj \
+ tool_helpersd.obj \
+ tool_homedird.obj \
+ tool_hugehelpd.obj \
+ tool_libinfod.obj \
+ tool_maind.obj \
+ tool_metalinkd.obj \
+ tool_mfilesd.obj \
+ tool_msgsd.obj \
+ tool_operated.obj \
+ tool_operhlpd.obj \
+ tool_panykeyd.obj \
+ tool_paramhlpd.obj \
+ tool_parsecfgd.obj \
+ tool_setoptd.obj \
+ tool_sleepd.obj \
+ tool_urlglobd.obj \
+ tool_utild.obj \
+ tool_vmsd.obj \
+ tool_writeenvd.obj \
+ tool_writeoutd.obj \
+ tool_xattrd.obj \
+ curld.res
+
+#################################################
+# If CFG not specified, use static libs
+
+CFLAGS = $(CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)
+
+#################################################
+# release dynamic library
+
+!IF "$(CFG)" == "release-dll"
+LINKLIBS = $(LIBCURL_IMP_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)
+!ENDIF
+
+#################################################
+# release static library with zlib
+
+!IF "$(CFG)" == "release-zlib"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl
+
+!IF "$(CFG)" == "release-ssl"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl and zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with winssl and zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+CFLAGS = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl
+
+!IF "$(CFG)" == "release-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic zlib
+
+!IF "$(CFG)" == "release-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic zlib
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+LINKLIBS = $(LINKLIBS) $(WINLIBS)
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)
+
+all : release
+
+release: $(RELEASE_OBJS)
+ $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)
+ $(MANIFESTTOOL)
+
+debug: $(DEBUG_OBJS)
+ $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)
+ $(MANIFESTTOOL)
+
+## Release
+nonblockr.obj: ../lib/nonblock.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrr.obj: ../lib/rawstr.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftr.obj: ../lib/strtoofft.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnless.obj: ../lib/warnless.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoder.obj: tool_binmode.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamer.obj: tool_bname.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgr.obj: tool_cb_dbg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrr.obj: tool_cb_hdr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgr.obj: tool_cb_prg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_rear.obj: tool_cb_rea.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seer.obj: tool_cb_see.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtr.obj: tool_cb_wrt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabler.obj: tool_cfgable.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertr.obj: tool_convert.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhier.obj: tool_dirhie.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswinr.obj: tool_doswin.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcr.obj: tool_easysrc.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparser.obj: tool_formparse.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamr.obj: tool_getparam.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassr.obj: tool_getpass.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpr.obj: tool_help.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersr.obj: tool_helpers.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedirr.obj: tool_homedir.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpr.obj: tool_hugehelp.c
+ $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfor.obj: tool_libinfo.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_mainr.obj: tool_main.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkr.obj: tool_metalink.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesr.obj: tool_mfiles.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsr.obj: tool_msgs.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operater.obj: tool_operate.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpr.obj: tool_operhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyr.obj: tool_panykey.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpr.obj: tool_paramhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgr.obj: tool_parsecfg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptr.obj: tool_setopt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepr.obj: tool_sleep.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobr.obj: tool_urlglob.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utilr.obj: tool_util.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsr.obj: tool_vms.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvr.obj: tool_writeenv.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutr.obj: tool_writeout.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrr.obj: tool_xattr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c
+curlr.res : curl.rc
+ $(RCR) $(RESFLAGS) /Fo"$@" curl.rc
+
+## Debug
+nonblockd.obj: ../lib/nonblock.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrd.obj: ../lib/rawstr.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftd.obj: ../lib/strtoofft.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnlessd.obj: ../lib/warnless.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoded.obj: tool_binmode.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamed.obj: tool_bname.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgd.obj: tool_cb_dbg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrd.obj: tool_cb_hdr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgd.obj: tool_cb_prg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_read.obj: tool_cb_rea.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seed.obj: tool_cb_see.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtd.obj: tool_cb_wrt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabled.obj: tool_cfgable.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertd.obj: tool_convert.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhied.obj: tool_dirhie.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswind.obj: tool_doswin.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcd.obj: tool_easysrc.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparsed.obj: tool_formparse.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamd.obj: tool_getparam.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassd.obj: tool_getpass.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpd.obj: tool_help.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersd.obj: tool_helpers.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedird.obj: tool_homedir.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpd.obj: tool_hugehelp.c
+ $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfod.obj: tool_libinfo.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_maind.obj: tool_main.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkd.obj: tool_metalink.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesd.obj: tool_mfiles.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsd.obj: tool_msgs.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operated.obj: tool_operate.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpd.obj: tool_operhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyd.obj: tool_panykey.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpd.obj: tool_paramhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgd.obj: tool_parsecfg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptd.obj: tool_setopt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepd.obj: tool_sleep.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobd.obj: tool_urlglob.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utild.obj: tool_util.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsd.obj: tool_vms.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvd.obj: tool_writeenv.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutd.obj: tool_writeout.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrd.obj: tool_xattr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c
+curld.res : curl.rc
+ $(RCD) $(RESFLAGS) /Fo"$@" curl.rc
+
+clean:
+ @-erase $(PROGRAM_NAME) 2> NUL
+ @-erase $(RELEASE_OBJS) 2> NUL
+ @-erase $(DEBUG_OBJS) 2> NUL
+ @-erase *.idb 2> NUL
+ @-erase *.pdb 2> NUL
+ @-erase *.pch 2> NUL
+ @-erase *.ilk 2> NUL
diff --git a/src/Makefile.vc12 b/src/Makefile.vc12
new file mode 100644
index 000000000..c81ffbf9c
--- /dev/null
+++ b/src/Makefile.vc12
@@ -0,0 +1,544 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-users.
+
+#############################################################
+#
+## Makefile for building curl.exe with MSVC12
+## Use: nmake -f makefile.vc12 [release | debug] [CFG=release-ssl]
+## (default is release)
+## "nmake -f makefile.vc12 CFG=release-ssl" statically links OpenSSL
+## into curl.exe producing a standalone SSL-enabled executable.
+##
+#
+#############################################################
+
+PROGRAM_NAME = curl.exe
+
+# -------------------------------------------
+# Verify that current subdir is curl's 'src'
+# -------------------------------------------
+
+!IF ! EXIST(.\tool_main.c)
+! MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.
+! MESSAGE Change to curl's 'src' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC12 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+########################################################
+## Nothing more to do below this line!
+
+ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
+ZLIB_LIBS = zlib.lib
+ZLIB_IMP_LIBS = zdll.lib
+
+SSL_CFLAGS = /DUSE_OPENSSL
+SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
+SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+
+WINSSL_CFLAGS = /DUSE_SCHANNEL
+#WINSSL_LIBS = gdi32.lib user32.lib
+
+!IFDEF USE_IDN
+WINLIBS = $(WINLIBS) normaliz.lib
+!ENDIF
+
+# Runtime library configuration
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+## Release
+CCR = cl.exe $(RTLIB) /O2 /DNDEBUG
+LINKR = link.exe /incremental:no /libpath:"../lib"
+RCR = rc.exe /dDEBUGBUILD=0
+
+## Debug
+CCD = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"
+RCD = rc.exe /dDEBUGBUILD=1
+
+CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+LFLAGS = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)
+RESFLAGS = /i../include
+
+# This manifest thing is for VC8, enabled by the maketgz script that
+# builds the VC8 version of this makefile. Left commented out in the VC12
+# version!
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+RELEASE_OBJS= \
+ nonblockr.obj \
+ rawstrr.obj \
+ strtoofftr.obj \
+ warnless.obj \
+ tool_binmoder.obj \
+ tool_bnamer.obj \
+ tool_cb_dbgr.obj \
+ tool_cb_hdrr.obj \
+ tool_cb_prgr.obj \
+ tool_cb_rear.obj \
+ tool_cb_seer.obj \
+ tool_cb_wrtr.obj \
+ tool_cfgabler.obj \
+ tool_convertr.obj \
+ tool_dirhier.obj \
+ tool_doswinr.obj \
+ tool_easysrcr.obj \
+ tool_formparser.obj \
+ tool_getparamr.obj \
+ tool_getpassr.obj \
+ tool_helpr.obj \
+ tool_helpersr.obj \
+ tool_homedirr.obj \
+ tool_hugehelpr.obj \
+ tool_libinfor.obj \
+ tool_mainr.obj \
+ tool_metalinkr.obj \
+ tool_mfilesr.obj \
+ tool_msgsr.obj \
+ tool_operater.obj \
+ tool_operhlpr.obj \
+ tool_panykeyr.obj \
+ tool_paramhlpr.obj \
+ tool_parsecfgr.obj \
+ tool_setoptr.obj \
+ tool_sleepr.obj \
+ tool_urlglobr.obj \
+ tool_utilr.obj \
+ tool_vmsr.obj \
+ tool_writeenvr.obj \
+ tool_writeoutr.obj \
+ tool_xattrr.obj \
+ curlr.res
+
+DEBUG_OBJS= \
+ nonblockd.obj \
+ rawstrd.obj \
+ strtoofftd.obj \
+ warnlessd.obj \
+ tool_binmoded.obj \
+ tool_bnamed.obj \
+ tool_cb_dbgd.obj \
+ tool_cb_hdrd.obj \
+ tool_cb_prgd.obj \
+ tool_cb_read.obj \
+ tool_cb_seed.obj \
+ tool_cb_wrtd.obj \
+ tool_cfgabled.obj \
+ tool_convertd.obj \
+ tool_dirhied.obj \
+ tool_doswind.obj \
+ tool_easysrcd.obj \
+ tool_formparsed.obj \
+ tool_getparamd.obj \
+ tool_getpassd.obj \
+ tool_helpd.obj \
+ tool_helpersd.obj \
+ tool_homedird.obj \
+ tool_hugehelpd.obj \
+ tool_libinfod.obj \
+ tool_maind.obj \
+ tool_metalinkd.obj \
+ tool_mfilesd.obj \
+ tool_msgsd.obj \
+ tool_operated.obj \
+ tool_operhlpd.obj \
+ tool_panykeyd.obj \
+ tool_paramhlpd.obj \
+ tool_parsecfgd.obj \
+ tool_setoptd.obj \
+ tool_sleepd.obj \
+ tool_urlglobd.obj \
+ tool_utild.obj \
+ tool_vmsd.obj \
+ tool_writeenvd.obj \
+ tool_writeoutd.obj \
+ tool_xattrd.obj \
+ curld.res
+
+#################################################
+# If CFG not specified, use static libs
+
+CFLAGS = $(CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)
+
+#################################################
+# release dynamic library
+
+!IF "$(CFG)" == "release-dll"
+LINKLIBS = $(LIBCURL_IMP_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)
+!ENDIF
+
+#################################################
+# release static library with zlib
+
+!IF "$(CFG)" == "release-zlib"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl
+
+!IF "$(CFG)" == "release-ssl"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl and zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with winssl and zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+CFLAGS = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl
+
+!IF "$(CFG)" == "release-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic zlib
+
+!IF "$(CFG)" == "release-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic zlib
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+LINKLIBS = $(LINKLIBS) $(WINLIBS)
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)
+
+all : release
+
+release: $(RELEASE_OBJS)
+ $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)
+ $(MANIFESTTOOL)
+
+debug: $(DEBUG_OBJS)
+ $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)
+ $(MANIFESTTOOL)
+
+## Release
+nonblockr.obj: ../lib/nonblock.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrr.obj: ../lib/rawstr.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftr.obj: ../lib/strtoofft.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnless.obj: ../lib/warnless.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoder.obj: tool_binmode.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamer.obj: tool_bname.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgr.obj: tool_cb_dbg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrr.obj: tool_cb_hdr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgr.obj: tool_cb_prg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_rear.obj: tool_cb_rea.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seer.obj: tool_cb_see.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtr.obj: tool_cb_wrt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabler.obj: tool_cfgable.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertr.obj: tool_convert.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhier.obj: tool_dirhie.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswinr.obj: tool_doswin.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcr.obj: tool_easysrc.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparser.obj: tool_formparse.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamr.obj: tool_getparam.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassr.obj: tool_getpass.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpr.obj: tool_help.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersr.obj: tool_helpers.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedirr.obj: tool_homedir.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpr.obj: tool_hugehelp.c
+ $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfor.obj: tool_libinfo.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_mainr.obj: tool_main.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkr.obj: tool_metalink.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesr.obj: tool_mfiles.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsr.obj: tool_msgs.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operater.obj: tool_operate.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpr.obj: tool_operhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyr.obj: tool_panykey.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpr.obj: tool_paramhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgr.obj: tool_parsecfg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptr.obj: tool_setopt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepr.obj: tool_sleep.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobr.obj: tool_urlglob.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utilr.obj: tool_util.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsr.obj: tool_vms.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvr.obj: tool_writeenv.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutr.obj: tool_writeout.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrr.obj: tool_xattr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c
+curlr.res : curl.rc
+ $(RCR) $(RESFLAGS) /Fo"$@" curl.rc
+
+## Debug
+nonblockd.obj: ../lib/nonblock.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrd.obj: ../lib/rawstr.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftd.obj: ../lib/strtoofft.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnlessd.obj: ../lib/warnless.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoded.obj: tool_binmode.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamed.obj: tool_bname.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgd.obj: tool_cb_dbg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrd.obj: tool_cb_hdr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgd.obj: tool_cb_prg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_read.obj: tool_cb_rea.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seed.obj: tool_cb_see.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtd.obj: tool_cb_wrt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabled.obj: tool_cfgable.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertd.obj: tool_convert.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhied.obj: tool_dirhie.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswind.obj: tool_doswin.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcd.obj: tool_easysrc.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparsed.obj: tool_formparse.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamd.obj: tool_getparam.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassd.obj: tool_getpass.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpd.obj: tool_help.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersd.obj: tool_helpers.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedird.obj: tool_homedir.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpd.obj: tool_hugehelp.c
+ $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfod.obj: tool_libinfo.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_maind.obj: tool_main.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkd.obj: tool_metalink.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesd.obj: tool_mfiles.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsd.obj: tool_msgs.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operated.obj: tool_operate.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpd.obj: tool_operhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyd.obj: tool_panykey.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpd.obj: tool_paramhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgd.obj: tool_parsecfg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptd.obj: tool_setopt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepd.obj: tool_sleep.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobd.obj: tool_urlglob.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utild.obj: tool_util.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsd.obj: tool_vms.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvd.obj: tool_writeenv.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutd.obj: tool_writeout.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrd.obj: tool_xattr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c
+curld.res : curl.rc
+ $(RCD) $(RESFLAGS) /Fo"$@" curl.rc
+
+clean:
+ @-erase $(PROGRAM_NAME) 2> NUL
+ @-erase $(RELEASE_OBJS) 2> NUL
+ @-erase $(DEBUG_OBJS) 2> NUL
+ @-erase *.idb 2> NUL
+ @-erase *.pdb 2> NUL
+ @-erase *.pch 2> NUL
+ @-erase *.ilk 2> NUL
diff --git a/src/Makefile.vc14 b/src/Makefile.vc14
new file mode 100644
index 000000000..16c4667a3
--- /dev/null
+++ b/src/Makefile.vc14
@@ -0,0 +1,544 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-users.
+
+#############################################################
+#
+## Makefile for building curl.exe with MSVC14
+## Use: nmake -f makefile.vc14 [release | debug] [CFG=release-ssl]
+## (default is release)
+## "nmake -f makefile.vc14 CFG=release-ssl" statically links OpenSSL
+## into curl.exe producing a standalone SSL-enabled executable.
+##
+#
+#############################################################
+
+PROGRAM_NAME = curl.exe
+
+# -------------------------------------------
+# Verify that current subdir is curl's 'src'
+# -------------------------------------------
+
+!IF ! EXIST(.\tool_main.c)
+! MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.
+! MESSAGE Change to curl's 'src' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC14 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+########################################################
+## Nothing more to do below this line!
+
+ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
+ZLIB_LIBS = zlib.lib
+ZLIB_IMP_LIBS = zdll.lib
+
+SSL_CFLAGS = /DUSE_OPENSSL
+SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
+SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+
+WINSSL_CFLAGS = /DUSE_SCHANNEL
+#WINSSL_LIBS = gdi32.lib user32.lib
+
+!IFDEF USE_IDN
+WINLIBS = $(WINLIBS) normaliz.lib
+!ENDIF
+
+# Runtime library configuration
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+## Release
+CCR = cl.exe $(RTLIB) /O2 /DNDEBUG
+LINKR = link.exe /incremental:no /libpath:"../lib"
+RCR = rc.exe /dDEBUGBUILD=0
+
+## Debug
+CCD = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"
+RCD = rc.exe /dDEBUGBUILD=1
+
+CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+LFLAGS = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)
+RESFLAGS = /i../include
+
+# This manifest thing is for VC8, enabled by the maketgz script that
+# builds the VC8 version of this makefile. Left commented out in the VC14
+# version!
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+RELEASE_OBJS= \
+ nonblockr.obj \
+ rawstrr.obj \
+ strtoofftr.obj \
+ warnless.obj \
+ tool_binmoder.obj \
+ tool_bnamer.obj \
+ tool_cb_dbgr.obj \
+ tool_cb_hdrr.obj \
+ tool_cb_prgr.obj \
+ tool_cb_rear.obj \
+ tool_cb_seer.obj \
+ tool_cb_wrtr.obj \
+ tool_cfgabler.obj \
+ tool_convertr.obj \
+ tool_dirhier.obj \
+ tool_doswinr.obj \
+ tool_easysrcr.obj \
+ tool_formparser.obj \
+ tool_getparamr.obj \
+ tool_getpassr.obj \
+ tool_helpr.obj \
+ tool_helpersr.obj \
+ tool_homedirr.obj \
+ tool_hugehelpr.obj \
+ tool_libinfor.obj \
+ tool_mainr.obj \
+ tool_metalinkr.obj \
+ tool_mfilesr.obj \
+ tool_msgsr.obj \
+ tool_operater.obj \
+ tool_operhlpr.obj \
+ tool_panykeyr.obj \
+ tool_paramhlpr.obj \
+ tool_parsecfgr.obj \
+ tool_setoptr.obj \
+ tool_sleepr.obj \
+ tool_urlglobr.obj \
+ tool_utilr.obj \
+ tool_vmsr.obj \
+ tool_writeenvr.obj \
+ tool_writeoutr.obj \
+ tool_xattrr.obj \
+ curlr.res
+
+DEBUG_OBJS= \
+ nonblockd.obj \
+ rawstrd.obj \
+ strtoofftd.obj \
+ warnlessd.obj \
+ tool_binmoded.obj \
+ tool_bnamed.obj \
+ tool_cb_dbgd.obj \
+ tool_cb_hdrd.obj \
+ tool_cb_prgd.obj \
+ tool_cb_read.obj \
+ tool_cb_seed.obj \
+ tool_cb_wrtd.obj \
+ tool_cfgabled.obj \
+ tool_convertd.obj \
+ tool_dirhied.obj \
+ tool_doswind.obj \
+ tool_easysrcd.obj \
+ tool_formparsed.obj \
+ tool_getparamd.obj \
+ tool_getpassd.obj \
+ tool_helpd.obj \
+ tool_helpersd.obj \
+ tool_homedird.obj \
+ tool_hugehelpd.obj \
+ tool_libinfod.obj \
+ tool_maind.obj \
+ tool_metalinkd.obj \
+ tool_mfilesd.obj \
+ tool_msgsd.obj \
+ tool_operated.obj \
+ tool_operhlpd.obj \
+ tool_panykeyd.obj \
+ tool_paramhlpd.obj \
+ tool_parsecfgd.obj \
+ tool_setoptd.obj \
+ tool_sleepd.obj \
+ tool_urlglobd.obj \
+ tool_utild.obj \
+ tool_vmsd.obj \
+ tool_writeenvd.obj \
+ tool_writeoutd.obj \
+ tool_xattrd.obj \
+ curld.res
+
+#################################################
+# If CFG not specified, use static libs
+
+CFLAGS = $(CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)
+
+#################################################
+# release dynamic library
+
+!IF "$(CFG)" == "release-dll"
+LINKLIBS = $(LIBCURL_IMP_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)
+!ENDIF
+
+#################################################
+# release static library with zlib
+
+!IF "$(CFG)" == "release-zlib"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl
+
+!IF "$(CFG)" == "release-ssl"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl and zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with winssl and zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+CFLAGS = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl
+
+!IF "$(CFG)" == "release-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic zlib
+
+!IF "$(CFG)" == "release-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic zlib
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+LINKLIBS = $(LINKLIBS) $(WINLIBS)
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)
+
+all : release
+
+release: $(RELEASE_OBJS)
+ $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)
+ $(MANIFESTTOOL)
+
+debug: $(DEBUG_OBJS)
+ $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)
+ $(MANIFESTTOOL)
+
+## Release
+nonblockr.obj: ../lib/nonblock.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrr.obj: ../lib/rawstr.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftr.obj: ../lib/strtoofft.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnless.obj: ../lib/warnless.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoder.obj: tool_binmode.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamer.obj: tool_bname.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgr.obj: tool_cb_dbg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrr.obj: tool_cb_hdr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgr.obj: tool_cb_prg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_rear.obj: tool_cb_rea.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seer.obj: tool_cb_see.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtr.obj: tool_cb_wrt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabler.obj: tool_cfgable.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertr.obj: tool_convert.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhier.obj: tool_dirhie.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswinr.obj: tool_doswin.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcr.obj: tool_easysrc.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparser.obj: tool_formparse.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamr.obj: tool_getparam.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassr.obj: tool_getpass.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpr.obj: tool_help.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersr.obj: tool_helpers.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedirr.obj: tool_homedir.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpr.obj: tool_hugehelp.c
+ $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfor.obj: tool_libinfo.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_mainr.obj: tool_main.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkr.obj: tool_metalink.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesr.obj: tool_mfiles.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsr.obj: tool_msgs.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operater.obj: tool_operate.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpr.obj: tool_operhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyr.obj: tool_panykey.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpr.obj: tool_paramhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgr.obj: tool_parsecfg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptr.obj: tool_setopt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepr.obj: tool_sleep.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobr.obj: tool_urlglob.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utilr.obj: tool_util.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsr.obj: tool_vms.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvr.obj: tool_writeenv.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutr.obj: tool_writeout.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrr.obj: tool_xattr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c
+curlr.res : curl.rc
+ $(RCR) $(RESFLAGS) /Fo"$@" curl.rc
+
+## Debug
+nonblockd.obj: ../lib/nonblock.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrd.obj: ../lib/rawstr.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftd.obj: ../lib/strtoofft.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnlessd.obj: ../lib/warnless.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoded.obj: tool_binmode.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamed.obj: tool_bname.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgd.obj: tool_cb_dbg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrd.obj: tool_cb_hdr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgd.obj: tool_cb_prg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_read.obj: tool_cb_rea.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seed.obj: tool_cb_see.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtd.obj: tool_cb_wrt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabled.obj: tool_cfgable.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertd.obj: tool_convert.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhied.obj: tool_dirhie.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswind.obj: tool_doswin.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcd.obj: tool_easysrc.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparsed.obj: tool_formparse.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamd.obj: tool_getparam.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassd.obj: tool_getpass.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpd.obj: tool_help.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersd.obj: tool_helpers.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedird.obj: tool_homedir.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpd.obj: tool_hugehelp.c
+ $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfod.obj: tool_libinfo.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_maind.obj: tool_main.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkd.obj: tool_metalink.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesd.obj: tool_mfiles.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsd.obj: tool_msgs.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operated.obj: tool_operate.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpd.obj: tool_operhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyd.obj: tool_panykey.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpd.obj: tool_paramhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgd.obj: tool_parsecfg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptd.obj: tool_setopt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepd.obj: tool_sleep.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobd.obj: tool_urlglob.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utild.obj: tool_util.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsd.obj: tool_vms.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvd.obj: tool_writeenv.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutd.obj: tool_writeout.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrd.obj: tool_xattr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c
+curld.res : curl.rc
+ $(RCD) $(RESFLAGS) /Fo"$@" curl.rc
+
+clean:
+ @-erase $(PROGRAM_NAME) 2> NUL
+ @-erase $(RELEASE_OBJS) 2> NUL
+ @-erase $(DEBUG_OBJS) 2> NUL
+ @-erase *.idb 2> NUL
+ @-erase *.pdb 2> NUL
+ @-erase *.pch 2> NUL
+ @-erase *.ilk 2> NUL
diff --git a/src/Makefile.vc6 b/src/Makefile.vc6
index c8693afb9..eec89c25c 100644
--- a/src/Makefile.vc6
+++ b/src/Makefile.vc6
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF ZLIB_PATH
@@ -77,7 +77,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -95,7 +95,7 @@ ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
ZLIB_LIBS = zlib.lib
ZLIB_IMP_LIBS = zdll.lib
-SSL_CFLAGS = /DUSE_SSLEAY
+SSL_CFLAGS = /DUSE_OPENSSL
SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
diff --git a/src/Makefile.vc7 b/src/Makefile.vc7
new file mode 100644
index 000000000..2420d2bd5
--- /dev/null
+++ b/src/Makefile.vc7
@@ -0,0 +1,544 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2015, 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 http://curl.haxx.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.
+#
+#***************************************************************************
+
+# All files in the Makefile.vc* series are generated automatically from the
+# one made for MSVC version 6. Alas, if you want to do changes to any of the
+# files and send back to the project, edit the version six, make your diff and
+# mail curl-users.
+
+#############################################################
+#
+## Makefile for building curl.exe with MSVC7
+## Use: nmake -f makefile.vc6 [release | debug] [CFG=release-ssl]
+## (default is release)
+## "nmake -f makefile.vc6 CFG=release-ssl" statically links OpenSSL
+## into curl.exe producing a standalone SSL-enabled executable.
+##
+#
+#############################################################
+
+PROGRAM_NAME = curl.exe
+
+# -------------------------------------------
+# Verify that current subdir is curl's 'src'
+# -------------------------------------------
+
+!IF ! EXIST(.\tool_main.c)
+! MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.
+! MESSAGE Change to curl's 'src' subdirectory, and try again.
+! ERROR See previous message.
+!ENDIF
+
+# ------------------------------------------------
+# Makefile.msvc.names provides libcurl file names
+# ------------------------------------------------
+
+!INCLUDE ..\winbuild\Makefile.msvc.names
+
+
+!IFNDEF OPENSSL_PATH
+OPENSSL_PATH = ../../openssl-1.0.2a
+!ENDIF
+
+!IFNDEF ZLIB_PATH
+ZLIB_PATH = ../../zlib-1.2.8
+!ENDIF
+
+!IFNDEF MACHINE
+MACHINE = X86
+!ENDIF
+
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
+# without an openssl installation and offers the ability to authenticate
+# using the "current logged in user". Since at least with MSVC7 the sspi.h
+# header is broken it is either required to install the Windows SDK,
+# or to fix sspi.h with adding this define at the beginning of sspi.h:
+# #define FreeCredentialHandle FreeCredentialsHandle
+#
+# If, for some reason the Windows SDK is installed but not installed
+# in the default location, you can specify WINDOWS_SDK_PATH.
+# It can be downloaded from:
+# https://msdn.microsoft.com/windows/bb980924.aspx
+
+# WINDOWS_SSPI = 1
+
+!IFDEF WINDOWS_SSPI
+!IFNDEF WINDOWS_SDK_PATH
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
+!ENDIF
+!ENDIF
+
+########################################################
+## Nothing more to do below this line!
+
+ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
+ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
+ZLIB_LIBS = zlib.lib
+ZLIB_IMP_LIBS = zdll.lib
+
+SSL_CFLAGS = /DUSE_OPENSSL
+SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
+SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
+WINLIBS = ws2_32.lib wldap32.lib advapi32.lib
+
+WINSSL_CFLAGS = /DUSE_SCHANNEL
+#WINSSL_LIBS = gdi32.lib user32.lib
+
+!IFDEF USE_IDN
+WINLIBS = $(WINLIBS) normaliz.lib
+!ENDIF
+
+# Runtime library configuration
+RTLIB = /MD
+RTLIBD = /MDd
+
+!IF "$(RTLIBCFG)" == "static"
+RTLIB = /MT
+RTLIBD = /MTd
+!ENDIF
+
+## Release
+CCR = cl.exe $(RTLIB) /O2 /DNDEBUG
+LINKR = link.exe /incremental:no /libpath:"../lib"
+RCR = rc.exe /dDEBUGBUILD=0
+
+## Debug
+CCD = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /GZ
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"
+RCD = rc.exe /dDEBUGBUILD=1
+
+CFLAGS = /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1
+LFLAGS = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)
+RESFLAGS = /i../include
+
+# This manifest thing is for VC8, enabled by the maketgz script that
+# builds the VC8 version of this makefile. Left commented out in the VC7
+# version!
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1
+
+!IFDEF WINDOWS_SSPI
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
+!ENDIF
+
+RELEASE_OBJS= \
+ nonblockr.obj \
+ rawstrr.obj \
+ strtoofftr.obj \
+ warnless.obj \
+ tool_binmoder.obj \
+ tool_bnamer.obj \
+ tool_cb_dbgr.obj \
+ tool_cb_hdrr.obj \
+ tool_cb_prgr.obj \
+ tool_cb_rear.obj \
+ tool_cb_seer.obj \
+ tool_cb_wrtr.obj \
+ tool_cfgabler.obj \
+ tool_convertr.obj \
+ tool_dirhier.obj \
+ tool_doswinr.obj \
+ tool_easysrcr.obj \
+ tool_formparser.obj \
+ tool_getparamr.obj \
+ tool_getpassr.obj \
+ tool_helpr.obj \
+ tool_helpersr.obj \
+ tool_homedirr.obj \
+ tool_hugehelpr.obj \
+ tool_libinfor.obj \
+ tool_mainr.obj \
+ tool_metalinkr.obj \
+ tool_mfilesr.obj \
+ tool_msgsr.obj \
+ tool_operater.obj \
+ tool_operhlpr.obj \
+ tool_panykeyr.obj \
+ tool_paramhlpr.obj \
+ tool_parsecfgr.obj \
+ tool_setoptr.obj \
+ tool_sleepr.obj \
+ tool_urlglobr.obj \
+ tool_utilr.obj \
+ tool_vmsr.obj \
+ tool_writeenvr.obj \
+ tool_writeoutr.obj \
+ tool_xattrr.obj \
+ curlr.res
+
+DEBUG_OBJS= \
+ nonblockd.obj \
+ rawstrd.obj \
+ strtoofftd.obj \
+ warnlessd.obj \
+ tool_binmoded.obj \
+ tool_bnamed.obj \
+ tool_cb_dbgd.obj \
+ tool_cb_hdrd.obj \
+ tool_cb_prgd.obj \
+ tool_cb_read.obj \
+ tool_cb_seed.obj \
+ tool_cb_wrtd.obj \
+ tool_cfgabled.obj \
+ tool_convertd.obj \
+ tool_dirhied.obj \
+ tool_doswind.obj \
+ tool_easysrcd.obj \
+ tool_formparsed.obj \
+ tool_getparamd.obj \
+ tool_getpassd.obj \
+ tool_helpd.obj \
+ tool_helpersd.obj \
+ tool_homedird.obj \
+ tool_hugehelpd.obj \
+ tool_libinfod.obj \
+ tool_maind.obj \
+ tool_metalinkd.obj \
+ tool_mfilesd.obj \
+ tool_msgsd.obj \
+ tool_operated.obj \
+ tool_operhlpd.obj \
+ tool_panykeyd.obj \
+ tool_paramhlpd.obj \
+ tool_parsecfgd.obj \
+ tool_setoptd.obj \
+ tool_sleepd.obj \
+ tool_urlglobd.obj \
+ tool_utild.obj \
+ tool_vmsd.obj \
+ tool_writeenvd.obj \
+ tool_writeoutd.obj \
+ tool_xattrd.obj \
+ curld.res
+
+#################################################
+# If CFG not specified, use static libs
+
+CFLAGS = $(CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)
+
+#################################################
+# release dynamic library
+
+!IF "$(CFG)" == "release-dll"
+LINKLIBS = $(LIBCURL_IMP_LIB_REL)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)
+!ENDIF
+
+#################################################
+# release static library with zlib
+
+!IF "$(CFG)" == "release-zlib"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl
+
+!IF "$(CFG)" == "release-ssl"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl
+
+!IF "$(CFG)" == "release-dll-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with ssl and zlib
+
+!IF "$(CFG)" == "release-ssl-zlib"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with winssl and zlib
+
+!IF "$(CFG)" == "release-winssl-zlib"
+CFLAGS = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)
+LFLAGS = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl
+
+!IF "$(CFG)" == "release-ssl-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic zlib
+
+!IF "$(CFG)" == "release-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic zlib
+
+!IF "$(CFG)" == "release-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release static library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
+LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+#################################################
+# release dynamic library with dynamic ssl and dynamic zlib
+
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)
+LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
+LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
+!ENDIF
+
+LINKLIBS = $(LINKLIBS) $(WINLIBS)
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)
+
+all : release
+
+release: $(RELEASE_OBJS)
+ $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)
+ $(MANIFESTTOOL)
+
+debug: $(DEBUG_OBJS)
+ $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)
+ $(MANIFESTTOOL)
+
+## Release
+nonblockr.obj: ../lib/nonblock.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrr.obj: ../lib/rawstr.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftr.obj: ../lib/strtoofft.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnless.obj: ../lib/warnless.c
+ $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoder.obj: tool_binmode.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamer.obj: tool_bname.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgr.obj: tool_cb_dbg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrr.obj: tool_cb_hdr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgr.obj: tool_cb_prg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_rear.obj: tool_cb_rea.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seer.obj: tool_cb_see.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtr.obj: tool_cb_wrt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabler.obj: tool_cfgable.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertr.obj: tool_convert.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhier.obj: tool_dirhie.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswinr.obj: tool_doswin.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcr.obj: tool_easysrc.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparser.obj: tool_formparse.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamr.obj: tool_getparam.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassr.obj: tool_getpass.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpr.obj: tool_help.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersr.obj: tool_helpers.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedirr.obj: tool_homedir.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpr.obj: tool_hugehelp.c
+ $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfor.obj: tool_libinfo.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_mainr.obj: tool_main.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkr.obj: tool_metalink.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesr.obj: tool_mfiles.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsr.obj: tool_msgs.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operater.obj: tool_operate.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpr.obj: tool_operhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyr.obj: tool_panykey.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpr.obj: tool_paramhlp.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgr.obj: tool_parsecfg.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptr.obj: tool_setopt.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepr.obj: tool_sleep.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobr.obj: tool_urlglob.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utilr.obj: tool_util.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsr.obj: tool_vms.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvr.obj: tool_writeenv.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutr.obj: tool_writeout.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrr.obj: tool_xattr.c
+ $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c
+curlr.res : curl.rc
+ $(RCR) $(RESFLAGS) /Fo"$@" curl.rc
+
+## Debug
+nonblockd.obj: ../lib/nonblock.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
+rawstrd.obj: ../lib/rawstr.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
+strtoofftd.obj: ../lib/strtoofft.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
+warnlessd.obj: ../lib/warnless.c
+ $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c
+tool_binmoded.obj: tool_binmode.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c
+tool_bnamed.obj: tool_bname.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c
+tool_cb_dbgd.obj: tool_cb_dbg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c
+tool_cb_hdrd.obj: tool_cb_hdr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c
+tool_cb_prgd.obj: tool_cb_prg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c
+tool_cb_read.obj: tool_cb_rea.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c
+tool_cb_seed.obj: tool_cb_see.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c
+tool_cb_wrtd.obj: tool_cb_wrt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c
+tool_cfgabled.obj: tool_cfgable.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c
+tool_convertd.obj: tool_convert.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c
+tool_dirhied.obj: tool_dirhie.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c
+tool_doswind.obj: tool_doswin.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c
+tool_easysrcd.obj: tool_easysrc.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c
+tool_formparsed.obj: tool_formparse.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c
+tool_getparamd.obj: tool_getparam.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c
+tool_getpassd.obj: tool_getpass.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c
+tool_helpd.obj: tool_help.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_help.c
+tool_helpersd.obj: tool_helpers.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c
+tool_homedird.obj: tool_homedir.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c
+tool_hugehelpd.obj: tool_hugehelp.c
+ $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c
+tool_libinfod.obj: tool_libinfo.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c
+tool_maind.obj: tool_main.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_main.c
+tool_metalinkd.obj: tool_metalink.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c
+tool_mfilesd.obj: tool_mfiles.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c
+tool_msgsd.obj: tool_msgs.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c
+tool_operated.obj: tool_operate.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c
+tool_operhlpd.obj: tool_operhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c
+tool_panykeyd.obj: tool_panykey.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c
+tool_paramhlpd.obj: tool_paramhlp.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c
+tool_parsecfgd.obj: tool_parsecfg.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c
+tool_setoptd.obj: tool_setopt.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c
+tool_sleepd.obj: tool_sleep.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c
+tool_urlglobd.obj: tool_urlglob.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c
+tool_utild.obj: tool_util.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_util.c
+tool_vmsd.obj: tool_vms.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c
+tool_writeenvd.obj: tool_writeenv.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c
+tool_writeoutd.obj: tool_writeout.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c
+tool_xattrd.obj: tool_xattr.c
+ $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c
+curld.res : curl.rc
+ $(RCD) $(RESFLAGS) /Fo"$@" curl.rc
+
+clean:
+ @-erase $(PROGRAM_NAME) 2> NUL
+ @-erase $(RELEASE_OBJS) 2> NUL
+ @-erase $(DEBUG_OBJS) 2> NUL
+ @-erase *.idb 2> NUL
+ @-erase *.pdb 2> NUL
+ @-erase *.pch 2> NUL
+ @-erase *.ilk 2> NUL
diff --git a/src/Makefile.vc8 b/src/Makefile.vc8
index 7243799f0..4399c2819 100644
--- a/src/Makefile.vc8
+++ b/src/Makefile.vc8
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF ZLIB_PATH
@@ -77,7 +77,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -95,7 +95,7 @@ ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
ZLIB_LIBS = zlib.lib
ZLIB_IMP_LIBS = zdll.lib
-SSL_CFLAGS = /DUSE_SSLEAY
+SSL_CFLAGS = /DUSE_OPENSSL
SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
diff --git a/src/Makefile.vc9 b/src/Makefile.vc9
index 9d60e63ac..b149a938d 100644
--- a/src/Makefile.vc9
+++ b/src/Makefile.vc9
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
!IFNDEF OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
!ENDIF
!IFNDEF ZLIB_PATH
@@ -77,7 +77,7 @@ MACHINE = X86
# If, for some reason the Windows SDK is installed but not installed
# in the default location, you can specify WINDOWS_SDK_PATH.
# It can be downloaded from:
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+# https://msdn.microsoft.com/windows/bb980924.aspx
# WINDOWS_SSPI = 1
@@ -95,7 +95,7 @@ ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
ZLIB_LIBS = zlib.lib
ZLIB_IMP_LIBS = zdll.lib
-SSL_CFLAGS = /DUSE_SSLEAY
+SSL_CFLAGS = /DUSE_OPENSSL
SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib
diff --git a/src/checksrc.whitelist b/src/checksrc.whitelist
new file mode 100644
index 000000000..b078ac1ae
--- /dev/null
+++ b/src/checksrc.whitelist
@@ -0,0 +1,3 @@
+ * 'name=@filename,filename2,filename3'
+ * 'name=@filename;type=image/gif,filename2,filename3'
+ file = fopen(name, "r"); /* VMS */
diff --git a/src/mkhelp.pl b/src/mkhelp.pl
index 7ed86f7cd..088a09a06 100644
--- a/src/mkhelp.pl
+++ b/src/mkhelp.pl
@@ -54,6 +54,9 @@ while (<STDIN>) {
# 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
@@ -90,7 +93,12 @@ open(READ, "<$README") ||
die "couldn't read the README infile $README";
while(<READ>) {
- push @out, $_;
+ my $line = $_;
+
+ # remove trailing CR from line. msysgit checks out files as line+CRLF
+ $line =~ s/\r$//;
+
+ push @out, $line;
}
close(READ);
diff --git a/src/tool_cb_dbg.c b/src/tool_cb_dbg.c
index 4add67c55..f52714683 100644
--- a/src/tool_cb_dbg.c
+++ b/src/tool_cb_dbg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -79,7 +79,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
/* 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, "w");
+ config->trace_stream = fopen(config->trace_dump, FOPEN_WRITETEXT);
config->trace_fopened = TRUE;
}
}
@@ -88,7 +88,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
output = config->trace_stream;
if(!output) {
- warnf(operation, "Failed to create/open output");
+ warnf(config, "Failed to create/open output");
return 0;
}
diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c
index ef340f798..fd208e862 100644
--- a/src/tool_cb_hdr.c
+++ b/src/tool_cb_hdr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -61,7 +61,8 @@ size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
#ifdef DEBUGBUILD
if(size * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
- warnf(heads->config, "Header data exceeds single call write limit!\n");
+ warnf(heads->config->global, "Header data exceeds single call write "
+ "limit!\n");
return failure;
}
#endif
@@ -74,6 +75,8 @@ size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
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);
}
/*
diff --git a/src/tool_cb_wrt.c b/src/tool_cb_wrt.c
index dfbf95cc6..9be393ff2 100644
--- a/src/tool_cb_wrt.c
+++ b/src/tool_cb_wrt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -31,6 +31,43 @@
#include "memdebug.h" /* keep this as LAST include */
+/* create a local file for writing, return TRUE on success */
+bool tool_create_output_file(struct OutStruct *outs)
+{
+ struct GlobalConfig *global = outs->config->global;
+ FILE *file;
+
+ if(!outs->filename || !*outs->filename) {
+ warnf(global, "Remote filename has no length!\n");
+ return FALSE;
+ }
+
+ if(outs->is_cd_filename) {
+ /* don't overwrite existing files */
+ file = fopen(outs->filename, "rb");
+ if(file) {
+ fclose(file);
+ warnf(global, "Refusing to overwrite %s: %s\n", outs->filename,
+ strerror(EEXIST));
+ return FALSE;
+ }
+ }
+
+ /* open file for writing */
+ file = fopen(outs->filename, "wb");
+ if(!file) {
+ warnf(global, "Failed to create the file %s: %s\n", outs->filename,
+ strerror(errno));
+ return FALSE;
+ }
+ outs->s_isreg = TRUE;
+ outs->fopened = TRUE;
+ outs->stream = file;
+ outs->bytes = 0;
+ outs->init = 0;
+ return TRUE;
+}
+
/*
** callback for CURLOPT_WRITEFUNCTION
*/
@@ -55,13 +92,14 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
#ifdef DEBUGBUILD
if(config->include_headers) {
if(sz * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
- warnf(config, "Header data size exceeds single call write limit!\n");
+ warnf(config->global, "Header data size exceeds single call write "
+ "limit!\n");
return failure;
}
}
else {
if(sz * nmemb > (size_t)CURL_MAX_WRITE_SIZE) {
- warnf(config, "Data size exceeds single call write limit!\n");
+ warnf(config->global, "Data size exceeds single call write limit!\n");
return failure;
}
}
@@ -90,44 +128,14 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
check_fails = TRUE;
}
if(check_fails) {
- warnf(config, "Invalid output struct data for write callback\n");
+ warnf(config->global, "Invalid output struct data for write callback\n");
return failure;
}
}
#endif
- if(!outs->stream) {
- FILE *file;
-
- if(!outs->filename || !*outs->filename) {
- warnf(config, "Remote filename has no length!\n");
- return failure;
- }
-
- if(outs->is_cd_filename) {
- /* don't overwrite existing files */
- file = fopen(outs->filename, "rb");
- if(file) {
- fclose(file);
- warnf(config, "Refusing to overwrite %s: %s\n", outs->filename,
- strerror(EEXIST));
- return failure;
- }
- }
-
- /* open file for writing */
- file = fopen(outs->filename, "wb");
- if(!file) {
- warnf(config, "Failed to create the file %s: %s\n", outs->filename,
- strerror(errno));
- return failure;
- }
- outs->s_isreg = TRUE;
- outs->fopened = TRUE;
- outs->stream = file;
- outs->bytes = 0;
- outs->init = 0;
- }
+ if(!outs->stream && !tool_create_output_file(outs))
+ return failure;
rc = fwrite(buffer, sz, nmemb, outs->stream);
@@ -149,4 +157,3 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
return rc;
}
-
diff --git a/src/tool_cb_wrt.h b/src/tool_cb_wrt.h
index 380d8dd6a..ecbefa808 100644
--- a/src/tool_cb_wrt.h
+++ b/src/tool_cb_wrt.h
@@ -29,5 +29,8 @@
size_t tool_write_cb(void *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);
+
#endif /* HEADER_CURL_TOOL_CB_WRT_H */
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
index c9ee41703..ba6c468c5 100644
--- a/src/tool_cfgable.c
+++ b/src/tool_cfgable.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -136,6 +136,8 @@ static void free_config_fields(struct OperationConfig *config)
Curl_safefree(config->socksproxy);
Curl_safefree(config->socks5_gssapi_service);
+ Curl_safefree(config->proxy_service_name);
+ Curl_safefree(config->service_name);
Curl_safefree(config->ftp_account);
Curl_safefree(config->ftp_alternative_to_user);
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index cf8d563b0..c6a691447 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -126,6 +126,7 @@ struct OperationConfig {
bool globoff;
bool use_httpget;
bool insecure_ok; /* set TRUE to allow insecure SSL connects */
+ bool verifystatus;
bool create_dirs;
bool ftp_create_dirs;
bool ftp_skip_ip;
@@ -165,8 +166,12 @@ struct OperationConfig {
int socksver; /* set to CURLPROXY_SOCKS* define */
char *socks5_gssapi_service; /* set service name for gssapi principal
* default rcmd */
+ char *proxy_service_name; /* set service name for proxy negotiation
+ * default HTTP */
int socks5_gssapi_nec ; /* The NEC reference server does not protect
* the encryption type exchange */
+ char *service_name; /* set negotiation service name
+ * default HTTP */
bool tcp_nodelay;
long req_retry; /* number of retries */
@@ -194,6 +199,7 @@ struct OperationConfig {
bool xattr; /* store metadata in extended attributes */
long gssapi_delegation;
bool ssl_allow_beast; /* allow this SSL vulnerability */
+ bool ssl_no_revoke; /* disable SSL certificate revocation checks */
bool use_metalink; /* process given URLs as metalink XML file */
metalinkfile *metalinkfile_list; /* point to the first node */
@@ -205,7 +211,8 @@ struct OperationConfig {
bool nonpn; /* enable/disable TLS NPN extension */
bool noalpn; /* enable/disable TLS ALPN extension */
char *unix_socket_path; /* path to Unix domain socket */
-
+ bool falsestart;
+ bool path_as_is;
struct GlobalConfig *global;
struct OperationConfig *prev;
struct OperationConfig *next; /* Always last in the struct */
diff --git a/src/tool_dirhie.c b/src/tool_dirhie.c
index 5965f7a74..b6a8067c9 100644
--- a/src/tool_dirhie.c
+++ b/src/tool_dirhie.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -129,7 +129,7 @@ CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
snprintf(dirbuildup, outlen, "%s%s", DIR_CHAR, tempdir);
}
if(access(dirbuildup, F_OK) == -1) {
- if(-1 == mkdir(dirbuildup,(mode_t)0000750)) {
+ if(-1 == mkdir(dirbuildup, (mode_t)0000750)) {
show_dir_errno(errors, dirbuildup);
result = CURLE_WRITE_ERROR;
break; /* get out of loop */
diff --git a/src/tool_easysrc.c b/src/tool_easysrc.c
index 3db27bb5a..0482ef6ae 100644
--- a/src/tool_easysrc.c
+++ b/src/tool_easysrc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -176,13 +176,13 @@ void dumpeasysrc(struct GlobalConfig *config)
FILE *out;
bool fopened = FALSE;
if(strcmp(o, "-")) {
- out = fopen(o, "w");
+ out = fopen(o, FOPEN_WRITETEXT);
fopened = TRUE;
}
else
out = stdout;
if(!out)
- warnf(config->current, "Failed to open %s to write libcurl code!\n", o);
+ warnf(config, "Failed to open %s to write libcurl code!\n", o);
else {
int i;
const char *c;
diff --git a/src/tool_formparse.c b/src/tool_formparse.c
index 1dcd897e6..f26f2595c 100644
--- a/src/tool_formparse.c
+++ b/src/tool_formparse.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -206,7 +206,8 @@ int formparse(struct OperationConfig *config,
/* verify that this is a fine type specifier */
if(2 != sscanf(type, "%127[^/]/%127[^;,\n]",
type_major, type_minor)) {
- warnf(config, "Illegally formatted content-type field!\n");
+ warnf(config->global,
+ "Illegally formatted content-type field!\n");
Curl_safefree(contents);
FreeMultiInfo(&multi_start, &multi_current);
return 2; /* illegal content-type syntax! */
@@ -246,7 +247,7 @@ int formparse(struct OperationConfig *config,
semicolon = (';' == *ptr) ? TRUE : FALSE;
if(*unknown) {
*word_end = '\0';
- warnf(config, "skip unknown form field: %s\n", unknown);
+ warnf(config->global, "skip unknown form field: %s\n", unknown);
}
}
}
@@ -257,7 +258,7 @@ int formparse(struct OperationConfig *config,
if(*contp && !AddMultiFiles(contp, type, filename, &multi_start,
&multi_current)) {
- warnf(config, "Error building form post!\n");
+ warnf(config->global, "Error building form post!\n");
Curl_safefree(contents);
FreeMultiInfo(&multi_start, &multi_current);
return 3;
@@ -291,7 +292,7 @@ int formparse(struct OperationConfig *config,
if(curl_formadd(httppost, last_post,
CURLFORM_COPYNAME, name,
CURLFORM_ARRAY, forms, CURLFORM_END) != 0) {
- warnf(config, "curl_formadd failed!\n");
+ warnf(config->global, "curl_formadd failed!\n");
Curl_safefree(forms);
Curl_safefree(contents);
return 5;
@@ -323,8 +324,8 @@ int formparse(struct OperationConfig *config,
if(curl_formadd(httppost, last_post,
CURLFORM_ARRAY, info, CURLFORM_END ) != 0) {
- warnf(config, "curl_formadd failed, possibly the file %s is bad!\n",
- contp+1);
+ warnf(config->global, "curl_formadd failed, possibly the file %s is "
+ "bad!\n", contp + 1);
Curl_safefree(contents);
return 6;
}
@@ -332,7 +333,7 @@ int formparse(struct OperationConfig *config,
else {
#ifdef CURL_DOES_CONVERSIONS
if(convert_to_network(contp, strlen(contp))) {
- warnf(config, "curl_formadd failed!\n");
+ warnf(config->global, "curl_formadd failed!\n");
Curl_safefree(contents);
return 7;
}
@@ -343,7 +344,7 @@ int formparse(struct OperationConfig *config,
info[i].option = CURLFORM_END;
if(curl_formadd(httppost, last_post,
CURLFORM_ARRAY, info, CURLFORM_END) != 0) {
- warnf(config, "curl_formadd failed!\n");
+ warnf(config->global, "curl_formadd failed!\n");
Curl_safefree(contents);
return 8;
}
@@ -352,10 +353,9 @@ int formparse(struct OperationConfig *config,
}
else {
- warnf(config, "Illegally formatted input field!\n");
+ warnf(config->global, "Illegally formatted input field!\n");
return 1;
}
Curl_safefree(contents);
return 0;
}
-
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 3932ccbf5..4405bce87 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -145,7 +145,7 @@ static const struct LongShort aliases[]= {
{"$v", "ssl-reqd", FALSE},
/* 'ssl-reqd' new in 7.20.0, previously this was ftp-ssl-reqd */
{"$w", "sessionid", FALSE},
- /* ¡sessionid' listed as --no-sessionid in the help */
+ /* 'sessionid' listed as --no-sessionid in the help */
{"$x", "ftp-ssl-control", FALSE},
{"$y", "ftp-ssl-ccc", FALSE},
{"$j", "ftp-ssl-ccc-mode", TRUE},
@@ -158,10 +158,10 @@ static const struct LongShort aliases[]= {
{"$3", "keepalive-time", TRUE},
{"$4", "post302", FALSE},
{"$5", "noproxy", TRUE},
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
{"$6", "socks5-gssapi-service", TRUE},
{"$7", "socks5-gssapi-nec", FALSE},
-#endif
+ {"$O", "proxy-service-name", TRUE},
+ {"$P", "service-name", TRUE},
{"$8", "proxy1.0", TRUE},
{"$9", "tftp-blksize", TRUE},
{"$A", "mail-from", TRUE},
@@ -177,6 +177,7 @@ static const struct LongShort aliases[]= {
{"$K", "sasl-ir", FALSE},
{"$L", "test-event", FALSE},
{"$M", "unix-socket", TRUE},
+ {"$N", "path-as-is", FALSE},
{"0", "http1.0", FALSE},
{"01", "http1.1", FALSE},
{"02", "http2", FALSE},
@@ -195,6 +196,7 @@ static const struct LongShort aliases[]= {
{"c", "cookie-jar", TRUE},
{"C", "continue-at", TRUE},
{"d", "data", TRUE},
+ {"dr", "data-raw", TRUE},
{"da", "data-ascii", TRUE},
{"db", "data-binary", TRUE},
{"de", "data-urlencode", TRUE},
@@ -217,6 +219,9 @@ static const struct LongShort aliases[]= {
{"En", "ssl-allow-beast", FALSE},
{"Eo", "login-options", TRUE},
{"Ep", "pinnedpubkey", TRUE},
+ {"Eq", "cert-status", FALSE},
+ {"Er", "false-start", FALSE},
+ {"Es", "ssl-no-revoke", FALSE},
{"f", "fail", FALSE},
{"F", "form", TRUE},
{"Fs", "form-string", TRUE},
@@ -522,7 +527,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
case 'g': /* --trace */
GetStr(&global->trace_dump, nextarg);
if(global->tracetype && (global->tracetype != TRACE_BIN))
- warnf(config, "--trace overrides an earlier trace/verbose option\n");
+ warnf(global, "--trace overrides an earlier trace/verbose option\n");
global->tracetype = TRACE_BIN;
break;
case 'G': /* --npn */
@@ -531,7 +536,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
case 'h': /* --trace-ascii */
GetStr(&global->trace_dump, nextarg);
if(global->tracetype && (global->tracetype != TRACE_ASCII))
- warnf(config,
+ warnf(global,
"--trace-ascii overrides an earlier trace/verbose option\n");
global->tracetype = TRACE_ASCII;
break;
@@ -567,7 +572,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
/* for plain bytes, leave as-is */
break;
default:
- warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
+ warnf(global, "unsupported rate unit. Use G, M, K or B!\n");
return PARAM_BAD_USE;
}
config->recvpersecond = value;
@@ -675,9 +680,9 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
case 'v': /* --stderr */
if(strcmp(nextarg, "-")) {
- FILE *newfile = fopen(nextarg, "wt");
+ FILE *newfile = fopen(nextarg, FOPEN_WRITETEXT);
if(!newfile)
- warnf(config, "Failed to open %s!\n", nextarg);
+ warnf(global, "Failed to open %s!\n", nextarg);
else {
if(global->errors_fopened)
fclose(global->errors);
@@ -829,7 +834,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
else {
config->localportrange -= config->localport;
if(config->localportrange < 1) {
- warnf(config, "bad range input\n");
+ warnf(global, "bad range input\n");
return PARAM_BAD_USE;
}
}
@@ -861,7 +866,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'z': /* --libcurl */
#ifdef CURL_DISABLE_LIBCURL_OPTION
- warnf(config,
+ warnf(global,
"--libcurl option was disabled at build-time!\n");
return PARAM_OPTION_UNKNOWN;
#else
@@ -892,14 +897,18 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
/* This specifies the noproxy list */
GetStr(&config->noproxy, nextarg);
break;
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
case '6': /* --socks5-gssapi-service */
GetStr(&config->socks5_gssapi_service, nextarg);
break;
case '7': /* --socks5-gssapi-nec*/
config->socks5_gssapi_nec = toggle;
break;
-#endif
+ case 'O': /* --proxy-service-name */
+ GetStr(&config->proxy_service_name, nextarg);
+ break;
+ case 'P': /* --service-name */
+ GetStr(&config->service_name, nextarg);
+ break;
case '8': /* --proxy1.0 */
/* http 1.0 proxy */
GetStr(&config->proxy, nextarg);
@@ -949,7 +958,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
int mlmaj, mlmin, mlpatch;
metalink_get_version(&mlmaj, &mlmin, &mlpatch);
if((mlmaj*10000)+(mlmin*100)+mlpatch < CURL_REQ_LIBMETALINK_VERS) {
- warnf(config,
+ warnf(global,
"--metalink option cannot be used because the version of "
"the linked libmetalink library is too old. "
"Required: %d.%d.%d, found %d.%d.%d\n",
@@ -962,7 +971,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
else
config->use_metalink = toggle;
#else
- warnf(config, "--metalink option is ignored because the binary is "
+ warnf(global, "--metalink option is ignored because the binary is "
"built without the Metalink support.\n");
#endif
break;
@@ -974,12 +983,15 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
#ifdef CURLDEBUG
config->test_event_based = toggle;
#else
- warnf(config, "--test-event is ignored unless a debug build!\n");
+ warnf(global, "--test-event is ignored unless a debug build!\n");
#endif
break;
case 'M': /* --unix-socket */
GetStr(&config->unix_socket_path, nextarg);
break;
+ case 'N': /* --path-as-is */
+ config->path_as_is = toggle;
+ break;
}
break;
case '#': /* --progress-bar */
@@ -1093,6 +1105,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
char *postdata = NULL;
FILE *file;
size_t size = 0;
+ bool raw_mode = (subletter == 'r');
if(subletter == 'e') { /* --data-urlencode*/
/* [name]=[content], we encode the content part only
@@ -1118,7 +1131,6 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
}
if('@' == is_file) {
/* a '@' letter, it means that a file name or - (stdin) follows */
-
if(curlx_strequal("-", p)) {
file = stdin;
set_binmode(stdin);
@@ -1126,7 +1138,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
else {
file = fopen(p, "rb");
if(!file)
- warnf(config,
+ warnf(global,
"Couldn't read data from file \"%s\", this makes "
"an empty POST.\n", nextarg);
}
@@ -1179,7 +1191,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
return PARAM_NO_MEM;
}
}
- else if('@' == *nextarg) {
+ else if('@' == *nextarg && !raw_mode) {
/* the data begins with a '@' letter, it means that a file name
or - (stdin) follows */
nextarg++; /* pass the @ */
@@ -1192,7 +1204,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
else {
file = fopen(nextarg, "rb");
if(!file)
- warnf(config, "Couldn't read data from file \"%s\", this makes "
+ warnf(global, "Couldn't read data from file \"%s\", this makes "
"an empty POST.\n", nextarg);
}
@@ -1309,7 +1321,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'f': /* crypto engine */
GetStr(&config->engine, nextarg);
- if(config->engine && curlx_raw_equal(config->engine,"list"))
+ if(config->engine && curlx_raw_equal(config->engine, "list"))
return PARAM_ENGINES_REQUESTED;
break;
case 'g': /* CA info PEM file */
@@ -1363,6 +1375,19 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
GetStr(&config->pinnedpubkey, nextarg);
break;
+ case 'q': /* --cert-status */
+ config->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;
+
default: /* certificate file */
{
char *certname, *passphrase;
@@ -1436,7 +1461,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'J': /* --remote-header-name */
if(config->include_headers) {
- warnf(config,
+ warnf(global,
"--include and --remote-header-name cannot be combined.\n");
return PARAM_BAD_USE;
}
@@ -1447,7 +1472,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'K': /* parse config file */
if(parseconfig(nextarg, global))
- warnf(config, "error trying read config from the '%s' file\n",
+ warnf(global, "error trying read config from the '%s' file\n",
nextarg);
break;
case 'l':
@@ -1474,7 +1499,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
#ifdef USE_MANUAL
return PARAM_MANUAL_REQUESTED;
#else
- warnf(config,
+ warnf(global,
"built-in manual was disabled at build-time!\n");
return PARAM_OPTION_UNKNOWN;
#endif
@@ -1593,7 +1618,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
if(ISDIGIT(*nextarg) && !strchr(nextarg, '-')) {
char buffer[32];
curl_off_t off;
- warnf(config,
+ warnf(global,
"A specified range MUST include at least one dash (-). "
"Appending one for you!\n");
off = curlx_strtoofft(nextarg, NULL, 10);
@@ -1609,7 +1634,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
tmp_range = nextarg;
while(*tmp_range != '\0') {
if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
- warnf(config,"Invalid character is found in given 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");
@@ -1698,7 +1723,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
if(!global->trace_dump)
return PARAM_NO_MEM;
if(global->tracetype && (global->tracetype != TRACE_PLAIN))
- warnf(config,
+ warnf(global,
"-v, --verbose overrides an earlier trace/verbose option\n");
global->tracetype = TRACE_PLAIN;
}
@@ -1725,7 +1750,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
}
else {
fname = nextarg;
- file = fopen(nextarg, "r");
+ file = fopen(nextarg, FOPEN_READTEXT);
}
err = file2string(&config->writeout, file);
if(file && (file != stdin))
@@ -1733,7 +1758,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
if(err)
return err;
if(!config->writeout)
- warnf(config, "Failed to read %s", fname);
+ warnf(global, "Failed to read %s", fname);
}
else
GetStr(&config->writeout, nextarg);
@@ -1791,7 +1816,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
if(-1 == stat(nextarg, &statbuf)) {
/* failed, remove time condition */
config->timecond = CURL_TIMECOND_NONE;
- warnf(config,
+ warnf(global,
"Illegal date format for -z, --timecond (and not "
"a file name). Disabling time condition. "
"See curl_getdate(3) for valid date syntax.\n");
diff --git a/src/tool_getpass.c b/src/tool_getpass.c
index 4c8dcb9f1..0f7ed01f7 100644
--- a/src/tool_getpass.c
+++ b/src/tool_getpass.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -52,9 +52,9 @@
# endif
#endif
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include "tool_getpass.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -229,7 +229,7 @@ char *getpass_r(const char *prompt, /* prompt to display */
bool disabled;
int fd = open("/dev/tty", O_RDONLY);
if(-1 == fd)
- fd = 1; /* use stdin if the tty couldn't be used */
+ fd = STDIN_FILENO; /* use stdin if the tty couldn't be used */
disabled = ttyecho(FALSE, fd); /* disable terminal echo */
@@ -246,7 +246,7 @@ char *getpass_r(const char *prompt, /* prompt to display */
(void)ttyecho(TRUE, fd); /* enable echo */
}
- if(1 != fd)
+ if(STDIN_FILENO != fd)
close(fd);
return password; /* return pointer to buffer */
diff --git a/src/tool_help.c b/src/tool_help.c
index 424a2fa9c..6ad51cb5b 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -52,6 +52,7 @@ static const char *const helptext[] = {
" --cacert FILE CA certificate to verify peer against (SSL)",
" --capath DIR CA directory to verify peer against (SSL)",
" -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)",
+ " --cert-status Verify the status of the server certificate (SSL)",
" --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)",
" --ciphers LIST SSL ciphers to use (SSL)",
" --compressed Request compressed response (using deflate or gzip)",
@@ -64,6 +65,7 @@ static const char *const helptext[] = {
" --crlf Convert LF to CRLF in upload",
" --crlfile FILE Get a CRL list in PEM format from the given file",
" -d, --data DATA HTTP POST data (H)",
+ " --data-raw DATA HTTP POST data, '@' allowed (H)",
" --data-ascii DATA HTTP POST ASCII data (H)",
" --data-binary DATA HTTP POST binary data (H)",
" --data-urlencode DATA HTTP POST data url encoded (H)",
@@ -82,6 +84,7 @@ static const char *const helptext[] = {
" --environment Write results to environment variables (RISC OS)",
#endif
" -f, --fail Fail silently (no output at all) on HTTP errors (H)",
+ " --false-start Enable TLS False Start.",
" -F, --form CONTENT Specify HTTP multipart POST data (H)",
" --form-string STRING Specify HTTP multipart POST data (H)",
" --ftp-account DATA Account data string (F)",
@@ -140,7 +143,7 @@ static const char *const helptext[] = {
" -n, --netrc Must read .netrc for user name and password",
" --netrc-optional Use either .netrc or URL; overrides -n",
" --netrc-file FILE Specify FILE for netrc",
- " -: --next "
+ " -:, --next "
"Allows the following URL to use a separate set of options",
" --no-alpn Disable the ALPN TLS extension (H)",
" -N, --no-buffer Disable buffering of the output stream",
@@ -152,8 +155,8 @@ static const char *const helptext[] = {
" --oauth2-bearer TOKEN OAuth 2 Bearer Token (IMAP, POP3, SMTP)",
" -o, --output FILE Write to FILE instead of stdout",
" --pass PASS Pass phrase for the private key (SSL/SSH)",
- " --pinnedpubkey FILE Public key (PEM/DER) to verify peer against "
- "(OpenSSL/GnuTLS/GSKit only)",
+ " --path-as-is Do not squash .. sequences in URL path",
+ " --pinnedpubkey FILE/HASHES Public key to verify peer against (SSL)",
" --post301 "
"Do not switch to GET after following a 301 redirect (H)",
" --post302 "
@@ -170,6 +173,8 @@ static const char *const helptext[] = {
" --proxy-negotiate "
"Use HTTP Negotiate (SPNEGO) authentication on the proxy (H)",
" --proxy-ntlm Use NTLM authentication on the proxy (H)",
+ " --proxy-service-name NAME SPNEGO proxy service name",
+ " --service-name NAME SPNEGO service name",
" -U, --proxy-user USER[:PASSWORD] Proxy user and password",
" --proxy1.0 HOST[:PORT] Use HTTP/1.0 proxy on given port",
" -p, --proxytunnel Operate through a HTTP proxy tunnel (using CONNECT)",
@@ -198,10 +203,8 @@ static const char *const helptext[] = {
" --socks5 HOST[:PORT] SOCKS5 proxy on given host + port",
" --socks5-hostname HOST[:PORT] "
"SOCKS5 proxy, pass host name to proxy",
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
" --socks5-gssapi-service NAME SOCKS5 proxy service name for GSS-API",
" --socks5-gssapi-nec Compatibility with NEC SOCKS5 server",
-#endif
" -Y, --speed-limit RATE "
"Stop transfers below RATE for 'speed-time' secs",
" -y, --speed-time SECONDS "
@@ -211,12 +214,13 @@ static const char *const helptext[] = {
" -2, --sslv2 Use SSLv2 (SSL)",
" -3, --sslv3 Use SSLv3 (SSL)",
" --ssl-allow-beast Allow security flaw to improve interop (SSL)",
+ " --ssl-no-revoke Disable cert revocation checks (WinSSL)",
" --stderr FILE Where to redirect stderr (use \"-\" for stdout)",
" --tcp-nodelay Use the TCP_NODELAY option",
" -t, --telnet-option OPT=VAL Set telnet option",
" --tftp-blksize VALUE Set TFTP BLKSIZE option (must be >512)",
" -z, --time-cond TIME Transfer based on a time condition",
- " -1, --tlsv1 Use => TLSv1 (SSL)",
+ " -1, --tlsv1 Use >= TLSv1 (SSL)",
" --tlsv1.0 Use TLSv1.0 (SSL)",
" --tlsv1.1 Use TLSv1.1 (SSL)",
" --tlsv1.2 Use TLSv1.2 (SSL)",
diff --git a/src/tool_helpers.c b/src/tool_helpers.c
index dbf32f8bd..5479a1c03 100644
--- a/src/tool_helpers.c
+++ b/src/tool_helpers.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -72,6 +72,8 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
*store = req;
return 0;
}
- warnf(config, "You can only select one HTTP request!\n");
+
+ warnf(config->global, "You can only select one HTTP request!\n");
+
return 1;
}
diff --git a/src/tool_homedir.c b/src/tool_homedir.c
index 11bb4ef3d..73a66f8f6 100644
--- a/src/tool_homedir.c
+++ b/src/tool_homedir.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -44,11 +44,11 @@ static char *GetEnv(const char *variable, char do_expand)
env = buf1;
variable = buf1;
}
- if(do_expand && strchr(variable,'%')) {
+ if(do_expand && strchr(variable, '%')) {
/* buf2 == variable if not expanded */
rc = ExpandEnvironmentStrings (variable, buf2, sizeof(buf2));
if(rc > 0 && rc < sizeof(buf2) &&
- !strchr(buf2,'%')) /* no vars still unexpanded */
+ !strchr(buf2, '%')) /* no vars still unexpanded */
env = buf2;
}
#else
diff --git a/src/tool_hugehelp.c b/src/tool_hugehelp.c
index 3010880b4..0a2970a82 100644
--- a/src/tool_hugehelp.c
+++ b/src/tool_hugehelp.c
@@ -2,7 +2,7 @@
#ifndef HAVE_LIBZ
/*
* NEVER EVER edit this manually, fix the mkhelp.pl script instead!
- * Generation time: Sun Dec 28 14:36:38 2014
+ * Generation time: Mon Aug 3 00:00:36 2015
*/
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
@@ -359,13 +359,13 @@ void hugehelp(void)
" (SSL) Specifies which ciphers to use in the connection. The list\n"
" of ciphers must specify valid ciphers. Read up on SSL cipher\n"
" list details on this URL:\n"
-" http://www.openssl.org/docs/apps/ciphers.html\n"
+" https://www.openssl.org/docs/apps/ciphers.html\n"
"\n"
" NSS ciphers are done differently than OpenSSL and GnuTLS. The\n"
, stdout);
fputs(
" full list of NSS ciphers is in the NSSCipherSuite entry at this\n"
-" URL: http://git.fedora-\n"
+" URL: https://git.fedora-\n"
" hosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -425,38 +425,44 @@ void hugehelp(void)
fputs(
" application/x-www-form-urlencoded. Compare to -F, --form.\n"
"\n"
-" -d, --data is the same as --data-ascii. To post data purely\n"
-" binary, you should instead use the --data-binary option. To URL-\n"
-" encode the value of a form field you may use --data-urlencode.\n"
+" -d, --data is the same as --data-ascii. --data-raw is almost the\n"
+" same but does not have a special interpretation of the @ charac-\n"
+" ter. To post data purely binary, you should instead use the\n"
+" --data-binary option. To URL-encode the value of a form field\n"
+" 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 together\n"
, stdout);
fputs(
+" If any of these options is used more than once on the same com-\n"
+" mand line, the data pieces specified will be merged together\n"
" with a separating &-symbol. Thus, using '-d name=daniel -d\n"
" skill=lousy' would generate a post chunk that looks like\n"
" 'name=daniel&skill=lousy'.\n"
"\n"
" 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. Multiple files can also be specified. Post-\n"
, stdout);
fputs(
+" file name to read the data from, or - if you want curl to read\n"
+" the data from stdin. Multiple files can also be specified. Post-\n"
" ing data from a file named 'foobar' would thus be done with\n"
" --data @foobar. When --data is told to read from a file like\n"
-" that, carriage returns and newlines will be stripped out.\n"
+" that, carriage returns and newlines will be stripped out. If you\n"
+" don't want the @ character to have a special interpretation use\n"
+, stdout);
+ fputs(
+" --data-raw instead.\n"
"\n"
" -D, --dump-header <file>\n"
" Write the protocol headers to the specified file.\n"
"\n"
" This option is handy to use when you want to store the headers\n"
" that an HTTP site sends to you. Cookies from the headers could\n"
-, stdout);
- fputs(
" then be read in a second curl invocation by using the -b,\n"
" --cookie option! The -c, --cookie-jar option is a better way to\n"
" store cookies.\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"
@@ -466,30 +472,35 @@ void hugehelp(void)
" See -d, --data.\n"
"\n"
" --data-binary <data>\n"
-, stdout);
- fputs(
" (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-ascii\n"
" does, except that newlines and carriage returns are preserved\n"
" and conversions are never done.\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-raw <data>\n"
+" (HTTP) This posts data similarly to --data but without the spe-\n"
, stdout);
fputs(
-" first will append data as described in -d, --data.\n"
+" cial interpretation of the @ character. See -d, --data. (Added\n"
+" in 7.43.0)\n"
"\n"
" --data-urlencode <data>\n"
" (HTTP) This posts data, similar to the other --data options with\n"
" the exception that this performs URL-encoding. (Added in 7.18.0)\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"
, stdout);
fputs(
+" 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"
" on. Just be careful so that the content doesn't contain\n"
@@ -498,10 +509,10 @@ void hugehelp(void)
"\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"
, stdout);
fputs(
+" on. The preceding = symbol is not included in the data.\n"
+"\n"
" name=content\n"
" 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"
@@ -510,11 +521,11 @@ void hugehelp(void)
" @filename\n"
" This will make curl load data from the given file\n"
" (including any newlines), URL-encode that data and pass\n"
+, stdout);
+ fputs(
" it on in the POST.\n"
"\n"
" name@filename\n"
-, stdout);
- fputs(
" This will make curl load data from the given file\n"
" (including any newlines), URL-encode that data and pass\n"
" it on in the POST. The name part gets an equal sign\n"
@@ -522,9 +533,9 @@ void hugehelp(void)
" that the name is expected to be URL-encoded already.\n"
"\n"
" --delegation LEVEL\n"
-" Set LEVEL to tell the server what it is allowed to delegate when\n"
, stdout);
fputs(
+" Set LEVEL to tell the server what it is allowed to delegate when\n"
" it comes to user credentials. Used with GSS/kerberos.\n"
"\n"
" none Don't allow any delegation.\n"
@@ -536,9 +547,9 @@ void hugehelp(void)
" always Unconditionally allow the server to delegate.\n"
"\n"
" --digest\n"
-" (HTTP) Enables HTTP Digest authentication. This is an authenti-\n"
, stdout);
fputs(
+" (HTTP) Enables HTTP Digest authentication. This is an authenti-\n"
" cation scheme that prevents the password from being sent over\n"
" the wire in clear text. Use this in combination with the normal\n"
" -u, --user option to set user name and password. See also\n"
@@ -547,9 +558,9 @@ void hugehelp(void)
" If this option is used several times, only the first one is\n"
" used.\n"
"\n"
-" --disable-eprt\n"
, stdout);
fputs(
+" --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"
@@ -752,35 +763,68 @@ void hugehelp(void)
" If this option is set, the default capath value will be ignored,\n"
" and if it is used several times, the last one will be used.\n"
"\n"
-" --pinnedpubkey <pinned public key>\n"
-" (SSL) Tells curl to use the specified public key file to verify\n"
-" the peer. The file must contain a single public key in PEM or\n"
-" DER format.\n"
-"\n"
-" When negotiating a TLS or SSL connection, the server sends a\n"
+" --pinnedpubkey <pinned public key (hashes)>\n"
+" (SSL) 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"
, stdout);
fputs(
+" of base64 encoded sha256 hashes preceded by 'sha256//' and\n"
+" seperated 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"
-" This is currently only implemented in the OpenSSL, GnuTLS and\n"
-" GSKit backends.\n"
+, stdout);
+ fputs(
+" Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0\n"
+" for NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for\n"
+" OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not\n"
+" supported.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
+"\n"
+" --cert-status\n"
+" (SSL) Tells curl to verify the status of the server certificate\n"
, stdout);
fputs(
-" (Added in 7.39.0)\n"
+" by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
+" extension.\n"
+"\n"
+" 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"
+, stdout);
+ fputs(
+" NSS backends. (Added in 7.41.0)\n"
+"\n"
+" --false-start\n"
+"\n"
+" (SSL) Tells curl to use false start during the TLS handshake.\n"
+" False start is a mode where a TLS client will start sending\n"
+" application 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"
+" (Added in 7.42.0)\n"
"\n"
" -f, --fail\n"
" (HTTP) Fail silently (no output at all) on server errors. This\n"
" is mostly done to better enable scripts etc to better deal with\n"
" failed attempts. In normal cases when an HTTP server fails to\n"
" deliver a document, it returns an HTML document stating so\n"
-" (which often also describes why and more). This flag will pre-\n"
, stdout);
fputs(
+" (which often also describes why and more). This flag will pre-\n"
" vent curl from outputting that and return error 22.\n"
"\n"
" This method is not fail-safe and there are occasions where non-\n"
@@ -789,17 +833,17 @@ void hugehelp(void)
"\n"
" -F, --form <name=content>\n"
" (HTTP) This lets curl emulate a filled-in form in which a user\n"
-" has pressed the submit button. This causes curl to POST data\n"
, stdout);
fputs(
+" has pressed the submit button. This causes curl to POST data\n"
" using the Content-Type multipart/form-data according to RFC\n"
" 2388. This enables uploading of binary files etc. To force the\n"
" 'content' part to be a file, prefix the file name with an @\n"
" sign. To just get the content part from a file, prefix the file\n"
" name with the symbol <. The difference between @ and < is then\n"
-" that @ makes a file get attached in the post as a file upload,\n"
, stdout);
fputs(
+" that @ makes a file get attached in the post as a file upload,\n"
" while the < makes a text field and just get the contents for\n"
" that text field from a file.\n"
"\n"
@@ -809,16 +853,20 @@ void hugehelp(void)
"\n"
" curl -F password=@/etc/passwd www.mypasswords.com\n"
"\n"
-" To read content from stdin instead of a file, use - as the file-\n"
, stdout);
fputs(
-" name. This goes for both @ and < constructs.\n"
+" To read content from stdin instead of a file, use - as the file-\n"
+" name. This goes for both @ and < constructs. Unfortunately it\n"
+" does not support reading the file from a named pipe or similar,\n"
+" as it needs the full size before the transfer starts.\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\" url.com\n"
"\n"
+, stdout);
+ fputs(
" or\n"
"\n"
" curl -F \"name=daniel;type=text/foo\" url.com\n"
@@ -826,8 +874,6 @@ void hugehelp(void)
" You can also explicitly change the name field of a file upload\n"
" part by setting filename=, like this:\n"
"\n"
-, stdout);
- fputs(
" curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
"\n"
" If filename/path contains ',' or ';', it must be quoted by dou-\n"
@@ -837,11 +883,11 @@ void hugehelp(void)
"\n"
" or\n"
"\n"
+, stdout);
+ fputs(
" curl -F 'file=@\"localfile\";filename=\"nameinpost\"' url.com\n"
"\n"
" Note that if a filename/path is quoted by double-quotes, any\n"
-, stdout);
- fputs(
" double-quote or backslash within the filename must be escaped by\n"
" backslash.\n"
"\n"
@@ -851,22 +897,22 @@ void hugehelp(void)
"\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. (Added in 7.13.0)\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --ftp-alternative-to-user <command>\n"
" (FTP) If authenticating with the USER and PASS commands fails,\n"
" send this command. When connecting to Tumbleweed's Secure\n"
" Transport server over FTPS using a client certificate, using\n"
+, stdout);
+ fputs(
" \"SITE AUTH\" will tell the server to retrieve the username from\n"
" the certificate. (Added in 7.15.5)\n"
"\n"
-, stdout);
- fputs(
" --ftp-create-dirs\n"
" (FTP/SFTP) When an FTP or SFTP URL/operation uses a path that\n"
" doesn't currently exist on the server, the standard behavior of\n"
@@ -874,146 +920,149 @@ void hugehelp(void)
" create missing directories.\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"
, stdout);
fputs(
+" (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"
" the given URL. For deep hierarchies this means very many\n"
" commands. This is how RFC 1738 says it should be done.\n"
+, stdout);
+ fputs(
" This is the default but the slowest behavior.\n"
"\n"
" nocwd curl does no CWD at all. curl will do SIZE, RETR, STOR\n"
-, stdout);
- fputs(
" etc and give a full path to the server for all these com-\n"
" mands. This is the fastest behavior.\n"
"\n"
" singlecwd\n"
" curl does one CWD with the full target directory and then\n"
" operates on the file \"normally\" (like in the multicwd\n"
+, stdout);
+ fputs(
" case). This is somewhat more standards compliant than\n"
" 'nocwd' but without the full penalty of 'multicwd'.\n"
-" (Added in 7.15.1)\n"
"\n"
-, stdout);
- fputs(
+" (Added in 7.15.1)\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 -P/-ftp-port option. (Added in 7.11.0)\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, only the first one is\n"
" used. Undoing an enforced passive really isn't doable but you\n"
" must then instead enforce the correct -P, --ftp-port again.\n"
"\n"
-, stdout);
- fputs(
" Passive mode means that curl will try the EPSV command first and\n"
" then PASV, unless --disable-epsv is used.\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\n"
" already uses for the control connection. (Added in 7.14.2)\n"
"\n"
-, stdout);
- fputs(
" This option has no effect if PORT, EPRT or EPSV is used instead\n"
" of PASV.\n"
"\n"
" --ftp-pret\n"
" (FTP) Tell curl to send a PRET command before PASV (and EPSV).\n"
+, stdout);
+ fputs(
" Certain FTP servers, mainly drftpd, require this non-standard\n"
" command for directory listings as well as up and downloads in\n"
" PASV mode. (Added in 7.20.x)\n"
"\n"
" --ftp-ssl-ccc\n"
-, stdout);
- fputs(
" (FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS\n"
" layer after authenticating. The rest of the control channel com-\n"
" munication will be unencrypted. This allows NAT routers to fol-\n"
+, stdout);
+ fputs(
" low the FTP transaction. The default mode is passive. See --ftp-\n"
" ssl-ccc-mode for other modes. (Added in 7.16.1)\n"
"\n"
" --ftp-ssl-ccc-mode [active/passive]\n"
-, stdout);
- fputs(
" (FTP) Use CCC (Clear Command Channel) Sets the CCC mode. The\n"
" passive mode will not initiate the shutdown, but instead wait\n"
" for the server to do it, and will not reply to the shutdown from\n"
+, stdout);
+ fputs(
" the server. The active mode initiates the shutdown and waits for\n"
" a reply from the server. (Added in 7.16.2)\n"
"\n"
" --ftp-ssl-control\n"
" (FTP) Require SSL/TLS for the FTP login, clear for transfer.\n"
-, stdout);
- fputs(
" Allows secure authentication, but non-encrypted data transfers\n"
" for efficiency. Fails the transfer if the server doesn't sup-\n"
" port SSL/TLS. (Added in 7.16.0) that can still be used but will\n"
+, stdout);
+ fputs(
" be removed in a future version.\n"
"\n"
" --form-string <name=string>\n"
" (HTTP) Similar to --form except that the value string for the\n"
" named parameter is used literally. Leading '@' and '<' charac-\n"
-, stdout);
- fputs(
" ters, and the ';type=' string in the value have no special mean-\n"
" ing. Use this in preference to --form if there's any possibility\n"
" that the string value may accidentally trigger the '@' or '<'\n"
+, stdout);
+ fputs(
" features of --form.\n"
"\n"
" -g, --globoff\n"
" This option switches off the \"URL globbing parser\". When you set\n"
" this option, you can specify URLs that contain the letters {}[]\n"
-, stdout);
- fputs(
" without having them being interpreted by curl itself. Note that\n"
" these letters are not normal legal URL contents but they should\n"
" be encoded according to the URI standard.\n"
"\n"
" -G, --get\n"
+, stdout);
+ fputs(
" 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"
-, stdout);
- fputs(
" used. The data will be appended to the URL with a '?' separator.\n"
" If used in combination with -I, the POST data will instead be\n"
" appended to the URL with a HEAD request.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, only the first one is\n"
" used. This is because undoing a GET doesn't make sense, but you\n"
" should then instead enforce the alternative method you prefer.\n"
"\n"
" -H, --header <header>\n"
-, stdout);
- fputs(
" (HTTP) Extra header to include in the request when sending HTTP\n"
" to a server. You may specify any number of extra headers. Note\n"
+, stdout);
+ fputs(
" that if you should add a custom header that has the same name as\n"
" one of the internal ones curl would use, your externally set\n"
" header will be used instead of the internal one. This allows you\n"
" to make even trickier stuff than curl would normally do. You\n"
-, stdout);
- fputs(
" should not replace internally set headers without knowing per-\n"
" fectly well what you're doing. Remove an internal header by giv-\n"
+, stdout);
+ fputs(
" ing a replacement without content on the right side of the\n"
" colon, as in: -H \"Host:\". If you send the custom header with no-\n"
" value then its header must be terminated with a semicolon, such\n"
" as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
"\n"
-, stdout);
- fputs(
" 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"
+, stdout);
+ fputs(
" 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"
@@ -1022,78 +1071,84 @@ void hugehelp(void)
" Starting in 7.37.0, you need --proxy-header to send custom head-\n"
" ers intended for a proxy.\n"
"\n"
-, stdout);
- fputs(
" Example:\n"
"\n"
" # curl -H \"X-First-Name: Joe\" http://192.168.0.1/\n"
"\n"
+, stdout);
+ fputs(
+" WARNING: headers set with this option will be set in all\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"
" This option can be used multiple times to add/replace/remove\n"
" multiple headers.\n"
"\n"
+, stdout);
+ fputs(
" --hostpubmd5 <md5>\n"
" (SCP/SFTP) 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"
-, stdout);
- fputs(
" the md5sums match. (Added in 7.17.1)\n"
"\n"
" --ignore-content-length\n"
" (HTTP) Ignore the Content-Length header. This is particularly\n"
+, stdout);
+ fputs(
" useful for servers running Apache 1.x, which will report incor-\n"
" rect Content-Length for files larger than 2 gigabytes.\n"
"\n"
" -i, --include\n"
" (HTTP) Include the HTTP-header in the output. The HTTP-header\n"
" includes things like server-name, date of the document, HTTP-\n"
-, stdout);
- fputs(
" version and more...\n"
"\n"
" -I, --head\n"
" (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature\n"
+, stdout);
+ fputs(
" the command HEAD which this uses to get nothing but the header\n"
" of a document. When used on an FTP or FILE file, curl displays\n"
" the file size and last modification time only.\n"
"\n"
" --interface <name>\n"
" Perform an operation using a specified interface. You can enter\n"
-, stdout);
- fputs(
" interface name, IP address or host name. An example could look\n"
" like:\n"
"\n"
" curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" -j, --junk-session-cookies\n"
" (HTTP) When curl is told to read cookies from a given file, this\n"
" option will make it discard all \"session cookies\". This will\n"
-, stdout);
- fputs(
" basically have the same effect as if a new session is started.\n"
" Typical browsers always discard session cookies when they're\n"
" closed down.\n"
"\n"
" -J, --remote-header-name\n"
+, stdout);
+ fputs(
" (HTTP) This option tells the -O, --remote-name option to use the\n"
" server-specified Content-Disposition filename instead of\n"
" extracting a filename from the URL.\n"
"\n"
-, stdout);
- fputs(
" 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"
" -k, --insecure\n"
" (SSL) This option explicitly allows curl to perform \"insecure\"\n"
-" SSL connections and transfers. All SSL connections are attempted\n"
-" to be made secure by using the CA certificate bundle installed\n"
, stdout);
fputs(
+" SSL connections and transfers. All SSL connections are attempted\n"
+" to be made secure by using the CA certificate bundle installed\n"
" by default. This makes all connections considered \"insecure\"\n"
" fail unless -k, --insecure is used.\n"
"\n"
@@ -1101,73 +1156,73 @@ void hugehelp(void)
" http://curl.haxx.se/docs/sslcerts.html\n"
"\n"
" -K, --config <config file>\n"
-" Specify which config file to read curl arguments from. The con-\n"
-" fig file is a text file in which command line arguments can be\n"
, stdout);
fputs(
+" Specify which config file to read curl arguments from. The con-\n"
+" fig file is a text file in which command line arguments can be\n"
" written which then will be used as if they were written on the\n"
" actual command line.\n"
"\n"
" Options and their parameters must be specified on the same con-\n"
" fig file line, separated by whitespace, colon, or the equals\n"
-" sign. Long option names can optionally be given in the config\n"
-" file without the initial double dashes and if so, the colon or\n"
, stdout);
fputs(
+" sign. Long option names can optionally be given in the config\n"
+" file without the initial double dashes and if so, the colon or\n"
" equals characters can be used as separators. If the option is\n"
" specified with one or two dashes, there can be no colon or\n"
" equals character between the option and its parameter.\n"
"\n"
" If the parameter is to contain whitespace, the parameter must be\n"
-" enclosed within quotes. Within double quotes, the following\n"
-" escape sequences are available: \\\\, \\\", \\t, \\n, \\r and \\v. A\n"
, stdout);
fputs(
+" enclosed within quotes. Within double quotes, the following\n"
+" escape sequences are available: \\\\, \\\", \\t, \\n, \\r and \\v. A\n"
" backslash preceding any other letter is ignored. If the first\n"
" column of a config line is a '#' character, the rest of the line\n"
" will be treated as a comment. Only write one option per physical\n"
" line in the config file.\n"
"\n"
+, stdout);
+ fputs(
" Specify the filename to -K, --config as '-' to make curl read\n"
" the file from stdin.\n"
"\n"
" Note that to be able to specify a URL in the config file, you\n"
-, stdout);
- fputs(
" 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 = \"http://curl.haxx.se/docs/\"\n"
"\n"
+, stdout);
+ fputs(
" When curl is invoked, it always (unless -q is used) checks for a\n"
" default config file and uses it if found. The default config\n"
" file is checked for in the following places in this order:\n"
"\n"
-, stdout);
- fputs(
" 1) curl tries to find the \"home dir\": It first checks for the\n"
" CURL_HOME and then the HOME environment variables. Failing that,\n"
" it uses getpwuid() on Unix-like systems (which returns the home\n"
+, stdout);
+ fputs(
" dir given the current user in your system). On Windows, it then\n"
" checks for the APPDATA variable, or as a last resort the '%USER-\n"
" PROFILE%\\Application Data'.\n"
"\n"
-, stdout);
- fputs(
" 2) On windows, if there is no _curlrc file in the home dir, it\n"
" checks for one in the same dir the curl executable is placed. On\n"
" Unix-like systems, it will simply try to load .curlrc from the\n"
" determined home dir.\n"
"\n"
+, stdout);
+ fputs(
" # --- Example file ---\n"
" # this is a comment\n"
" url = \"curl.haxx.se\"\n"
" output = \"curlhere.html\"\n"
" user-agent = \"superagent/1.0\"\n"
"\n"
-, stdout);
- fputs(
" # and fetch another URL too\n"
" url = \"curl.haxx.se/docs/manpage.html\"\n"
" -O\n"
@@ -1177,19 +1232,19 @@ void hugehelp(void)
" This option can be used multiple times to load multiple config\n"
" files.\n"
"\n"
-" --keepalive-time <seconds>\n"
-" This option sets the time a connection needs to remain idle\n"
, stdout);
fputs(
+" --keepalive-time <seconds>\n"
+" This option sets the time a connection needs to remain idle\n"
" before 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"
" (meaning Linux, recent AIX, HP-UX and more). This option has no\n"
" effect if --no-keepalive is used. (Added in 7.18.0)\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
, stdout);
fputs(
+" If this option is used several times, the last one will be used.\n"
" If unspecified, the option defaults to 60 seconds.\n"
"\n"
" --key <key>\n"
@@ -1198,11 +1253,11 @@ void hugehelp(void)
" tries the following candidates in order: '~/.ssh/id_rsa',\n"
" '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --key-type <type>\n"
-, stdout);
- fputs(
" (SSL) 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"
@@ -1211,9 +1266,9 @@ void hugehelp(void)
"\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(
+" entered and should be one of 'clear', 'safe', 'confidential', or\n"
" 'private'. Should you use a level that is not one of these,\n"
" 'private' will instead be used.\n"
"\n"
@@ -1224,18 +1279,18 @@ void hugehelp(void)
" If this option is used several times, the last one will be used.\n"
"\n"
" -l, --list-only\n"
-" (FTP) When listing an FTP directory, this switch forces a name-\n"
, stdout);
fputs(
+" (FTP) When listing an FTP directory, this switch forces a name-\n"
" only view. This is especially useful if the user wants to\n"
" machine-parse the contents of an FTP directory since the normal\n"
" directory view doesn't use a standard look or format. When used\n"
" like this, the option causes a NLST command to be sent to the\n"
" server instead of LIST.\n"
"\n"
-" Note: Some FTP servers list only files in their response to\n"
, stdout);
fputs(
+" 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"
@@ -1243,9 +1298,9 @@ void hugehelp(void)
" 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 <command>, this option\n"
, stdout);
fputs(
+" Note: When combined with -X, --request <command>, this option\n"
" can be used to send an UIDL command instead, so the user may use\n"
" the email's unique identifier rather than it's message id to\n"
" make the request. (Added in 7.21.5)\n"
@@ -1253,27 +1308,27 @@ void hugehelp(void)
" -L, --location\n"
" (HTTP/HTTPS) If the server reports that the requested page has\n"
" moved to a different location (indicated with a Location: header\n"
-" and a 3XX response code), this option will make curl redo the\n"
, stdout);
fputs(
+" and a 3XX response code), this option will make curl redo the\n"
" request on the new place. If used together with -i, --include or\n"
" -I, --head, headers from all requested pages will be shown. When\n"
" authentication is used, curl only sends its credentials to the\n"
" initial host. If a redirect takes curl to a different host, it\n"
" won't be able to intercept the user+password. See also --loca-\n"
-" tion-trusted on how to change this. You can limit the amount of\n"
, stdout);
fputs(
+" tion-trusted on how to change this. You can limit the amount of\n"
" redirects to follow by using the --max-redirs option.\n"
"\n"
" When curl follows a redirect and the request is not a plain GET\n"
" (for example POST or PUT), it will do the following request with\n"
" a GET if the HTTP response was 301, 302, or 303. If the response\n"
" code was any other 3xx code, curl will re-send the following\n"
-" request using the same unmodified method.\n"
-"\n"
, stdout);
fputs(
+" request using the same unmodified method.\n"
+"\n"
" You can tell curl to not change the non-GET request method to\n"
" GET after a 30x response by using the dedicated options for\n"
" that: --post301, --post302 and -post303.\n"
@@ -1281,10 +1336,10 @@ void hugehelp(void)
" --libcurl <file>\n"
" Append this option to any ordinary curl command line, and you\n"
" will get a libcurl-using C source code written to the file that\n"
-" does the equivalent of what your command-line operation does!\n"
-"\n"
, stdout);
fputs(
+" does the equivalent of what your command-line operation does!\n"
+"\n"
" If this option is used several times, the last given file name\n"
" will be used. (Added in 7.16.1)\n"
"\n"
@@ -1292,19 +1347,19 @@ void hugehelp(void)
" 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'd like your transfer not to use your entire\n"
-" bandwidth. To make it slower than it otherwise would be.\n"
-"\n"
, stdout);
fputs(
+" bandwidth. To make it slower than it otherwise would be.\n"
+"\n"
" 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. Examples: 200K, 3m and 1G.\n"
"\n"
" The given rate is the average speed counted during the entire\n"
-" transfer. It means that curl might use higher transfer speeds in\n"
, stdout);
fputs(
+" transfer. It means that curl might use higher transfer speeds in\n"
" short bursts, but over time it uses no more than the given rate.\n"
" If you also use the -Y, --speed-limit option, that option will\n"
" take precedence and might cripple the rate-limiting slightly, to\n"
@@ -1313,9 +1368,9 @@ void hugehelp(void)
" If this option is used several times, the last one will be used.\n"
"\n"
" --local-port <num>[-num]\n"
-" Set a preferred number or range of local port numbers to use for\n"
, stdout);
fputs(
+" Set a preferred number or range of local port numbers to use for\n"
" the connection(s). Note that port numbers by nature are a\n"
" scarce resource that will be busy at times so setting this range\n"
" to something too narrow might cause unnecessary connection setup\n"
@@ -1323,18 +1378,18 @@ void hugehelp(void)
"\n"
" --location-trusted\n"
" (HTTP/HTTPS) Like -L, --location, but will allow sending the\n"
-" name + password to all hosts that the site may redirect to. This\n"
, stdout);
fputs(
+" name + password to all hosts that the site may redirect to. This\n"
" may or may not introduce a security breach if the site redirects\n"
" you to a site to which you'll send your authentication info\n"
" (which is plaintext in the case of HTTP Basic authentication).\n"
"\n"
" -m, --max-time <seconds>\n"
" Maximum time in seconds that you allow the whole operation to\n"
-" take. This is useful for preventing your batch jobs from hang-\n"
, stdout);
fputs(
+" take. This is useful for preventing your batch jobs from hang-\n"
" ing for hours due to slow networks or links going down. Since\n"
" 7.32.0, this option accepts decimal values, but the actual time-\n"
" out will decrease in accuracy as the specified timeout increases\n"
@@ -1342,9 +1397,9 @@ void hugehelp(void)
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
-" --login-options <options>\n"
, stdout);
fputs(
+" --login-options <options>\n"
" Specify the login options to use during server authentication.\n"
"\n"
" You can use the login options to specify protocol specific\n"
@@ -1450,13 +1505,13 @@ void hugehelp(void)
" 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"
" cally used for FTP on Unix. If used with HTTP, curl will enable\n"
-" user authentication. See netrc(4) or ftp(1) for details on the\n"
-" file format. Curl will not complain if that file doesn't have\n"
-" the right permissions (it should not be either world- or group-\n"
+" user authentication. See netrc(5) ftp(1) for details on the file\n"
+" format. Curl will not complain if that file doesn't have the\n"
+" right permissions (it should not be either world- or group-read-\n"
, stdout);
fputs(
-" readable). The environment variable \"HOME\" is used to find the\n"
-" home directory.\n"
+" able). The environment variable \"HOME\" is used to find the home\n"
+" directory.\n"
"\n"
" A quick and very simple example of how to setup a .netrc to\n"
" allow curl to FTP to the machine host.domain.com with user name\n"
@@ -1688,70 +1743,79 @@ void hugehelp(void)
fputs(
" for the control connection\n"
"\n"
-" If this option is used several times, the last one will be used. Dis-\n"
-" able 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"
+" If this option is used several times, the last one will be used.\n"
+" Disable the use of PORT with --ftp-pasv. Disable the attempt to\n"
+" use the EPRT command instead of PORT by using --disable-eprt.\n"
+" EPRT is really PORT++.\n"
"\n"
-" Starting in 7.19.5, you can append \":[start]-[end]\" to the right of the\n"
-" address, to tell curl what TCP port range to use. That means you spec-\n"
+" Starting in 7.19.5, you can append \":[start]-[end]\" to the right\n"
+" of the address, to tell curl what TCP port range to use. That\n"
, stdout);
fputs(
-" ify a port range, from a lower to a higher number. A single number\n"
-" works as well, but do note that it increases the risk of failure since\n"
-" the port may not be available.\n"
+" means you specify a port range, from a lower to a higher number.\n"
+" A single number works as well, but do note that it increases the\n"
+" risk of failure since the port may not be available.\n"
"\n"
" --pass <phrase>\n"
" (SSL/SSH) Passphrase for the private key\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
-" --post301\n"
-" (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert\n"
+" --path-as-is\n"
+" Tell curl to not handle sequences of /../ or /./ in the given\n"
, stdout);
fputs(
+" 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"
+" (Added in 7.42.0)\n"
+"\n"
+" --post301\n"
+" (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert\n"
" POST requests into GET requests when following a 301 redirect-\n"
" ion. The non-RFC behaviour is ubiquitous in web browsers, so\n"
+, stdout);
+ fputs(
" curl does the conversion by default to maintain consistency.\n"
" However, a server may require a POST to remain a POST after such\n"
" a redirection. This option is meaningful only when using -L,\n"
" --location (Added in 7.17.1)\n"
"\n"
" --post302\n"
-, stdout);
- fputs(
" (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert\n"
" POST requests into GET requests when following a 302 redirect-\n"
+, stdout);
+ fputs(
" ion. The non-RFC behaviour is ubiquitous in web browsers, so\n"
" curl does the conversion by default to maintain consistency.\n"
" However, a server may require a POST to remain a POST after such\n"
" a redirection. This option is meaningful only when using -L,\n"
-, stdout);
- fputs(
" --location (Added in 7.19.1)\n"
"\n"
" --post303\n"
" (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert\n"
+, stdout);
+ fputs(
" POST requests into GET requests when following a 303 redirect-\n"
" ion. The non-RFC behaviour is ubiquitous in web browsers, so\n"
" curl does the conversion by default to maintain consistency.\n"
" However, a server may require a POST to remain a POST after such\n"
-, stdout);
- fputs(
" a redirection. This option is meaningful only when using -L,\n"
" --location (Added in 7.26.0)\n"
"\n"
" --proto <protocols>\n"
+, stdout);
+ fputs(
" Tells curl to use the listed protocols for its initial\n"
" retrieval. Protocols are evaluated left to right, are comma sep-\n"
" arated, and are each a protocol name or 'all', optionally pre-\n"
" fixed by zero or more modifiers. Available modifiers are:\n"
"\n"
-, stdout);
- fputs(
" + Permit this protocol in addition to protocols already permit-\n"
" ted (this is the default if no modifier is used).\n"
"\n"
+, stdout);
+ fputs(
" - Deny this protocol, removing it from the list of protocols\n"
" already permitted.\n"
"\n"
@@ -1759,13 +1823,13 @@ void hugehelp(void)
" ted), though subject to later modification by subsequent\n"
" entries in the comma separated list.\n"
"\n"
-, stdout);
- fputs(
" For example:\n"
"\n"
" --proto -ftps uses the default protocols, but disables ftps\n"
"\n"
" --proto -all,https,+http\n"
+, stdout);
+ fputs(
" only enables http and https\n"
"\n"
" --proto =http,https\n"
@@ -1773,11 +1837,11 @@ void hugehelp(void)
"\n"
" Unknown protocols produce a warning. This allows scripts to\n"
" safely rely on being able to disable potentially dangerous pro-\n"
-, stdout);
- fputs(
" tocols, without relying upon support for that protocol being\n"
" 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"
@@ -1786,23 +1850,23 @@ void hugehelp(void)
"\n"
" --proto-redir <protocols>\n"
" Tells curl to use the listed protocols after a redirect. See\n"
-, stdout);
- fputs(
" --proto for how protocols are represented.\n"
"\n"
" (Added in 7.20.2)\n"
"\n"
" --proxy-anyauth\n"
+, stdout);
+ fputs(
" Tells curl to pick a suitable authentication method when commu-\n"
" nicating with the given proxy. This might cause an extra\n"
" request/response round-trip. (Added in 7.13.2)\n"
"\n"
" --proxy-basic\n"
" Tells curl to use HTTP Basic authentication when communicating\n"
-, stdout);
- fputs(
" with the given proxy. Use --basic for enabling HTTP Basic with a\n"
" remote host. Basic is the default authentication method curl\n"
+, stdout);
+ fputs(
" uses with proxies.\n"
"\n"
" --proxy-digest\n"
@@ -1811,10 +1875,10 @@ void hugehelp(void)
" a remote host.\n"
"\n"
" --proxy-negotiate\n"
-, stdout);
- fputs(
" Tells curl to use HTTP Negotiate (SPNEGO) authentication when\n"
" communicating with the given proxy. Use --negotiate for enabling\n"
+, stdout);
+ fputs(
" HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1)\n"
"\n"
" --proxy-ntlm\n"
@@ -1822,110 +1886,119 @@ void hugehelp(void)
" with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
" host.\n"
"\n"
-" --proxy1.0 <proxyhost[:port]>\n"
+" --proxy-service-name <servicename>\n"
+" This option allows you to change the service name for proxy\n"
+" negotiation.\n"
+"\n"
, stdout);
fputs(
+" Examples: --proxy-negotiate proxy-name --proxy-service-name\n"
+" sockd would use sockd/proxy-name. (Added in 7.43.0).\n"
+"\n"
+" --proxy1.0 <proxyhost[:port]>\n"
" Use the specified HTTP 1.0 proxy. If the port number is not\n"
" 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"
+, stdout);
+ fputs(
" specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
" --pubkey <key>\n"
" (SSH) Public key file name. Allows you to provide your public\n"
-, stdout);
- fputs(
" key in this separate file.\n"
"\n"
" If this option is used several times, the last one will be used.\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"
+, stdout);
+ fputs(
" 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(
" -q If used as the first parameter on the command line, the curlrc\n"
" config file will not be read and used. See the -K, --config for\n"
" details on the default config file search path.\n"
"\n"
" -Q, --quote <command>\n"
+, stdout);
+ fputs(
" (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 '-'. To make commands be sent after\n"
" curl has changed the working directory, just before the transfer\n"
+, stdout);
+ fputs(
" command(s), prefix the command with a '+' (this is only sup-\n"
" ported for FTP). You may specify any number of commands. If the\n"
" server returns failure for one of the commands, the entire oper-\n"
-, stdout);
- fputs(
" ation will be aborted. You must send syntactically correct FTP\n"
" commands as RFC 959 defines to FTP servers, or one of the com-\n"
" mands listed below to SFTP servers. This option can be used\n"
+, stdout);
+ fputs(
" multiple times. When speaking to an FTP server, prefix the com-\n"
" mand with an asterisk (*) to make curl continue even if the com-\n"
" mand fails as by default curl will stop at first failure.\n"
"\n"
-, stdout);
- fputs(
" 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"
+, stdout);
+ fputs(
" acters. Following is the list of all supported SFTP quote com-\n"
" mands:\n"
"\n"
" chgrp group file\n"
" The chgrp command sets the group ID of the file named by\n"
-, stdout);
- fputs(
" the file operand to the group ID specified by the group\n"
" 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"
+, stdout);
+ fputs(
" 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"
-, stdout);
- fputs(
" file operand to the user ID specified by the user oper-\n"
" 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"
+, stdout);
+ fputs(
" 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\n"
-, stdout);
- fputs(
" directory_name operand.\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"
-, stdout);
- fputs(
" 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"
@@ -1933,13 +2006,13 @@ void hugehelp(void)
"\n"
" -r, --range <range>\n"
" (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a partial docu-\n"
-, stdout);
- fputs(
" ment) from a 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"
+, stdout);
+ fputs(
" 500-999 specifies the second 500 bytes\n"
"\n"
" -500 specifies the last 500 bytes\n"
@@ -1949,36 +2022,36 @@ void hugehelp(void)
" 0-0,-1 specifies the first and last byte only(*)(H)\n"
"\n"
" 500-700,600-799\n"
-, stdout);
- fputs(
" specifies 300 bytes from offset 500(H)\n"
"\n"
" 100-199,500-599\n"
" specifies two separate 100-byte ranges(*)(H)\n"
"\n"
-" (*) = NOTE that this will cause the server to reply with a multipart\n"
-" response!\n"
-"\n"
-" Only digit characters (0-9) are valid in the 'start' and 'stop' fields\n"
-" of the 'start-stop' range syntax. If a non-digit character is given in\n"
-" the range, the server's response will be unspecified, depending on the\n"
, stdout);
fputs(
-" server's configuration.\n"
+" (*) = NOTE that this will cause the server to reply with a mul-\n"
+" tipart response!\n"
+"\n"
+" 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 this\n"
-" feature enabled, so that when you attempt to get a range, you'll\n"
-" instead get the whole document.\n"
+" You should also be aware that many HTTP/1.1 servers do not have\n"
+, stdout);
+ fputs(
+" this feature enabled, so that when you attempt to get a range,\n"
+" you'll instead get the whole document.\n"
"\n"
-" FTP and SFTP range downloads only support the simple 'start-stop' syn-\n"
-" tax (optionally with one of the numbers omitted). FTP use depends on\n"
-" the extended FTP command SIZE.\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 this option is used several times, the last one will be used.\n"
+" If this option is used several times, the last one will be used.\n"
"\n"
+" -R, --remote-time\n"
, stdout);
fputs(
-" -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\n"
" local file get that same timestamp.\n"
@@ -2080,138 +2153,151 @@ void hugehelp(void)
" Enable initial response in SASL authentication. (Added in\n"
" 7.31.0)\n"
"\n"
-" -S, --show-error\n"
-" When used with -s it makes curl show an error message if it\n"
-" fails.\n"
+" --service-name <servicename>\n"
+" This option allows you to change the service name for SPNEGO.\n"
"\n"
-" --ssl (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the connection.\n"
+" Examples: --negotiate --service-name sockd would use\n"
, stdout);
fputs(
+" sockd/server-name. (Added in 7.43.0).\n"
+"\n"
+" -S, --show-error\n"
+" When used with -s it makes curl show an error message if it\n"
+" fails.\n"
+"\n"
+" --ssl (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the connection.\n"
" Reverts to a non-secure connection if the server doesn't support\n"
-" SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for differ-\n"
+" SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for differ-\n"
" ent levels of encryption required. (Added in 7.20.0)\n"
"\n"
-" This option was formerly known as --ftp-ssl (Added in 7.11.0).\n"
-" That option name can still be used but will be removed in a\n"
+, stdout);
+ fputs(
+" This option was formerly known as --ftp-ssl (Added in 7.11.0).\n"
+" That option name can still be used but will be removed in a\n"
" future version.\n"
"\n"
" --ssl-reqd\n"
-, stdout);
- fputs(
-" (FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection.\n"
+" (FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection.\n"
" Terminates the connection if the server doesn't support SSL/TLS.\n"
" (Added in 7.20.0)\n"
"\n"
-" This option was formerly known as --ftp-ssl-reqd (added in\n"
-" 7.15.5). That option name can still be used but will be removed\n"
+" This option was formerly known as --ftp-ssl-reqd (added in\n"
+, stdout);
+ fputs(
+" 7.15.5). That option name can still be used but will be removed\n"
" in a future version.\n"
"\n"
" --ssl-allow-beast\n"
-" (SSL) This option tells curl to not work around a security flaw\n"
+" (SSL) This option tells curl to not work around a security flaw\n"
+" in the SSL3 and TLS1.0 protocols known as BEAST. If this option\n"
+" isn't used, the SSL layer may use workarounds known to cause\n"
+" interoperability problems with some older SSL implementations.\n"
, stdout);
fputs(
-" in the SSL3 and TLS1.0 protocols known as BEAST. If this option\n"
-" isn't used, the SSL layer may use workarounds known to cause\n"
-" interoperability problems with some older SSL implementations.\n"
" WARNING: this option loosens the SSL security, and by using this\n"
" flag you ask for exactly that. (Added in 7.25.0)\n"
"\n"
+" --ssl-no-revoke\n"
+" (WinSSL) 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. (Added in 7.44.0)\n"
+"\n"
" --socks4 <host[:port]>\n"
-" Use the specified SOCKS4 proxy. If the port number is not speci-\n"
, stdout);
fputs(
+" Use the specified SOCKS4 proxy. If the port number is not speci-\n"
" fied, it is assumed at port 1080. (Added in 7.15.2)\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" Since 7.21.7, this option is superfluous since you can specify a\n"
" socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --socks4a <host[:port]>\n"
-, stdout);
- fputs(
" Use the specified SOCKS4a proxy. If the port number is not spec-\n"
" ified, it is assumed at port 1080. (Added in 7.18.0)\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" Since 7.21.7, this option is superfluous since you can specify a\n"
-" socks4a proxy with -x, --proxy using a socks4a:// protocol pre-\n"
-" fix.\n"
-"\n"
, stdout);
fputs(
+" socks4a proxy with -x, --proxy using a socks4a:// protocol pre-\n"
+" fix.\n"
+"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --socks5-hostname <host[:port]>\n"
-" 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"
+" 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. (Added in 7.18.0)\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
-" are mutually exclusive.\n"
-"\n"
, stdout);
fputs(
+" This option overrides any previous use of -x, --proxy, as they\n"
+" are mutually exclusive.\n"
+"\n"
" Since 7.21.7, this option is superfluous since you can specify a\n"
" socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
" col prefix.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
-" (This option was previously wrongly documented and used as\n"
+" (This option was previously wrongly documented and used as\n"
+, stdout);
+ fputs(
" --socks without the number appended.)\n"
"\n"
" --socks5 <host[:port]>\n"
-, stdout);
- fputs(
-" Use the specified SOCKS5 proxy - but resolve the host name\n"
-" locally. If the port number is not specified, it is assumed at\n"
+" Use the specified SOCKS5 proxy - but resolve the host name\n"
+" locally. If the port number is not specified, it is assumed at\n"
" port 1080.\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" Since 7.21.7, this option is superfluous since you can specify a\n"
-" socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
, stdout);
fputs(
+" socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
" If this option is used several times, the last one will be used.\n"
-" (This option was previously wrongly documented and used as\n"
+" (This option was previously wrongly documented and used as\n"
" --socks without the number appended.)\n"
"\n"
-" This option (as well as --socks4) does not work with IPV6, FTPS\n"
+" This option (as well as --socks4) does not work with IPV6, FTPS\n"
" or LDAP.\n"
"\n"
" --socks5-gssapi-service <servicename>\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"
-, stdout);
- fputs(
-" 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. (Added\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. (Added\n"
" in 7.19.4).\n"
"\n"
-" --socks5-gssapi-nec\n"
-" As part of the GSS-API negotiation a protection mode is negoti-\n"
, stdout);
fputs(
-" 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"
-" --socks5-gssapi-nec allows the unprotected exchange of the pro-\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"
+" --socks5-gssapi-nec allows the unprotected exchange of the pro-\n"
" tection mode negotiation. (Added in 7.19.4).\n"
"\n"
" --stderr <file>\n"
-" Redirect all writes to stderr to the specified file instead. If\n"
-" the file name is a plain '-', it is instead written to stdout.\n"
-"\n"
, stdout);
fputs(
+" Redirect all writes to stderr to the specified file instead. If\n"
+" the file name is a plain '-', it is instead written to stdout.\n"
+"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -t, --telnet-option <OPT=val>\n"
@@ -2221,46 +2307,46 @@ void hugehelp(void)
"\n"
" XDISPLOC=<X display> Sets the X display location.\n"
"\n"
+, stdout);
+ fputs(
" NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
" -T, --upload-file <file>\n"
-" This transfers the specified local file to the remote URL. If\n"
-, stdout);
- fputs(
+" This transfers the specified local file to the remote URL. If\n"
" 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"
+" 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"
+, stdout);
+ fputs(
" 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"
+" 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\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\n"
" uploaded.\n"
"\n"
" You can specify one -T for each URL on the command line. Each -T\n"
-, stdout);
- fputs(
" + URL pair specifies what to upload and to where. curl also sup-\n"
" ports \"globbing\" of the -T argument, meaning that you can upload\n"
-" multiple files to a single URL by using the same URL globbing\n"
+" multiple files to a single URL by using the same URL globbing\n"
" style supported in the URL, like this:\n"
"\n"
" curl -T \"{file1,file2}\" http://www.uploadtothissite.com\n"
"\n"
" or even\n"
"\n"
+, stdout);
+ fputs(
" curl -T \"img[1-1000].png\" ftp://ftp.picturemania.com/upload/\n"
"\n"
" --tcp-nodelay\n"
-, stdout);
- fputs(
-" Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
+" Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
" page for details about this option. (Added in 7.11.2)\n"
"\n"
" --tftp-blksize <value>\n"
@@ -2268,37 +2354,37 @@ void hugehelp(void)
" 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 this option is used several times, the last one will be used.\n"
-"\n"
, stdout);
fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
" (Added in 7.20.0)\n"
"\n"
" --tlsauthtype <authtype>\n"
-" Set TLS authentication type. Currently, the only supported\n"
-" option is \"SRP\", for TLS-SRP (RFC 5054). If --tlsuser and\n"
-" --tlspassword are specified but --tlsauthtype is not, then this\n"
+" Set TLS authentication type. Currently, the only supported\n"
+" option is \"SRP\", for TLS-SRP (RFC 5054). If --tlsuser and\n"
+" --tlspassword are specified but --tlsauthtype is not, then this\n"
" option defaults to \"SRP\". (Added in 7.21.4)\n"
"\n"
" --tlspassword <password>\n"
-" Set password for use with the TLS authentication method speci-\n"
, stdout);
fputs(
-" fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
+" Set password for use with the TLS authentication method speci-\n"
+" fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
" (Added in 7.21.4)\n"
"\n"
" --tlsuser <user>\n"
-" Set username for use with the TLS authentication method speci-\n"
-" fied with --tlsauthtype. Requires that --tlspassword also be\n"
+" Set username for use with the TLS authentication method speci-\n"
+" fied with --tlsauthtype. Requires that --tlspassword also be\n"
" set. (Added in 7.21.4)\n"
"\n"
" --tlsv1.0\n"
+, stdout);
+ fputs(
" (SSL) Forces curl to use TLS version 1.0 when negotiating with a\n"
" remote TLS server. (Added in 7.34.0)\n"
"\n"
" --tlsv1.1\n"
-, stdout);
- fputs(
" (SSL) Forces curl to use TLS version 1.1 when negotiating with a\n"
" remote TLS server. (Added in 7.34.0)\n"
"\n"
@@ -2307,42 +2393,44 @@ void hugehelp(void)
" remote TLS server. (Added in 7.34.0)\n"
"\n"
" --tr-encoding\n"
+, stdout);
+ fputs(
" (HTTP) Request a compressed Transfer-Encoding response using one\n"
-" of the algorithms curl supports, and uncompress the data while\n"
+" of the algorithms curl supports, and uncompress the data while\n"
" receiving it.\n"
"\n"
-, stdout);
- fputs(
" (Added in 7.21.6)\n"
"\n"
" --trace <file>\n"
-" Enables a full trace dump of all incoming and outgoing data,\n"
+" Enables a full trace dump of all incoming and outgoing data,\n"
" including descriptive information, to the given output file. Use\n"
" \"-\" as filename to have the output sent to stdout.\n"
"\n"
+, stdout);
+ fputs(
" This option overrides previous uses of -v, --verbose or --trace-\n"
" ascii.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --trace-ascii <file>\n"
-, stdout);
- fputs(
-" Enables a full trace dump of all incoming and outgoing data,\n"
+" Enables a full trace dump of all incoming and outgoing data,\n"
" including descriptive information, to the given output file. Use\n"
" \"-\" as filename to have the output sent to stdout.\n"
"\n"
+, stdout);
+ fputs(
" This is very similar to --trace, but leaves out the hex part and\n"
-" only shows the ASCII part of the dump. It makes smaller output\n"
+" only shows the ASCII part of the dump. It makes smaller output\n"
" that might be easier to read for untrained humans.\n"
"\n"
-, stdout);
- fputs(
" This option overrides previous uses of -v, --verbose or --trace.\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --trace-time\n"
-" Prepends a time stamp to each trace or verbose line that curl\n"
+" Prepends a time stamp to each trace or verbose line that curl\n"
+, stdout);
+ fputs(
" displays. (Added in 7.14.0)\n"
"\n"
" --unix-socket <path>\n"
@@ -2350,167 +2438,167 @@ void hugehelp(void)
" the network. (Added in 7.40.0)\n"
"\n"
" -u, --user <user:password>\n"
-, stdout);
- fputs(
" Specify the user name and password to use for server authentica-\n"
" tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
-" If you simply specify the user name, curl will prompt for a\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(
-" 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 succesfully obtain a Kerberos Ticket. If you don't\n"
-" then the initial authentication handshake may fail.\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"
-" 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"
+" 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\n"
, stdout);
fputs(
+" don't 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"
" forest in your setup for example.\n"
"\n"
-" To specify the domain name use either Down-Level Logon Name or\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(
+" 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"
" ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -U, --proxy-user <user:password>\n"
-" Specify the user name and password to use for proxy authentica-\n"
-" tion.\n"
-"\n"
-" If you use a Windows SSPI-enabled curl binary and do either\n"
-" Negotiate or NTLM authentication then you can tell curl to\n"
, stdout);
fputs(
+" Specify the user name and password to use for proxy authentica-\n"
+" tion.\n"
+"\n"
+" If you use a Windows SSPI-enabled curl binary and do either\n"
+" Negotiate or NTLM authentication then you can tell curl to\n"
" select the user name and password from your environment by spec-\n"
" ifying a single colon with this option: \"-U :\".\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --url <URL>\n"
-" Specify a URL to fetch. This option is mostly handy when you\n"
-" want to specify URL(s) in a config file.\n"
-"\n"
-" This option may be used any number of times. To control where\n"
, stdout);
fputs(
-" this URL is written, use the -o, --output or the -O, --remote-\n"
+" Specify a URL to fetch. This option is mostly handy when you\n"
+" want to specify URL(s) in a config file.\n"
+"\n"
+" This option may be used any number of times. To control where\n"
+" this URL is written, use the -o, --output or the -O, --remote-\n"
" name options.\n"
" -v, --verbose\n"
-" Be more verbose/talkative during the operation. Useful for\n"
-" debugging and seeing what's going on \"under the hood\". A line\n"
-" starting with '>' means \"header data\" sent by curl, '<' means\n"
-" \"header data\" received by curl that is hidden in normal cases,\n"
+" Be more verbose/talkative during the operation. Useful for\n"
+" debugging and seeing what's going on \"under the hood\". A line\n"
, stdout);
fputs(
-" and a line starting with '*' means additional info provided by\n"
+" starting with '>' means \"header data\" sent by curl, '<' means\n"
+" \"header data\" received by curl that is hidden in normal cases,\n"
+" and a line starting with '*' means additional info provided by\n"
" curl.\n"
"\n"
-" Note that if you only want HTTP headers in the output, -i,\n"
+" Note that if you only want HTTP headers in the output, -i,\n"
" --include might be the option you're looking for.\n"
"\n"
-" If you think this option still doesn't give you enough details,\n"
+" If you think this option still doesn't give you enough details,\n"
+, stdout);
+ fputs(
" consider using --trace or --trace-ascii instead.\n"
"\n"
" This option overrides previous uses of --trace-ascii or --trace.\n"
"\n"
-, stdout);
- fputs(
" Use -s, --silent to make curl quiet.\n"
"\n"
" -w, --write-out <format>\n"
" Make curl display information on stdout after a completed trans-\n"
-" 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"
+" 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"
, stdout);
fputs(
+" 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"
-" 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 variables present in the output format will be substituted\n"
+" 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"
, stdout);
fputs(
+" 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"
" NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-" where all occurrences of % must be doubled when using this\n"
+" where all occurrences of % must be doubled when using this\n"
" option.\n"
"\n"
" The variables available are:\n"
"\n"
-" content_type The Content-Type of the requested document, if\n"
+" content_type The Content-Type of the requested document, if\n"
+, stdout);
+ fputs(
" there was any.\n"
"\n"
" filename_effective\n"
-" The ultimate filename that curl writes out to.\n"
-, stdout);
- fputs(
-" This is only meaningful if curl is told to write\n"
-" to a file with the --remote-name or --output\n"
-" option. It's most useful in combination with the\n"
+" 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\n"
+" option. It's most useful in combination with the\n"
" --remote-header-name option. (Added in 7.25.1)\n"
"\n"
+, stdout);
+ fputs(
" ftp_entry_path The initial path curl ended up in when logging on\n"
" to the remote FTP server. (Added in 7.15.4)\n"
"\n"
-, stdout);
- fputs(
" http_code The numerical response code that was found in the\n"
-" last retrieved HTTP(S) or FTP(s) transfer. In\n"
-" 7.18.2 the alias response_code was added to show\n"
+" last retrieved HTTP(S) or FTP(s) transfer. In\n"
+" 7.18.2 the alias response_code was added to show\n"
" the same info.\n"
"\n"
-" http_connect The numerical code that was found in the last\n"
-" response (from a proxy) to a curl CONNECT\n"
-" request. (Added in 7.12.4)\n"
-"\n"
, stdout);
fputs(
-" local_ip The IP address of the local end of the most\n"
-" recently done connection - can be either IPv4 or\n"
+" http_connect The numerical code that was found in the last\n"
+" response (from a proxy) to a curl CONNECT\n"
+" request. (Added in 7.12.4)\n"
+"\n"
+" local_ip The IP address of the local end of the most\n"
+" recently done connection - can be either IPv4 or\n"
" IPv6 (Added in 7.29.0)\n"
"\n"
-" local_port The local port number of the most recently done\n"
+, stdout);
+ fputs(
+" local_port The local port number of the most recently done\n"
" connection (Added in 7.29.0)\n"
"\n"
-" num_connects Number of new connects made in the recent trans-\n"
+" num_connects Number of new connects made in the recent trans-\n"
" fer. (Added in 7.12.3)\n"
"\n"
-, stdout);
- fputs(
-" num_redirects Number of redirects that were followed in the\n"
+" num_redirects Number of redirects that were followed in the\n"
" request. (Added in 7.12.3)\n"
"\n"
-" redirect_url When an HTTP request was made without -L to fol-\n"
+" redirect_url When an HTTP request was made without -L to fol-\n"
+, stdout);
+ fputs(
" low redirects, this variable will show the actual\n"
-" URL a redirect would take you to. (Added in\n"
+" URL a redirect would take you to. (Added in\n"
" 7.18.2)\n"
"\n"
-" remote_ip The remote IP address of the most recently done\n"
-, stdout);
- fputs(
+" remote_ip The remote IP address of the most recently done\n"
" connection - can be either IPv4 or IPv6 (Added in\n"
" 7.29.0)\n"
"\n"
-" remote_port The remote port number of the most recently done\n"
+" remote_port The remote port number of the most recently done\n"
+, stdout);
+ fputs(
" connection (Added in 7.29.0)\n"
"\n"
" size_download The total amount of bytes that were downloaded.\n"
@@ -2518,151 +2606,156 @@ void hugehelp(void)
" size_header The total amount of bytes of the downloaded head-\n"
" ers.\n"
"\n"
-, stdout);
- fputs(
-" size_request The total amount of bytes that were sent in the\n"
+" size_request The total amount of bytes that were sent in the\n"
" HTTP request.\n"
"\n"
" size_upload The total amount of bytes that were uploaded.\n"
"\n"
+, stdout);
+ fputs(
" 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"
+" speed_upload The average upload speed that curl measured for\n"
" the complete upload. Bytes per second.\n"
"\n"
-, stdout);
- fputs(
" ssl_verify_result\n"
-" The result of the SSL peer certificate verifica-\n"
+" The result of the SSL peer certificate verifica-\n"
" tion that was requested. 0 means the verification\n"
+, stdout);
+ fputs(
" was successful. (Added in 7.19.0)\n"
"\n"
" time_appconnect\n"
-" The time, in seconds, it took from the start\n"
-" until the SSL/SSH/etc connect/handshake to the\n"
-, stdout);
- fputs(
+" The time, in seconds, it took from the start\n"
+" until the SSL/SSH/etc connect/handshake to the\n"
" remote host was completed. (Added in 7.19.0)\n"
"\n"
-" time_connect The time, in seconds, it took from the start\n"
-" until the TCP connect to the remote host (or\n"
+" time_connect The time, in seconds, it took from the start\n"
+" until the TCP connect to the remote host (or\n"
+, stdout);
+ fputs(
" proxy) was completed.\n"
"\n"
" time_namelookup\n"
-" The time, in seconds, it took from the start\n"
+" The time, in seconds, it took from the start\n"
" until the name resolving was completed.\n"
"\n"
" time_pretransfer\n"
+" The time, in seconds, it took from the start\n"
+" until the file transfer was just about to begin.\n"
+" This includes all pre-transfer commands and nego-\n"
, stdout);
fputs(
-" The time, in seconds, it took from the start\n"
-" until 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"
+" steps include name lookup, connect, pretransfer\n"
+" and transfer before the final transaction was\n"
+" started. time_redirect shows the complete execu-\n"
, stdout);
fputs(
-" steps include 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. (Added in\n"
+" tion time for multiple redirections. (Added in\n"
" 7.12.3)\n"
"\n"
" time_starttransfer\n"
-" The time, in seconds, it took from the start\n"
+" The time, in seconds, it took from the start\n"
+" until the first byte was just about to be trans-\n"
+" ferred. This includes time_pretransfer and also\n"
+" the time the server needed to calculate the\n"
, stdout);
fputs(
-" until the first byte was just about to be trans-\n"
-" ferred. This includes time_pretransfer and also\n"
-" the time the server needed to calculate the\n"
" result.\n"
"\n"
-" time_total The total time, in seconds, that the full opera-\n"
+" time_total The total time, in seconds, that the full opera-\n"
" tion lasted. The time will be displayed with mil-\n"
" lisecond resolution.\n"
"\n"
-, stdout);
- fputs(
" url_effective The URL that was fetched last. This is most mean-\n"
-" ingful if you've told curl to follow location:\n"
+" ingful if you've told curl to follow location:\n"
" headers.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+" If this option is used several times, the last one will be used.\n"
"\n"
" -x, --proxy <[protocol://][user:password@]proxyhost[:port]>\n"
" Use the specified proxy.\n"
"\n"
-" The proxy string can be specified with a protocol:// prefix to\n"
+" The proxy string can be specified with a protocol:// prefix to\n"
+" specify alternative proxy protocols. Use socks4://, socks4a://,\n"
+" socks5:// or socks5h:// to request the specific SOCKS version to\n"
, stdout);
fputs(
-" specify alternative proxy protocols. Use socks4://, socks4a://,\n"
-" socks5:// or socks5h:// to request the specific SOCKS version to\n"
-" be used. No protocol specified, http:// and all others will be\n"
+" be used. No protocol specified, http:// and all others will be\n"
" treated as HTTP proxies. (The protocol support was added in curl\n"
" 7.21.7)\n"
"\n"
-" If the port number is not specified in the proxy string, it is\n"
+" 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"
, stdout);
fputs(
-" 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"
+" parently be converted to HTTP. It means that certain protocol\n"
" specific operations might not be available. This is not the case\n"
-, stdout);
- fputs(
" if you can tunnel through the proxy, as one with the -p, --prox-\n"
" ytunnel 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 exact same way as the proxy\n"
-" environment variables, including the protocol prefix (http://)\n"
, stdout);
fputs(
+" 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 exact same way as the proxy\n"
+" environment variables, including the protocol prefix (http://)\n"
" and the embedded user + password.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -X, --request <command>\n"
-" (HTTP) Specifies a custom request method to use when communicat-\n"
-" ing with the HTTP server. The specified request will be used\n"
-" instead of the method otherwise used (which defaults to GET).\n"
-" Read the HTTP 1.1 specification for details and explanations.\n"
, stdout);
fputs(
-" Common additional HTTP requests include PUT and DELETE, but\n"
-" related technologies like WebDAV offers PROPFIND, COPY, MOVE and\n"
-" more.\n"
+" (HTTP) Specifies a custom request method to use when communicat-\n"
+" ing with the HTTP server. The specified request method will be\n"
+" 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 don't need this option. All sorts of GET, HEAD,\n"
+, stdout);
+ fputs(
+" Normally you don't need this option. All sorts of GET, HEAD,\n"
" POST and PUT requests are rather invoked by using dedicated com-\n"
" mand line options.\n"
"\n"
-" This option only changes the actual word used in the HTTP\n"
+" This option only changes the actual word used in the HTTP\n"
+" request, it does not alter the way curl behaves. So for example\n"
+" if you want to make a proper HEAD request, using -X HEAD will\n"
+" not suffice. You need to use the -I, --head option.\n"
+"\n"
, stdout);
fputs(
-" request, it does not alter the way curl behaves. So for example\n"
-" if you want to make a proper HEAD request, using -X HEAD will\n"
-" not suffice. You need to use the -I, --head option.\n"
+" The method string you set with -X will be used for all requests,\n"
+" which if you for example use -L, --location may cause unintended\n"
+" side-effects when curl doesn't change request method according\n"
+" 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. (Added in 7.26.0)\n"
-"\n"
, stdout);
fputs(
+" RETR. (Added in 7.26.0)\n"
+"\n"
" (IMAP) Specifies a custom IMAP command to use instead of LIST.\n"
" (Added in 7.30.0)\n"
"\n"
@@ -2673,9 +2766,9 @@ void hugehelp(void)
"\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"
, stdout);
fputs(
+" 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"
" file system does not support extended attributes, a warning is\n"
@@ -2683,9 +2776,9 @@ void hugehelp(void)
"\n"
" -y, --speed-time <time>\n"
" If a download is slower than speed-limit bytes per second during\n"
-" a speed-time period, the download gets aborted. If speed-time is\n"
, stdout);
fputs(
+" a speed-time period, the download gets aborted. If speed-time is\n"
" used, the default speed-limit will be 1 unless set with -Y.\n"
"\n"
" This option controls transfers and thus will not affect slow\n"
@@ -2695,9 +2788,9 @@ void hugehelp(void)
" If this option is used several times, the last one will be used.\n"
"\n"
" -Y, --speed-limit <speed>\n"
-" If a download is slower than this given speed (in bytes per sec-\n"
, stdout);
fputs(
+" If a download 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 -y and is 30 if not set.\n"
"\n"
@@ -2706,9 +2799,9 @@ void hugehelp(void)
" -z, --time-cond <date expression>|<file>\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"
, stdout);
fputs(
+" time. The <date expression> can be all sorts of date strings or\n"
" if it doesn't match any internal ones, it is taken as a filename\n"
" and tries to get the modification date (mtime) from <file>\n"
" instead. See the curl_getdate(3) man pages for date expression\n"
@@ -2716,10 +2809,10 @@ void hugehelp(void)
"\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"
, stdout);
fputs(
+" document that is newer than the specified date/time.\n"
+"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -h, --help\n"
@@ -2731,9 +2824,9 @@ void hugehelp(void)
"\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"
, stdout);
fputs(
+" 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"
@@ -2744,10 +2837,10 @@ void hugehelp(void)
"\n"
" IPv6 You can use IPv6 with this.\n"
"\n"
-" krb4 Krb4 for FTP is supported.\n"
-"\n"
, stdout);
fputs(
+" krb4 Krb4 for FTP is supported.\n"
+"\n"
" SSL SSL versions of various protocols are supported, such as\n"
" HTTPS, FTPS, POP3S and so on.\n"
"\n"
@@ -2757,11 +2850,11 @@ void hugehelp(void)
" NTLM NTLM authentication is supported.\n"
"\n"
" Debug This curl uses a libcurl built with Debug. This enables\n"
+, stdout);
+ fputs(
" more error-tracking and memory debugging etc. For curl-\n"
" developers only!\n"
"\n"
-, stdout);
- fputs(
" AsynchDNS\n"
" This curl uses asynchronous name resolves. Asynchronous\n"
" name resolves can be done using either the c-ares or the\n"
@@ -2770,13 +2863,13 @@ void hugehelp(void)
" SPNEGO SPNEGO authentication is supported.\n"
"\n"
" Largefile\n"
+, stdout);
+ fputs(
" This curl supports transfers of large files, files larger\n"
" than 2GB.\n"
"\n"
" IDN This curl supports IDN - international domain names.\n"
"\n"
-, stdout);
- fputs(
" GSS-API\n"
" GSS-API is supported.\n"
"\n"
@@ -2788,11 +2881,11 @@ void hugehelp(void)
"\n"
" HTTP2 HTTP/2 support has been built-in.\n"
"\n"
+, stdout);
+ fputs(
" Metalink\n"
" This curl supports Metalink (both version 3 and 4 (RFC\n"
" 5854)), which describes mirrors and hashes. curl will\n"
-, stdout);
- fputs(
" use mirrors for failover if there are errors (such as the\n"
" file or server not being available).\n"
"\n"
@@ -2802,11 +2895,11 @@ void hugehelp(void)
"\n"
"ENVIRONMENT\n"
" The environment variables can be specified in lower case or upper case.\n"
+, stdout);
+ fputs(
" The lower case version has precedence. http_proxy is an exception as it\n"
" is only available in lower case.\n"
"\n"
-, stdout);
- fputs(
" Using an environment variable to set the proxy has the same effect as\n"
" using the --proxy option.\n"
"\n"
@@ -2816,9 +2909,9 @@ void hugehelp(void)
" 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"
, stdout);
fputs(
+" 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"
@@ -2828,11 +2921,11 @@ void hugehelp(void)
"\n"
" NO_PROXY <comma-separated list of hosts>\n"
" list of host names that shouldn't go through any proxy. If set\n"
+, stdout);
+ fputs(
" to a asterisk '*' only, it matches all hosts.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
-, stdout);
- fputs(
" Since curl version 7.21.7, the proxy string may be specified with a\n"
" protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
@@ -2843,11 +2936,11 @@ void hugehelp(void)
" The supported proxy protocol prefixes are as follows:\n"
"\n"
" socks4://\n"
+, stdout);
+ fputs(
" Makes it the equivalent of --socks4\n"
"\n"
" socks4a://\n"
-, stdout);
- fputs(
" Makes it the equivalent of --socks4a\n"
"\n"
" socks5://\n"
@@ -2861,9 +2954,9 @@ void hugehelp(void)
" error messages that may appear during bad conditions. At the time of\n"
" this writing, the exit codes are:\n"
"\n"
-" 1 Unsupported protocol. This build of curl has no support for this\n"
, stdout);
fputs(
+" 1 Unsupported protocol. This build of curl has no support for this\n"
" protocol.\n"
"\n"
" 2 Failed to initialize.\n"
@@ -2875,11 +2968,11 @@ void hugehelp(void)
" time. To make curl able to do this, you probably need another\n"
" build of libcurl!\n"
"\n"
+, stdout);
+ fputs(
" 5 Couldn't resolve proxy. The given proxy host could not be\n"
" resolved.\n"
"\n"
-, stdout);
- fputs(
" 6 Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
" 7 Failed to connect to host.\n"
@@ -2889,11 +2982,11 @@ void hugehelp(void)
"\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"
+, stdout);
+ fputs(
" often you tried to change to a directory that doesn't exist on\n"
" the server.\n"
"\n"
-, stdout);
- fputs(
" 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the\n"
" PASS request.\n"
"\n"
@@ -2903,11 +2996,11 @@ void hugehelp(void)
" 14 FTP weird 227 format. Curl couldn't parse the 227-line the\n"
" server sent.\n"
"\n"
+, stdout);
+ fputs(
" 15 FTP can't get host. Couldn't resolve the host IP we got in the\n"
" 227-line.\n"
"\n"
-, stdout);
- fputs(
" 17 FTP couldn't set binary. Couldn't change transfer method to\n"
" binary.\n"
"\n"
@@ -2917,9 +3010,9 @@ void hugehelp(void)
" 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\n"
, stdout);
fputs(
+" 22 HTTP page not retrieved. The requested url was not found or\n"
" returned another error with the HTTP error code being 400 or\n"
" above. This return code only appears if -f, --fail is used.\n"
"\n"
@@ -2929,12 +3022,12 @@ void hugehelp(void)
" 25 FTP couldn't STOR file. The server denied the STOR operation,\n"
" used for FTP uploading.\n"
"\n"
+, stdout);
+ fputs(
" 26 Read error. Various reading problems.\n"
"\n"
" 27 Out of memory. A memory allocation request failed.\n"
"\n"
-, stdout);
- fputs(
" 28 Operation timeout. The specified time-out period was reached\n"
" according to the conditions.\n"
"\n"
@@ -2942,13 +3035,13 @@ void hugehelp(void)
" support the PORT command, try doing a transfer using PASV\n"
" instead!\n"
"\n"
+, stdout);
+ fputs(
" 31 FTP couldn't use REST. The REST command failed. This command is\n"
" used for resumed FTP transfers.\n"
"\n"
" 33 HTTP range error. The range \"command\" didn't work.\n"
"\n"
-, stdout);
- fputs(
" 34 HTTP post error. Internal post-request generation error.\n"
"\n"
" 35 SSL connect error. The SSL handshaking failed.\n"
@@ -2956,6 +3049,8 @@ void hugehelp(void)
" 36 FTP bad download resume. Couldn't continue an earlier aborted\n"
" download.\n"
"\n"
+, stdout);
+ fputs(
" 37 FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
" 38 LDAP cannot bind. LDAP bind operation failed.\n"
@@ -2964,13 +3059,13 @@ void hugehelp(void)
"\n"
" 41 Function not found. A required LDAP function was not found.\n"
"\n"
-, stdout);
- fputs(
" 42 Aborted by callback. An application told curl to abort the oper-\n"
" ation.\n"
"\n"
" 43 Internal error. A function was called with a bad parameter.\n"
"\n"
+, stdout);
+ fputs(
" 45 Interface error. A specified outgoing interface could not be\n"
" used.\n"
"\n"
@@ -2978,13 +3073,13 @@ void hugehelp(void)
" mum amount.\n"
"\n"
" 48 Unknown option specified to libcurl. This indicates that you\n"
-, stdout);
- fputs(
" passed a weird option to curl that was passed on to libcurl and\n"
" rejected. Read up in the manual!\n"
"\n"
" 49 Malformed telnet option.\n"
"\n"
+, stdout);
+ fputs(
" 51 The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
" 52 The server didn't reply anything, which here is considered an\n"
@@ -2996,14 +3091,14 @@ void hugehelp(void)
"\n"
" 55 Failed sending network data.\n"
"\n"
-, stdout);
- fputs(
" 56 Failure in receiving network data.\n"
"\n"
" 58 Problem with the local certificate.\n"
"\n"
" 59 Couldn't use specified SSL cipher.\n"
"\n"
+, stdout);
+ fputs(
" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
" cates.\n"
"\n"
@@ -3017,13 +3112,13 @@ void hugehelp(void)
"\n"
" 65 Sending the data requires a rewind that failed.\n"
"\n"
-, stdout);
- fputs(
" 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"
@@ -3038,14 +3133,14 @@ void hugehelp(void)
"\n"
" 74 No such user (TFTP).\n"
"\n"
-, stdout);
- fputs(
" 75 Character conversion failed.\n"
"\n"
" 76 Character conversion functions required.\n"
"\n"
" 77 Problem with reading the SSL CA cert (path? access rights?).\n"
"\n"
+, stdout);
+ fputs(
" 78 The resource referenced in the URL does not exist.\n"
"\n"
" 79 An unspecified error occurred during the SSH session.\n"
@@ -3055,8 +3150,6 @@ void hugehelp(void)
" 82 Could not load CRL file, missing or wrong format (added in\n"
" 7.19.0).\n"
"\n"
-, stdout);
- fputs(
" 83 Issuer check failed (added in 7.19.0).\n"
"\n"
" 84 The FTP PRET command failed\n"
@@ -3065,6 +3158,8 @@ void hugehelp(void)
"\n"
" 86 RTSP: mismatch of Session Identifiers\n"
"\n"
+, stdout);
+ fputs(
" 87 unable to parse FTP file list\n"
"\n"
" 88 FTP chunk callback reported error\n"
@@ -3073,13 +3168,13 @@ void hugehelp(void)
"\n"
" 90 SSL public key does not matched pinned public key\n"
"\n"
-, stdout);
- fputs(
" XX More error codes will appear here in future releases. The exist-\n"
" ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
" Daniel Stenberg is the main author, but the whole list of contributors\n"
+, stdout);
+ fputs(
" is found in the separate THANKS file.\n"
"\n"
"WWW\n"
@@ -3094,8 +3189,6 @@ void hugehelp(void)
"LATEST VERSION\n"
"\n"
" You always find news about what's going on as well as the latest versions\n"
-, stdout);
- fputs(
" from the curl web pages, located at:\n"
"\n"
" http://curl.haxx.se\n"
@@ -3107,6 +3200,8 @@ void hugehelp(void)
" curl http://www.netscape.com/\n"
"\n"
" Get the README file the user's home directory at funet's ftp-server:\n"
+, stdout);
+ fputs(
"\n"
" curl ftp://ftp.funet.fi/README\n"
"\n"
@@ -3118,8 +3213,6 @@ void hugehelp(void)
"\n"
" curl ftp://cool.haxx.se/\n"
"\n"
-, stdout);
- fputs(
" Get the definition of curl from a dictionary:\n"
"\n"
" curl dict://dict.org/m:curl\n"
@@ -3132,6 +3225,8 @@ void hugehelp(void)
"\n"
" curl ftps://files.are.secure.com/secrets.txt\n"
"\n"
+, stdout);
+ fputs(
" or use the more appropriate FTPS way to get the same file:\n"
"\n"
" curl --ftp-ssl ftp://files.are.secure.com/secrets.txt\n"
@@ -3140,8 +3235,6 @@ void hugehelp(void)
"\n"
" curl -u username sftp://example.com/etc/issue\n"
"\n"
-, stdout);
- fputs(
" Get a file from an SSH server using SCP using a private key\n"
" (not password-protected) to authenticate:\n"
"\n"
@@ -3149,6 +3242,8 @@ void hugehelp(void)
" scp://example.com/~/file.txt\n"
"\n"
" Get a file from an SSH server using SCP using a private key\n"
+, stdout);
+ fputs(
" (password-protected) to authenticate:\n"
"\n"
" curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \\\n"
@@ -3156,8 +3251,6 @@ void hugehelp(void)
"\n"
" Get the main page from an IPv6 web server:\n"
"\n"
-, stdout);
- fputs(
" curl \"http://[2001:1890:1112:1::20]/\"\n"
"\n"
" Get a file from an SMB server:\n"
@@ -3168,14 +3261,14 @@ void hugehelp(void)
"\n"
" Get a web page and store in a local file with a specific name:\n"
"\n"
+, stdout);
+ fputs(
" curl -o thatpage.html http://www.netscape.com/\n"
"\n"
" Get a web page and store in a local file, make the local file get the name\n"
" of the remote document (if no file name part is specified in the URL, this\n"
" will fail):\n"
"\n"
-, stdout);
- fputs(
" curl -O http://www.netscape.com/index.html\n"
"\n"
" Fetch two files and store them with their remote names:\n"
@@ -3188,6 +3281,8 @@ void hugehelp(void)
"\n"
" To ftp files using name+passwd, include them in the URL like:\n"
"\n"
+, stdout);
+ fputs(
" curl ftp://name:passwd@machine.domain:port/full/path/to/file\n"
"\n"
" or specify them with the -u flag like\n"
@@ -3196,8 +3291,6 @@ void hugehelp(void)
"\n"
" FTPS\n"
"\n"
-, stdout);
- fputs(
" It is just like for FTP, but you may also want to specify and use\n"
" SSL-specific options for certificates etc.\n"
"\n"
@@ -3205,16 +3298,18 @@ void hugehelp(void)
" standards while the recommended \"explicit\" way is done by using FTP:// and\n"
" the --ftp-ssl option.\n"
"\n"
+, stdout);
+ fputs(
" SFTP / SCP\n"
"\n"
" This is similar to FTP, but you can use the --key option to specify a\n"
" private key to use instead of a password. Note that the private key may\n"
-, stdout);
- fputs(
" itself be protected by a password that is unrelated to the login password\n"
" of the remote system; this password is specified using the --pass option.\n"
" Typically, curl will automatically extract the public key from the private\n"
" key file, but in cases where curl does not have the proper library support,\n"
+, stdout);
+ fputs(
" a matching public key file must be specified using the --pubkey option.\n"
"\n"
" HTTP\n"
@@ -3222,8 +3317,6 @@ void hugehelp(void)
" Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
" like:\n"
"\n"
-, stdout);
- fputs(
" curl http://name:passwd@machine.domain/full/path/to/file\n"
"\n"
" or specify user and password separately like in\n"
@@ -3231,16 +3324,18 @@ void hugehelp(void)
" curl -u name:passwd http://machine.domain/full/path/to/file\n"
"\n"
" HTTP offers many different methods of authentication and curl supports\n"
+, stdout);
+ fputs(
" several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which\n"
" method to use, curl defaults to Basic. You can also ask curl to pick the\n"
" most secure ones out of the ones that the server accepts for the given URL,\n"
-, stdout);
- fputs(
" by using --anyauth.\n"
"\n"
" NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
" and password, so that style will not work when using curl via a proxy, even\n"
" though curl allows it at other times. When using a proxy, you _must_ use\n"
+, stdout);
+ fputs(
" the -u style for user and password.\n"
"\n"
" HTTPS\n"
@@ -3250,13 +3345,13 @@ void hugehelp(void)
"PROXY\n"
"\n"
" curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
-, stdout);
- fputs(
" It does not have special support for FTP proxy servers since there are no\n"
" standards for those, but it can still be made to work with many of them. You\n"
" can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
" servers.\n"
"\n"
+, stdout);
+ fputs(
" Get an ftp file using an HTTP proxy named my-proxy that uses port 888:\n"
"\n"
" curl -x my-proxy:888 ftp://ftp.leachsite.com/README\n"
@@ -3264,22 +3359,20 @@ void hugehelp(void)
" Get a file from an HTTP server that requires user and password, using the\n"
" same proxy as above:\n"
"\n"
-, stdout);
- fputs(
" curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
"\n"
" Some proxies require special authentication. Specify by using -U as above:\n"
"\n"
" curl -U user:passwd -x my-proxy:888 http://www.get.this/\n"
"\n"
+, stdout);
+ fputs(
" A comma-separated list of hosts and domains which do not use the proxy can\n"
" be specified as:\n"
"\n"
" curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
"\n"
" If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
-, stdout);
- fputs(
" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
"\n"
" curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
@@ -3287,24 +3380,24 @@ void hugehelp(void)
" See also the environment variables Curl supports that offer further proxy\n"
" control.\n"
"\n"
+, stdout);
+ fputs(
" Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
" client's perspective, with special commands to select the remote FTP server.\n"
" curl supports the -u, -Q and --ftp-account options that can be used to\n"
-, stdout);
- fputs(
" set up transfers through many FTP proxies. For example, a file can be\n"
" uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
" options:\n"
"\n"
" curl -u \"Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass\" \\\n"
+, stdout);
+ fputs(
" --ftp-account Proxy-Password --upload-file local-file \\\n"
" ftp://my-ftp.proxy.server:21/remote/upload/path/\n"
"\n"
" See the manual for your FTP proxy to determine the form it expects to set up\n"
" transfers, and curl's -v option to see exactly what curl is sending.\n"
"\n"
-, stdout);
- fputs(
"RANGES\n"
"\n"
" HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
@@ -3313,6 +3406,8 @@ void hugehelp(void)
"\n"
" Get the first 100 bytes of a document:\n"
"\n"
+, stdout);
+ fputs(
" curl -r 0-99 http://www.get.this/\n"
"\n"
" Get the last 500 bytes of a document:\n"
@@ -3322,8 +3417,6 @@ void hugehelp(void)
" Curl also supports simple ranges for FTP files as well. Then you can only\n"
" specify start and stop position.\n"
"\n"
-, stdout);
- fputs(
" Get the first 100 bytes of a document using FTP:\n"
"\n"
" curl -r 0-99 ftp://www.get.this/README\n"
@@ -3336,6 +3429,8 @@ void hugehelp(void)
"\n"
" curl -T - ftp://ftp.upload.com/myfile\n"
"\n"
+, stdout);
+ fputs(
" Upload data from a specified file, login with user and password:\n"
"\n"
" curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile\n"
@@ -3343,8 +3438,6 @@ void hugehelp(void)
" Upload a local file to the remote site, and use the local file name at the remote\n"
" site too:\n"
"\n"
-, stdout);
- fputs(
" curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
"\n"
" Upload a local file to get appended to the remote file:\n"
@@ -3352,6 +3445,8 @@ void hugehelp(void)
" curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
"\n"
" Curl also supports ftp upload through a proxy, but only if the proxy is\n"
+, stdout);
+ fputs(
" configured to allow that kind of tunneling. If it does, you can run curl in\n"
" a fashion similar to:\n"
"\n"
@@ -3360,8 +3455,6 @@ void hugehelp(void)
"SMB / SMBS\n"
"\n"
" curl -T file.txt -u \"domain\\username:passwd\" \n"
-, stdout);
- fputs(
" smb://server.example.com/share/\n"
"\n"
" HTTP\n"
@@ -3373,20 +3466,22 @@ void hugehelp(void)
" Note that the HTTP server must have been configured to accept PUT before\n"
" this can be done successfully.\n"
"\n"
+, stdout);
+ fputs(
" For other ways to do HTTP data upload, see the POST section below.\n"
"\n"
"VERBOSE / DEBUG\n"
"\n"
" If curl fails where it isn't supposed to, if the servers don't let you in,\n"
" if you can't understand the responses: use the -v flag to get verbose\n"
-, stdout);
- fputs(
" fetching. Curl will output lots of info and what it sends and receives in\n"
" order to let the user see all client-server interaction (but it won't show\n"
" you the actual data).\n"
"\n"
" curl -v ftp://ftp.upload.com/\n"
"\n"
+, stdout);
+ fputs(
" To get even more details and information on what curl does, try using the\n"
" --trace or --trace-ascii options with a given file name to log to, like\n"
" this:\n"
@@ -3396,23 +3491,23 @@ void hugehelp(void)
"\n"
"DETAILED INFORMATION\n"
"\n"
-, stdout);
- fputs(
" Different protocols provide different ways of getting detailed information\n"
" about specific files/documents. To get curl to show detailed information\n"
" about a single file, you should use -I/--head option. It displays all\n"
+, stdout);
+ fputs(
" available info on a single file for HTTP and FTP. The HTTP information is a\n"
" lot more extensive.\n"
"\n"
" For HTTP, you can get the header information (the same as -I would show)\n"
" shown before the data by using -i/--include. Curl understands the\n"
-, stdout);
- fputs(
" -D/--dump-header option when getting files from both FTP and HTTP, and it\n"
" will then store the headers in the specified file.\n"
"\n"
" Store the HTTP headers in a separate file (headers.txt in the example):\n"
"\n"
+, stdout);
+ fputs(
" curl --dump-header headers.txt curl.haxx.se\n"
"\n"
" Note that headers stored in a separate file can be very useful at a later\n"
@@ -3421,14 +3516,14 @@ void hugehelp(void)
"\n"
"POST (HTTP)\n"
"\n"
-, stdout);
- fputs(
" It's easy to post data using curl. This is done using the -d <data>\n"
" option. The post data must be urlencoded.\n"
"\n"
" Post a simple \"name\" and \"phone\" guestbook.\n"
"\n"
" curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
+, stdout);
+ fputs(
" http://www.where.com/guest.cgi\n"
"\n"
" How to post a form with curl, lesson #1:\n"
@@ -3436,19 +3531,17 @@ void hugehelp(void)
" Dig out all the <input> tags in the form that you want to fill in. (There's\n"
" a perl program called formfind.pl on the curl site that helps with this).\n"
"\n"
-, stdout);
- fputs(
" If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
" string\", which is in the format\n"
"\n"
" <variable1>=<data1>&<variable2>=<data2>&...\n"
"\n"
" The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
+, stdout);
+ fputs(
" the data is the contents you want to fill in for the inputs. The data *must*\n"
" be properly URL encoded. That means you replace space with + and that you\n"
" replace weird letters with %XX where XX is the hexadecimal representation of\n"
-, stdout);
- fputs(
" the letter's ASCII code.\n"
"\n"
" Example:\n"
@@ -3458,6 +3551,8 @@ void hugehelp(void)
" <form action=\"post.cgi\" method=\"post\">\n"
" <input name=user size=10>\n"
" <input name=pass type=password size=10>\n"
+, stdout);
+ fputs(
" <input name=id type=hidden value=\"blablabla\">\n"
" <input name=ding value=\"submit\">\n"
" </form>\n"
@@ -3466,49 +3561,47 @@ void hugehelp(void)
"\n"
" To post to this, you enter a curl command line like:\n"
"\n"
-, stdout);
- fputs(
" curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\" (continues)\n"
" http://www.formpost.com/getthis/post.cgi\n"
"\n"
"\n"
" While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
+, stdout);
+ fputs(
" understood by CGI's and similar, curl also supports the more capable\n"
" multipart/form-data type. This latter type supports things like file upload.\n"
"\n"
" -F accepts parameters like -F \"name=contents\". If you want the contents to\n"
-, stdout);
- fputs(
" be read from a file, use <@filename> as contents. When specifying a file,\n"
" you can also specify the file content type by appending ';type=<mime type>'\n"
" to the file name. You can also post the contents of several files in one\n"
+, stdout);
+ fputs(
" field. For example, the field name 'coolfiles' is used to send three files,\n"
" with different content types using the following syntax:\n"
"\n"
" curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
" http://www.post.com/postit.cgi\n"
"\n"
-, stdout);
- fputs(
" If the content-type is not specified, curl will try to guess from the file\n"
" extension (it only knows a few), or use the previously specified type (from\n"
" an earlier file if several files are specified in a list) or else it will\n"
+, stdout);
+ fputs(
" use the default type 'application/octet-stream'.\n"
"\n"
" Emulate a fill-in form with -F. Let's say you fill in three fields in a\n"
" form. One field is a file name which to post, one field is your name and one\n"
-, stdout);
- fputs(
" field is a file description. We want to post the file we have written named\n"
" \"cooltext.txt\". To let curl do the posting of this data instead of your\n"
" favourite browser, you have to read the HTML source of the form page and\n"
+, stdout);
+ fputs(
" find the names of the input fields. In our example, the input field names\n"
" are 'file', 'yourname' and 'filedescription'.\n"
"\n"
" curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n"
" -F \"filedescription=Cool text file with cool text inside\" \\\n"
-, stdout);
- fputs(
" http://www.post.com/postit.cgi\n"
"\n"
" To send two files in one post you can do it in two ways:\n"
@@ -3517,14 +3610,14 @@ void hugehelp(void)
"\n"
" curl -F \"pictures=@dog.gif,cat.gif\"\n"
"\n"
+, stdout);
+ fputs(
" 2. Send two fields with two field names:\n"
"\n"
" curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n"
"\n"
" To send a field value literally without interpreting a leading '@'\n"
" or '<', or an embedded ';type=', use --form-string instead of\n"
-, stdout);
- fputs(
" -F. This is recommended when the value is obtained from a user or\n"
" some other unpredictable source. Under these circumstances, using\n"
" -F instead of --form-string would allow a user to trick curl into\n"
@@ -3532,11 +3625,11 @@ void hugehelp(void)
"\n"
"REFERRER\n"
"\n"
+, stdout);
+ fputs(
" An HTTP request has the option to include information about which address\n"
" referred it to the actual page. Curl allows you to specify the\n"
" referrer to be used on the command line. It is especially useful to\n"
-, stdout);
- fputs(
" fool or trick stupid servers or CGI scripts that rely on that information\n"
" being available or contain certain data.\n"
"\n"
@@ -3546,11 +3639,11 @@ void hugehelp(void)
"\n"
"USER AGENT\n"
"\n"
+, stdout);
+ fputs(
" An HTTP request has the option to include information about the browser\n"
" that generated the request. Curl allows it to be specified on the command\n"
" line. It is especially useful to fool or trick stupid servers or CGI\n"
-, stdout);
- fputs(
" scripts that only accept certain browsers.\n"
"\n"
" Example:\n"
@@ -3559,17 +3652,19 @@ void hugehelp(void)
"\n"
" Other common strings:\n"
" 'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95\n"
+, stdout);
+ fputs(
" 'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95\n"
" 'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2\n"
" 'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX\n"
" 'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux\n"
"\n"
-, stdout);
- fputs(
" Note that Internet Explorer tries hard to be compatible in every way:\n"
" 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95\n"
"\n"
" Mozilla is not the only possible User-Agent name:\n"
+, stdout);
+ fputs(
" 'Konqueror/1.0' KDE File Manager desktop client\n"
" 'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
"\n"
@@ -3577,21 +3672,21 @@ void hugehelp(void)
"\n"
" Cookies are generally used by web servers to keep state information at the\n"
" client's side. The server sets cookies by sending a response line in the\n"
-, stdout);
- fputs(
" headers that looks like 'Set-Cookie: <data>' where the data part then\n"
" typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
+, stdout);
+ fputs(
" like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
" path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
" cookie should expire (\"expire=DATE\"), for what domain to use it\n"
" (\"domain=NAME\") and if it should be used on secure connections only\n"
" (\"secure\").\n"
"\n"
-, stdout);
- fputs(
" If you've received a page from a server that contains a header like:\n"
" Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
"\n"
+, stdout);
+ fputs(
" it means the server wants that first pair passed on when we get anything in\n"
" a path beginning with \"/foo\".\n"
"\n"
@@ -3601,12 +3696,12 @@ void hugehelp(void)
"\n"
" Curl also has the ability to use previously received cookies in following\n"
" sessions. If you get cookies from a server and store them in a file in a\n"
-, stdout);
- fputs(
" manner similar to:\n"
"\n"
" curl --dump-header headers www.example.com\n"
"\n"
+, stdout);
+ fputs(
" ... you can then in a second connect to that (or another) site, use the\n"
" cookies from the 'headers' file like:\n"
"\n"
@@ -3617,10 +3712,10 @@ void hugehelp(void)
" save the incoming cookies using the well-known netscape cookie format like\n"
" this:\n"
"\n"
-, stdout);
- fputs(
" curl -c cookies.txt www.example.com\n"
"\n"
+, stdout);
+ fputs(
" Note that by specifying -b you enable the \"cookie awareness\" and with -L\n"
" you can make curl follow a location: (which often is used in combination\n"
" with cookies). So that if a site sends cookies and a location, you can\n"
@@ -3629,23 +3724,23 @@ void hugehelp(void)
" curl -L -b empty.txt www.example.com\n"
"\n"
" The file to read cookies from must be formatted using plain HTTP headers OR\n"
+" as netscape's cookie file. Curl will determine what kind it is based on the\n"
, stdout);
fputs(
-" as netscape's cookie file. Curl will determine what kind it is based on the\n"
" file contents. In the above command, curl will parse the header and store\n"
" the cookies received from www.example.com. curl will send to the server the\n"
" stored cookies which match the request as it follows the location. The\n"
" file \"empty.txt\" may be a nonexistent file.\n"
"\n"
-" Alas, to both read and write cookies from a netscape cookie file, you can\n"
-" set both -b and -c to use the same file:\n"
+" To read and write cookies from a netscape cookie file, you can set both -b\n"
+" and -c to use the same file:\n"
"\n"
-, stdout);
- fputs(
" curl -b cookies.txt -c cookies.txt www.example.com\n"
"\n"
"PROGRESS METER\n"
"\n"
+, stdout);
+ fputs(
" The progress meter exists to show a user that something actually is\n"
" happening. The different fields in the output have the following meaning:\n"
"\n"
@@ -3654,9 +3749,9 @@ void hugehelp(void)
" 0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287\n"
"\n"
" From left-to-right:\n"
+" % - percentage completed of the whole transfer\n"
, stdout);
fputs(
-" % - percentage completed of the whole transfer\n"
" Total - total size of the whole expected transfer\n"
" % - percentage completed of the download\n"
" Received - currently downloaded amount of bytes\n"
@@ -3666,9 +3761,9 @@ void hugehelp(void)
" Dload - the average transfer speed of the download\n"
" Average Speed\n"
" Upload - the average transfer speed of the upload\n"
+" Time Total - expected time to complete the operation\n"
, stdout);
fputs(
-" Time Total - expected time to complete the operation\n"
" Time Current - time passed since the invoke\n"
" Time Left - expected time left to completion\n"
" Curr.Speed - the average transfer speed the last 5 seconds (the first\n"
@@ -3679,9 +3774,9 @@ void hugehelp(void)
"\n"
"SPEED LIMIT\n"
"\n"
+" Curl allows the user to set the transfer speed conditions that must be met\n"
, stdout);
fputs(
-" Curl allows the user to set the transfer speed conditions that must be met\n"
" to let the transfer keep going. By using the switch -y and -Y you\n"
" can make curl abort transfers if the transfer speed is below the specified\n"
" lowest limit for a specified time.\n"
@@ -3692,10 +3787,10 @@ void hugehelp(void)
" curl -Y 3000 -y 60 www.far-away-site.com\n"
"\n"
" This can very well be used in combination with the overall time limit, so\n"
-, stdout);
- fputs(
" that the above operation must be completed in whole within 30 minutes:\n"
"\n"
+, stdout);
+ fputs(
" curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n"
"\n"
" Forcing curl not to transfer data faster than a given rate is also possible,\n"
@@ -3705,14 +3800,14 @@ void hugehelp(void)
"\n"
" Make curl transfer data no faster than 10 kilobytes per second:\n"
"\n"
-, stdout);
- fputs(
" curl --limit-rate 10K www.far-away-site.com\n"
"\n"
" or\n"
"\n"
" curl --limit-rate 10240 www.far-away-site.com\n"
"\n"
+, stdout);
+ fputs(
" Or prevent curl from uploading data faster than 1 megabyte per second:\n"
"\n"
" curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
@@ -3720,24 +3815,24 @@ void hugehelp(void)
" When using the --limit-rate option, the transfer rate is regulated on a\n"
" per-second basis, which will cause the total transfer speed to become lower\n"
" than the given number. Sometimes of course substantially lower, if your\n"
-, stdout);
- fputs(
" transfer stalls during periods.\n"
"\n"
"CONFIG FILE\n"
"\n"
" Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
+, stdout);
+ fputs(
" systems) from the user's home dir on startup.\n"
"\n"
" The config file could be made up with normal command line switches, but you\n"
" can also specify the long options without the dashes to make it more\n"
" readable. You can separate the options and the parameter with spaces, or\n"
" with = or :. Comments can be used within the file. If the first letter on a\n"
-, stdout);
- fputs(
" line is a '#'-symbol the rest of the line is treated as a comment.\n"
"\n"
" If you want the parameter to contain spaces, you must enclose the entire\n"
+, stdout);
+ fputs(
" parameter within double quotes (\"). Within those quotes, you specify a\n"
" quote as \\\".\n"
"\n"
@@ -3748,11 +3843,11 @@ void hugehelp(void)
" # We want a 30 minute timeout:\n"
" -m 1800\n"
" # ... and we use a proxy for all accesses:\n"
-, stdout);
- fputs(
" proxy = proxy.our.domain.com:8080\n"
"\n"
" White spaces ARE significant at the end of lines, but all white spaces\n"
+, stdout);
+ fputs(
" leading up to the first characters of each line are ignored.\n"
"\n"
" Prevent curl from reading the default file by using -q as the first command\n"
@@ -3764,11 +3859,11 @@ void hugehelp(void)
" without URL by making a config file similar to:\n"
"\n"
" # default url to get\n"
-, stdout);
- fputs(
" url = \"http://help.with.curl.com/curlhelp.html\"\n"
"\n"
" You can specify another config file to be read by using the -K/--config\n"
+, stdout);
+ fputs(
" flag. If you set config file name to \"-\" it'll read the config from stdin,\n"
" which can be handy if you want to hide options from being visible in process\n"
" tables etc:\n"
@@ -3778,11 +3873,11 @@ void hugehelp(void)
"EXTRA HEADERS\n"
"\n"
" When using curl in your own very special programs, you may end up needing\n"
-, stdout);
- fputs(
" to pass on your own custom headers when getting a web page. You can do\n"
" this by using the -H flag.\n"
"\n"
+, stdout);
+ fputs(
" Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
" page:\n"
"\n"
@@ -3791,11 +3886,11 @@ void hugehelp(void)
" This can also be useful in case you want curl to send a different text in a\n"
" header than it normally does. The -H header you specify then replaces the\n"
" header curl would normally send. If you replace an internal header with an\n"
-, stdout);
- fputs(
" empty one, you prevent that header from being sent. To prevent the Host:\n"
" header from being used:\n"
"\n"
+, stdout);
+ fputs(
" curl -H \"Host:\" www.server.com\n"
"\n"
"FTP and PATH NAMES\n"
@@ -3807,12 +3902,12 @@ void hugehelp(void)
" curl ftp://user:passwd@my.site.com/README\n"
"\n"
" But if you want the README file from the root directory of that very same\n"
-, stdout);
- fputs(
" site, you need to specify the absolute file name:\n"
"\n"
" curl ftp://user:passwd@my.site.com//README\n"
"\n"
+, stdout);
+ fputs(
" (I.e with an extra slash in front of the file name.)\n"
"\n"
"SFTP and SCP and PATH NAMES\n"
@@ -3825,9 +3920,9 @@ void hugehelp(void)
"\n"
"FTP and firewalls\n"
"\n"
+" The FTP protocol requires one of the involved parties to open a second\n"
, stdout);
fputs(
-" The FTP protocol requires one of the involved parties to open a second\n"
" connection as soon as data is about to get transferred. There are two ways to\n"
" do this.\n"
"\n"
@@ -3838,9 +3933,9 @@ void hugehelp(void)
"\n"
" curl ftp.download.com\n"
"\n"
+" If the server, for example, is behind a firewall that doesn't allow connections\n"
, stdout);
fputs(
-" If the server, for example, is behind a firewall that doesn't allow connections\n"
" on ports other than 21 (or if it just doesn't support the PASV command), the\n"
" other way to do it is to use the PORT command and instruct the server to\n"
" connect to the client on the given IP number and port (as parameters to the\n"
@@ -3848,10 +3943,10 @@ void hugehelp(void)
"\n"
" The -P flag to curl supports a few different options. Your machine may have\n"
" several IP-addresses and/or network interfaces and curl allows you to select\n"
-, stdout);
- fputs(
" which of them to use. Default address can also be used:\n"
"\n"
+, stdout);
+ fputs(
" curl -P - ftp.download.com\n"
"\n"
" Download with PORT but use the IP address of our 'le0' interface (this does\n"
@@ -3867,12 +3962,12 @@ void hugehelp(void)
"\n"
" Get a web page from a server using a specified port for the interface:\n"
"\n"
-, stdout);
- fputs(
" curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
" or\n"
"\n"
+, stdout);
+ fputs(
" curl --interface 192.168.1.10 http://www.netscape.com/\n"
"\n"
"HTTPS\n"
@@ -3886,17 +3981,17 @@ void hugehelp(void)
" curl https://www.secure-site.com\n"
"\n"
" Curl is also capable of using your personal certificates to get/post files\n"
+" from sites that require valid certificates. The only drawback is that the\n"
, stdout);
fputs(
-" from sites that require valid certificates. The only drawback is that the\n"
" certificate needs to be in PEM-format. PEM is a standard and open format to\n"
" store certificates with, but it is not used by the most commonly used\n"
" browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n"
" want curl to use the certificates you use with your (favourite) browser, you\n"
" may need to download/compile a converter that can convert your browser's\n"
+" formatted certificates to PEM formatted ones. This kind of converter is\n"
, stdout);
fputs(
-" formatted certificates to PEM formatted ones. This kind of converter is\n"
" included in recent versions of OpenSSL, and for older versions Dr Stephen\n"
" N. Henson has written a patch for SSLeay that adds this functionality. You\n"
" can get his patch (that requires an SSLeay installation) from his site at:\n"
@@ -3905,10 +4000,10 @@ void hugehelp(void)
" Example on how to automatically retrieve a document using a certificate with\n"
" a personal password:\n"
"\n"
-, stdout);
- fputs(
" curl -E /path/to/cert.pem:password https://secure.site.com/\n"
"\n"
+, stdout);
+ fputs(
" If you neglect to specify the password on the command line, you will be\n"
" prompted for the correct password before any data can be received.\n"
"\n"
@@ -3917,10 +4012,10 @@ void hugehelp(void)
" SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n"
" version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n"
"\n"
-, stdout);
- fputs(
" curl -2 https://secure.site.com/\n"
"\n"
+, stdout);
+ fputs(
" Otherwise, curl will first attempt to use v3 and then v2.\n"
"\n"
" To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
@@ -4311,7 +4406,7 @@ void hugehelp(void) {}
#else
/*
* NEVER EVER edit this manually, fix the mkhelp.pl script instead!
- * Generation time: Sun Dec 28 14:36:38 2014
+ * Generation time: Mon Aug 3 00:00:36 2015
*/
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
@@ -4319,4089 +4414,4180 @@ void hugehelp(void) {}
#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 shrunk from 162028
- to 48958 bytes. You can disable the use of compressed help
+ Thanks to this operation, the size of this data shrunk from 166000
+ to 50046 bytes. You can disable the use of compressed help
texts by NOT passing -c to the mkhelp.pl tool. */
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
- 0x6b, 0x7b, 0x1b, 0xd7, 0x91, 0x2e, 0xfa, 0x9d, 0xbf, 0xa2, 0x07, 0x39,
- 0x19, 0x90, 0x09, 0x00, 0x5e, 0x74, 0xb1, 0xc5, 0x48, 0x1e, 0xd3, 0x14,
- 0x65, 0x73, 0x4c, 0x89, 0xdc, 0x04, 0x65, 0x3b, 0xdb, 0xf6, 0xa3, 0xa7,
- 0x01, 0x34, 0xc9, 0x0e, 0x81, 0x6e, 0xa4, 0xbb, 0x41, 0x8a, 0x99, 0xc9,
- 0xfc, 0xf6, 0x53, 0xf5, 0x56, 0xd5, 0x5a, 0xab, 0x2f, 0x20, 0x65, 0x4f,
- 0x9c, 0x33, 0xfb, 0x9c, 0xe3, 0x99, 0x88, 0x24, 0xd0, 0xbd, 0xae, 0xb5,
- 0x6a, 0xd5, 0xf5, 0xad, 0x28, 0x7a, 0xec, 0xbf, 0x0f, 0xf8, 0xdf, 0x07,
- 0xfa, 0x8f, 0x7e, 0x6e, 0x44, 0xd1, 0x59, 0x91, 0xff, 0x25, 0x99, 0x56,
- 0xdd, 0xcf, 0x7e, 0xf8, 0xf0, 0x9f, 0x91, 0xfc, 0x1f, 0xbd, 0xf3, 0x13,
- 0xfd, 0xdc, 0x78, 0xb0, 0xed, 0xed, 0xc8, 0xbf, 0xf0, 0x9f, 0x1f, 0xb6,
- 0xa2, 0xc7, 0x5e, 0xf8, 0xcf, 0x68, 0x13, 0x2f, 0x7c, 0xd0, 0x1e, 0x5e,
- 0xf2, 0xef, 0x1f, 0x3e, 0x3c, 0xdc, 0xc9, 0x4f, 0x3c, 0x2a, 0xfe, 0x67,
- 0x9b, 0xdf, 0xfb, 0xe9, 0x03, 0xff, 0x4a, 0x9f, 0x6c, 0x6c, 0xbc, 0x3b,
- 0x78, 0x7b, 0x64, 0xaf, 0x4e, 0x57, 0xc5, 0x3c, 0x1a, 0x46, 0x55, 0x11,
- 0x67, 0xe5, 0x65, 0x52, 0x44, 0x71, 0xf4, 0xfe, 0xfc, 0x64, 0x63, 0x63,
- 0xfc, 0xe7, 0x77, 0xa7, 0x67, 0xe3, 0xe3, 0x71, 0xed, 0xb1, 0x1f, 0xf3,
- 0x65, 0x95, 0xe6, 0x59, 0xf9, 0x73, 0xf4, 0x23, 0x3d, 0x34, 0x1a, 0x8d,
- 0x7e, 0xde, 0xd8, 0x78, 0x7d, 0x34, 0x3e, 0x3c, 0x3f, 0x3e, 0xbb, 0x38,
- 0x3e, 0x7d, 0x57, 0x7b, 0x36, 0x4a, 0xcb, 0x88, 0x1a, 0xab, 0xf2, 0x7c,
- 0x4e, 0xff, 0xf8, 0xf6, 0x67, 0x71, 0x15, 0x47, 0x97, 0x45, 0xbe, 0x88,
- 0xf2, 0x82, 0xbf, 0x88, 0xa3, 0x32, 0x29, 0x6e, 0x93, 0x62, 0x10, 0xad,
- 0xca, 0x34, 0xbb, 0x8a, 0xf2, 0x2c, 0x89, 0xf2, 0xcb, 0xa8, 0xba, 0x4e,
- 0xac, 0xb9, 0x72, 0xb5, 0x5c, 0xe6, 0x45, 0x95, 0xcc, 0xa2, 0x65, 0x91,
- 0x57, 0xf9, 0x34, 0x9f, 0x97, 0xd1, 0xe6, 0xeb, 0xe3, 0xc3, 0x8b, 0x41,
- 0xf4, 0xe6, 0xf8, 0xe4, 0x88, 0xfe, 0xbd, 0x38, 0xc3, 0x3f, 0xe3, 0x41,
- 0xf4, 0xf5, 0xe9, 0xd9, 0x37, 0x47, 0xe7, 0x83, 0xe8, 0x9b, 0x0b, 0xfe,
- 0x8c, 0xff, 0xa5, 0x0f, 0xa3, 0xe3, 0xb7, 0x07, 0x67, 0x03, 0x6b, 0x8e,
- 0xff, 0xe0, 0x0f, 0x4f, 0x5e, 0xd3, 0x87, 0xf2, 0x83, 0xff, 0x3c, 0x3b,
- 0x3d, 0x7b, 0xa2, 0x3f, 0xf8, 0xcf, 0xf3, 0x8b, 0xb7, 0xf4, 0xed, 0xf9,
- 0xc5, 0x98, 0xfe, 0x1d, 0x1f, 0xf2, 0x3f, 0xe8, 0x65, 0xfc, 0xf6, 0x2b,
- 0xfc, 0x33, 0x76, 0xcd, 0x8d, 0xdf, 0xca, 0xe7, 0xe8, 0xe9, 0xe2, 0xe8,
- 0xe4, 0xdd, 0xd1, 0x45, 0x14, 0x67, 0xb3, 0xe8, 0x82, 0x9e, 0xdf, 0x1a,
- 0x45, 0x17, 0xd7, 0x49, 0x34, 0xcd, 0x17, 0x0b, 0xfe, 0x88, 0x56, 0x64,
- 0x96, 0x94, 0xe9, 0x55, 0x46, 0x53, 0xa1, 0x99, 0xdf, 0xe5, 0xc5, 0x4d,
- 0x14, 0xdd, 0xa5, 0xd5, 0x75, 0xbe, 0xaa, 0xac, 0xb9, 0x15, 0xad, 0x46,
- 0x94, 0x66, 0x55, 0x52, 0xc4, 0x53, 0x5e, 0xeb, 0xd1, 0x46, 0x6d, 0x55,
- 0xf3, 0x4b, 0x5a, 0xc3, 0x92, 0x16, 0x6d, 0xb2, 0x2a, 0xe7, 0x79, 0x3c,
- 0xe3, 0xa5, 0xa2, 0x57, 0x2e, 0x57, 0xb4, 0xc8, 0x45, 0x3a, 0xbd, 0x29,
- 0xa3, 0x79, 0x7a, 0x93, 0xf0, 0x42, 0x7d, 0xbc, 0xb7, 0x85, 0x1b, 0x48,
- 0xa3, 0xf1, 0x8a, 0xd6, 0x34, 0x1b, 0x5a, 0x73, 0x55, 0x3a, 0x8d, 0xb9,
- 0x03, 0xac, 0x5c, 0xb4, 0x5a, 0x72, 0x6b, 0xb2, 0x62, 0xd1, 0x32, 0x2f,
- 0xe9, 0xa5, 0xf1, 0xf8, 0x84, 0x46, 0x9e, 0x65, 0x09, 0xc6, 0x51, 0x0e,
- 0xe8, 0x8f, 0xfc, 0x26, 0x4d, 0xe8, 0x97, 0xcb, 0x74, 0x9e, 0x44, 0xb2,
- 0xa3, 0xae, 0x39, 0xde, 0xda, 0xa8, 0x48, 0xca, 0xd5, 0x22, 0xa1, 0xd5,
- 0x7b, 0x9b, 0x54, 0xf1, 0x3c, 0xcd, 0x6e, 0xe8, 0x57, 0x9e, 0xf8, 0x22,
- 0x2f, 0x92, 0x51, 0x74, 0x50, 0x46, 0xf7, 0xf9, 0x8a, 0x26, 0x3c, 0x9f,
- 0xd3, 0x9e, 0x27, 0xd1, 0x24, 0x99, 0xe7, 0x77, 0x03, 0xde, 0xe9, 0x28,
- 0x5b, 0x2d, 0x26, 0xd4, 0x40, 0x7e, 0xe9, 0x9b, 0x8b, 0xab, 0x15, 0x35,
- 0x27, 0x4f, 0x2f, 0x62, 0x9a, 0x13, 0xbd, 0x5b, 0x44, 0xd7, 0x09, 0xcd,
- 0xb9, 0x5c, 0xa6, 0xd9, 0xbf, 0xd4, 0xd7, 0x85, 0x96, 0x76, 0x99, 0xdf,
- 0x25, 0x05, 0xad, 0xec, 0xe4, 0x3e, 0xa2, 0x45, 0x98, 0x08, 0x11, 0x5e,
- 0x12, 0x91, 0x45, 0x31, 0x35, 0xe1, 0x08, 0x70, 0x58, 0x24, 0xf3, 0x98,
- 0x89, 0xc9, 0xf5, 0x31, 0xa2, 0x4d, 0x4c, 0x1c, 0xb5, 0xe9, 0xab, 0x9b,
- 0x4f, 0xb6, 0xf0, 0xf2, 0x8c, 0x66, 0x92, 0xce, 0x4b, 0xda, 0x06, 0x3e,
- 0x16, 0xfa, 0x0c, 0x6f, 0x2a, 0x1f, 0x13, 0xa2, 0xcd, 0xfb, 0xac, 0x8a,
- 0x3f, 0xa2, 0x7b, 0xa5, 0xcd, 0xe1, 0x2c, 0x59, 0x26, 0xd9, 0x2c, 0xc9,
- 0xaa, 0x51, 0xf4, 0xe7, 0x7c, 0xd5, 0xa7, 0xbe, 0x2f, 0x53, 0x5a, 0x83,
- 0x58, 0x9b, 0xa2, 0x9e, 0x89, 0x08, 0xa6, 0x45, 0xba, 0x0c, 0xb6, 0x22,
- 0xcf, 0x68, 0xcf, 0xa3, 0xf3, 0x37, 0x87, 0xd1, 0x93, 0x17, 0x9f, 0x3f,
- 0xf7, 0x7b, 0x4e, 0x0d, 0x44, 0xd3, 0x38, 0xa3, 0x19, 0x27, 0xd3, 0xf4,
- 0xf2, 0x3e, 0x5a, 0xac, 0xe6, 0x55, 0xba, 0xa4, 0xd5, 0xa7, 0xce, 0x4b,
- 0x3e, 0x40, 0xcb, 0xb8, 0xa8, 0x4a, 0x26, 0x02, 0x7c, 0x80, 0xb9, 0xdf,
- 0x15, 0x69, 0xc5, 0x07, 0x09, 0xdf, 0xd1, 0x08, 0x93, 0xaa, 0xb4, 0xe6,
- 0x98, 0xd6, 0xa8, 0x9f, 0x09, 0xd1, 0x16, 0x2d, 0x6d, 0x5c, 0x52, 0xa7,
- 0xfb, 0x1b, 0x9e, 0x87, 0x5c, 0x57, 0xd5, 0x72, 0x7f, 0x7b, 0xbb, 0x4c,
- 0xab, 0x64, 0xf4, 0x1f, 0x74, 0x0e, 0x07, 0xd5, 0x5d, 0x3e, 0xa8, 0xae,
- 0x8b, 0x24, 0xf9, 0xfb, 0x88, 0x68, 0xd8, 0x3d, 0x49, 0xfd, 0xde, 0xeb,
- 0xc0, 0xae, 0x92, 0x8a, 0x7a, 0xf8, 0xeb, 0x2a, 0xc9, 0xb8, 0x45, 0x1a,
- 0x47, 0x3c, 0x5f, 0x5e, 0xc7, 0xb4, 0x9d, 0x09, 0x51, 0x23, 0x9f, 0x6c,
- 0x22, 0x18, 0x1e, 0x95, 0x9c, 0xed, 0x1f, 0x7f, 0x6e, 0x77, 0x7a, 0x89,
- 0x3e, 0xe9, 0xdf, 0x91, 0xbe, 0x15, 0xd3, 0x6a, 0x53, 0x6f, 0xdb, 0x4c,
- 0x65, 0x3f, 0xee, 0x0e, 0x77, 0x77, 0x76, 0x7e, 0x1e, 0x55, 0x1f, 0xab,
- 0x4f, 0x7e, 0x65, 0x67, 0xc7, 0xbf, 0xc4, 0x4f, 0x6f, 0xf2, 0xac, 0xa3,
- 0x39, 0x11, 0x0e, 0x0f, 0xe1, 0x6f, 0x49, 0x91, 0x97, 0x5b, 0x9d, 0x8d,
- 0xcd, 0x93, 0x8a, 0x8e, 0x5d, 0xd0, 0x52, 0x3c, 0xfc, 0x5b, 0xbd, 0xeb,
- 0x77, 0x49, 0x09, 0xca, 0xf1, 0x33, 0x8e, 0xe2, 0x82, 0xa8, 0x37, 0xaf,
- 0x3c, 0x93, 0x1a, 0xd0, 0xd1, 0xac, 0xdc, 0xfa, 0xd0, 0xc9, 0xa3, 0xa7,
- 0x89, 0xbd, 0xc5, 0x73, 0xe6, 0x6c, 0x65, 0x94, 0x25, 0x1f, 0xdd, 0x59,
- 0x27, 0x1e, 0x90, 0xc4, 0xd3, 0xeb, 0x28, 0xa7, 0x23, 0x50, 0x74, 0x6c,
- 0x44, 0x9c, 0xdd, 0x8f, 0xf2, 0xe2, 0x6a, 0x3b, 0x2e, 0xa6, 0xd7, 0xe9,
- 0x2d, 0x2d, 0xc6, 0x8b, 0x17, 0xcf, 0x87, 0xf4, 0xcf, 0x8b, 0x9f, 0xb7,
- 0x6f, 0xf3, 0x39, 0xad, 0xcd, 0xd3, 0x9f, 0xb7, 0x79, 0x93, 0xff, 0x23,
- 0x1e, 0x4c, 0x06, 0xd3, 0xbf, 0x8f, 0xae, 0xab, 0xc5, 0x7c, 0x2d, 0xe9,
- 0x50, 0x63, 0x51, 0xbc, 0xc8, 0x57, 0x59, 0xe5, 0xc8, 0x85, 0xa8, 0xae,
- 0x0a, 0xd8, 0x13, 0x1d, 0x58, 0x3a, 0xa5, 0x4c, 0xdc, 0x4c, 0x45, 0x7c,
- 0xee, 0xe8, 0x88, 0xfa, 0x03, 0x59, 0x4d, 0xaf, 0x69, 0xee, 0x44, 0x3e,
- 0xb1, 0xce, 0xbf, 0x4a, 0x63, 0x3e, 0x9a, 0xc4, 0x21, 0x98, 0x63, 0xa1,
- 0x29, 0xe9, 0x2c, 0xa5, 0xe7, 0xf2, 0x62, 0x96, 0x14, 0x75, 0x42, 0xc6,
- 0x70, 0xfc, 0x78, 0x22, 0x5a, 0xcb, 0x25, 0x75, 0xbe, 0x62, 0x66, 0x87,
- 0xb3, 0xc6, 0x2d, 0xd0, 0x29, 0xbd, 0xa2, 0x65, 0xa2, 0xa5, 0x61, 0xd2,
- 0xe2, 0x95, 0xbb, 0x8f, 0xde, 0xd1, 0xfe, 0x09, 0x87, 0x08, 0x28, 0x50,
- 0x76, 0xab, 0x63, 0xd5, 0xee, 0xee, 0xee, 0xd6, 0x93, 0xd2, 0xfe, 0x6e,
- 0x8b, 0x9a, 0x82, 0xd7, 0xba, 0x28, 0x60, 0x7f, 0xaf, 0xfe, 0xc2, 0xf7,
- 0xc4, 0x44, 0x3d, 0x39, 0xd3, 0x40, 0xfe, 0xe3, 0xef, 0x01, 0x3d, 0xdc,
- 0xf1, 0xb7, 0x69, 0x76, 0x9b, 0xdf, 0xd0, 0x1a, 0xe0, 0x96, 0x8b, 0x6b,
- 0xeb, 0x1b, 0x31, 0x9f, 0x58, 0x2c, 0x2b, 0x77, 0x7d, 0x30, 0xa1, 0xd0,
- 0x47, 0x93, 0x78, 0x32, 0xbf, 0x8f, 0xae, 0xe3, 0xdb, 0x84, 0xa7, 0xbe,
- 0x24, 0x0a, 0xe2, 0xc5, 0x20, 0xb6, 0x3e, 0x07, 0x9f, 0xd1, 0x83, 0x3b,
- 0xcb, 0x57, 0x13, 0x3a, 0xfc, 0x7f, 0x5d, 0xe5, 0x95, 0xac, 0x51, 0x7c,
- 0x9b, 0xa7, 0xb3, 0xda, 0x5d, 0x79, 0x9d, 0x30, 0xc3, 0xe1, 0x8e, 0x71,
- 0x89, 0x10, 0xc3, 0xe3, 0x91, 0xe2, 0x08, 0xa4, 0x15, 0x5f, 0x47, 0xc4,
- 0xaa, 0x68, 0x59, 0xf2, 0x28, 0xba, 0xca, 0x99, 0x7e, 0xc1, 0x20, 0x41,
- 0x80, 0xb4, 0x3f, 0xd7, 0x31, 0xdf, 0x3a, 0xb4, 0x02, 0x8e, 0x42, 0x8b,
- 0x04, 0xbc, 0x12, 0x9b, 0x16, 0xcf, 0x07, 0x72, 0xbb, 0xf0, 0x3b, 0xc9,
- 0xc7, 0x78, 0xc1, 0x8c, 0xa8, 0xff, 0xaf, 0xfd, 0x41, 0xd4, 0xff, 0xb7,
- 0x3e, 0xf8, 0x7c, 0xff, 0x0f, 0x7d, 0xbf, 0xe5, 0x24, 0x2e, 0xdd, 0xa6,
- 0x33, 0xbe, 0x28, 0x68, 0x26, 0xc7, 0x67, 0xb7, 0xcf, 0xa3, 0xbf, 0xf1,
- 0xdd, 0x4e, 0xbc, 0x30, 0xf9, 0x68, 0xf4, 0x62, 0x73, 0xa3, 0xb7, 0x23,
- 0x62, 0x8a, 0xf1, 0x92, 0x2f, 0xf9, 0xa4, 0x98, 0x12, 0x71, 0xc5, 0x57,
- 0x44, 0x4e, 0x74, 0x57, 0x5a, 0x73, 0xdc, 0x3e, 0xbf, 0x22, 0xd3, 0x22,
- 0x06, 0x16, 0x65, 0xf1, 0x82, 0xe8, 0xf5, 0x84, 0x47, 0x94, 0x66, 0xed,
- 0x0d, 0xfd, 0xf1, 0x32, 0xf9, 0x7c, 0x67, 0x7f, 0xff, 0xc9, 0xef, 0xf7,
- 0x9e, 0x25, 0xd5, 0xf5, 0xce, 0xcf, 0xdb, 0xee, 0x91, 0xe3, 0x4b, 0x2c,
- 0xbb, 0x51, 0xa2, 0x0d, 0x82, 0x6e, 0x61, 0xc7, 0xc5, 0xe9, 0x7d, 0xfa,
- 0x3d, 0xb9, 0x4c, 0x3f, 0x0e, 0x4c, 0x9e, 0x91, 0x13, 0x11, 0x13, 0x85,
- 0xd0, 0xfe, 0xf1, 0xe1, 0xb5, 0xe6, 0xae, 0x56, 0x49, 0x49, 0x2b, 0x79,
- 0x77, 0x1d, 0x57, 0x91, 0x6b, 0x40, 0x76, 0x76, 0x91, 0x5e, 0x5d, 0x57,
- 0xd1, 0x5d, 0xcc, 0x97, 0xc1, 0x71, 0x25, 0x4d, 0xf0, 0x2d, 0x4c, 0x57,
- 0xc0, 0x65, 0x4c, 0xbc, 0x9c, 0xf7, 0x10, 0x57, 0xee, 0xc4, 0x4b, 0x00,
- 0x15, 0x51, 0xbc, 0x6c, 0x88, 0x17, 0x77, 0x26, 0x71, 0xc9, 0x67, 0x2a,
- 0xa3, 0xa3, 0x5b, 0xd1, 0x1d, 0xbe, 0xe2, 0xbf, 0xae, 0xe9, 0x96, 0xc6,
- 0x1a, 0xe8, 0x40, 0x71, 0x91, 0xbd, 0xe1, 0xed, 0xe4, 0xbd, 0x71, 0x97,
- 0x0b, 0x6d, 0xd2, 0x40, 0xb7, 0xd9, 0xbd, 0x51, 0xd2, 0xd9, 0x23, 0xbe,
- 0xe1, 0x28, 0xa3, 0xc7, 0xec, 0xaf, 0x27, 0xf3, 0xc4, 0x18, 0xe3, 0x92,
- 0x2f, 0x72, 0xb9, 0xae, 0x69, 0xf0, 0xc1, 0x64, 0x69, 0xd1, 0xe2, 0x1b,
- 0x16, 0x19, 0x1a, 0x82, 0x09, 0x5e, 0x9b, 0xe5, 0x44, 0x64, 0x34, 0x5a,
- 0x62, 0x93, 0x3c, 0x33, 0x66, 0x7e, 0x58, 0x15, 0x10, 0x39, 0xb5, 0xc9,
- 0x1f, 0xa6, 0x15, 0xdf, 0x01, 0x90, 0x32, 0x69, 0xbc, 0xb4, 0x28, 0x10,
- 0x14, 0x89, 0x85, 0x06, 0xf3, 0xc7, 0xf5, 0x45, 0xcf, 0x46, 0xb7, 0x24,
- 0x45, 0x90, 0xc0, 0x98, 0xb8, 0xb7, 0x70, 0xdf, 0x4e, 0x59, 0x76, 0x99,
- 0xd3, 0x79, 0x99, 0xe6, 0x45, 0xc1, 0x12, 0x39, 0xef, 0xe0, 0x44, 0x58,
- 0xdc, 0x22, 0xa1, 0x6b, 0x3e, 0x5c, 0xce, 0x94, 0x2f, 0x1c, 0x62, 0x35,
- 0x24, 0x37, 0x80, 0x99, 0xd0, 0xfd, 0x0e, 0x6e, 0x8c, 0x89, 0x63, 0x74,
- 0xdc, 0xf6, 0x74, 0x9a, 0x2c, 0xab, 0xb2, 0x6b, 0x4e, 0xb6, 0xe1, 0x34,
- 0x9c, 0x22, 0xe1, 0x95, 0x0f, 0x85, 0x22, 0xac, 0xab, 0xbb, 0x94, 0x21,
- 0x17, 0x99, 0x9c, 0x41, 0x72, 0x52, 0xe9, 0x56, 0xad, 0x02, 0x6d, 0x10,
- 0x47, 0xc3, 0x9a, 0x2f, 0x78, 0xa0, 0xfc, 0x70, 0x29, 0x27, 0x15, 0x9c,
- 0x93, 0x37, 0x52, 0x24, 0x61, 0xe9, 0x97, 0x2f, 0x15, 0x5a, 0x4f, 0xd7,
- 0x38, 0xf5, 0xea, 0xf6, 0x94, 0xbb, 0x2f, 0x49, 0x87, 0xa0, 0x9b, 0x76,
- 0x56, 0x5e, 0x93, 0x70, 0x54, 0xea, 0xc9, 0x4e, 0x17, 0x44, 0x33, 0xb7,
- 0xbc, 0xbf, 0xcb, 0x24, 0x99, 0x8d, 0xa2, 0xd3, 0x4b, 0x66, 0xb0, 0x05,
- 0x0d, 0xba, 0xc2, 0xd7, 0xcc, 0xf3, 0x69, 0xdd, 0x66, 0x10, 0xb2, 0xdd,
- 0xd1, 0x92, 0xa1, 0x04, 0xcc, 0x9b, 0x29, 0x8d, 0x16, 0x3b, 0x62, 0x2e,
- 0x37, 0xaf, 0x5f, 0x10, 0x38, 0x87, 0xc4, 0xc8, 0x79, 0x78, 0x93, 0x24,
- 0x02, 0x25, 0x4e, 0x92, 0xea, 0x2e, 0x49, 0x5c, 0x73, 0x65, 0x42, 0x97,
- 0x12, 0x6f, 0x9a, 0x48, 0x66, 0x60, 0x86, 0xbc, 0xb4, 0x67, 0xe7, 0xa7,
- 0x5f, 0x9f, 0x1f, 0x8d, 0xc7, 0xd1, 0xdb, 0xa3, 0x8b, 0xa3, 0xf3, 0xda,
- 0x4a, 0x67, 0x79, 0xb1, 0xc0, 0x8e, 0xce, 0xd2, 0x72, 0x39, 0x8f, 0xef,
- 0x79, 0xab, 0x69, 0x26, 0x57, 0x05, 0x9f, 0xac, 0x45, 0xc2, 0x17, 0xc4,
- 0x6c, 0x05, 0x4e, 0x16, 0xe5, 0xc4, 0x1f, 0x62, 0x95, 0x48, 0x99, 0x99,
- 0x40, 0x8c, 0xcd, 0xae, 0xfc, 0x4a, 0x13, 0xc7, 0xd1, 0x7b, 0x8e, 0x2f,
- 0x3a, 0xb7, 0x1f, 0x2c, 0x1a, 0x42, 0xf9, 0x18, 0xf8, 0xcf, 0x64, 0x99,
- 0x4a, 0xcc, 0x89, 0x68, 0x36, 0x5d, 0x80, 0xd9, 0xd1, 0x4f, 0x2f, 0x0d,
- 0x26, 0x97, 0x24, 0x0a, 0xd3, 0xdd, 0xd7, 0x20, 0x0d, 0x37, 0x4e, 0xac,
- 0x2b, 0x74, 0x1a, 0x56, 0x72, 0xa8, 0x73, 0x1a, 0xeb, 0x22, 0xcd, 0x88,
- 0xc0, 0x88, 0x20, 0xf5, 0x94, 0x33, 0x25, 0xd0, 0x58, 0x2f, 0x85, 0x27,
- 0xe8, 0x8a, 0xd4, 0x95, 0x25, 0x7a, 0x99, 0x36, 0x9b, 0xb8, 0xa0, 0x9b,
- 0x1e, 0x06, 0x45, 0xa4, 0xc9, 0xfc, 0x7a, 0xc2, 0xac, 0x89, 0x35, 0x06,
- 0x12, 0xed, 0x92, 0xce, 0xde, 0xdc, 0x7d, 0x42, 0x6f, 0xd0, 0xd8, 0xe8,
- 0x36, 0xe1, 0x0b, 0xe2, 0x3a, 0x69, 0xae, 0x22, 0x1d, 0x22, 0xf0, 0x96,
- 0xbb, 0xb4, 0xc4, 0xa1, 0xba, 0xcb, 0x57, 0x73, 0x92, 0xcf, 0xf9, 0x81,
- 0xd5, 0x12, 0x2f, 0x50, 0x57, 0x4b, 0x7f, 0x7a, 0x16, 0xe9, 0x47, 0x5e,
- 0xf5, 0x66, 0x2b, 0x34, 0x34, 0xfa, 0x73, 0x49, 0x9b, 0x20, 0xc3, 0x19,
- 0x35, 0x79, 0x2b, 0xb8, 0x46, 0x6b, 0x0f, 0xf9, 0xb4, 0x80, 0xdd, 0x9d,
- 0x9d, 0x8e, 0x2f, 0xf8, 0xee, 0x3c, 0x7b, 0x7f, 0x41, 0x0d, 0xd1, 0xe5,
- 0x59, 0x56, 0xb4, 0x9d, 0xfc, 0x62, 0x96, 0x40, 0x39, 0xb2, 0xe6, 0x68,
- 0xd7, 0x52, 0x1c, 0x71, 0xc8, 0x06, 0xd6, 0xa5, 0x8c, 0x51, 0xb4, 0x47,
- 0x26, 0x5e, 0xd3, 0x1d, 0xe5, 0xf6, 0xf3, 0x2f, 0x45, 0x9b, 0x5f, 0x6c,
- 0xd1, 0x76, 0x0f, 0x5d, 0x73, 0x3f, 0xf2, 0xd3, 0xb8, 0xb5, 0xcb, 0x74,
- 0x91, 0xce, 0xe3, 0x40, 0x42, 0x51, 0x4e, 0xc4, 0x74, 0xed, 0xce, 0xe3,
- 0x94, 0xd8, 0x2e, 0x06, 0xed, 0x55, 0x24, 0x5e, 0x41, 0x9c, 0x66, 0xbf,
- 0x51, 0x33, 0xbe, 0x48, 0x21, 0x03, 0x2e, 0x53, 0xb7, 0x70, 0xbc, 0x63,
- 0x7c, 0xcc, 0x6b, 0xcb, 0xd4, 0xdc, 0xb5, 0xd6, 0xb2, 0x31, 0x27, 0x87,
- 0x0e, 0xee, 0x16, 0xae, 0x37, 0x89, 0x8b, 0x9e, 0xe3, 0x60, 0xa2, 0x18,
- 0x53, 0xa3, 0x57, 0x2b, 0x1a, 0xbc, 0xac, 0xea, 0x20, 0x1a, 0xfe, 0x8e,
- 0x47, 0xce, 0xfa, 0x91, 0x3b, 0xd1, 0x24, 0x77, 0x67, 0xb3, 0xd1, 0xc6,
- 0x29, 0xf4, 0x72, 0xa7, 0xc4, 0x9f, 0x8a, 0xfa, 0x1e, 0x09, 0xfb, 0x17,
- 0x7d, 0x20, 0x12, 0x8d, 0x9b, 0xa4, 0xaf, 0x3b, 0xa2, 0xc1, 0x98, 0x96,
- 0x90, 0x98, 0xc9, 0x5b, 0x1e, 0xba, 0x76, 0xa6, 0x3a, 0x3f, 0xf6, 0x89,
- 0x96, 0x95, 0x66, 0xe5, 0xae, 0xe4, 0xd9, 0x2c, 0xe5, 0xef, 0x88, 0xd8,
- 0x89, 0x51, 0xaf, 0x12, 0x08, 0xb7, 0x3a, 0xc7, 0x85, 0x9f, 0x1b, 0x6b,
- 0x4b, 0xe5, 0x35, 0x09, 0xc7, 0x51, 0x4f, 0x18, 0xca, 0x90, 0xbb, 0xe9,
- 0xf1, 0xc2, 0x2e, 0x1a, 0x9d, 0xd0, 0x5c, 0x66, 0x7a, 0x59, 0xa9, 0x80,
- 0x41, 0xdb, 0xb7, 0x88, 0xef, 0x43, 0x49, 0x14, 0x2c, 0x07, 0x23, 0xcf,
- 0x0b, 0x77, 0x6f, 0xd3, 0xcd, 0xb0, 0x64, 0x99, 0x40, 0x59, 0x11, 0x78,
- 0x3a, 0xce, 0x4f, 0x29, 0x43, 0x1b, 0x90, 0xd0, 0xc3, 0x4f, 0x5e, 0x5d,
- 0xdb, 0xa3, 0xc1, 0xfd, 0x10, 0xd3, 0xdc, 0x98, 0xc7, 0xb1, 0xda, 0x36,
- 0x33, 0xf6, 0x95, 0x17, 0xa2, 0xbc, 0xcf, 0x73, 0xe6, 0x3a, 0x3d, 0x11,
- 0xbd, 0x74, 0xe4, 0x18, 0x3a, 0x13, 0xd6, 0x10, 0xbb, 0xca, 0x7f, 0x5a,
- 0x73, 0x6e, 0xd8, 0xba, 0x5c, 0xe5, 0xa3, 0x43, 0xf3, 0x0b, 0x35, 0xc6,
- 0x22, 0xd1, 0x0d, 0x50, 0x32, 0x59, 0xd9, 0xba, 0x83, 0xda, 0x88, 0x63,
- 0xf7, 0x2b, 0x39, 0x1c, 0x10, 0xe4, 0x1b, 0x2b, 0x5f, 0x42, 0xb6, 0x56,
- 0x7e, 0xec, 0x66, 0x46, 0x33, 0x9a, 0xa5, 0xc4, 0xd2, 0x88, 0xaf, 0xda,
- 0xce, 0x78, 0x7d, 0xa3, 0x43, 0x96, 0xbb, 0x6f, 0x09, 0xe9, 0xac, 0x3a,
- 0x87, 0x9c, 0xd5, 0xc6, 0x34, 0x3c, 0xa5, 0x9d, 0x3a, 0xc1, 0x3c, 0x86,
- 0xb7, 0x11, 0x9f, 0x06, 0x92, 0x7e, 0xf9, 0x68, 0x0c, 0x4f, 0x4f, 0x6e,
- 0x03, 0xaa, 0x66, 0x05, 0x31, 0xe3, 0xeb, 0x76, 0x00, 0x25, 0x7c, 0x92,
- 0xe7, 0xa4, 0x87, 0xf9, 0xa9, 0xb1, 0xf2, 0x94, 0x64, 0xcc, 0xac, 0x74,
- 0x47, 0x87, 0x43, 0xf9, 0x0a, 0x2d, 0xdf, 0x93, 0x02, 0x10, 0x5f, 0xc5,
- 0xa9, 0xa3, 0x37, 0x65, 0x6c, 0xee, 0xd9, 0x2c, 0xd7, 0xc7, 0x79, 0xa7,
- 0xf8, 0x22, 0x57, 0x1e, 0xb2, 0xc2, 0x7d, 0x97, 0xf0, 0xbc, 0x88, 0x09,
- 0xe0, 0x24, 0x6b, 0xb3, 0x90, 0x7e, 0xac, 0xb9, 0x09, 0xe4, 0x3d, 0x16,
- 0x9d, 0xc0, 0x09, 0x21, 0x08, 0x51, 0x93, 0xbd, 0x51, 0xf4, 0x4d, 0x7e,
- 0x97, 0xc0, 0x24, 0x05, 0x31, 0x35, 0x65, 0xa3, 0x0a, 0x49, 0x34, 0x77,
- 0x49, 0xb4, 0x20, 0x09, 0x8a, 0x56, 0x13, 0x97, 0x28, 0x3e, 0xa3, 0x71,
- 0x7a, 0xd1, 0x3b, 0xbf, 0x43, 0xb7, 0x6e, 0x12, 0x6e, 0x27, 0x2f, 0xe5,
- 0x44, 0x44, 0x9b, 0xb8, 0xa4, 0xa7, 0xbc, 0x58, 0xcb, 0xca, 0xcf, 0xc2,
- 0xad, 0x07, 0xb1, 0xcd, 0x32, 0x38, 0x5c, 0x7c, 0x63, 0xd1, 0x08, 0xa2,
- 0xcf, 0x46, 0xbb, 0x2f, 0x46, 0x3b, 0x23, 0x16, 0xa9, 0x93, 0xdb, 0x34,
- 0x5f, 0x95, 0xd4, 0x3b, 0x86, 0x12, 0x05, 0x6f, 0x26, 0x05, 0x8b, 0xda,
- 0xf9, 0xd5, 0xd5, 0x5c, 0x2e, 0xf0, 0xed, 0xfc, 0xf2, 0x32, 0xb8, 0xe3,
- 0x8b, 0x64, 0x29, 0xa2, 0x3c, 0x2f, 0x8e, 0x1e, 0x3a, 0xe1, 0x71, 0xe1,
- 0xe5, 0xae, 0xcb, 0xe9, 0xf5, 0xe3, 0xe1, 0xef, 0x68, 0xa3, 0x87, 0xc6,
- 0x8d, 0x86, 0xc4, 0x8c, 0x1a, 0x26, 0xc7, 0xb7, 0x6c, 0x9a, 0x09, 0xaf,
- 0x44, 0xcf, 0xba, 0x44, 0x60, 0x4b, 0x41, 0x5a, 0xee, 0x43, 0x6a, 0x21,
- 0x72, 0xec, 0x2c, 0x30, 0xf8, 0x04, 0x44, 0x46, 0xcc, 0x29, 0x9b, 0xc5,
- 0x05, 0x69, 0xd2, 0x6c, 0x37, 0xa2, 0x87, 0xf9, 0xb4, 0xc5, 0x42, 0xee,
- 0x03, 0xe1, 0x79, 0x9e, 0xc4, 0x86, 0xfb, 0x3c, 0xc0, 0x50, 0xab, 0x36,
- 0xae, 0x43, 0x57, 0x41, 0x29, 0x23, 0x53, 0x51, 0x34, 0xf6, 0x92, 0x89,
- 0x67, 0xde, 0xa6, 0x77, 0x5e, 0xe6, 0xf3, 0x79, 0x7e, 0xc7, 0x97, 0x08,
- 0x0b, 0x93, 0xc1, 0xb6, 0xda, 0x76, 0x94, 0x65, 0x3e, 0x4d, 0xc5, 0x70,
- 0xa4, 0x8b, 0x0e, 0x5d, 0x19, 0x56, 0x4e, 0x7e, 0xb5, 0xd4, 0xdb, 0x9d,
- 0xc5, 0xd6, 0x92, 0x38, 0x49, 0xe4, 0xf4, 0x7e, 0x98, 0x8a, 0x1a, 0xcd,
- 0xf9, 0x4b, 0x4f, 0x8e, 0xa4, 0xb2, 0x62, 0x1a, 0x49, 0xca, 0xfa, 0xd8,
- 0x9d, 0xe9, 0xed, 0xe9, 0xd4, 0xb3, 0xc6, 0xe0, 0xa8, 0x0e, 0x1a, 0xcd,
- 0x95, 0x2b, 0x6a, 0x83, 0xd6, 0x7b, 0x96, 0xb2, 0x7d, 0x90, 0xb4, 0x27,
- 0x31, 0xf9, 0x89, 0xac, 0x4f, 0xaf, 0x4d, 0x57, 0x65, 0x45, 0x82, 0xa6,
- 0xf5, 0x2a, 0x4d, 0x51, 0xbf, 0x44, 0x92, 0x07, 0x4c, 0x67, 0x8d, 0xe6,
- 0x88, 0xe8, 0x3e, 0x1b, 0x3d, 0x79, 0x3e, 0xda, 0x09, 0x08, 0x61, 0x87,
- 0xd7, 0x99, 0x55, 0xab, 0xdd, 0xd1, 0x4e, 0xe3, 0xf1, 0x4d, 0xbe, 0xd3,
- 0xb7, 0x6c, 0xc9, 0x6b, 0x6b, 0x8e, 0xdb, 0xde, 0xce, 0x01, 0xbd, 0x19,
- 0xde, 0x64, 0x72, 0x67, 0xa7, 0xde, 0x3c, 0xe5, 0x7a, 0xa7, 0x1d, 0xce,
- 0x20, 0x0e, 0xca, 0x7d, 0x48, 0xf7, 0xf9, 0xbe, 0xb4, 0xb4, 0x3b, 0xda,
- 0x0d, 0xb6, 0x5e, 0x87, 0xb3, 0xdb, 0x3d, 0x9c, 0x36, 0x01, 0x34, 0x06,
- 0xb3, 0x6b, 0x42, 0xb3, 0x48, 0x4a, 0xae, 0xdf, 0x46, 0x73, 0xa6, 0xaa,
- 0xe9, 0x8b, 0xb6, 0x64, 0xba, 0x48, 0x4f, 0x6a, 0x8b, 0x84, 0x11, 0xed,
- 0x7d, 0xc2, 0xf2, 0x80, 0x4c, 0x52, 0xd2, 0xb2, 0xb8, 0x5f, 0xda, 0x10,
- 0xbf, 0x35, 0xb2, 0x2a, 0x18, 0xea, 0x9e, 0x0c, 0xb0, 0x83, 0x74, 0x70,
- 0xb1, 0xe0, 0x62, 0xe0, 0x91, 0xaf, 0xe8, 0xde, 0x2a, 0xe6, 0xd0, 0x9a,
- 0xcc, 0xf0, 0x49, 0x8c, 0x84, 0xf8, 0x5b, 0x3a, 0xaf, 0x94, 0x20, 0xc5,
- 0x3a, 0xc5, 0x7d, 0x8d, 0x9a, 0xa3, 0x7b, 0x60, 0x36, 0xc4, 0x0d, 0xb3,
- 0x65, 0xd6, 0x78, 0xe1, 0xb5, 0x70, 0x61, 0x15, 0xb5, 0xdf, 0x9d, 0xbd,
- 0xa3, 0x99, 0x9d, 0x8c, 0xf9, 0xe6, 0x23, 0xd5, 0x54, 0x56, 0x08, 0x9f,
- 0xd2, 0xb2, 0x1a, 0x6f, 0xf7, 0xa2, 0x30, 0x49, 0xc1, 0x8d, 0xe6, 0xda,
- 0x23, 0x36, 0x83, 0x00, 0x1b, 0xa0, 0xe9, 0xdb, 0x22, 0x26, 0xad, 0x0d,
- 0x73, 0xd5, 0x59, 0x94, 0xdc, 0xfc, 0x48, 0x7a, 0x6e, 0xad, 0x0e, 0xa4,
- 0x03, 0x28, 0x83, 0xae, 0xe5, 0xfa, 0xbb, 0xb2, 0xb2, 0xbc, 0x2a, 0x59,
- 0x72, 0x95, 0x57, 0x7c, 0xa4, 0xed, 0x33, 0x7a, 0x66, 0xd8, 0x68, 0x0e,
- 0xab, 0x86, 0x01, 0x81, 0x33, 0x89, 0x7e, 0xa6, 0xaa, 0x08, 0xef, 0x35,
- 0x69, 0x5a, 0xc4, 0xd5, 0xc0, 0x0d, 0x36, 0x1e, 0x5a, 0xd8, 0xe7, 0xad,
- 0x85, 0x8d, 0xe7, 0x6b, 0x57, 0x96, 0xbb, 0x3a, 0x38, 0xa1, 0xe9, 0xf1,
- 0xba, 0x06, 0xcb, 0x8a, 0xcf, 0x82, 0x65, 0x85, 0xb9, 0xd7, 0x16, 0x76,
- 0xfd, 0xca, 0x62, 0x69, 0x3f, 0x79, 0x6d, 0xb9, 0x13, 0xe9, 0xaa, 0x79,
- 0x2c, 0x4b, 0xd5, 0xf6, 0x3e, 0x65, 0x6d, 0x83, 0xc5, 0x95, 0x4f, 0xa3,
- 0xbd, 0x16, 0xcb, 0x5a, 0xfe, 0x36, 0x8b, 0xbb, 0xcb, 0x8c, 0xaa, 0x9a,
- 0x97, 0xb7, 0x2d, 0xbe, 0x40, 0x93, 0xde, 0x62, 0x0b, 0x09, 0x1b, 0xea,
- 0x42, 0xbe, 0xc0, 0xcb, 0xec, 0xd9, 0xc2, 0x47, 0x31, 0xe2, 0xd9, 0x04,
- 0x9c, 0x91, 0x24, 0x6e, 0x9d, 0xc3, 0x45, 0x5e, 0xc9, 0xcb, 0x32, 0xf4,
- 0x91, 0x37, 0xba, 0x72, 0xab, 0xfe, 0x6e, 0xd6, 0xe1, 0x8c, 0x76, 0x06,
- 0xfe, 0xf7, 0xdd, 0x26, 0x0b, 0xe7, 0x3b, 0xd8, 0x7d, 0x8b, 0x35, 0x24,
- 0x39, 0xa1, 0x2a, 0x72, 0x18, 0x8c, 0x6a, 0x43, 0xc4, 0xad, 0x48, 0x9c,
- 0x71, 0x4a, 0x3a, 0x1c, 0xf1, 0xc8, 0xcd, 0xb4, 0xe6, 0x2d, 0x33, 0x59,
- 0x92, 0x36, 0x78, 0x12, 0x4f, 0x6f, 0xf8, 0x26, 0x4a, 0xd5, 0x0e, 0x6d,
- 0xdb, 0x24, 0xb7, 0x05, 0xe9, 0xb6, 0xb7, 0x09, 0x7b, 0x94, 0xac, 0xa3,
- 0xad, 0x80, 0xb5, 0xee, 0xf1, 0x22, 0x96, 0xe5, 0xfc, 0x76, 0xef, 0x53,
- 0x17, 0x91, 0x3b, 0xb4, 0x11, 0xee, 0xb5, 0x97, 0x50, 0x2f, 0xb8, 0x35,
- 0x8b, 0x88, 0xb7, 0xfd, 0x32, 0x8e, 0x73, 0xba, 0xe5, 0xd3, 0x85, 0xf5,
- 0x90, 0x86, 0x9c, 0x81, 0xa5, 0x7d, 0x7a, 0xfa, 0x76, 0xed, 0x71, 0x1d,
- 0xe9, 0xd7, 0x29, 0x3b, 0x8f, 0x66, 0x09, 0xcc, 0x44, 0x74, 0x80, 0x66,
- 0x70, 0x0e, 0xd1, 0xf5, 0x93, 0x50, 0x9b, 0x81, 0xd0, 0x3d, 0x7c, 0x62,
- 0x53, 0x7d, 0xf2, 0x6b, 0xa6, 0xfa, 0xe4, 0x9f, 0x30, 0xd5, 0x27, 0x6b,
- 0xa7, 0xea, 0x67, 0xf1, 0x94, 0x67, 0x91, 0x2e, 0x6f, 0x9f, 0x36, 0xc5,
- 0x20, 0xbe, 0xe1, 0x54, 0x1e, 0xad, 0x6a, 0x37, 0x22, 0x5d, 0x21, 0xf9,
- 0xfc, 0x36, 0x51, 0x21, 0x81, 0x3e, 0x38, 0x3e, 0xbb, 0x7d, 0xca, 0x62,
- 0x27, 0xcb, 0x69, 0x6c, 0x0f, 0x62, 0x29, 0xb7, 0x8b, 0x4a, 0x59, 0xd5,
- 0x0d, 0xd5, 0x06, 0x36, 0x58, 0xb2, 0x7d, 0x37, 0x18, 0xcd, 0x73, 0x1d,
- 0xcd, 0xf3, 0xae, 0xd1, 0x7c, 0xfa, 0x70, 0x9e, 0x07, 0xc3, 0xf9, 0x85,
- 0xa3, 0x79, 0x1a, 0x8c, 0x26, 0xe6, 0xd1, 0xc4, 0x4b, 0x76, 0xcb, 0x35,
- 0xb7, 0x98, 0x14, 0xfb, 0x6d, 0xf6, 0xec, 0x6e, 0x99, 0x5d, 0x5f, 0x5d,
- 0x1c, 0x99, 0xf3, 0x88, 0x42, 0xfe, 0x67, 0x07, 0xa4, 0x0e, 0x55, 0xda,
- 0x51, 0x2d, 0xb7, 0x29, 0xbd, 0xc6, 0x05, 0x7b, 0x2d, 0xd4, 0x41, 0x1a,
- 0x48, 0xb9, 0xf4, 0x3f, 0xda, 0x6e, 0xe7, 0x99, 0x63, 0x4b, 0x3c, 0xab,
- 0xfc, 0xaa, 0xcc, 0x83, 0x2e, 0xf8, 0x9d, 0xa6, 0xe4, 0x91, 0x27, 0x25,
- 0xab, 0x7d, 0xc9, 0xc7, 0x94, 0x1d, 0xb2, 0xa9, 0x1a, 0x90, 0x49, 0xcd,
- 0x8b, 0xa6, 0x62, 0x98, 0x1f, 0xb1, 0x53, 0x0a, 0x54, 0x25, 0x16, 0x46,
- 0x0c, 0x36, 0xba, 0x9c, 0xc7, 0x57, 0x1d, 0x57, 0x63, 0x7a, 0x95, 0xe5,
- 0xea, 0x20, 0x2d, 0x89, 0xea, 0xe0, 0xd1, 0x56, 0x42, 0x2c, 0x89, 0x8b,
- 0x64, 0xd3, 0xf9, 0x0a, 0x2e, 0xb2, 0x53, 0x9a, 0xe0, 0x78, 0xfc, 0x4d,
- 0xc8, 0x0e, 0x0e, 0x78, 0x05, 0x59, 0xa4, 0x1c, 0xc6, 0x57, 0x2c, 0x5d,
- 0xbe, 0x94, 0x1f, 0x65, 0xc5, 0xbc, 0xfa, 0x8b, 0x6e, 0x79, 0x67, 0xac,
- 0x3a, 0x24, 0xec, 0xfc, 0xfc, 0xea, 0x41, 0xf0, 0x0e, 0xaf, 0x5f, 0xe9,
- 0xd7, 0x51, 0xee, 0x08, 0x3d, 0x14, 0x4d, 0x4e, 0xc6, 0x63, 0x25, 0x5e,
- 0x36, 0x63, 0xad, 0x07, 0x96, 0xcb, 0xe8, 0xf0, 0xeb, 0x63, 0x9e, 0x66,
- 0x9c, 0xce, 0xc5, 0xac, 0xa6, 0xd3, 0x4e, 0x93, 0x39, 0x6b, 0x4c, 0x58,
- 0x33, 0x38, 0x3e, 0xa3, 0xd0, 0x4c, 0xaf, 0xff, 0xf5, 0xde, 0xe6, 0x7f,
- 0xa3, 0x55, 0x8c, 0xb7, 0x9f, 0x8e, 0x76, 0x7a, 0x2c, 0xc2, 0xd3, 0x65,
- 0x95, 0x64, 0xd3, 0x9c, 0x3d, 0x15, 0x93, 0x79, 0x9c, 0xdd, 0x94, 0xa2,
- 0x74, 0x89, 0x26, 0xc2, 0x63, 0x1d, 0xd0, 0xf1, 0x2b, 0x8a, 0x7c, 0x95,
- 0xcd, 0x3a, 0xb6, 0x5c, 0xa7, 0x83, 0x23, 0xaf, 0xe6, 0x52, 0xb8, 0x67,
- 0x88, 0x64, 0x8a, 0x1b, 0x33, 0xcb, 0xf2, 0x95, 0x00, 0xa7, 0x0b, 0x6f,
- 0x1d, 0xc6, 0xe5, 0xc4, 0xfd, 0x46, 0x73, 0xc3, 0x6f, 0x20, 0x66, 0x13,
- 0xd9, 0xb0, 0x3b, 0x5c, 0xce, 0x49, 0x6e, 0x46, 0xdc, 0xd6, 0x2d, 0x78,
- 0x7c, 0x29, 0x53, 0xd7, 0x07, 0xed, 0x86, 0x36, 0xc5, 0x03, 0x7c, 0x45,
- 0x1c, 0xec, 0xf3, 0xb8, 0xac, 0x60, 0xe8, 0x31, 0x0a, 0xe2, 0x07, 0x43,
- 0x51, 0x3a, 0xce, 0xee, 0x39, 0x40, 0xe0, 0x53, 0x44, 0xe9, 0xcb, 0xf4,
- 0x8a, 0x38, 0xa8, 0x58, 0xb8, 0x10, 0x53, 0x60, 0xa1, 0x04, 0xac, 0x9b,
- 0x5d, 0xe7, 0x20, 0x30, 0x92, 0x69, 0x93, 0xf9, 0x65, 0xd7, 0x79, 0x35,
- 0xe5, 0x1c, 0xfa, 0xab, 0x30, 0x63, 0x0c, 0x2c, 0x38, 0x0a, 0xec, 0x80,
- 0x8e, 0xa6, 0xf3, 0x38, 0x5d, 0x94, 0x35, 0xf1, 0x75, 0xd4, 0xc5, 0x4d,
- 0xd8, 0xfc, 0xca, 0xef, 0x4f, 0xd8, 0xa4, 0x5e, 0x94, 0x6c, 0x2a, 0xe1,
- 0x0d, 0x89, 0x4d, 0xa2, 0x16, 0x83, 0xf5, 0x75, 0x32, 0xbd, 0x01, 0xd9,
- 0x05, 0x66, 0xc4, 0x26, 0x47, 0x95, 0x55, 0xc7, 0x82, 0xad, 0x38, 0x9c,
- 0x80, 0x44, 0x0f, 0x76, 0xca, 0xa5, 0xd9, 0x6c, 0x35, 0xc5, 0xb1, 0x65,
- 0xcb, 0x08, 0x89, 0x63, 0x45, 0xcc, 0xe2, 0x4d, 0x25, 0xe1, 0x1b, 0xa0,
- 0x8b, 0x21, 0x11, 0xc1, 0xb2, 0x73, 0x74, 0x70, 0x6e, 0x88, 0x4c, 0x5a,
- 0x63, 0x07, 0xa5, 0xba, 0x02, 0x60, 0x65, 0x37, 0x4d, 0xaf, 0xbe, 0x9a,
- 0x8d, 0xe6, 0x64, 0x6d, 0x07, 0x74, 0xdd, 0xa4, 0x74, 0x7b, 0x9b, 0x7f,
- 0x79, 0x96, 0x2b, 0x29, 0x0d, 0x49, 0x37, 0x2f, 0xd3, 0xa9, 0x18, 0xa5,
- 0xd2, 0xab, 0x84, 0x19, 0x06, 0x0b, 0x9a, 0xd5, 0x7c, 0x21, 0x41, 0x18,
- 0x4d, 0x42, 0x1b, 0x3a, 0x09, 0xad, 0x45, 0x56, 0x21, 0x47, 0x11, 0x75,
- 0xc4, 0xd1, 0x87, 0x99, 0x48, 0x43, 0x83, 0x59, 0x2a, 0xb6, 0x4b, 0x1a,
- 0x8a, 0xf0, 0xcc, 0x26, 0xdf, 0x81, 0x8f, 0xa3, 0xac, 0x88, 0xb7, 0x0c,
- 0xf8, 0x88, 0x4c, 0x61, 0x78, 0x66, 0xa3, 0x9e, 0x59, 0x14, 0xcd, 0x34,
- 0x3a, 0x61, 0x21, 0x90, 0xbd, 0x4d, 0x77, 0xe9, 0x54, 0x1c, 0x0d, 0x70,
- 0x96, 0x75, 0x98, 0x08, 0xa6, 0xf3, 0x94, 0x1f, 0x5c, 0x90, 0x5a, 0xcb,
- 0x6f, 0x89, 0xd4, 0xcc, 0x77, 0x08, 0x69, 0xf0, 0xc4, 0x14, 0x8f, 0xc5,
- 0xbe, 0x01, 0x73, 0x59, 0x79, 0x0d, 0x13, 0x77, 0x5c, 0xa4, 0xf0, 0x46,
- 0xb5, 0x9a, 0x93, 0x31, 0xf3, 0x24, 0xc3, 0x71, 0x42, 0xad, 0x12, 0x83,
- 0xaf, 0xb7, 0x15, 0xe0, 0xec, 0x30, 0xd7, 0x09, 0x0e, 0xce, 0x84, 0xcf,
- 0xab, 0x44, 0xc6, 0x44, 0x2f, 0xf9, 0xee, 0x7a, 0xc5, 0xb3, 0x59, 0xc3,
- 0x12, 0xcf, 0xe0, 0x03, 0xbb, 0xae, 0x1b, 0x83, 0x03, 0xd6, 0x27, 0x26,
- 0x13, 0x69, 0x0d, 0x0e, 0x43, 0xa6, 0x9e, 0xce, 0xbb, 0x9f, 0x28, 0x8a,
- 0xd9, 0xa1, 0x6b, 0x6b, 0xe9, 0x2d, 0x43, 0xb4, 0x35, 0x49, 0x7a, 0x6b,
- 0xee, 0xe7, 0x40, 0xb2, 0x86, 0xeb, 0xbe, 0x37, 0x4e, 0xaa, 0x66, 0x73,
- 0x87, 0xe8, 0x70, 0xbf, 0x17, 0x44, 0x00, 0x48, 0xab, 0xba, 0x76, 0x93,
- 0xc4, 0xfc, 0xb5, 0x62, 0x89, 0x21, 0x26, 0xca, 0x11, 0x64, 0xbb, 0xaf,
- 0xbe, 0x3b, 0x38, 0x79, 0x7f, 0xb4, 0xfb, 0xa7, 0x26, 0xf9, 0xd0, 0x77,
- 0x7b, 0xf2, 0xdd, 0x5e, 0xaf, 0x8b, 0x67, 0x11, 0x05, 0x45, 0x51, 0xff,
- 0x55, 0x3f, 0x2a, 0xef, 0x17, 0x93, 0x7c, 0xee, 0xf8, 0x96, 0x76, 0xc2,
- 0xa3, 0x18, 0xa8, 0xeb, 0xc3, 0x1c, 0xd0, 0x58, 0x18, 0xbe, 0x22, 0x9b,
- 0x63, 0x87, 0x03, 0x54, 0xe5, 0x32, 0x50, 0x40, 0x3c, 0x0b, 0x17, 0xa3,
- 0xac, 0x70, 0xe5, 0xe9, 0x06, 0x71, 0xcb, 0xa5, 0x10, 0xe4, 0x20, 0x92,
- 0x93, 0xd4, 0x64, 0xe7, 0x32, 0x63, 0xe7, 0xda, 0x32, 0x03, 0xa0, 0x2a,
- 0x22, 0x91, 0xc8, 0xda, 0xf7, 0x44, 0xbe, 0x15, 0x5b, 0x4f, 0xde, 0x97,
- 0xc2, 0x54, 0xd2, 0x52, 0xcf, 0x67, 0x93, 0xe1, 0x31, 0xd3, 0x67, 0x7f,
- 0xe5, 0x6d, 0x5c, 0xa9, 0x43, 0xa6, 0xa7, 0x63, 0x59, 0xc6, 0xc4, 0xd1,
- 0x8b, 0x9e, 0x9e, 0x67, 0x1f, 0xe6, 0xa4, 0xf6, 0x01, 0x3e, 0x60, 0x45,
- 0xdb, 0x2e, 0x43, 0xa7, 0x8e, 0x7b, 0xd4, 0x50, 0x2c, 0x8e, 0xae, 0x33,
- 0x8e, 0xc0, 0x07, 0x8a, 0x46, 0xcd, 0x2e, 0xc1, 0x7b, 0x3d, 0x92, 0xfd,
- 0x22, 0xd1, 0xf3, 0x2b, 0xde, 0xbf, 0x26, 0xe9, 0x53, 0x63, 0x93, 0x34,
- 0x33, 0xda, 0x56, 0x35, 0x6c, 0x78, 0xc2, 0x14, 0x3d, 0xcf, 0x95, 0xa5,
- 0x7b, 0x03, 0xab, 0xfa, 0x37, 0x1d, 0x0d, 0x74, 0xda, 0xee, 0x2c, 0x36,
- 0x2c, 0x8f, 0x64, 0x2b, 0x6c, 0xa0, 0x72, 0xb6, 0x1c, 0x39, 0x2d, 0x89,
- 0xb9, 0x67, 0x42, 0xf9, 0xca, 0x75, 0xa3, 0xbc, 0xe8, 0x68, 0xee, 0x5d,
- 0x52, 0x21, 0x2a, 0x60, 0x5b, 0x2f, 0x6d, 0xdb, 0x48, 0xf4, 0x22, 0x03,
- 0x69, 0x11, 0x98, 0x1b, 0xa9, 0xf7, 0x67, 0x8a, 0xa5, 0x35, 0x3c, 0xaa,
- 0xe6, 0x09, 0xc5, 0x26, 0xc7, 0xb8, 0xf2, 0x97, 0x2b, 0x96, 0xca, 0xde,
- 0xe5, 0xad, 0x45, 0x92, 0x19, 0xb8, 0x88, 0x18, 0x78, 0xe1, 0x48, 0x27,
- 0xb7, 0xf3, 0xcb, 0x7d, 0x8d, 0x58, 0x8c, 0x00, 0xad, 0xf9, 0x28, 0x39,
- 0xbd, 0xe8, 0x9a, 0x7c, 0x77, 0xea, 0x47, 0x31, 0xfc, 0x4b, 0x6c, 0x97,
- 0xfc, 0x6f, 0x78, 0xb5, 0x7f, 0xa5, 0xb2, 0xdb, 0x30, 0x2e, 0xa7, 0x69,
- 0xda, 0x25, 0x00, 0x73, 0x08, 0xe4, 0x56, 0x74, 0x04, 0xab, 0x42, 0x74,
- 0x30, 0x3e, 0x3c, 0x3e, 0x76, 0x1e, 0xd2, 0x91, 0x44, 0x14, 0x20, 0xf6,
- 0x51, 0xc5, 0x2c, 0x38, 0x08, 0x24, 0x84, 0x64, 0xd2, 0x9c, 0x5d, 0xc2,
- 0xb6, 0xda, 0xa9, 0x99, 0x26, 0x84, 0xf6, 0xe8, 0x71, 0x36, 0xa9, 0xe2,
- 0x3a, 0xa1, 0x0b, 0xa3, 0x54, 0x4b, 0xfb, 0x9f, 0xaa, 0xfb, 0x65, 0xf2,
- 0xea, 0xa0, 0x37, 0x0a, 0x55, 0x94, 0xe6, 0xda, 0xc7, 0x2b, 0x16, 0xfd,
- 0x85, 0x17, 0xe1, 0x66, 0xe0, 0x55, 0x9e, 0xa9, 0x37, 0x54, 0xd9, 0x12,
- 0x7b, 0x36, 0x16, 0x2c, 0xbe, 0x5d, 0xc2, 0x1f, 0x94, 0x3d, 0x21, 0xcd,
- 0xf0, 0x9e, 0xae, 0xda, 0x45, 0x19, 0xca, 0x37, 0xb8, 0x1d, 0x3f, 0xd5,
- 0x50, 0xa8, 0x26, 0x8b, 0xaf, 0xf8, 0x9d, 0xa8, 0x29, 0xe4, 0xac, 0x95,
- 0xdd, 0x4c, 0xc1, 0xe3, 0x30, 0x8b, 0x51, 0x78, 0xff, 0xe3, 0x60, 0x98,
- 0x9d, 0x46, 0xe2, 0x58, 0x1a, 0x3b, 0xbb, 0x62, 0x6b, 0x67, 0x8b, 0xc9,
- 0xa7, 0x74, 0x7b, 0x13, 0xdf, 0x21, 0x52, 0xca, 0xf8, 0xa7, 0xf3, 0x6d,
- 0xa4, 0x98, 0x3e, 0x6b, 0x14, 0x05, 0x07, 0xd8, 0xd4, 0xb8, 0x3f, 0x4b,
- 0x97, 0x9d, 0x6b, 0x29, 0xd7, 0x39, 0x47, 0x03, 0x42, 0xe8, 0xf0, 0x96,
- 0xe2, 0x35, 0x42, 0xdc, 0xa6, 0xd9, 0x94, 0x55, 0x88, 0x68, 0xc9, 0x0f,
- 0x26, 0x65, 0xd0, 0xaa, 0x07, 0xc2, 0xc4, 0x56, 0x8b, 0x92, 0xdf, 0x97,
- 0xf0, 0xe8, 0x92, 0x62, 0x74, 0x9d, 0x14, 0x7a, 0x14, 0x57, 0xa6, 0x4f,
- 0x88, 0x0b, 0xe9, 0xa3, 0x3a, 0x19, 0x3e, 0xde, 0xb7, 0xde, 0x1e, 0x27,
- 0x89, 0x10, 0x9b, 0x3e, 0x20, 0x1b, 0x19, 0xec, 0x6c, 0xf3, 0x3c, 0xbd,
- 0xc4, 0xd9, 0xe7, 0x6b, 0xe1, 0x31, 0xbd, 0x24, 0x57, 0xce, 0x89, 0x17,
- 0x9c, 0xd3, 0xda, 0xe8, 0x40, 0x7c, 0xed, 0x08, 0x1d, 0xd5, 0x23, 0xdd,
- 0xe4, 0xed, 0x97, 0xec, 0xd2, 0x96, 0xf8, 0x2e, 0x52, 0x3c, 0xf9, 0x96,
- 0x72, 0xa2, 0xc2, 0x28, 0x3a, 0x84, 0x4d, 0x93, 0xdb, 0x28, 0xd1, 0x88,
- 0xb1, 0x11, 0xbf, 0x55, 0x2d, 0xea, 0x89, 0x5d, 0xc4, 0x98, 0xe7, 0x5c,
- 0x18, 0x1b, 0x6d, 0xc2, 0x5d, 0x82, 0xa8, 0x9c, 0x5a, 0x53, 0xee, 0xa2,
- 0xc7, 0x6b, 0xdd, 0xc4, 0x28, 0x57, 0xff, 0x66, 0xb9, 0x05, 0xa1, 0x28,
- 0xcb, 0xdd, 0xcb, 0xec, 0x7a, 0xbb, 0xc9, 0xf2, 0x3b, 0x92, 0x75, 0xb2,
- 0x5c, 0x4e, 0x98, 0xf1, 0x0f, 0x1e, 0x75, 0xf3, 0x9a, 0x25, 0x7e, 0x17,
- 0xdc, 0x01, 0xe1, 0x93, 0x95, 0x0b, 0x87, 0x53, 0x83, 0xb0, 0xb2, 0x6c,
- 0x5b, 0xb6, 0xa8, 0x4b, 0xb3, 0x55, 0xd6, 0x2d, 0xd2, 0x00, 0xdc, 0x26,
- 0xd0, 0x8a, 0xfc, 0x0d, 0x62, 0xd7, 0x7a, 0x6c, 0x4a, 0x15, 0x3b, 0x5e,
- 0x07, 0x51, 0x6f, 0xd8, 0x1b, 0x74, 0x9c, 0x3c, 0x9b, 0x54, 0x73, 0x5c,
- 0x8e, 0x5d, 0x74, 0x5c, 0x12, 0x70, 0xc4, 0xb5, 0x5c, 0x5f, 0x1a, 0xf3,
- 0xa3, 0x37, 0xb6, 0x0c, 0xc8, 0xe6, 0x91, 0x64, 0x57, 0x88, 0xe0, 0xe3,
- 0x93, 0xd4, 0x14, 0xce, 0xbd, 0x7d, 0x40, 0x2e, 0x6e, 0xa7, 0xea, 0xe8,
- 0xd0, 0x46, 0xd1, 0x41, 0x26, 0x41, 0x5d, 0x77, 0x31, 0x48, 0xcf, 0x75,
- 0x01, 0x39, 0xa7, 0xb9, 0xda, 0xb9, 0x53, 0x93, 0x6a, 0xb7, 0xd6, 0x43,
- 0x77, 0x85, 0x75, 0x15, 0xf1, 0x21, 0x20, 0x1e, 0xdd, 0x87, 0x64, 0xac,
- 0x76, 0x02, 0xb8, 0xca, 0xdd, 0xa2, 0xc8, 0xbd, 0x71, 0x77, 0x9d, 0xcf,
- 0xc5, 0x75, 0xd7, 0x68, 0xce, 0x0b, 0xbc, 0xd1, 0x1d, 0xdc, 0xce, 0xa2,
- 0x69, 0xb3, 0x8d, 0xe5, 0x96, 0xde, 0x2f, 0x12, 0xd8, 0x6d, 0x39, 0x62,
- 0x8f, 0xb4, 0x62, 0xea, 0x6b, 0x9e, 0xc4, 0xc5, 0xfc, 0xde, 0x84, 0xa1,
- 0xe1, 0x6d, 0xa3, 0x39, 0xac, 0x28, 0x9b, 0x45, 0x88, 0xc2, 0xe2, 0x22,
- 0xe3, 0x67, 0xd4, 0x55, 0x68, 0xc1, 0xb2, 0x95, 0x38, 0x6f, 0xc5, 0xc3,
- 0xcc, 0xb7, 0xf2, 0x6d, 0xca, 0xaa, 0x17, 0x11, 0x1b, 0x09, 0xf0, 0x4d,
- 0x4a, 0x64, 0xa3, 0x26, 0x48, 0x06, 0x4d, 0x4a, 0x64, 0xcc, 0x75, 0x1a,
- 0xe8, 0x6b, 0x74, 0x14, 0xaf, 0xe9, 0x86, 0x24, 0x25, 0x72, 0x15, 0xaf,
- 0x5b, 0x2e, 0xbd, 0xca, 0xcc, 0x2b, 0xfc, 0xd8, 0xed, 0x5a, 0x3f, 0x8f,
- 0x5d, 0x12, 0xe8, 0x9a, 0xbb, 0xf7, 0x50, 0x36, 0x8f, 0x98, 0x6b, 0xb6,
- 0xa2, 0x0b, 0xb8, 0x8a, 0x5e, 0xe6, 0x97, 0x97, 0x44, 0xea, 0x5f, 0xb4,
- 0x24, 0x70, 0x79, 0x64, 0xfb, 0x1c, 0x11, 0xf4, 0x01, 0x4b, 0xaf, 0x07,
- 0x95, 0x45, 0xb1, 0x9d, 0x92, 0xab, 0x94, 0xf7, 0x22, 0x92, 0xe6, 0x46,
- 0x1d, 0x22, 0x50, 0xfd, 0x89, 0xe0, 0x22, 0x12, 0xaf, 0xb8, 0x0f, 0xb9,
- 0xa7, 0xab, 0xba, 0x32, 0x6f, 0x92, 0x4e, 0xa3, 0x29, 0x14, 0xdf, 0xa4,
- 0xcb, 0x25, 0x6f, 0x16, 0x82, 0x75, 0x9d, 0xaa, 0xc4, 0xad, 0x4d, 0x12,
- 0x3a, 0x13, 0xd8, 0x53, 0xf3, 0x29, 0xe7, 0x2b, 0x12, 0x00, 0x4c, 0x0e,
- 0x9c, 0x24, 0x74, 0xd2, 0x9b, 0xcd, 0x99, 0x64, 0xef, 0xe3, 0xb2, 0x54,
- 0x92, 0x9a, 0x71, 0x0c, 0x56, 0xa6, 0x0c, 0x94, 0xb7, 0xc9, 0x87, 0x7a,
- 0xa8, 0x66, 0xd9, 0x75, 0xf8, 0xbd, 0x15, 0xcb, 0x1d, 0xe8, 0xf1, 0xf1,
- 0xff, 0x3e, 0xf2, 0x51, 0x74, 0x2e, 0x4c, 0xed, 0x1e, 0xd4, 0xde, 0x75,
- 0x41, 0x11, 0x63, 0x39, 0x8c, 0x86, 0x3d, 0x0c, 0x84, 0x39, 0xad, 0x5d,
- 0x02, 0x74, 0x35, 0xe6, 0xec, 0x7a, 0x96, 0x70, 0x43, 0xc4, 0xf1, 0x33,
- 0xc1, 0xb1, 0x1e, 0x59, 0x24, 0xdb, 0xec, 0xf0, 0x6f, 0x1b, 0x98, 0x24,
- 0x09, 0x42, 0x17, 0xdb, 0xcb, 0x51, 0xc7, 0x95, 0x44, 0x7e, 0x42, 0xa2,
- 0xe1, 0xef, 0x64, 0x7f, 0x24, 0x94, 0x69, 0x1b, 0xe2, 0xa7, 0x04, 0xe2,
- 0xb5, 0x79, 0x81, 0x1a, 0x5c, 0x24, 0xec, 0xa8, 0x83, 0x99, 0xfd, 0x03,
- 0xcd, 0x40, 0xd3, 0x74, 0x79, 0xcd, 0xd2, 0xf8, 0x4b, 0x44, 0x37, 0xb0,
- 0xe5, 0x49, 0x3e, 0xf8, 0xa2, 0xd3, 0x36, 0x3e, 0xd6, 0x73, 0x51, 0xea,
- 0x4d, 0x6a, 0x6f, 0x2b, 0xff, 0x4a, 0x2d, 0xbe, 0xdc, 0xe2, 0x25, 0x35,
- 0xa2, 0x86, 0x9a, 0x6e, 0xb2, 0x1c, 0x3a, 0x92, 0xf6, 0xb2, 0x68, 0xf5,
- 0x3e, 0x04, 0x05, 0x31, 0xa0, 0xf6, 0xed, 0x28, 0x3a, 0xe7, 0x7b, 0x72,
- 0xb5, 0xe4, 0x10, 0x45, 0x64, 0xa8, 0xe0, 0xf3, 0x96, 0xe7, 0xab, 0xac,
- 0x42, 0x07, 0x2e, 0x52, 0x38, 0xc2, 0xee, 0xb2, 0x9a, 0x60, 0x94, 0x86,
- 0xdf, 0x91, 0xac, 0xba, 0xdf, 0x34, 0x0c, 0xf9, 0x08, 0x71, 0xe2, 0x8d,
- 0x59, 0x59, 0xce, 0x11, 0x96, 0x3f, 0xcb, 0xa7, 0xe5, 0x76, 0xbc, 0x5c,
- 0x96, 0xdb, 0x36, 0xb8, 0x5a, 0x00, 0xbe, 0x69, 0xc3, 0xe3, 0x71, 0x30,
- 0x37, 0xbe, 0x76, 0xc5, 0x5e, 0xe5, 0x04, 0xb0, 0x39, 0x3c, 0x70, 0x99,
- 0x9a, 0x5d, 0x25, 0xa8, 0xe6, 0xeb, 0x6c, 0x75, 0x71, 0x32, 0xc6, 0x72,
- 0x35, 0x6f, 0x4e, 0x0e, 0x09, 0xb7, 0xcd, 0xe1, 0xb6, 0xad, 0x69, 0x28,
- 0x78, 0xa2, 0x34, 0x8d, 0xc7, 0x87, 0xf8, 0x70, 0xbc, 0x62, 0x11, 0x86,
- 0xba, 0x28, 0xee, 0x23, 0xb3, 0x0e, 0x37, 0x69, 0x9f, 0x66, 0x1b, 0x7d,
- 0xf2, 0x7f, 0xba, 0x10, 0x57, 0x69, 0x35, 0xba, 0x4c, 0x66, 0x79, 0x11,
- 0xb7, 0x4c, 0x68, 0x39, 0x27, 0x48, 0x60, 0x75, 0xa6, 0xf4, 0xd4, 0x36,
- 0xc9, 0xe5, 0x1f, 0x68, 0xbd, 0x46, 0xfc, 0x3b, 0x74, 0x3e, 0x59, 0x34,
- 0xfb, 0x98, 0xd7, 0xeb, 0x77, 0xaf, 0x11, 0xab, 0x47, 0x87, 0xa1, 0xfc,
- 0x2d, 0xe9, 0x9a, 0x64, 0x34, 0x38, 0x12, 0x66, 0xdd, 0x42, 0xe1, 0xb9,
- 0x19, 0x0b, 0x23, 0xff, 0xa4, 0x8f, 0xdd, 0x6b, 0x66, 0xa6, 0x91, 0x18,
- 0x76, 0x95, 0xd3, 0x75, 0x7a, 0xbd, 0x68, 0xae, 0xa7, 0x28, 0xef, 0xe6,
- 0x69, 0xd3, 0xf4, 0xa7, 0xa8, 0xe4, 0xb8, 0x7e, 0x61, 0x08, 0xab, 0x2c,
- 0xe8, 0x80, 0x16, 0x83, 0x58, 0x45, 0xa6, 0x82, 0x50, 0xc7, 0xf6, 0x34,
- 0x66, 0x6e, 0x31, 0xf0, 0xca, 0xee, 0x60, 0x41, 0x2f, 0xc5, 0x2e, 0xb9,
- 0xca, 0x7c, 0x9a, 0x9c, 0xd8, 0xb3, 0xd9, 0x72, 0xdd, 0x35, 0x3a, 0x2c,
- 0x51, 0xe3, 0x12, 0xaf, 0x2f, 0x15, 0x8e, 0xeb, 0x90, 0x97, 0x97, 0x99,
- 0xdd, 0xcb, 0x92, 0x24, 0x1a, 0xea, 0xe7, 0x8b, 0x56, 0xe4, 0xcf, 0xc7,
- 0x74, 0xb1, 0x5a, 0x44, 0xd8, 0x07, 0xb1, 0x99, 0xeb, 0x93, 0xa6, 0x6c,
- 0xf0, 0x2d, 0x8d, 0xd8, 0x18, 0x74, 0xdc, 0x2f, 0x03, 0x4e, 0xd0, 0x66,
- 0x9b, 0x15, 0x89, 0x50, 0xa6, 0x35, 0x69, 0x7c, 0xd5, 0x82, 0x23, 0x23,
- 0xea, 0x1c, 0x24, 0x5a, 0x5e, 0xc7, 0x65, 0xe2, 0x03, 0x6a, 0x65, 0xbd,
- 0xc3, 0xd8, 0xe8, 0x5a, 0x88, 0xb4, 0x25, 0x4e, 0x78, 0x7e, 0x4b, 0xb2,
- 0x4d, 0x9a, 0xcf, 0x9c, 0x2f, 0xc5, 0xee, 0xe6, 0x68, 0xc8, 0xcd, 0xf1,
- 0x6d, 0xa1, 0xdf, 0x34, 0x15, 0xdb, 0x8f, 0xf0, 0xd9, 0x8c, 0x61, 0xbe,
- 0x34, 0xdf, 0xdf, 0x67, 0xa3, 0x27, 0x7b, 0xec, 0xd4, 0x0d, 0x89, 0x54,
- 0x23, 0xc9, 0x89, 0xe9, 0x4c, 0xd3, 0x85, 0x0b, 0xcf, 0x5b, 0xaf, 0xd6,
- 0x40, 0xc6, 0x5b, 0xb0, 0x98, 0xb0, 0x88, 0x3f, 0x62, 0xcd, 0x7f, 0x7b,
- 0x8b, 0xc0, 0x50, 0xa4, 0x42, 0xd2, 0xe0, 0x8a, 0x26, 0xc1, 0xd5, 0xbc,
- 0x60, 0xb4, 0x38, 0x7f, 0x21, 0x7a, 0x6d, 0xd8, 0x87, 0x2c, 0x5c, 0xad,
- 0x91, 0x18, 0x21, 0x6d, 0x76, 0x99, 0x84, 0x68, 0x2b, 0x88, 0xdc, 0x39,
- 0xd2, 0x20, 0x62, 0xb3, 0x12, 0x47, 0x8a, 0xf1, 0x89, 0xcf, 0xe9, 0x83,
- 0xeb, 0x94, 0xc6, 0x5e, 0x4c, 0xaf, 0xef, 0x59, 0xb7, 0x61, 0x73, 0x2d,
- 0xbb, 0xb4, 0x1e, 0xb0, 0x07, 0xa0, 0x0f, 0x35, 0xa1, 0xd2, 0xe0, 0x23,
- 0x3e, 0x3c, 0xf4, 0x98, 0x49, 0x09, 0x8d, 0xf1, 0xb1, 0xc4, 0xcd, 0x07,
- 0x37, 0x99, 0x97, 0x09, 0x8e, 0x58, 0xd7, 0xe8, 0x86, 0x79, 0xa0, 0x71,
- 0xe0, 0x72, 0x66, 0x7d, 0x28, 0x2d, 0x58, 0xde, 0x15, 0x6b, 0x9f, 0x74,
- 0xc5, 0x36, 0x6b, 0xe9, 0x8d, 0xb5, 0x30, 0xd6, 0xd6, 0xee, 0xdb, 0x34,
- 0xc2, 0xfa, 0xb0, 0xbe, 0x6e, 0x6b, 0x6f, 0x9e, 0xba, 0x96, 0x06, 0x92,
- 0xeb, 0x57, 0xa6, 0xaa, 0xd9, 0xaa, 0xa4, 0x96, 0x46, 0x24, 0x5c, 0x87,
- 0xc5, 0x1b, 0x1a, 0x8a, 0xa4, 0x9f, 0x32, 0x27, 0xa7, 0xfd, 0xbb, 0xac,
- 0x5a, 0x26, 0xe1, 0x60, 0x4b, 0xeb, 0x3b, 0x3d, 0xbf, 0x64, 0xe9, 0x92,
- 0x68, 0xa4, 0x8a, 0x4e, 0xde, 0xf0, 0xcd, 0x7c, 0x78, 0x4e, 0x3f, 0x53,
- 0x73, 0x70, 0xb2, 0xd8, 0x8e, 0xf4, 0x51, 0xb6, 0x9e, 0xbc, 0xfd, 0x6e,
- 0x1c, 0x6d, 0x9e, 0x8e, 0xb7, 0x9f, 0xbc, 0xd8, 0x69, 0xeb, 0xf1, 0x9b,
- 0x9c, 0xe3, 0xaa, 0x61, 0x89, 0x88, 0xbb, 0x78, 0xba, 0x53, 0x0f, 0x6a,
- 0xe1, 0xbe, 0x78, 0x25, 0xa1, 0x81, 0x77, 0x2a, 0xdf, 0xe3, 0x6d, 0xce,
- 0xd2, 0xdd, 0xf2, 0xb9, 0x41, 0x62, 0xd3, 0xd5, 0x99, 0x9e, 0x1d, 0xbd,
- 0x35, 0xe3, 0xa2, 0x04, 0x5c, 0x44, 0x87, 0x34, 0x6a, 0xf6, 0x8c, 0xb4,
- 0x09, 0xeb, 0x3c, 0xb9, 0x35, 0x0b, 0xe5, 0x09, 0x5f, 0x86, 0x60, 0x38,
- 0x6c, 0x02, 0x35, 0xb1, 0x61, 0x99, 0xb0, 0x3c, 0xe8, 0xdf, 0x57, 0x01,
- 0x57, 0x2e, 0xe0, 0x16, 0xf3, 0x99, 0x24, 0x61, 0x90, 0x00, 0x89, 0xde,
- 0x9c, 0xbf, 0xf5, 0xdb, 0x9d, 0xc0, 0x8e, 0x20, 0x96, 0xdd, 0x17, 0xa3,
- 0xcf, 0xb6, 0xdc, 0x5a, 0xce, 0x06, 0x16, 0x5b, 0xfc, 0xf2, 0x01, 0x77,
- 0x02, 0x71, 0x11, 0xe5, 0xb6, 0x49, 0x98, 0xbd, 0x81, 0xf7, 0x60, 0xec,
- 0x47, 0x98, 0xbd, 0xf9, 0xc1, 0x02, 0x77, 0x43, 0x53, 0xbe, 0xd7, 0x04,
- 0x6c, 0x4b, 0xe2, 0x83, 0x42, 0x13, 0x6b, 0x60, 0x50, 0x1c, 0x4d, 0x8a,
- 0xfc, 0x8e, 0x4d, 0x35, 0x12, 0xe8, 0x2e, 0xb4, 0xc9, 0x26, 0x24, 0xd8,
- 0x6f, 0xa2, 0xeb, 0xb8, 0xe5, 0xef, 0xa1, 0x39, 0x6b, 0xe8, 0x6a, 0xcc,
- 0x46, 0xde, 0xb7, 0x27, 0x12, 0xea, 0xcd, 0xb7, 0xd7, 0x52, 0xbd, 0xf9,
- 0xe8, 0x67, 0x35, 0x21, 0x0e, 0xcf, 0x1a, 0x60, 0x25, 0xa2, 0x61, 0x5a,
- 0x76, 0xb1, 0x5e, 0x18, 0x01, 0x9d, 0x44, 0xbe, 0xec, 0x72, 0xa1, 0xe8,
- 0x7d, 0x68, 0xb6, 0x6e, 0x6c, 0x26, 0xa9, 0xba, 0x74, 0x87, 0xdd, 0x2f,
- 0x9b, 0x94, 0x43, 0x02, 0xdb, 0x5c, 0x4d, 0x5d, 0xdb, 0x1f, 0x87, 0x24,
- 0xd3, 0x0d, 0x79, 0x70, 0x43, 0x6a, 0x5e, 0xbc, 0xc0, 0xec, 0x53, 0x3f,
- 0xa4, 0x2b, 0x9a, 0x09, 0x85, 0x9a, 0x1f, 0xbe, 0xe1, 0xad, 0xe0, 0x47,
- 0x5a, 0xdb, 0xc7, 0xbb, 0xe4, 0x42, 0xc0, 0x9d, 0x7a, 0x85, 0xd5, 0x13,
- 0xbb, 0x19, 0x7f, 0x23, 0x56, 0x57, 0xd8, 0x87, 0x39, 0xad, 0x5a, 0xbd,
- 0x35, 0x24, 0xce, 0xb7, 0x0c, 0x40, 0x6c, 0x8a, 0x2f, 0xee, 0x25, 0x82,
- 0x59, 0x2d, 0xe5, 0xe6, 0x32, 0x74, 0xc6, 0x00, 0x69, 0x52, 0x9e, 0xf4,
- 0xa6, 0xf9, 0x9c, 0xc5, 0xb8, 0x61, 0xcb, 0x14, 0x0b, 0x9f, 0x36, 0xbf,
- 0x26, 0xc1, 0xf9, 0x9c, 0x9c, 0x2b, 0x1b, 0x21, 0x8e, 0x72, 0xe4, 0xa7,
- 0xc5, 0x30, 0x81, 0x5b, 0xc3, 0x6e, 0x11, 0x3a, 0x75, 0x66, 0x9f, 0x13,
- 0x50, 0xfa, 0x48, 0x70, 0x3b, 0x04, 0x08, 0x4a, 0x82, 0x1c, 0x8b, 0x50,
- 0xf0, 0x3c, 0xab, 0x45, 0x18, 0x0f, 0x5b, 0xf6, 0x12, 0x35, 0xbb, 0x0c,
- 0x02, 0x17, 0x56, 0xca, 0xf7, 0x44, 0x98, 0x85, 0xe4, 0x2c, 0xee, 0xc4,
- 0x79, 0x8b, 0x2b, 0xfe, 0xc4, 0xcc, 0x88, 0x2d, 0x13, 0x03, 0x02, 0x6e,
- 0x5c, 0xea, 0x11, 0xac, 0x51, 0xff, 0x3a, 0x14, 0xf7, 0x12, 0x84, 0x8a,
- 0x15, 0xcb, 0x62, 0x6a, 0xa6, 0xea, 0x0f, 0x67, 0x91, 0x7a, 0xea, 0x32,
- 0x5a, 0x09, 0xda, 0xc7, 0xb6, 0xbe, 0x3b, 0x9f, 0xbf, 0x9a, 0x93, 0xf6,
- 0x7d, 0xdf, 0x8f, 0x34, 0x45, 0x46, 0x03, 0xd9, 0xd9, 0xbe, 0x1b, 0x47,
- 0xb2, 0x95, 0xd1, 0xf4, 0x7a, 0x95, 0xdd, 0x98, 0xb0, 0x33, 0xcf, 0x73,
- 0x0e, 0x1d, 0xe0, 0xa0, 0xfa, 0x46, 0x73, 0xfd, 0xa0, 0xb3, 0x7f, 0x0d,
- 0xdb, 0xee, 0x5c, 0x65, 0xb1, 0x86, 0x49, 0x7e, 0x86, 0x5b, 0x1b, 0x77,
- 0xbb, 0x49, 0x86, 0x6a, 0xf4, 0xe5, 0xc0, 0x3c, 0xd9, 0x55, 0xe0, 0x55,
- 0x89, 0xdb, 0x07, 0xd1, 0x5b, 0xd2, 0x60, 0x5f, 0x74, 0x0d, 0x8a, 0x0b,
- 0x8c, 0x4d, 0xb7, 0xe6, 0xbe, 0xf5, 0xc6, 0x4f, 0xe7, 0xbd, 0xe9, 0xb8,
- 0x2e, 0x3d, 0x7a, 0x03, 0x1c, 0xa5, 0xa3, 0xe8, 0x6d, 0x98, 0xfc, 0x56,
- 0x8f, 0x74, 0x70, 0x3b, 0x39, 0x8a, 0xce, 0x68, 0xbd, 0x86, 0x2d, 0x67,
- 0xd6, 0x55, 0xd0, 0x5c, 0xec, 0x47, 0x3b, 0x8b, 0xfa, 0x97, 0x79, 0x3e,
- 0x89, 0x0b, 0xbf, 0xf8, 0xf0, 0xc8, 0x83, 0x12, 0x24, 0x00, 0x84, 0xd7,
- 0xa3, 0x6d, 0x90, 0xc6, 0x41, 0xfc, 0x52, 0xde, 0x1d, 0xa9, 0x2c, 0x13,
- 0x1e, 0xd0, 0x2a, 0x9f, 0xcf, 0xdc, 0x52, 0x84, 0xbd, 0x76, 0x6c, 0x1a,
- 0x6f, 0xea, 0x80, 0xa6, 0x53, 0x14, 0x29, 0x67, 0xa2, 0x16, 0x49, 0xb5,
- 0x2a, 0x32, 0xc9, 0x14, 0xcb, 0x92, 0x3b, 0x71, 0x24, 0x1a, 0x73, 0xe7,
- 0x18, 0x10, 0x36, 0x90, 0xd4, 0x95, 0xf3, 0xe1, 0x6b, 0x30, 0xf1, 0xd5,
- 0x62, 0x69, 0xf1, 0x1c, 0x9d, 0x17, 0xe3, 0xf7, 0xb0, 0x33, 0x6b, 0xaa,
- 0x96, 0xa4, 0x8e, 0x9a, 0x4b, 0xcc, 0xb8, 0x5b, 0xcd, 0xfa, 0xd4, 0x6d,
- 0xca, 0xf4, 0x57, 0x92, 0x38, 0x00, 0x5d, 0xf6, 0x25, 0x2d, 0x41, 0x90,
- 0xc5, 0xa9, 0x3e, 0x2a, 0xe1, 0x54, 0xda, 0x4d, 0xa7, 0x9f, 0x80, 0x55,
- 0x0a, 0x71, 0x4c, 0xa7, 0xb0, 0x22, 0xf3, 0x3d, 0x43, 0xaf, 0x53, 0x53,
- 0x23, 0x75, 0x17, 0x07, 0xb9, 0x8b, 0x36, 0xde, 0x29, 0x6f, 0x56, 0x9b,
- 0x68, 0x90, 0x98, 0x82, 0x35, 0xc7, 0xa5, 0xa4, 0x5a, 0x82, 0x83, 0x09,
- 0xc9, 0xdc, 0x4d, 0x1e, 0x38, 0x8d, 0x54, 0x36, 0x9b, 0xb4, 0xdd, 0x0e,
- 0x66, 0x8d, 0x95, 0x19, 0xff, 0x0b, 0x2c, 0x0a, 0x6b, 0x9c, 0x6a, 0x92,
- 0xdb, 0x33, 0x91, 0x23, 0x23, 0x76, 0xd7, 0x56, 0xf4, 0x4e, 0xe0, 0xb2,
- 0x6b, 0xad, 0x6c, 0x4d, 0x18, 0x16, 0xf9, 0x8b, 0x3a, 0x0b, 0xec, 0x4d,
- 0x4e, 0x41, 0x54, 0xc7, 0x32, 0x84, 0x0b, 0x2f, 0x48, 0xb4, 0x84, 0x0c,
- 0x9e, 0x59, 0x4f, 0x57, 0xab, 0xa7, 0xda, 0xdc, 0x4a, 0x6c, 0xf1, 0xac,
- 0x22, 0xe2, 0x7c, 0x16, 0xbf, 0x69, 0x98, 0x8f, 0xbf, 0x92, 0xba, 0x25,
- 0x0b, 0xd6, 0x4b, 0xbc, 0xf4, 0xd1, 0x7a, 0x53, 0x6f, 0x9e, 0x07, 0x85,
- 0x12, 0xf1, 0x7b, 0x31, 0x87, 0x54, 0xcf, 0x1d, 0x0c, 0x8e, 0x73, 0x88,
- 0xf8, 0x0d, 0x97, 0x2c, 0x89, 0xca, 0x12, 0x4f, 0x43, 0xa4, 0xdf, 0x12,
- 0x68, 0xd9, 0xe3, 0xce, 0x91, 0x55, 0x44, 0x8f, 0x65, 0x9e, 0xdc, 0x86,
- 0x49, 0x1f, 0x8d, 0x3c, 0x6e, 0x30, 0xcb, 0x4f, 0xe2, 0x95, 0xa1, 0x7f,
- 0xbf, 0x93, 0x5d, 0x4a, 0x4e, 0x79, 0x14, 0xbd, 0x76, 0x97, 0xfa, 0x12,
- 0x26, 0x0d, 0xc5, 0x3d, 0x90, 0xa4, 0x41, 0x03, 0x3d, 0x68, 0x5c, 0xf2,
- 0x1d, 0xd1, 0x7b, 0x03, 0x9a, 0x1f, 0x72, 0x7d, 0x70, 0xaa, 0x1c, 0xe3,
- 0x90, 0x1c, 0x5a, 0x65, 0x2d, 0x8e, 0xb7, 0x08, 0xf9, 0xb0, 0x84, 0xc4,
- 0xd4, 0x35, 0xeb, 0x88, 0x9d, 0x9a, 0x42, 0x90, 0x2f, 0x5d, 0xee, 0x54,
- 0x96, 0x20, 0x62, 0x9a, 0x36, 0xfc, 0xd3, 0x8c, 0xdc, 0x6b, 0xe9, 0x06,
- 0xd0, 0x14, 0x3e, 0x05, 0xa6, 0x6d, 0x64, 0x95, 0xd0, 0x2a, 0x71, 0x8e,
- 0x48, 0x00, 0x24, 0xd6, 0x3a, 0x2e, 0x15, 0xcc, 0x64, 0x22, 0x4b, 0xf4,
- 0x00, 0xe9, 0x38, 0xd9, 0xe2, 0x41, 0xea, 0xb9, 0x50, 0x53, 0xbe, 0xd2,
- 0xce, 0xc0, 0x2d, 0xb9, 0xf2, 0x42, 0xf1, 0xa1, 0x28, 0x4f, 0x37, 0x19,
- 0xa4, 0xe3, 0x36, 0x90, 0xf4, 0x2f, 0x5e, 0x7a, 0x18, 0x1b, 0x24, 0x53,
- 0x82, 0x9b, 0x4e, 0x0a, 0x16, 0x81, 0x4a, 0x48, 0x4c, 0x66, 0x26, 0xa9,
- 0xa7, 0x74, 0xec, 0x7e, 0xce, 0x6a, 0x4d, 0x4b, 0x59, 0x03, 0xc9, 0x1c,
- 0x7e, 0x7d, 0x0c, 0x53, 0xd2, 0x3c, 0x25, 0x7e, 0x3a, 0x90, 0x6e, 0x64,
- 0x3a, 0x82, 0xb6, 0xe2, 0xee, 0xe2, 0xab, 0x34, 0x33, 0x25, 0x26, 0x4c,
- 0x39, 0x73, 0xee, 0x2f, 0x5e, 0x69, 0x8b, 0xa5, 0x77, 0x09, 0x87, 0xd8,
- 0xe3, 0xd8, 0x84, 0x57, 0x17, 0x17, 0x16, 0x7b, 0xd3, 0x69, 0xf7, 0xda,
- 0xa1, 0x6b, 0x4d, 0x00, 0x64, 0xf9, 0x58, 0x2c, 0xea, 0x60, 0xaf, 0x2d,
- 0xcb, 0x95, 0xdf, 0x64, 0x81, 0xae, 0x49, 0xca, 0xfd, 0x8d, 0x96, 0x37,
- 0x0d, 0xfd, 0x77, 0x63, 0x4b, 0xc9, 0xe9, 0xf6, 0xe1, 0x2a, 0xe8, 0xc5,
- 0x2d, 0x66, 0x12, 0x4a, 0xdf, 0x22, 0xf0, 0x8b, 0xbc, 0x1e, 0xaf, 0x69,
- 0x8e, 0x27, 0xf6, 0xef, 0x1a, 0xc5, 0x45, 0x27, 0x02, 0x9a, 0x28, 0xac,
- 0x22, 0x9a, 0xda, 0x62, 0x4d, 0xb9, 0x58, 0x58, 0x7c, 0x12, 0xb7, 0x42,
- 0x59, 0xdc, 0x21, 0xa1, 0x1b, 0xe4, 0x15, 0xf0, 0x41, 0xa2, 0x2f, 0x23,
- 0x8d, 0x2f, 0x22, 0x1a, 0x8f, 0x43, 0xff, 0x06, 0xae, 0x24, 0x0c, 0x1e,
- 0xb7, 0x2b, 0x96, 0xa1, 0xbb, 0x39, 0x44, 0xf9, 0x84, 0xab, 0x27, 0xe4,
- 0xc7, 0x69, 0xc1, 0xa5, 0xc0, 0x17, 0xfd, 0x4b, 0x73, 0xf1, 0x5e, 0x3d,
- 0xbe, 0x7a, 0xbf, 0x70, 0xf1, 0x1e, 0x59, 0xbd, 0x8b, 0x6b, 0x49, 0x06,
- 0x48, 0x10, 0xc3, 0xf6, 0x2a, 0x88, 0xa9, 0x82, 0x35, 0x0b, 0x51, 0xbd,
- 0x3e, 0xb6, 0xaa, 0x7e, 0x34, 0x03, 0x0f, 0xd6, 0xab, 0x7f, 0xd8, 0xae,
- 0x83, 0x1a, 0x6d, 0xf4, 0xdd, 0xcd, 0x89, 0x27, 0x83, 0x06, 0x8f, 0x48,
- 0x43, 0xb7, 0xd9, 0x02, 0x66, 0xc1, 0xaf, 0x73, 0x92, 0xcb, 0x47, 0x22,
- 0xff, 0x4a, 0x48, 0x19, 0x67, 0xaf, 0x43, 0xc7, 0xa9, 0xa9, 0x3a, 0x33,
- 0x33, 0xcb, 0xb4, 0xe6, 0xf7, 0xa5, 0x71, 0xf6, 0x47, 0x27, 0x57, 0x0b,
- 0xc1, 0x42, 0xf4, 0x5f, 0xa4, 0x19, 0xbe, 0x2c, 0xeb, 0x84, 0x9e, 0xb7,
- 0x0e, 0x47, 0xa0, 0x71, 0x32, 0x1f, 0x49, 0xcd, 0xe4, 0x68, 0x4c, 0x7f,
- 0x6b, 0x50, 0x5f, 0xb0, 0x58, 0x75, 0x41, 0xb1, 0x10, 0xaf, 0x5f, 0xab,
- 0x94, 0x57, 0xca, 0xb6, 0x8f, 0x15, 0xfa, 0xce, 0xed, 0xfb, 0x3f, 0x7d,
- 0x8a, 0x70, 0xc9, 0x58, 0xd8, 0xb5, 0x4c, 0x53, 0xdd, 0x98, 0x9e, 0x28,
- 0xae, 0x38, 0x76, 0x85, 0x2d, 0xd6, 0x7f, 0x5d, 0xc1, 0xbf, 0x7b, 0xb5,
- 0x8e, 0x09, 0xe0, 0x82, 0x62, 0x7f, 0x25, 0xbb, 0xe2, 0xe6, 0xd0, 0x06,
- 0xa9, 0x69, 0x50, 0xb9, 0x57, 0xf3, 0x87, 0x88, 0x26, 0x54, 0xa2, 0x15,
- 0x4a, 0x7c, 0x80, 0x58, 0x1d, 0x79, 0x36, 0x28, 0x73, 0x92, 0x04, 0x53,
- 0xee, 0xa0, 0x40, 0xba, 0xa9, 0x92, 0x79, 0x72, 0xa5, 0x96, 0xaa, 0xa3,
- 0xef, 0x8e, 0x4e, 0x5a, 0x02, 0x57, 0x25, 0x9f, 0x3b, 0xdf, 0x63, 0x60,
- 0xd0, 0x30, 0x78, 0x12, 0x60, 0xf6, 0xc8, 0x8d, 0xc1, 0x40, 0x11, 0xd2,
- 0x62, 0x67, 0x34, 0x2b, 0x3d, 0x4c, 0xf7, 0x53, 0x62, 0x2e, 0xb8, 0x82,
- 0xed, 0x82, 0x33, 0x81, 0x6a, 0x2a, 0x47, 0x12, 0x8a, 0x83, 0x6b, 0xe9,
- 0xeb, 0xf1, 0x78, 0xfb, 0x26, 0x29, 0x26, 0x8c, 0x86, 0xd5, 0x26, 0x28,
- 0xe8, 0x58, 0xd1, 0x6b, 0x38, 0xff, 0xc5, 0x80, 0xcf, 0xdb, 0xec, 0x67,
- 0xd2, 0x7a, 0x63, 0x99, 0xcf, 0xd3, 0xe9, 0x7d, 0xf4, 0x5a, 0x47, 0x56,
- 0xb2, 0x52, 0xc9, 0x9b, 0x0e, 0x43, 0xbe, 0x5a, 0x51, 0x4f, 0xbf, 0x1d,
- 0x1e, 0x8c, 0x87, 0xaf, 0x8f, 0x4e, 0x8e, 0xbe, 0x3e, 0xb8, 0x38, 0x72,
- 0x49, 0x0a, 0x08, 0xfd, 0x58, 0x43, 0x17, 0x46, 0x0f, 0xdf, 0xea, 0x48,
- 0xc5, 0x54, 0xc5, 0xc1, 0xc1, 0x0c, 0x5f, 0x77, 0x93, 0x54, 0x16, 0xc5,
- 0x29, 0x92, 0xfe, 0x22, 0x86, 0xc0, 0xd7, 0x0a, 0x4c, 0xf4, 0x11, 0x36,
- 0xf3, 0x85, 0x0e, 0xb5, 0x35, 0x83, 0x78, 0x7e, 0xc7, 0x70, 0x1e, 0xef,
- 0x33, 0xd6, 0x4d, 0x34, 0xb7, 0x9e, 0x65, 0x56, 0xcc, 0x3e, 0xd8, 0x92,
- 0x60, 0xfd, 0x6b, 0xbb, 0x8c, 0x60, 0xa8, 0x6e, 0x99, 0x46, 0x02, 0xeb,
- 0x34, 0x3b, 0xee, 0x35, 0x1e, 0x6c, 0xc4, 0x5c, 0xf9, 0x44, 0x54, 0xc4,
- 0xd6, 0xe9, 0x77, 0x2d, 0x89, 0x58, 0xb5, 0xa4, 0x72, 0x7a, 0x9d, 0x2c,
- 0x5c, 0x80, 0x36, 0x07, 0x0a, 0xd0, 0xd3, 0x8a, 0xf6, 0x41, 0x67, 0xec,
- 0x8e, 0xc3, 0x4f, 0x70, 0x98, 0x45, 0xe1, 0x40, 0xe0, 0x1c, 0x07, 0x8b,
- 0x75, 0x88, 0x48, 0x77, 0x29, 0x12, 0xac, 0x25, 0x86, 0x03, 0xa1, 0x74,
- 0x20, 0x12, 0x8b, 0x17, 0xed, 0x8e, 0x10, 0x55, 0xb4, 0x96, 0xa6, 0x66,
- 0xb6, 0x82, 0x35, 0x4c, 0x8c, 0x82, 0x26, 0x73, 0x4a, 0x32, 0x74, 0x65,
- 0xb6, 0xc2, 0x4c, 0x6c, 0x63, 0x7a, 0x37, 0xf0, 0x40, 0x47, 0xce, 0x13,
- 0xd2, 0x8e, 0x4f, 0x47, 0xe8, 0x7a, 0x10, 0x5a, 0x26, 0xb1, 0x62, 0x2e,
- 0x12, 0x9d, 0x0d, 0xd6, 0x86, 0xe5, 0x67, 0x19, 0xd9, 0xbf, 0x4e, 0x73,
- 0x12, 0x32, 0xb5, 0xe8, 0xa3, 0x02, 0x79, 0xf5, 0x7c, 0x02, 0x3a, 0x93,
- 0x4b, 0xeb, 0xbb, 0x8e, 0x84, 0xcd, 0x61, 0xb2, 0x2c, 0xaa, 0x8e, 0xc0,
- 0x4a, 0x09, 0x2d, 0x74, 0xa6, 0xcb, 0x59, 0x90, 0xde, 0x19, 0x64, 0xe1,
- 0x1f, 0x9d, 0x9d, 0x0b, 0x62, 0xe4, 0x09, 0xff, 0xa2, 0x21, 0x0c, 0xcd,
- 0x9e, 0xa1, 0xc8, 0x6b, 0x66, 0x03, 0x9c, 0xa5, 0x50, 0x43, 0x1d, 0xd6,
- 0x90, 0xc5, 0x9b, 0x49, 0xc8, 0x83, 0x62, 0xe9, 0x28, 0x49, 0x63, 0x46,
- 0x4d, 0x6a, 0xf7, 0x28, 0x56, 0x18, 0x0a, 0x8f, 0x61, 0x20, 0x82, 0x11,
- 0x46, 0x21, 0x71, 0x1b, 0x66, 0x97, 0x3f, 0xe5, 0x2f, 0x39, 0x50, 0x47,
- 0x49, 0x60, 0x8d, 0x9b, 0xd2, 0x67, 0x28, 0x71, 0x93, 0xfc, 0x56, 0x54,
- 0x00, 0xff, 0x2a, 0xa6, 0x71, 0x8c, 0xfc, 0x3c, 0xa5, 0x0b, 0xd1, 0x76,
- 0x90, 0xdd, 0xda, 0x24, 0x74, 0x51, 0x70, 0x40, 0x3c, 0xd8, 0x93, 0x9c,
- 0x9a, 0x01, 0xa4, 0x0e, 0x26, 0xed, 0xec, 0x24, 0x03, 0xc1, 0x96, 0x24,
- 0xbd, 0x9e, 0x25, 0x1d, 0xa4, 0x63, 0xb0, 0x03, 0xae, 0x65, 0x40, 0xd6,
- 0x14, 0x27, 0x8b, 0x35, 0x4a, 0xee, 0x35, 0x81, 0x56, 0x6c, 0x96, 0x97,
- 0xea, 0xe1, 0x8a, 0xe7, 0x69, 0x75, 0x2f, 0x6a, 0x5e, 0x68, 0x31, 0xb8,
- 0x8e, 0xbb, 0xf2, 0x0f, 0x68, 0xe1, 0x1d, 0x00, 0x07, 0x26, 0xaa, 0xdb,
- 0xd6, 0xb6, 0x11, 0x83, 0x36, 0x42, 0x74, 0x0e, 0xa0, 0x70, 0x7c, 0x64,
- 0x1b, 0x74, 0xca, 0x4a, 0xb1, 0x0e, 0x45, 0x16, 0x87, 0xc1, 0x2e, 0x94,
- 0xca, 0xb3, 0xbc, 0x8b, 0xaa, 0x84, 0x43, 0xd0, 0x50, 0x63, 0xc9, 0xe1,
- 0xaf, 0x93, 0x60, 0xab, 0x77, 0x49, 0x28, 0xe6, 0x3d, 0x44, 0xfb, 0x20,
- 0xf3, 0xe9, 0xb5, 0x22, 0xec, 0xb1, 0x1b, 0x5b, 0x48, 0x69, 0x92, 0x5c,
- 0xc7, 0xb7, 0x29, 0x03, 0x9e, 0x84, 0xe8, 0x3d, 0x1d, 0xd6, 0x12, 0xda,
- 0x7f, 0xc6, 0x2a, 0xe0, 0x8d, 0xe1, 0x03, 0xcc, 0xef, 0x4a, 0xe8, 0x6d,
- 0x08, 0xdd, 0x83, 0xdd, 0x80, 0x51, 0xf9, 0x6c, 0xa0, 0xbe, 0x2a, 0xf8,
- 0x9a, 0x5b, 0x01, 0xde, 0x08, 0x15, 0x76, 0xd0, 0x1b, 0xfa, 0x64, 0x5c,
- 0xde, 0x76, 0x9f, 0xb0, 0xf2, 0xf6, 0x97, 0x9f, 0x30, 0x01, 0x80, 0x62,
- 0x12, 0x3a, 0x3a, 0x1b, 0x7f, 0x17, 0xb9, 0xf8, 0xa0, 0xae, 0x9b, 0x53,
- 0x0e, 0x97, 0x9f, 0x17, 0x48, 0x2d, 0x38, 0x60, 0xbf, 0xf2, 0x84, 0xb9,
- 0x03, 0x46, 0xfd, 0xeb, 0xa9, 0x3a, 0x3b, 0x18, 0x7f, 0xd7, 0x38, 0x4f,
- 0xde, 0xa5, 0x9a, 0x56, 0x51, 0x97, 0x13, 0x04, 0xb0, 0x44, 0x85, 0xe1,
- 0x68, 0x72, 0x6b, 0x9d, 0xa4, 0x56, 0xde, 0x7e, 0x0a, 0xa9, 0xd1, 0x50,
- 0x5a, 0xa4, 0xd6, 0x5a, 0xde, 0x87, 0x48, 0x2d, 0xdc, 0xa3, 0x0e, 0x52,
- 0xa3, 0xf6, 0x5b, 0xa4, 0x66, 0xeb, 0xda, 0x4d, 0x6b, 0xeb, 0x48, 0xcd,
- 0x02, 0x25, 0x13, 0x21, 0xb3, 0x90, 0xca, 0xda, 0x14, 0x56, 0xa3, 0x9b,
- 0xac, 0x1c, 0x7a, 0xa4, 0xc0, 0x97, 0xee, 0xd7, 0x2f, 0x3a, 0x50, 0x42,
- 0x42, 0x48, 0x06, 0x41, 0xee, 0xc8, 0x57, 0xd5, 0x15, 0xc8, 0xe1, 0xf5,
- 0xbb, 0xb1, 0x47, 0x66, 0xa8, 0xae, 0x0b, 0x00, 0x08, 0x05, 0xad, 0x8d,
- 0x1e, 0xb6, 0xc5, 0xc6, 0x06, 0x6f, 0x29, 0x50, 0xac, 0xdc, 0xc1, 0x30,
- 0x18, 0x56, 0xb4, 0x29, 0xc2, 0x8b, 0x3a, 0xd6, 0x02, 0x0c, 0x3c, 0x17,
- 0x62, 0x7c, 0x09, 0x18, 0x2b, 0x1a, 0x86, 0x42, 0x09, 0x73, 0x90, 0xc7,
- 0x9c, 0xed, 0x67, 0x9a, 0x77, 0xe8, 0x32, 0xa0, 0xb2, 0x06, 0x30, 0x62,
- 0xb4, 0xd9, 0xd1, 0x5c, 0x66, 0xf9, 0xb4, 0x5b, 0x0f, 0x5a, 0x91, 0xeb,
- 0x08, 0x13, 0x5d, 0x30, 0x02, 0xde, 0xe3, 0xa2, 0x69, 0xbb, 0x45, 0x47,
- 0x94, 0x66, 0x22, 0x09, 0x5c, 0x21, 0x40, 0x80, 0xd2, 0xba, 0x8b, 0x92,
- 0x06, 0x3a, 0xf2, 0x30, 0xe6, 0xbe, 0x5c, 0xb2, 0x7a, 0xd9, 0x61, 0x7e,
- 0x02, 0x39, 0x21, 0x20, 0x9d, 0x6d, 0x5d, 0x0f, 0x62, 0x56, 0x60, 0xe7,
- 0x97, 0xb7, 0x4f, 0x87, 0x3c, 0x55, 0xda, 0xab, 0xe5, 0x50, 0xe7, 0xdc,
- 0xb9, 0xf5, 0xc6, 0x39, 0x26, 0xa9, 0xe4, 0xa2, 0x86, 0xcf, 0xcb, 0xa5,
- 0x4b, 0xea, 0x12, 0x2f, 0x34, 0x92, 0xa3, 0x43, 0x72, 0x68, 0x41, 0xb0,
- 0xe4, 0x81, 0xaa, 0x50, 0xa3, 0x1b, 0xbd, 0xbe, 0x38, 0xc7, 0x57, 0x2c,
- 0xe6, 0x4c, 0x19, 0xd2, 0x87, 0xac, 0x40, 0x5c, 0x5c, 0xad, 0x5a, 0x1e,
- 0x32, 0x58, 0x80, 0xbc, 0x6b, 0xc7, 0xe2, 0xa0, 0xc3, 0x24, 0xed, 0xff,
- 0xb3, 0x37, 0xf1, 0x53, 0x76, 0xf1, 0xf9, 0x3f, 0x7e, 0x17, 0x9f, 0xff,
- 0x0f, 0xd9, 0xc5, 0xe7, 0xff, 0x1f, 0xd9, 0x45, 0x4b, 0x30, 0x0f, 0xf6,
- 0x64, 0xb0, 0x7e, 0x3b, 0x59, 0x1d, 0xae, 0x34, 0x46, 0x94, 0x6f, 0x6f,
- 0xde, 0x02, 0x6b, 0x41, 0xd4, 0xed, 0x8e, 0x64, 0x5a, 0xf1, 0xbb, 0x23,
- 0xe7, 0xa7, 0x1b, 0xbb, 0x47, 0x6d, 0x09, 0xd6, 0xe8, 0xf1, 0x59, 0x80,
- 0x2b, 0xe0, 0x77, 0xc7, 0xd0, 0xa1, 0x54, 0x45, 0xee, 0x74, 0x5b, 0x97,
- 0xec, 0xcb, 0x24, 0x5e, 0x2e, 0xd1, 0xd3, 0x25, 0xa4, 0x4f, 0xf8, 0x3b,
- 0x65, 0xbf, 0x20, 0x15, 0x4c, 0x2c, 0xd6, 0x8c, 0x36, 0x69, 0xff, 0x25,
- 0xaf, 0xf6, 0x50, 0x1e, 0xff, 0xa2, 0x33, 0x83, 0x04, 0xf8, 0x4f, 0x7e,
- 0x48, 0xdd, 0xe4, 0xe0, 0x34, 0x2a, 0x47, 0x10, 0xe6, 0x76, 0x0e, 0x49,
- 0x22, 0xc4, 0x78, 0x79, 0x8c, 0x1c, 0x7e, 0x0d, 0x35, 0xfc, 0xf7, 0xc8,
- 0x21, 0xe1, 0xcb, 0x1a, 0x80, 0x4e, 0xec, 0x0b, 0x7d, 0x7f, 0x7e, 0xb2,
- 0x2e, 0x41, 0x47, 0xbc, 0x8d, 0x9c, 0x2b, 0x79, 0x2e, 0xf0, 0x4f, 0x45,
- 0x74, 0x16, 0x5f, 0x25, 0xbd, 0x10, 0x0a, 0xec, 0x13, 0x80, 0x03, 0x5a,
- 0xa9, 0xf7, 0xac, 0x89, 0xfa, 0x38, 0xb1, 0x30, 0xd3, 0x1e, 0xc6, 0x08,
- 0x9f, 0x67, 0x2f, 0xae, 0xbf, 0x2e, 0x64, 0x21, 0x11, 0x55, 0xeb, 0x29,
- 0x92, 0x96, 0x8b, 0xad, 0x8e, 0x91, 0xde, 0x9f, 0x38, 0x6a, 0xbc, 0x67,
- 0x03, 0x74, 0x53, 0x6e, 0x47, 0xde, 0xf2, 0x23, 0xde, 0x9c, 0x5a, 0x8f,
- 0x35, 0x2f, 0xf5, 0x20, 0xb8, 0x3c, 0x00, 0xa0, 0x14, 0x5f, 0x0b, 0x7e,
- 0xe0, 0x65, 0x3e, 0x6f, 0x92, 0xa6, 0x20, 0x90, 0x11, 0x17, 0x38, 0xd1,
- 0x61, 0xed, 0xab, 0x5b, 0x56, 0xf6, 0xd2, 0x06, 0xa5, 0x62, 0x43, 0x28,
- 0x24, 0xc6, 0x73, 0x86, 0x7a, 0x6f, 0x46, 0x8f, 0x30, 0xfd, 0xba, 0xc4,
- 0x6e, 0xb6, 0x03, 0xf1, 0x80, 0x20, 0x65, 0xa4, 0xc0, 0xfd, 0x76, 0xd3,
- 0xfa, 0x0d, 0xbd, 0x95, 0x47, 0xf0, 0xea, 0x72, 0xe4, 0xda, 0xcb, 0x20,
- 0x92, 0xeb, 0xc7, 0x7d, 0x33, 0x1e, 0xfc, 0xdc, 0x1d, 0x95, 0xde, 0xce,
- 0xe7, 0xab, 0x7b, 0xd1, 0x2d, 0x7b, 0x3c, 0x0c, 0x0f, 0xeb, 0xcc, 0x52,
- 0xc2, 0x72, 0x1b, 0x68, 0x6f, 0x6c, 0xa9, 0x4f, 0x44, 0x00, 0x5a, 0x57,
- 0x82, 0x83, 0xd9, 0x22, 0xb8, 0x6d, 0xc4, 0x2f, 0x40, 0xbd, 0x0f, 0x05,
- 0xa9, 0x19, 0x2a, 0x6a, 0xcb, 0x7e, 0xc3, 0xb1, 0x28, 0x38, 0x58, 0x41,
- 0xbf, 0x26, 0xc0, 0xd1, 0x81, 0x39, 0xfb, 0xf6, 0x70, 0xfc, 0xbb, 0xdd,
- 0x3d, 0x8b, 0x81, 0xe3, 0xf0, 0x56, 0x75, 0x86, 0x8f, 0x01, 0x93, 0xd0,
- 0x24, 0x6f, 0xd6, 0x4d, 0xa4, 0xbe, 0x03, 0xfc, 0x1d, 0x1c, 0x3e, 0xe7,
- 0x92, 0x73, 0xfd, 0xcb, 0x88, 0xda, 0xc1, 0xf0, 0x24, 0x7f, 0xc9, 0x62,
- 0x8d, 0x93, 0x4e, 0x1d, 0x9e, 0x36, 0xc8, 0xd9, 0x90, 0x04, 0x48, 0xc3,
- 0xad, 0x5b, 0x0d, 0x80, 0x84, 0x2e, 0xc5, 0x02, 0x11, 0x09, 0xd4, 0xb3,
- 0xc4, 0xfa, 0xb4, 0x12, 0xc6, 0x14, 0xe2, 0xb4, 0x0b, 0xa0, 0xc4, 0x62,
- 0x65, 0x81, 0x32, 0xcd, 0x62, 0x72, 0x2f, 0x58, 0x92, 0x5e, 0xd7, 0x56,
- 0x84, 0x29, 0x42, 0xcb, 0x42, 0x32, 0xa7, 0x6e, 0x92, 0x7b, 0x07, 0x12,
- 0x10, 0xb9, 0x4f, 0xeb, 0xbb, 0xca, 0x58, 0x8b, 0x1c, 0x17, 0xd9, 0x32,
- 0x99, 0x13, 0x9b, 0xff, 0x17, 0xf1, 0x76, 0x0b, 0x85, 0x89, 0x2a, 0xc4,
- 0x4d, 0x72, 0x94, 0x84, 0x87, 0x2e, 0x59, 0x00, 0xb0, 0x5c, 0x2b, 0x3a,
- 0xcc, 0xef, 0x3b, 0xfd, 0xac, 0xbe, 0xde, 0x89, 0x30, 0x60, 0x28, 0x57,
- 0x65, 0x65, 0xc1, 0xf8, 0x0d, 0xb0, 0xad, 0x24, 0x0b, 0xcf, 0x47, 0xcb,
- 0xc6, 0x97, 0x85, 0x19, 0x28, 0x6c, 0x75, 0x4e, 0xa7, 0x37, 0x10, 0xe8,
- 0xd5, 0x5c, 0x14, 0x4e, 0xcf, 0xa2, 0x3c, 0x24, 0xc8, 0xb9, 0x63, 0x17,
- 0x90, 0x7c, 0xc0, 0x36, 0x78, 0x26, 0x4b, 0xbe, 0x0d, 0xd3, 0x4c, 0xbc,
- 0x8e, 0xf0, 0x8f, 0x66, 0xb7, 0x69, 0x91, 0x67, 0x90, 0x51, 0x6e, 0xe3,
- 0x22, 0x85, 0x76, 0x48, 0x63, 0xfd, 0xf0, 0xfa, 0xf8, 0x3c, 0xda, 0xa4,
- 0x8d, 0x9d, 0xdc, 0xaf, 0x81, 0xc2, 0xdb, 0x4e, 0xaa, 0xe9, 0xf6, 0xf2,
- 0x26, 0xdd, 0xce, 0xca, 0x72, 0x36, 0xd9, 0x72, 0x80, 0x0b, 0xe8, 0x0e,
- 0x74, 0x28, 0xb4, 0xbc, 0x0b, 0xf3, 0xc0, 0x8a, 0x33, 0x81, 0x36, 0x69,
- 0x01, 0x5a, 0xbb, 0x50, 0xd2, 0x42, 0x2f, 0x46, 0x65, 0xbe, 0xa5, 0xd5,
- 0x62, 0x6e, 0xe3, 0x74, 0xee, 0xb0, 0xe5, 0x32, 0x69, 0x4a, 0xe2, 0x8a,
- 0x34, 0xbb, 0x9d, 0xfd, 0x15, 0xc9, 0xcc, 0x74, 0xc7, 0xe6, 0x71, 0xd5,
- 0x18, 0x17, 0xc1, 0x7a, 0x94, 0x14, 0x71, 0x0b, 0x51, 0xa1, 0xe5, 0x44,
- 0xb2, 0xab, 0x0b, 0x3d, 0x1e, 0x30, 0x30, 0x3a, 0x2f, 0x8a, 0xf8, 0xce,
- 0xd8, 0x0e, 0xd1, 0x19, 0x54, 0xd6, 0x1b, 0x6d, 0xf7, 0x22, 0x07, 0x05,
- 0x4f, 0xab, 0x8c, 0xc2, 0x06, 0x1e, 0x7b, 0x9f, 0x08, 0xec, 0x72, 0x55,
- 0x3a, 0xfb, 0x68, 0xec, 0xf6, 0x6b, 0xd4, 0x9d, 0xa4, 0xe7, 0xb6, 0x53,
- 0xfd, 0x98, 0x65, 0xd4, 0xdb, 0xef, 0xe1, 0x68, 0x65, 0x80, 0xa2, 0x16,
- 0x21, 0x47, 0x07, 0x85, 0xad, 0xea, 0xfd, 0xd4, 0x8b, 0xa2, 0x96, 0x7d,
- 0x54, 0x8e, 0x53, 0xea, 0x41, 0x8b, 0x39, 0xef, 0xf0, 0x2a, 0x4b, 0xff,
- 0x26, 0xf9, 0xec, 0xee, 0x10, 0xcf, 0x12, 0xc4, 0xd1, 0x03, 0x6b, 0x2a,
- 0x18, 0x42, 0x27, 0x8c, 0x82, 0x1f, 0xd2, 0x4f, 0xed, 0x21, 0x19, 0x3c,
- 0x7f, 0xcc, 0x5f, 0xd3, 0x90, 0xcc, 0x4b, 0x2b, 0x43, 0xe8, 0x30, 0x57,
- 0xd4, 0x07, 0xe4, 0x00, 0xfe, 0x7d, 0x95, 0x81, 0x76, 0x3c, 0x6c, 0x7a,
- 0x3a, 0x56, 0x67, 0xd1, 0xdb, 0x78, 0x1a, 0xd1, 0x1f, 0x3f, 0x40, 0xbe,
- 0xd8, 0xe2, 0x91, 0xd7, 0xe1, 0xb1, 0xec, 0x88, 0x09, 0x67, 0x14, 0x5e,
- 0xd8, 0x85, 0x90, 0x35, 0xb0, 0x03, 0x57, 0x3f, 0x38, 0xc1, 0x35, 0x98,
- 0xa4, 0x60, 0x8e, 0x13, 0x4d, 0xf6, 0x14, 0x13, 0x35, 0x4b, 0x95, 0x71,
- 0x2b, 0x20, 0xc5, 0xbd, 0xbf, 0xed, 0x98, 0x0d, 0x33, 0x0c, 0x17, 0x37,
- 0x0b, 0x09, 0x94, 0x79, 0x31, 0xac, 0xdd, 0xf4, 0x15, 0x4d, 0x95, 0xc1,
- 0x44, 0x04, 0x62, 0xb4, 0xe5, 0xb4, 0xaf, 0xc4, 0xbe, 0x61, 0x7c, 0xdf,
- 0x39, 0x91, 0xc2, 0x81, 0x4a, 0xcc, 0xac, 0xef, 0xcc, 0xa7, 0xcc, 0xfe,
- 0x13, 0x88, 0x1f, 0xb4, 0xff, 0xab, 0x48, 0xff, 0xb7, 0x0b, 0x60, 0xd2,
- 0x24, 0xdc, 0x97, 0x5d, 0x09, 0xde, 0xe3, 0x64, 0x6e, 0x50, 0xe1, 0x96,
- 0x4c, 0x35, 0x2d, 0xee, 0x97, 0x6c, 0x05, 0x93, 0xb7, 0x74, 0x7d, 0x80,
- 0x2f, 0x2d, 0x79, 0x53, 0x21, 0x9e, 0xfc, 0xa8, 0x23, 0x2f, 0xd0, 0xf7,
- 0xa8, 0x49, 0x65, 0xb0, 0x7d, 0x12, 0xf1, 0x54, 0x10, 0xb6, 0xe4, 0x33,
- 0xce, 0xa1, 0x24, 0xaa, 0x9c, 0x49, 0xfa, 0x86, 0xcb, 0xc3, 0x69, 0x05,
- 0xe4, 0x72, 0x3b, 0x65, 0xe8, 0xf4, 0xe6, 0x63, 0xc2, 0x19, 0xdd, 0xcc,
- 0x6c, 0xe1, 0x75, 0xdb, 0x0a, 0x14, 0x1a, 0x7d, 0xbe, 0x85, 0x7f, 0x6d,
- 0xca, 0x83, 0x63, 0x96, 0xd4, 0x50, 0xb1, 0xca, 0xd0, 0x79, 0x7d, 0xa5,
- 0x1c, 0x7b, 0x6f, 0x9e, 0xb3, 0xf3, 0xe3, 0xf1, 0x61, 0xc4, 0xe7, 0xeb,
- 0xf4, 0xdd, 0xc9, 0x9f, 0x59, 0xe0, 0xae, 0x00, 0x82, 0xcd, 0xd6, 0x3a,
- 0xee, 0xbf, 0xeb, 0x62, 0x28, 0x07, 0x3e, 0xbc, 0xba, 0x83, 0x77, 0xc8,
- 0xcd, 0x3c, 0xbc, 0xb3, 0x2d, 0xf6, 0x19, 0x50, 0x4c, 0x2e, 0x70, 0xa2,
- 0x11, 0xc1, 0xa5, 0x2c, 0x85, 0x70, 0xc0, 0xd7, 0xd4, 0x80, 0xad, 0x56,
- 0x6d, 0x18, 0x26, 0x0e, 0x01, 0x09, 0x05, 0x7d, 0xd1, 0x92, 0xd8, 0x6a,
- 0x48, 0xbd, 0xd3, 0x44, 0x1b, 0x49, 0x9c, 0x34, 0xd1, 0x2b, 0x71, 0xe6,
- 0xae, 0x49, 0x3c, 0x80, 0x4c, 0xe8, 0xb2, 0xfe, 0x55, 0x58, 0xe0, 0xc3,
- 0xa7, 0x67, 0x5d, 0xe5, 0xf4, 0x23, 0xc6, 0x40, 0x5c, 0xde, 0x47, 0x5f,
- 0xc7, 0xcc, 0x0f, 0x60, 0xfc, 0x8b, 0x93, 0x45, 0xeb, 0x82, 0x2e, 0x73,
- 0xf6, 0x3b, 0xaa, 0x31, 0x0e, 0xbf, 0x3b, 0x72, 0x06, 0xa4, 0x99, 0x04,
- 0xf1, 0x45, 0xbc, 0x98, 0x33, 0xf6, 0xa7, 0x1b, 0xf5, 0x80, 0xe6, 0x68,
- 0x28, 0xed, 0x58, 0x1b, 0xab, 0x25, 0x31, 0x6a, 0x24, 0x05, 0x0d, 0xa5,
- 0x09, 0x99, 0x5a, 0x33, 0x27, 0x48, 0xa4, 0x16, 0xc4, 0xb7, 0x47, 0x2f,
- 0xf9, 0xdf, 0x35, 0xd3, 0x0e, 0x64, 0x61, 0x38, 0x93, 0x6b, 0xd2, 0x03,
- 0xbf, 0xac, 0x81, 0xa7, 0x9c, 0x8d, 0x51, 0xe3, 0x3c, 0x6d, 0x6b, 0x30,
- 0x47, 0xfb, 0xd2, 0x85, 0x3c, 0x88, 0x5e, 0x1f, 0x9d, 0x83, 0x2f, 0x1d,
- 0xbd, 0xfb, 0x1a, 0x4e, 0x9c, 0x80, 0xd1, 0x73, 0x93, 0xa5, 0xf0, 0x28,
- 0x01, 0xc4, 0x37, 0xd9, 0xb1, 0xd1, 0x1c, 0x5f, 0xec, 0x6c, 0x3f, 0x81,
- 0x00, 0x38, 0xfb, 0x4d, 0x53, 0x9d, 0x62, 0x51, 0x20, 0x0e, 0x0f, 0xc2,
- 0xd9, 0xfd, 0x3a, 0xc5, 0x21, 0x5c, 0x3c, 0x49, 0xcb, 0xce, 0x39, 0x17,
- 0x8c, 0xc8, 0xaa, 0xc3, 0x45, 0xc4, 0x09, 0x28, 0x01, 0x64, 0x02, 0x1f,
- 0x62, 0xbd, 0x5f, 0x23, 0x5f, 0xd4, 0x23, 0xa2, 0x61, 0xd5, 0xb2, 0x54,
- 0xc4, 0x52, 0xb1, 0xfe, 0xe6, 0xd9, 0x2c, 0xb7, 0xa2, 0x9a, 0xce, 0xe0,
- 0x72, 0x66, 0x98, 0xaf, 0xa8, 0x5b, 0xa2, 0x7e, 0x55, 0xb6, 0x6c, 0xeb,
- 0x72, 0x45, 0x98, 0x2c, 0x67, 0x50, 0x3a, 0x58, 0xf1, 0x81, 0x5c, 0xeb,
- 0xb5, 0xa5, 0xa7, 0x3d, 0x55, 0x9d, 0x54, 0xa9, 0xbc, 0xe5, 0x39, 0xe7,
- 0xf3, 0x29, 0xd1, 0x1e, 0x41, 0x9b, 0xad, 0x4d, 0xf5, 0xb8, 0x46, 0x20,
- 0x96, 0x72, 0xbd, 0x0c, 0xaa, 0x41, 0xe0, 0x87, 0xa4, 0xf2, 0x7e, 0x38,
- 0x3c, 0xf8, 0xf0, 0xd5, 0xfb, 0x77, 0xaf, 0x4f, 0x8e, 0xfa, 0x4d, 0x8a,
- 0xbc, 0xd4, 0xc8, 0x88, 0x92, 0xc3, 0x00, 0x14, 0x6e, 0x21, 0xcc, 0xac,
- 0xc6, 0x19, 0x07, 0x6e, 0x94, 0x9c, 0x76, 0xe6, 0xdc, 0xb1, 0x5f, 0xf1,
- 0xa6, 0x59, 0x64, 0x95, 0xcd, 0x80, 0xe3, 0x13, 0x4c, 0xde, 0x10, 0x56,
- 0xd4, 0xfa, 0x66, 0xe3, 0xeb, 0x44, 0x1c, 0x62, 0xe4, 0x99, 0x19, 0x74,
- 0x70, 0xcb, 0x0e, 0x94, 0xa4, 0x66, 0x5f, 0x47, 0xa6, 0xa6, 0xde, 0x73,
- 0xb6, 0x00, 0x56, 0x3d, 0xa6, 0x01, 0x75, 0x6c, 0x77, 0x59, 0x0b, 0x87,
- 0xe7, 0x56, 0x88, 0x92, 0x87, 0x3a, 0xc8, 0x69, 0x51, 0xf5, 0x07, 0x26,
- 0xb8, 0x84, 0x49, 0x3b, 0xb8, 0xe0, 0x5b, 0xd0, 0x1d, 0x9c, 0x68, 0x17,
- 0x0b, 0x5d, 0x8f, 0x92, 0x8f, 0x09, 0xe4, 0x11, 0x7d, 0xeb, 0x50, 0x25,
- 0x83, 0xef, 0xf3, 0x02, 0xf6, 0xd1, 0xd7, 0x5e, 0x42, 0x90, 0x87, 0x48,
- 0x7b, 0x6c, 0xc7, 0x2e, 0xb2, 0x14, 0x10, 0xa3, 0x2e, 0x02, 0x6a, 0xf2,
- 0x9d, 0x1d, 0x5c, 0x7c, 0xd3, 0x75, 0x84, 0xbb, 0x25, 0x36, 0x45, 0x09,
- 0x61, 0x4d, 0x01, 0x48, 0xa8, 0xaa, 0x18, 0x0d, 0xc2, 0x2f, 0x88, 0xaa,
- 0x9b, 0x0c, 0xa3, 0x4b, 0x9f, 0x08, 0xf5, 0x07, 0x11, 0x55, 0x55, 0x56,
- 0xf5, 0x77, 0xa3, 0x11, 0x76, 0x77, 0x5e, 0xad, 0x15, 0x61, 0x24, 0x06,
- 0xb8, 0x64, 0x04, 0xed, 0xdf, 0x96, 0x11, 0x81, 0x0c, 0x1b, 0x8c, 0xc8,
- 0xcb, 0x64, 0xff, 0x7d, 0x96, 0x14, 0xe4, 0x55, 0xb6, 0x4f, 0xa9, 0xf0,
- 0x29, 0xbb, 0xfe, 0xc0, 0x9b, 0x7c, 0xee, 0x06, 0x8f, 0xcc, 0x95, 0x90,
- 0x70, 0xb7, 0x01, 0xe3, 0x84, 0xba, 0x7c, 0x9a, 0x36, 0x87, 0x5b, 0xa8,
- 0x90, 0xb8, 0xdf, 0x8b, 0x36, 0x93, 0xd1, 0x15, 0xb5, 0xd7, 0xe3, 0x76,
- 0x76, 0xf7, 0xf9, 0xdf, 0x3d, 0xfc, 0xfb, 0xa4, 0xb7, 0xd5, 0xb2, 0x78,
- 0x94, 0x60, 0x5f, 0xed, 0xfc, 0x3b, 0x44, 0xfb, 0x04, 0x36, 0x0c, 0xcb,
- 0x9d, 0x4e, 0xd7, 0x11, 0x92, 0x8a, 0x78, 0x5d, 0x90, 0x10, 0x7e, 0x21,
- 0xc0, 0x2a, 0x51, 0x56, 0x6d, 0xc2, 0xb5, 0x37, 0x68, 0x6e, 0x53, 0x49,
- 0xbd, 0x0e, 0xd3, 0x0c, 0xa6, 0x1f, 0x8a, 0xe4, 0x3a, 0x2e, 0x89, 0x47,
- 0xac, 0xaa, 0x94, 0xc3, 0x00, 0x3a, 0xa0, 0xaa, 0xe7, 0x9a, 0x91, 0x44,
- 0x33, 0xd6, 0x8e, 0x1d, 0xe0, 0x89, 0x6d, 0xad, 0x98, 0x1a, 0x59, 0xd4,
- 0xd1, 0x27, 0x86, 0x5a, 0x92, 0xb2, 0x8b, 0x11, 0x9a, 0xe9, 0x8f, 0x1f,
- 0x0b, 0x0b, 0x4a, 0x2d, 0xd8, 0x94, 0x8a, 0xc0, 0x84, 0x28, 0xb9, 0xa4,
- 0x15, 0x4b, 0x05, 0x21, 0x40, 0x52, 0xab, 0x64, 0xd4, 0xed, 0x94, 0x08,
- 0xb9, 0xe3, 0x34, 0xce, 0xca, 0xfd, 0x0d, 0x0e, 0xe2, 0x74, 0x3a, 0x14,
- 0x9d, 0xaa, 0x13, 0xdf, 0xa7, 0xc4, 0xcb, 0x80, 0xbb, 0x0a, 0x38, 0x87,
- 0xf0, 0x76, 0x9d, 0xac, 0xe4, 0x94, 0x19, 0xb1, 0x2b, 0xb4, 0x6c, 0x17,
- 0xde, 0xa7, 0xe3, 0xd3, 0xbf, 0xfa, 0xe4, 0x2c, 0x53, 0x5a, 0x9e, 0xd9,
- 0x72, 0x35, 0x61, 0x65, 0xeb, 0xa5, 0xfc, 0x15, 0xd1, 0x9f, 0xf3, 0x74,
- 0xca, 0x2a, 0xd1, 0xaf, 0x3b, 0x38, 0xfe, 0x7d, 0x77, 0x95, 0xaf, 0xbf,
- 0xcb, 0xed, 0xc0, 0x5c, 0x38, 0x7c, 0x22, 0xd0, 0x95, 0xdd, 0xe7, 0xce,
- 0xad, 0x13, 0x34, 0xaa, 0x77, 0x73, 0x2b, 0xe8, 0x81, 0x85, 0xa7, 0x35,
- 0xc0, 0x75, 0xdf, 0x37, 0x81, 0xa4, 0x63, 0xc0, 0x7e, 0xe7, 0x45, 0xa3,
- 0x14, 0xab, 0xb1, 0xca, 0x26, 0x0a, 0xc0, 0x7a, 0xa9, 0x21, 0x2c, 0x94,
- 0x25, 0xf5, 0x06, 0x52, 0x04, 0x05, 0x56, 0xa4, 0x4f, 0x1e, 0xd4, 0x46,
- 0x5d, 0x9a, 0x7c, 0xde, 0xa2, 0x5a, 0xef, 0xf5, 0x6a, 0xea, 0xa7, 0xb2,
- 0xc3, 0xae, 0x0a, 0x92, 0xa5, 0x7b, 0x48, 0xf0, 0xb4, 0x2c, 0xdf, 0xaa,
- 0x65, 0xfb, 0xe1, 0x1e, 0xd1, 0xa5, 0x63, 0x37, 0x55, 0x5e, 0x0f, 0x85,
- 0x08, 0xae, 0xce, 0x49, 0x5e, 0x54, 0x0d, 0x20, 0x80, 0x16, 0x03, 0x41,
- 0x68, 0x05, 0x2f, 0x05, 0x02, 0xde, 0x0b, 0x45, 0xc7, 0x32, 0x0b, 0x68,
- 0x67, 0xdc, 0xb3, 0x05, 0xdd, 0xa9, 0x7e, 0x6c, 0x85, 0x5d, 0x50, 0xb1,
- 0x84, 0x25, 0x12, 0x1f, 0x36, 0xed, 0x99, 0x8d, 0x42, 0x73, 0x74, 0x41,
- 0xaa, 0x7e, 0x3d, 0xfe, 0x96, 0xd3, 0x59, 0xc5, 0x5d, 0x52, 0xfe, 0xe3,
- 0xef, 0x92, 0xf5, 0xc9, 0xc3, 0x4f, 0x5e, 0xd4, 0x1c, 0x2d, 0x97, 0x88,
- 0x8a, 0xa0, 0x2b, 0xb0, 0xdb, 0xbf, 0xf2, 0x86, 0xd1, 0x9c, 0x4a, 0x8e,
- 0x17, 0xe6, 0x29, 0x6f, 0x72, 0xfd, 0x19, 0xa9, 0xa7, 0x15, 0x43, 0x1b,
- 0xdd, 0x62, 0x83, 0xae, 0xd1, 0x16, 0xd0, 0x21, 0xac, 0xd2, 0x49, 0x5b,
- 0x27, 0xb0, 0x82, 0x38, 0xc8, 0xca, 0xc3, 0xdd, 0x8b, 0xc8, 0x29, 0x8d,
- 0x34, 0x41, 0x95, 0x5b, 0x22, 0xb6, 0xa4, 0x9a, 0x06, 0x5f, 0xce, 0x12,
- 0xad, 0xbe, 0xd7, 0x24, 0x30, 0x29, 0x8e, 0xab, 0x81, 0x33, 0xd4, 0xe7,
- 0x71, 0xa6, 0x91, 0x36, 0x1a, 0x70, 0x0f, 0x73, 0x7c, 0xac, 0xb0, 0x91,
- 0x6e, 0x84, 0x97, 0x82, 0xed, 0xd2, 0xba, 0xf0, 0xd8, 0xf0, 0x75, 0x2b,
- 0x00, 0x6d, 0x0e, 0x67, 0x43, 0xe3, 0x6b, 0x7c, 0xc2, 0x0d, 0xb2, 0xdc,
- 0xde, 0x9e, 0xb8, 0x07, 0x38, 0x97, 0x08, 0x87, 0xa4, 0x65, 0x6f, 0xd3,
- 0x50, 0x0d, 0xd4, 0x5f, 0x14, 0x25, 0xcd, 0x12, 0x5f, 0x78, 0x60, 0xf7,
- 0xae, 0xcc, 0xf1, 0x96, 0x8a, 0x90, 0x12, 0xde, 0x2a, 0x11, 0xd7, 0xcb,
- 0xa2, 0xa5, 0xe4, 0x72, 0xc8, 0xa6, 0x50, 0xb8, 0x94, 0xc2, 0xc6, 0x06,
- 0x54, 0xa2, 0x5f, 0xc7, 0x95, 0x16, 0x58, 0xe3, 0x51, 0x2a, 0xc8, 0xd6,
- 0xde, 0xde, 0x1a, 0xbf, 0xa0, 0xa2, 0xf5, 0xa9, 0x11, 0x90, 0x17, 0x63,
- 0x58, 0xc6, 0x97, 0x89, 0x41, 0x85, 0x70, 0xbd, 0x2e, 0x06, 0x58, 0x9e,
- 0xd2, 0x12, 0x4a, 0xae, 0x0c, 0x3e, 0xcb, 0xda, 0x80, 0x19, 0xe5, 0x6a,
- 0xca, 0x57, 0x23, 0x6b, 0xdf, 0x2e, 0xad, 0x8d, 0xed, 0x51, 0x9a, 0xaf,
- 0x10, 0x95, 0xf3, 0x74, 0x19, 0x59, 0x0c, 0x0c, 0x97, 0xad, 0xd1, 0x9a,
- 0xa0, 0x7c, 0x39, 0x75, 0x84, 0x53, 0x35, 0x40, 0x05, 0xa1, 0x3f, 0xde,
- 0xb2, 0x3f, 0x72, 0x16, 0x6d, 0x36, 0xda, 0x7f, 0xba, 0xb3, 0x8b, 0xe1,
- 0x3e, 0xdd, 0xf9, 0x2c, 0xc4, 0x1c, 0x77, 0x89, 0xd7, 0x8a, 0xab, 0xab,
- 0xa1, 0xda, 0x0f, 0xa7, 0x9d, 0xcd, 0xd9, 0x94, 0x81, 0x75, 0x4d, 0x48,
- 0xc9, 0x02, 0x87, 0xd2, 0x7c, 0xf4, 0x61, 0x9a, 0x49, 0xf6, 0x33, 0x67,
- 0xe6, 0x60, 0x2f, 0x63, 0xd8, 0xe9, 0x9a, 0x08, 0x36, 0x71, 0x19, 0x19,
- 0x3c, 0xcb, 0xba, 0x24, 0x75, 0x85, 0xa5, 0x0c, 0xc2, 0x86, 0x90, 0x68,
- 0x0f, 0x26, 0xd3, 0xd2, 0xb5, 0xbc, 0x98, 0x71, 0xa8, 0x49, 0xe9, 0x17,
- 0xac, 0x77, 0xab, 0x0e, 0x18, 0x17, 0xd5, 0x36, 0xf2, 0xcf, 0x35, 0x50,
- 0x7e, 0xca, 0xe0, 0x71, 0x56, 0xfe, 0xf2, 0xfc, 0xcd, 0x61, 0xa3, 0xb9,
- 0xbd, 0x27, 0x9f, 0x7f, 0xae, 0x83, 0x48, 0x34, 0xaa, 0xd8, 0xe3, 0x17,
- 0xb3, 0x19, 0x4a, 0xf2, 0xf3, 0xc4, 0x66, 0xce, 0x55, 0x0b, 0x91, 0xb9,
- 0x24, 0x81, 0x76, 0x1d, 0x72, 0x52, 0x5f, 0xd7, 0xb4, 0x6f, 0xc5, 0xa2,
- 0x2d, 0xd7, 0x22, 0x8e, 0xb4, 0xae, 0x9e, 0xd6, 0xc7, 0x32, 0x9c, 0x53,
- 0x03, 0x3b, 0x93, 0x22, 0x22, 0x5f, 0xb6, 0xe2, 0x36, 0xaf, 0x24, 0x1d,
- 0xfd, 0x2f, 0x7c, 0x3b, 0x5e, 0x25, 0x55, 0x3b, 0x2f, 0x24, 0xc8, 0xba,
- 0xad, 0x35, 0xbe, 0x16, 0x58, 0xcd, 0xa3, 0x6d, 0x5a, 0x66, 0xcb, 0x4b,
- 0x11, 0x29, 0x0d, 0x3f, 0x29, 0xa8, 0xac, 0xf6, 0x25, 0xc8, 0xe8, 0xa5,
- 0xfa, 0x89, 0x3a, 0x01, 0x30, 0xbf, 0x54, 0xa8, 0x3e, 0x35, 0x91, 0x02,
- 0x43, 0xae, 0xaa, 0x62, 0x2b, 0x6d, 0x0c, 0xc5, 0x9d, 0x73, 0xbb, 0xa1,
- 0x37, 0x2a, 0x88, 0x99, 0x56, 0x02, 0x68, 0x39, 0x07, 0x53, 0x57, 0x04,
- 0xe7, 0xa5, 0x21, 0x00, 0x72, 0xc1, 0x7b, 0xc6, 0x23, 0x95, 0x0c, 0x7b,
- 0x1e, 0x4d, 0xd7, 0x52, 0x94, 0x61, 0xc1, 0xb8, 0x5a, 0x96, 0x81, 0x7f,
- 0x37, 0x58, 0xa8, 0xd6, 0xc9, 0x3f, 0xb2, 0x1a, 0x73, 0x06, 0xa2, 0x0f,
- 0x35, 0xcc, 0xc7, 0x7e, 0xab, 0x3c, 0xe3, 0xa3, 0xd6, 0x07, 0x7a, 0xec,
- 0xa3, 0x3e, 0x3f, 0xd4, 0x3c, 0xf9, 0xfc, 0x52, 0xdf, 0x9c, 0x6b, 0xa1,
- 0xab, 0x09, 0x84, 0x29, 0xc3, 0x71, 0x60, 0x99, 0xe2, 0xfa, 0xe1, 0xae,
- 0x66, 0x6b, 0xd0, 0xe2, 0xa4, 0x48, 0x2f, 0xb1, 0xb3, 0xfd, 0x4e, 0x0b,
- 0xc0, 0xf0, 0x8d, 0x1b, 0xe9, 0xab, 0x2f, 0x6b, 0xad, 0xdd, 0xdd, 0x8d,
- 0x16, 0xf7, 0xf6, 0x5d, 0x59, 0xab, 0x38, 0xee, 0xd3, 0xf0, 0x14, 0x55,
- 0x58, 0x48, 0xca, 0x27, 0xa2, 0x87, 0x75, 0xa5, 0x7c, 0x4d, 0x48, 0x86,
- 0xf5, 0x89, 0x4b, 0x47, 0xbd, 0x5d, 0x4e, 0x0f, 0x3d, 0x4d, 0x28, 0x86,
- 0xcc, 0xca, 0xe2, 0x24, 0x27, 0x72, 0x33, 0x42, 0xe2, 0x54, 0xde, 0xaa,
- 0x58, 0x4d, 0xab, 0xf6, 0x6d, 0xee, 0x0b, 0x5a, 0x0b, 0x14, 0x6e, 0x15,
- 0x04, 0x12, 0x4a, 0x25, 0xe0, 0xfa, 0x71, 0xe7, 0x93, 0xc5, 0x03, 0xb2,
- 0x5a, 0xe8, 0xcd, 0x93, 0x08, 0x34, 0xdc, 0xfe, 0x40, 0x02, 0x90, 0x35,
- 0xbf, 0xd4, 0xe7, 0x3e, 0xae, 0x5d, 0xca, 0xde, 0x5d, 0x32, 0x79, 0xf5,
- 0x25, 0x6a, 0x2a, 0x03, 0x4d, 0x4b, 0x50, 0x75, 0x99, 0x8e, 0xb6, 0xf9,
- 0xcf, 0x5e, 0xc4, 0x4a, 0x7f, 0xc7, 0x4a, 0x12, 0xfd, 0xad, 0x6b, 0x31,
- 0x40, 0x2b, 0x08, 0x5a, 0xbb, 0xcc, 0xf3, 0xb5, 0x8d, 0x59, 0xd5, 0x1b,
- 0xac, 0x44, 0x10, 0x70, 0x2a, 0xf1, 0x9f, 0x9e, 0xac, 0x84, 0x94, 0xb0,
- 0x43, 0xb5, 0xa3, 0xd5, 0x95, 0xce, 0x08, 0xe5, 0x53, 0x6e, 0x44, 0x4b,
- 0x6d, 0x7a, 0xa5, 0x25, 0x0b, 0x59, 0x8a, 0x5a, 0xbf, 0x20, 0xfc, 0xf4,
- 0xab, 0x2f, 0x01, 0x34, 0xc4, 0xbf, 0xfe, 0xc9, 0xbd, 0xcd, 0xff, 0x10,
- 0x5d, 0xd2, 0xe9, 0x5e, 0x3b, 0x11, 0x76, 0xad, 0xd8, 0xf3, 0xdb, 0xa2,
- 0xd3, 0x99, 0xfa, 0xd4, 0x1f, 0xf4, 0x59, 0xaa, 0xec, 0xff, 0xa9, 0x0f,
- 0xcf, 0x98, 0x99, 0xe0, 0x50, 0xeb, 0x41, 0x0a, 0x5c, 0xe5, 0xad, 0xe8,
- 0x2f, 0x0e, 0x96, 0xd5, 0x5a, 0xdd, 0x3c, 0xf0, 0xc7, 0xc6, 0xfc, 0x53,
- 0xcf, 0x8d, 0xfa, 0xa7, 0x9e, 0x1f, 0xf7, 0x4f, 0x3d, 0x3f, 0xf2, 0x9f,
- 0x7a, 0xbf, 0x62, 0x47, 0xfb, 0xd2, 0xbc, 0x6f, 0x3d, 0x68, 0x3c, 0x68,
- 0xbb, 0xd7, 0x5f, 0xd7, 0xb4, 0x77, 0x58, 0xa4, 0x76, 0xba, 0xfc, 0x0a,
- 0xf1, 0xad, 0xab, 0xab, 0x20, 0xf5, 0xa8, 0xa4, 0x50, 0xa6, 0xcc, 0x1b,
- 0x4a, 0x7c, 0xcb, 0x8b, 0x1c, 0x3c, 0xc1, 0x6b, 0xca, 0x12, 0x73, 0x39,
- 0x67, 0xfd, 0x3b, 0x40, 0xeb, 0xb2, 0x4e, 0xdc, 0x4a, 0x9b, 0xff, 0xb1,
- 0xe5, 0x94, 0x76, 0xaf, 0x77, 0x82, 0x6c, 0x5d, 0xae, 0x0a, 0x09, 0x7e,
- 0x10, 0x9e, 0x29, 0xb9, 0xd7, 0x86, 0x08, 0xa8, 0x7d, 0xbd, 0x3d, 0x78,
- 0xf7, 0xfe, 0xe0, 0xe4, 0xc1, 0x38, 0xbc, 0x30, 0x60, 0xc6, 0x59, 0x6f,
- 0x21, 0xb2, 0x87, 0x9a, 0x2a, 0x47, 0x22, 0xf3, 0x15, 0xce, 0xc5, 0x87,
- 0x7f, 0xe4, 0x1b, 0xfd, 0xe7, 0xce, 0x98, 0xf5, 0xef, 0x55, 0x90, 0x7d,
- 0x13, 0x02, 0xff, 0xdf, 0x08, 0xff, 0xe9, 0xd9, 0xfb, 0xfc, 0x7a, 0x4f,
- 0x9d, 0x1f, 0xae, 0x98, 0x5f, 0x57, 0xcd, 0x28, 0xc7, 0xf7, 0x59, 0x74,
- 0x31, 0x2b, 0x07, 0x54, 0xaa, 0x41, 0x50, 0x9d, 0x18, 0xaa, 0x3c, 0x27,
- 0x02, 0x5d, 0x5e, 0xae, 0x75, 0xe4, 0x1c, 0x1c, 0x1e, 0xfa, 0x4c, 0x86,
- 0x7a, 0x4e, 0x74, 0x2d, 0x92, 0xeb, 0x1f, 0x6f, 0x1c, 0xc3, 0xc2, 0xcd,
- 0x51, 0x7e, 0x8f, 0xa3, 0xbd, 0x87, 0x55, 0x2e, 0x89, 0x44, 0x2f, 0x75,
- 0x34, 0x5f, 0x74, 0xae, 0x23, 0x0d, 0x20, 0x14, 0x33, 0xad, 0x0c, 0x0b,
- 0x0a, 0xce, 0x8c, 0xd5, 0x49, 0x71, 0x76, 0x00, 0xfc, 0x45, 0xcd, 0xaa,
- 0x51, 0x75, 0xa1, 0x15, 0xf5, 0xa9, 0xf1, 0x91, 0x80, 0x37, 0xb7, 0xf9,
- 0x1b, 0x80, 0x88, 0xe9, 0x9c, 0x56, 0x93, 0xfc, 0x62, 0xb5, 0x20, 0xf2,
- 0x25, 0x81, 0x63, 0xd6, 0x2f, 0x1f, 0x89, 0xcc, 0xb1, 0xdd, 0x65, 0x43,
- 0xb2, 0x44, 0x0b, 0xa9, 0x3c, 0x18, 0x77, 0x06, 0x21, 0x0d, 0xba, 0x0d,
- 0x3c, 0xbd, 0xf1, 0xf1, 0xc5, 0x11, 0xed, 0xce, 0xfb, 0x8b, 0x6f, 0x7a,
- 0xaa, 0x52, 0x34, 0x13, 0x05, 0x01, 0x6a, 0x52, 0x15, 0x29, 0x2d, 0xbd,
- 0x25, 0x3f, 0x14, 0xc2, 0x72, 0xdb, 0xc8, 0xd0, 0x0d, 0x5f, 0x78, 0x63,
- 0xa3, 0x9f, 0x8d, 0x9e, 0x6d, 0x35, 0x36, 0x66, 0x3d, 0x5a, 0x5c, 0xb3,
- 0x7c, 0x92, 0xd2, 0xb4, 0xc2, 0x95, 0x71, 0xc8, 0xda, 0xb6, 0x07, 0x13,
- 0x16, 0x99, 0x39, 0x36, 0xe7, 0x5b, 0x47, 0x56, 0xb3, 0xcf, 0xf1, 0x76,
- 0x0a, 0x39, 0x30, 0xd5, 0x1c, 0x9a, 0x90, 0x0a, 0x33, 0x61, 0x91, 0x50,
- 0x97, 0x50, 0xd0, 0x4e, 0xfb, 0x33, 0xb3, 0x21, 0x23, 0xa8, 0x72, 0xd1,
- 0x8e, 0xb0, 0x5a, 0x43, 0xdb, 0xc8, 0x60, 0x02, 0x84, 0x4f, 0xdc, 0xe8,
- 0x44, 0x58, 0x8b, 0x16, 0xa9, 0xe0, 0x52, 0x04, 0x70, 0x6d, 0x4d, 0x4a,
- 0x56, 0x9d, 0xec, 0x47, 0xf9, 0xd9, 0xcd, 0x03, 0x20, 0x1e, 0x70, 0x75,
- 0x37, 0x08, 0x0b, 0xfa, 0x06, 0x46, 0xa3, 0x01, 0xa9, 0xbe, 0xa0, 0x05,
- 0x54, 0x15, 0xf1, 0x02, 0x66, 0x51, 0x2b, 0x1d, 0x89, 0x5a, 0xdb, 0x1c,
- 0x6f, 0xb9, 0x82, 0x62, 0x2c, 0x1a, 0x6b, 0x6b, 0x1c, 0x90, 0xdc, 0x08,
- 0x40, 0x0e, 0x52, 0xd9, 0x15, 0x09, 0xa0, 0x0b, 0x95, 0x27, 0x38, 0x89,
- 0xed, 0x8b, 0x16, 0xdc, 0x6f, 0x7a, 0x37, 0xeb, 0xce, 0xb1, 0x14, 0x01,
- 0x48, 0xf2, 0x19, 0x7c, 0x01, 0xf9, 0xc3, 0xef, 0x5f, 0x37, 0x4a, 0xae,
- 0x62, 0x56, 0x20, 0x04, 0xc9, 0xf7, 0xce, 0xd6, 0xe5, 0xde, 0x9a, 0x37,
- 0x87, 0x68, 0x49, 0x6a, 0x11, 0xcc, 0x92, 0x64, 0xe9, 0x70, 0x03, 0x51,
- 0x03, 0x43, 0xaa, 0x6f, 0xd0, 0x91, 0x63, 0x03, 0xde, 0x3d, 0xc0, 0xa5,
- 0xee, 0xd7, 0x8c, 0x4e, 0xd9, 0x40, 0x0d, 0x9d, 0x9f, 0x51, 0x7c, 0x49,
- 0xd3, 0x8a, 0x76, 0x3f, 0x7b, 0xf2, 0x79, 0x54, 0x72, 0x3e, 0x4f, 0x1a,
- 0x2e, 0x99, 0xa0, 0x6b, 0xac, 0xcf, 0xaa, 0x56, 0xb9, 0xd9, 0xcc, 0xa3,
- 0x9a, 0x63, 0x46, 0xea, 0x72, 0x7e, 0x97, 0xe0, 0xe6, 0xd2, 0x7c, 0x97,
- 0x76, 0x92, 0x2d, 0x2d, 0xa2, 0x55, 0x93, 0x17, 0xdb, 0x19, 0xd6, 0x49,
- 0x8c, 0x30, 0xa3, 0x80, 0x32, 0x67, 0xc4, 0x74, 0x18, 0xd1, 0x98, 0xd8,
- 0xc3, 0xf9, 0xd1, 0xc5, 0x39, 0xfd, 0x18, 0x5f, 0x9c, 0x9e, 0xaf, 0x49,
- 0x85, 0xaf, 0xa6, 0x60, 0x7b, 0xbc, 0x68, 0x4c, 0x35, 0x8c, 0x16, 0x6b,
- 0x91, 0x26, 0x01, 0xbf, 0x80, 0xe7, 0x49, 0x58, 0x48, 0xd9, 0x09, 0xd0,
- 0x15, 0xe0, 0x74, 0x95, 0xf5, 0x32, 0xa9, 0x97, 0xc4, 0xcb, 0x1f, 0x9c,
- 0x98, 0xec, 0xf9, 0xc3, 0x14, 0x82, 0x09, 0x33, 0x31, 0xf2, 0x8c, 0x1d,
- 0xd3, 0xc6, 0x68, 0xb5, 0x86, 0x9a, 0x37, 0xe1, 0xab, 0x25, 0x63, 0x0d,
- 0x85, 0x08, 0x59, 0x49, 0xb9, 0xba, 0x5a, 0x09, 0x92, 0x9e, 0x65, 0x69,
- 0xf5, 0xd8, 0x57, 0x74, 0xe3, 0xd0, 0x88, 0x1f, 0xa1, 0xdf, 0xb8, 0x74,
- 0x26, 0x1c, 0xbe, 0x32, 0xf3, 0x45, 0x22, 0xd2, 0xbc, 0x98, 0xe4, 0x8d,
- 0xeb, 0xc8, 0x3d, 0x21, 0x30, 0x20, 0x51, 0x57, 0x92, 0xa0, 0x83, 0xfe,
- 0xe2, 0x5d, 0xee, 0xbb, 0x64, 0xaf, 0x5c, 0xa9, 0x43, 0xf6, 0x85, 0x04,
- 0x9c, 0x79, 0x05, 0x4c, 0xb5, 0xbe, 0x8d, 0xaa, 0xef, 0x48, 0xad, 0xc1,
- 0x95, 0x77, 0x9b, 0x5c, 0x99, 0x33, 0xe5, 0xba, 0x39, 0x0b, 0xe2, 0x56,
- 0x2c, 0xdf, 0xca, 0x55, 0xc6, 0x70, 0xf8, 0x38, 0x21, 0x1c, 0xf3, 0x99,
- 0x3e, 0xd5, 0x19, 0xe9, 0x6f, 0xf5, 0x70, 0x3d, 0x6d, 0xeb, 0x96, 0x4b,
- 0xf2, 0xda, 0xaa, 0xc9, 0x4d, 0x6b, 0x42, 0x52, 0x9b, 0x7f, 0x76, 0xd4,
- 0xab, 0x88, 0x86, 0x67, 0xdb, 0x41, 0x82, 0xa0, 0xe2, 0xd9, 0xd5, 0x66,
- 0xbe, 0xdb, 0x2d, 0x78, 0xac, 0xc3, 0xb6, 0x69, 0x4a, 0x1f, 0x30, 0xe8,
- 0x8a, 0x3c, 0x59, 0xa8, 0x0c, 0xd2, 0x9d, 0xd5, 0x1b, 0xbd, 0xcf, 0x34,
- 0xbd, 0x36, 0xf3, 0x55, 0x4c, 0x6c, 0x11, 0x39, 0x73, 0x9c, 0x0d, 0xc3,
- 0x72, 0x3b, 0xcd, 0x72, 0x89, 0x51, 0xe4, 0x45, 0xe8, 0x88, 0xc4, 0x82,
- 0xc0, 0x8a, 0xa8, 0x33, 0xbb, 0x52, 0xb4, 0x3d, 0x35, 0x01, 0x14, 0x4c,
- 0xd8, 0xcd, 0xe4, 0x48, 0x38, 0xb5, 0x5a, 0x47, 0xe9, 0x2c, 0xdc, 0x44,
- 0x61, 0x71, 0x10, 0xc3, 0x3d, 0x6f, 0xa8, 0x24, 0xa4, 0x54, 0x92, 0xee,
- 0x2c, 0xbd, 0x51, 0xe6, 0xda, 0x36, 0x50, 0x63, 0x50, 0x92, 0x7d, 0xa8,
- 0x15, 0x45, 0xea, 0x49, 0x7d, 0x26, 0xc2, 0x35, 0xef, 0x33, 0xc6, 0x7f,
- 0x07, 0xbd, 0x0d, 0xd3, 0xe5, 0xe3, 0x49, 0x98, 0x96, 0xfe, 0xc9, 0xc3,
- 0xf2, 0x69, 0x0d, 0x21, 0xf7, 0x29, 0x57, 0x57, 0x57, 0xc8, 0xa9, 0x49,
- 0xdb, 0xf0, 0x05, 0x28, 0x85, 0xac, 0xe6, 0x41, 0x05, 0xb1, 0x21, 0x31,
- 0x8b, 0x07, 0xed, 0xa6, 0x07, 0x3b, 0x30, 0x7a, 0x53, 0x52, 0xf6, 0x80,
- 0x90, 0x6b, 0xa3, 0x6b, 0xd8, 0x9a, 0x2c, 0x9b, 0x11, 0x62, 0x20, 0x0f,
- 0x91, 0x24, 0x1a, 0xc0, 0x36, 0xd2, 0x78, 0xdd, 0x80, 0xdb, 0x41, 0x71,
- 0x8a, 0xee, 0x20, 0x92, 0x8c, 0x9d, 0x29, 0xab, 0xd2, 0x1a, 0xf6, 0x55,
- 0xa3, 0xe0, 0xa7, 0xa3, 0xbd, 0xad, 0x07, 0x73, 0x3a, 0x58, 0x6e, 0x67,
- 0x24, 0x2c, 0x49, 0xf6, 0x23, 0x15, 0x4b, 0x12, 0xae, 0x25, 0x65, 0xb7,
- 0x90, 0xad, 0xf5, 0x25, 0xb2, 0x30, 0x8b, 0x36, 0x7c, 0x3a, 0xaf, 0x50,
- 0x73, 0xdf, 0xe8, 0x98, 0x7d, 0x42, 0x5a, 0x3a, 0x84, 0xdf, 0x38, 0x3a,
- 0xa3, 0xbb, 0xc5, 0x2d, 0x71, 0x90, 0xa9, 0x4a, 0xef, 0x40, 0xcd, 0xe0,
- 0x61, 0x6c, 0x35, 0x2f, 0x42, 0x06, 0x68, 0x45, 0x44, 0xcb, 0x1b, 0x6f,
- 0x92, 0x67, 0xa5, 0x6f, 0x41, 0x1f, 0xb2, 0x5b, 0xa0, 0xa0, 0x61, 0x00,
- 0x87, 0x43, 0x0a, 0xbd, 0xe1, 0xd0, 0xb2, 0xed, 0xd9, 0xf8, 0xe8, 0x46,
- 0xe7, 0xfd, 0x8c, 0xb5, 0xf5, 0x17, 0x00, 0x07, 0xd9, 0xd1, 0xc9, 0x2c,
- 0xc3, 0x3a, 0x28, 0xab, 0xa5, 0x6a, 0x3f, 0xb3, 0xfc, 0x2e, 0x43, 0x69,
- 0x80, 0xa8, 0x4d, 0x4d, 0x18, 0x3e, 0x9f, 0x9d, 0x46, 0x5e, 0xca, 0xde,
- 0xce, 0xe8, 0x63, 0x93, 0x9d, 0x96, 0xe5, 0x7c, 0x38, 0x9d, 0x4e, 0x1f,
- 0xe0, 0xa8, 0x87, 0x87, 0x87, 0xf4, 0xc1, 0x21, 0x90, 0x12, 0x18, 0x21,
- 0x14, 0x23, 0x3d, 0xbc, 0x66, 0x53, 0xcd, 0x7c, 0x2b, 0x1a, 0x5f, 0xaf,
- 0x18, 0xb3, 0x8a, 0x2b, 0xb7, 0x33, 0x55, 0x8c, 0xc7, 0x27, 0xdb, 0x17,
- 0x27, 0xe3, 0xa6, 0xd3, 0x2b, 0xbe, 0x67, 0x5d, 0x0f, 0x3a, 0x5d, 0x5d,
- 0x73, 0x11, 0xc1, 0x0d, 0x18, 0x65, 0x16, 0xe7, 0x6d, 0x74, 0x25, 0x3d,
- 0x74, 0xa6, 0x23, 0xad, 0xb2, 0xa0, 0x28, 0x91, 0x6a, 0x56, 0x59, 0x92,
- 0x21, 0xe8, 0xd1, 0x21, 0x29, 0x6b, 0x75, 0xfa, 0x77, 0x07, 0x17, 0x5c,
- 0xac, 0xb0, 0xd2, 0x4c, 0xaa, 0xee, 0x14, 0x12, 0x07, 0x70, 0x87, 0xc4,
- 0xe7, 0x38, 0x00, 0xed, 0xb7, 0x3b, 0x00, 0xac, 0x28, 0x2d, 0x8d, 0x35,
- 0x8e, 0x34, 0x86, 0xbe, 0x03, 0x91, 0x58, 0x57, 0x74, 0xe8, 0x6e, 0x20,
- 0xc9, 0x42, 0xe0, 0x3f, 0xcb, 0xc6, 0x86, 0xec, 0x3e, 0x6f, 0xdf, 0x6f,
- 0xb5, 0xd7, 0x7f, 0x94, 0x2c, 0xe0, 0x6d, 0xed, 0xf5, 0xe7, 0x5f, 0xbf,
- 0x4d, 0x89, 0x72, 0x0b, 0x7e, 0x4c, 0x48, 0xe3, 0xa2, 0x23, 0x34, 0x37,
- 0x60, 0xbb, 0xae, 0x8c, 0x84, 0x64, 0xbe, 0x28, 0x56, 0x63, 0x49, 0xdb,
- 0x3d, 0x43, 0xf5, 0x1c, 0xb9, 0x06, 0x5c, 0x3e, 0xda, 0x5d, 0xdc, 0x62,
- 0x1b, 0xc6, 0x29, 0x02, 0x04, 0x91, 0x9c, 0x98, 0x8b, 0x04, 0x2d, 0xb9,
- 0xe6, 0x8b, 0x64, 0x39, 0xbf, 0x77, 0x62, 0x9a, 0x36, 0xbf, 0x4e, 0x7f,
- 0x0b, 0xa5, 0xfd, 0x30, 0x41, 0xda, 0xc6, 0x58, 0xd6, 0x5b, 0x41, 0x47,
- 0x71, 0xda, 0x69, 0x78, 0x8e, 0xb5, 0xe7, 0x46, 0xb5, 0xc0, 0xf6, 0x0e,
- 0xed, 0x75, 0xee, 0x90, 0x50, 0x69, 0xf7, 0x7e, 0x9c, 0xeb, 0xb1, 0xb7,
- 0xd3, 0xa0, 0x51, 0x90, 0x46, 0x63, 0xf3, 0xfc, 0x8a, 0xa3, 0xa3, 0x05,
- 0x7b, 0x04, 0x8b, 0x64, 0xc5, 0x32, 0x9a, 0x76, 0x09, 0xa1, 0x60, 0x2d,
- 0x16, 0x5a, 0xf7, 0x2c, 0x89, 0x2c, 0xc2, 0x3c, 0xc5, 0xd1, 0xbd, 0x01,
- 0x1a, 0xb9, 0xe4, 0xfd, 0x8e, 0xfd, 0x70, 0xc1, 0x15, 0x53, 0x0e, 0xa9,
- 0x86, 0x4b, 0xb4, 0x34, 0x64, 0x07, 0xa9, 0xb4, 0xa2, 0xd1, 0x14, 0x56,
- 0x95, 0x5c, 0x55, 0xd3, 0x75, 0x25, 0xe2, 0x75, 0x86, 0xed, 0x55, 0xdb,
- 0xd9, 0xd2, 0x2b, 0x9b, 0xe4, 0x0a, 0x62, 0x63, 0xde, 0xfc, 0xa1, 0x32,
- 0x61, 0x2b, 0xd3, 0x7f, 0x22, 0x80, 0xe0, 0xb7, 0x86, 0x39, 0x78, 0xb9,
- 0xaa, 0x78, 0xd6, 0x1a, 0x55, 0x56, 0x63, 0xf1, 0x6c, 0x9e, 0xd7, 0x48,
- 0x76, 0x71, 0x91, 0x3d, 0x58, 0x8f, 0x37, 0x1a, 0xab, 0x39, 0x59, 0xf3,
- 0xd0, 0xe1, 0x0c, 0x0b, 0xe1, 0x09, 0x3d, 0x54, 0xb0, 0x36, 0x7a, 0xd9,
- 0x19, 0xb8, 0x2e, 0x31, 0x69, 0x1c, 0x17, 0x44, 0x7a, 0x26, 0x2f, 0x94,
- 0x5e, 0x4d, 0x73, 0xce, 0x32, 0x60, 0x39, 0x69, 0x14, 0x9d, 0x24, 0xe2,
- 0x91, 0xea, 0x7f, 0xd9, 0x17, 0x2e, 0xdd, 0x7f, 0xd9, 0x8f, 0x34, 0xf0,
- 0xbf, 0x5d, 0x59, 0x8a, 0x6f, 0x0c, 0xab, 0x6c, 0xd0, 0x17, 0x93, 0x73,
- 0xdf, 0x86, 0xa0, 0x42, 0xbb, 0x0c, 0x0b, 0x71, 0x3c, 0x99, 0xa6, 0xe7,
- 0x90, 0x8c, 0xc7, 0x12, 0x51, 0x87, 0xfe, 0x5a, 0x87, 0xb0, 0x59, 0x4a,
- 0x9e, 0x1a, 0xfb, 0x89, 0x18, 0xce, 0x59, 0xa6, 0x2d, 0x9b, 0x5b, 0x24,
- 0xfd, 0x12, 0xd1, 0x01, 0x52, 0x3b, 0xa8, 0x2b, 0xf4, 0xc7, 0xb2, 0x96,
- 0x12, 0x57, 0xe9, 0x57, 0xc7, 0x82, 0xc4, 0xcf, 0xe9, 0x14, 0x71, 0x14,
- 0x10, 0x0e, 0xe9, 0x5b, 0x92, 0x6a, 0xe4, 0xa4, 0xf3, 0xbc, 0xd9, 0x58,
- 0xfc, 0xb2, 0x19, 0xb4, 0x78, 0x99, 0xc4, 0xbc, 0x9b, 0x25, 0x33, 0xf9,
- 0x26, 0xaa, 0xf4, 0xf0, 0x8a, 0x25, 0xc2, 0xab, 0x79, 0x3e, 0xc9, 0x2f,
- 0x2f, 0x1f, 0x30, 0x45, 0x0a, 0x34, 0x02, 0xda, 0x10, 0x12, 0xed, 0x71,
- 0x6a, 0x20, 0xbf, 0x37, 0xe1, 0xf1, 0x69, 0x5d, 0xc9, 0x91, 0x58, 0x64,
- 0x80, 0x8f, 0xd9, 0x92, 0x02, 0x42, 0xe1, 0x79, 0xe0, 0xf2, 0x17, 0x2d,
- 0xeb, 0x89, 0x9a, 0x33, 0x39, 0x53, 0x03, 0x5c, 0x3c, 0x9a, 0x66, 0x19,
- 0xfd, 0xc7, 0xdf, 0x7f, 0xfc, 0xb9, 0x23, 0x59, 0x80, 0x35, 0x1b, 0x8d,
- 0xd1, 0x46, 0x6c, 0x98, 0x60, 0x0f, 0x41, 0x85, 0x60, 0x31, 0xc4, 0x97,
- 0xdf, 0xd1, 0xd2, 0xc0, 0xa3, 0x20, 0x2d, 0xac, 0xcd, 0xe0, 0x98, 0x91,
- 0x5b, 0x87, 0x00, 0xba, 0xcc, 0x2b, 0x8b, 0x05, 0x60, 0xec, 0x25, 0x60,
- 0xcf, 0x79, 0x6f, 0x9a, 0xc3, 0x75, 0x11, 0xad, 0xbd, 0x7d, 0xa0, 0x1c,
- 0x3c, 0x97, 0x73, 0xaf, 0x2a, 0x9f, 0x7d, 0x7f, 0x7e, 0xec, 0x74, 0xba,
- 0x60, 0x27, 0xbe, 0xc6, 0x4e, 0xb4, 0x96, 0xcd, 0xe1, 0xc1, 0xd6, 0x4b,
- 0x3e, 0x78, 0x58, 0x3c, 0x54, 0x8b, 0x13, 0xe6, 0x53, 0x83, 0xb1, 0x46,
- 0x81, 0xde, 0xd9, 0xa0, 0x13, 0xb1, 0x78, 0xd0, 0x04, 0x57, 0xcd, 0x8b,
- 0x36, 0x64, 0x66, 0x90, 0xfa, 0x9c, 0xba, 0x18, 0x88, 0x66, 0xf8, 0xc9,
- 0x91, 0xc7, 0x7a, 0x0f, 0xbc, 0x61, 0x06, 0x1b, 0xe7, 0x71, 0xe0, 0x01,
- 0xbe, 0xc7, 0xe4, 0x7f, 0x87, 0x92, 0xb8, 0x06, 0x88, 0xda, 0xa9, 0x15,
- 0x5d, 0x78, 0x54, 0x55, 0x61, 0x5d, 0x06, 0xae, 0xe6, 0x57, 0xf0, 0xc4,
- 0xd2, 0x3f, 0xfa, 0xff, 0xd6, 0xf7, 0x58, 0x96, 0x1d, 0xe9, 0x4f, 0x2e,
- 0x75, 0xbb, 0xa3, 0xf2, 0xe8, 0xf0, 0x78, 0xe0, 0x47, 0xea, 0x3b, 0xb4,
- 0x79, 0x4c, 0x3a, 0x50, 0xdc, 0xd7, 0x0d, 0xe3, 0x9b, 0xa3, 0x83, 0xd7,
- 0x36, 0xd9, 0x7f, 0x0a, 0x20, 0x94, 0x37, 0x04, 0x4d, 0x12, 0x01, 0xab,
- 0x5f, 0x99, 0x2e, 0x89, 0x4d, 0xb1, 0xbb, 0x03, 0x24, 0x42, 0xd2, 0x36,
- 0xd7, 0x2f, 0x61, 0x92, 0x6d, 0xab, 0x8e, 0x6a, 0x75, 0x5a, 0xab, 0x3c,
- 0x06, 0x86, 0x39, 0x33, 0xf2, 0xf1, 0xe1, 0x15, 0x16, 0x17, 0xd0, 0x6f,
- 0x98, 0xda, 0xfc, 0x52, 0x7e, 0xae, 0xb9, 0x14, 0x8e, 0x00, 0xbf, 0xab,
- 0x8f, 0xd2, 0x5a, 0x2a, 0x5e, 0xa4, 0xf1, 0x5d, 0xa3, 0x19, 0xa8, 0x5c,
- 0x16, 0x5c, 0xd5, 0x45, 0x7c, 0x1a, 0x5c, 0x6d, 0xb2, 0xc3, 0x9f, 0x15,
- 0x5b, 0xde, 0x58, 0x0a, 0x50, 0x02, 0x5d, 0xc1, 0xb1, 0x24, 0xe8, 0xb4,
- 0xec, 0x84, 0xde, 0x33, 0x67, 0x53, 0x80, 0x85, 0x4f, 0x6a, 0x19, 0xe3,
- 0xa9, 0x90, 0x72, 0x4d, 0x72, 0x8a, 0x0d, 0x98, 0x1f, 0xbb, 0x56, 0x0f,
- 0x2f, 0x34, 0x38, 0x18, 0xbd, 0x5b, 0x15, 0x09, 0xb0, 0x79, 0x2e, 0xb1,
- 0xc6, 0xd9, 0x35, 0x04, 0xf6, 0x56, 0x14, 0x42, 0xb3, 0xb9, 0x0e, 0xc4,
- 0x99, 0xce, 0xb8, 0x54, 0x45, 0x66, 0x99, 0xd8, 0x9d, 0x85, 0xc2, 0x6b,
- 0xce, 0x8c, 0xe6, 0x89, 0x73, 0x7d, 0x20, 0x2b, 0x3e, 0x94, 0xc3, 0xdb,
- 0xbb, 0xce, 0x6b, 0x27, 0xa0, 0x8c, 0xc8, 0xba, 0xe6, 0x9b, 0x64, 0x7a,
- 0x93, 0x22, 0xb2, 0xaf, 0x5a, 0x81, 0xc7, 0xc7, 0x59, 0x38, 0x4a, 0x07,
- 0x3f, 0x34, 0xcb, 0xb1, 0xd2, 0xdd, 0x44, 0x64, 0x32, 0x25, 0x03, 0xc2,
- 0xd8, 0x68, 0x34, 0xaf, 0xdc, 0xf0, 0xba, 0x8d, 0x6f, 0xa3, 0x10, 0xa4,
- 0xa0, 0x1f, 0x25, 0x45, 0x2b, 0x1d, 0x27, 0x41, 0x34, 0x1f, 0x14, 0x2f,
- 0x98, 0xc2, 0xb4, 0xb0, 0x30, 0x28, 0x9c, 0xcb, 0x71, 0xb1, 0xac, 0xe2,
- 0xf0, 0x67, 0x78, 0xca, 0xba, 0x3c, 0xc4, 0xef, 0xaf, 0xd2, 0xdb, 0x4e,
- 0xfb, 0xb2, 0x0d, 0x0c, 0xd6, 0x69, 0x1b, 0x85, 0x83, 0x7a, 0x75, 0x86,
- 0x3c, 0x41, 0x0f, 0x8b, 0x18, 0x4d, 0xdb, 0x6d, 0x5f, 0x3b, 0xa7, 0x9a,
- 0xaf, 0xb0, 0x98, 0xaf, 0xfa, 0x7d, 0x22, 0xfc, 0xa8, 0xf7, 0x4d, 0x5e,
- 0x56, 0xfb, 0x3d, 0x07, 0x2f, 0x54, 0x26, 0x2a, 0x59, 0xd4, 0x29, 0x47,
- 0xe1, 0xa7, 0x5b, 0x61, 0x59, 0xb8, 0xdb, 0xe5, 0xfc, 0xd1, 0xc5, 0xa2,
- 0x0f, 0x9b, 0x0b, 0x52, 0x73, 0x9a, 0x1d, 0x42, 0x04, 0x43, 0xf7, 0x2e,
- 0x52, 0x1d, 0x02, 0x40, 0x10, 0x9a, 0x5c, 0xaa, 0xc4, 0x90, 0x7e, 0x18,
- 0x1e, 0xa2, 0xf3, 0xe1, 0x37, 0x68, 0xef, 0x4f, 0x3d, 0xa7, 0x76, 0x37,
- 0xbf, 0xda, 0xef, 0xad, 0x49, 0x9b, 0x08, 0xa1, 0x3b, 0xcb, 0x55, 0x61,
- 0xf9, 0xd4, 0x30, 0xa3, 0xeb, 0x28, 0x51, 0x6d, 0x69, 0x36, 0xdb, 0x76,
- 0x9b, 0x2e, 0x1e, 0xbf, 0xae, 0xc4, 0x3e, 0x4d, 0xfa, 0x59, 0x22, 0x54,
- 0x6f, 0x36, 0xcc, 0x2f, 0x87, 0x28, 0x81, 0xb9, 0x88, 0x8b, 0x1b, 0xf6,
- 0xaf, 0x04, 0xa7, 0x0e, 0xf8, 0xe4, 0x48, 0x53, 0x9b, 0xcd, 0xba, 0xee,
- 0x6a, 0xcd, 0xaf, 0x28, 0x9c, 0xda, 0xaa, 0x83, 0xd1, 0xcd, 0xdc, 0x67,
- 0x55, 0xc7, 0x5e, 0x77, 0xf0, 0xd7, 0x5c, 0x34, 0x52, 0xd1, 0xaf, 0x5b,
- 0xb5, 0xf3, 0x10, 0x99, 0x37, 0x90, 0xeb, 0x1c, 0x93, 0x06, 0x2b, 0x5e,
- 0x88, 0x05, 0x09, 0x56, 0x00, 0x52, 0xfd, 0x59, 0x30, 0x65, 0x28, 0xfa,
- 0x87, 0xab, 0x2a, 0x1d, 0x58, 0x91, 0xd9, 0x21, 0x75, 0xa4, 0x88, 0xba,
- 0x75, 0x10, 0x8a, 0x75, 0xb0, 0x81, 0x63, 0x46, 0x14, 0x57, 0xf1, 0xf3,
- 0xb3, 0xd1, 0x93, 0xcf, 0xb8, 0xc8, 0x93, 0xc3, 0x9e, 0xb2, 0x42, 0xb4,
- 0x9e, 0x69, 0x62, 0x2b, 0x03, 0xfa, 0x6a, 0x95, 0xe2, 0xe0, 0xf2, 0x41,
- 0xbc, 0x1e, 0x33, 0xcd, 0x98, 0x07, 0xe0, 0x79, 0x47, 0xb1, 0x5b, 0x0d,
- 0xec, 0x69, 0xf9, 0x5c, 0x7e, 0xa7, 0xbe, 0x7c, 0xd0, 0xd2, 0x1b, 0xbe,
- 0x90, 0x86, 0xef, 0x88, 0xd1, 0xed, 0x47, 0xff, 0x9e, 0x27, 0x3d, 0xab,
- 0xca, 0xb6, 0xfb, 0x62, 0x8f, 0x14, 0x8e, 0xcf, 0x47, 0x3b, 0xa3, 0xdd,
- 0xed, 0x87, 0x31, 0x44, 0x10, 0xb6, 0xc2, 0x61, 0x5e, 0x1d, 0xee, 0x6c,
- 0xe4, 0xeb, 0x79, 0x2a, 0xda, 0x16, 0x5d, 0xa4, 0xcb, 0x07, 0xc4, 0xaf,
- 0x18, 0x0f, 0x0f, 0xb4, 0x12, 0x2e, 0x01, 0xb7, 0x5c, 0x4d, 0x16, 0xb3,
- 0x67, 0xd1, 0x4b, 0xfa, 0xa7, 0x1d, 0x9d, 0x7d, 0x68, 0x2e, 0x43, 0xb6,
- 0x6e, 0xf2, 0x19, 0xd2, 0x5c, 0x5c, 0x91, 0x35, 0xf9, 0xd7, 0x27, 0x7b,
- 0xd4, 0xf0, 0xc7, 0xd8, 0x4a, 0x68, 0x45, 0xb3, 0xf4, 0x2a, 0xad, 0xba,
- 0x53, 0xa3, 0x4c, 0x28, 0x0f, 0x70, 0xdd, 0x79, 0xef, 0x77, 0xf7, 0x3e,
- 0x8f, 0x26, 0x69, 0x15, 0xbd, 0x7d, 0xfd, 0x8c, 0xd4, 0x8e, 0x64, 0x7a,
- 0x53, 0xae, 0x16, 0x46, 0xa1, 0x5a, 0x6e, 0x89, 0xc7, 0xd9, 0x6f, 0x5e,
- 0x14, 0x3e, 0x14, 0x7a, 0x50, 0x33, 0x14, 0x5e, 0x9a, 0x41, 0x33, 0xa8,
- 0x44, 0xe6, 0x4e, 0x12, 0xb7, 0xa4, 0x06, 0xd5, 0x0e, 0x55, 0x9d, 0xd6,
- 0x80, 0x3a, 0x2f, 0xad, 0x62, 0x7c, 0x4d, 0x3d, 0xfc, 0xac, 0x6e, 0xf6,
- 0x90, 0x28, 0x7a, 0xc3, 0xa4, 0x1d, 0x92, 0xf0, 0x77, 0xd5, 0x8a, 0x92,
- 0x35, 0x65, 0xee, 0x18, 0xcf, 0x36, 0x22, 0x0b, 0x4f, 0xf0, 0x46, 0x00,
- 0xfc, 0x21, 0x62, 0x09, 0x9f, 0xcf, 0x74, 0xba, 0x9a, 0x73, 0x99, 0xd6,
- 0xb6, 0x00, 0x63, 0xc5, 0x9f, 0x0c, 0x66, 0xa7, 0x58, 0x49, 0x41, 0xcf,
- 0x83, 0x25, 0x87, 0xc5, 0x45, 0xbb, 0xa3, 0x8f, 0x83, 0xb0, 0x48, 0xbd,
- 0x56, 0x8e, 0x43, 0x2d, 0xfa, 0xd6, 0x65, 0x01, 0xd3, 0x76, 0x63, 0x34,
- 0xdc, 0xb6, 0x04, 0x24, 0xce, 0xd9, 0xb5, 0x53, 0xc8, 0x7d, 0xb6, 0x47,
- 0x97, 0xc3, 0x55, 0x8c, 0xd2, 0xa3, 0x01, 0xf5, 0xa4, 0x03, 0x00, 0xa4,
- 0x41, 0x06, 0x59, 0x37, 0x71, 0x95, 0x50, 0x64, 0xe6, 0xfc, 0xa1, 0x9d,
- 0x44, 0x95, 0x59, 0x24, 0x96, 0x56, 0x44, 0xd7, 0xe0, 0xeb, 0xd6, 0x3d,
- 0x84, 0x66, 0x1c, 0x57, 0x81, 0x8b, 0x48, 0x96, 0x60, 0xc8, 0x42, 0xc4,
- 0x80, 0xa5, 0xd0, 0xc4, 0x0b, 0x0d, 0x41, 0x08, 0x31, 0x1a, 0x6d, 0xa7,
- 0xd7, 0x20, 0xe9, 0xcb, 0xc2, 0x80, 0x47, 0xa3, 0x60, 0x56, 0xc7, 0x26,
- 0x8e, 0x75, 0x4d, 0x89, 0x4b, 0x62, 0x6d, 0xbf, 0x39, 0x3e, 0x39, 0xda,
- 0x8a, 0xde, 0x24, 0x16, 0x31, 0x1f, 0x4e, 0x8b, 0x19, 0xe0, 0xbf, 0xc8,
- 0x27, 0xb6, 0x45, 0xaa, 0x46, 0x76, 0x39, 0xf6, 0xd5, 0xe0, 0x05, 0x21,
- 0x58, 0x76, 0x0d, 0xf2, 0xae, 0xe4, 0xc6, 0xe5, 0x88, 0x44, 0xb4, 0xb2,
- 0x68, 0x30, 0x5c, 0x05, 0x95, 0x40, 0x3a, 0x6a, 0x72, 0x06, 0xb1, 0xd3,
- 0xa3, 0xa0, 0x1c, 0x46, 0x1e, 0xba, 0xfa, 0x79, 0xec, 0x1a, 0x71, 0x27,
- 0xbe, 0x3d, 0x29, 0xee, 0xdb, 0x75, 0x16, 0xe0, 0x99, 0x2b, 0xd3, 0xbf,
- 0x49, 0x78, 0x32, 0xa2, 0x42, 0x16, 0xf9, 0xcc, 0x61, 0xdc, 0x4b, 0x25,
- 0x41, 0x9e, 0x6f, 0xc8, 0x50, 0x02, 0x18, 0xbf, 0xae, 0xa4, 0xef, 0x33,
- 0x41, 0xf4, 0xe7, 0x01, 0x85, 0xb1, 0x06, 0x22, 0x67, 0x78, 0x2d, 0xcc,
- 0xb5, 0x32, 0x72, 0xe1, 0x6a, 0x5c, 0x19, 0xb3, 0x83, 0x2e, 0x1c, 0x3a,
- 0x9f, 0x90, 0x41, 0xe8, 0xc3, 0xa0, 0xd9, 0xe2, 0xb0, 0x4b, 0xe0, 0xe0,
- 0x41, 0x66, 0x51, 0x45, 0x52, 0xf9, 0x04, 0x49, 0x7d, 0xad, 0x34, 0x87,
- 0x8e, 0xb8, 0x2f, 0xe5, 0xe6, 0xc1, 0xcc, 0x48, 0x96, 0xdf, 0xd9, 0xdf,
- 0x0d, 0x0b, 0x8d, 0x66, 0x5a, 0x46, 0x9b, 0xe3, 0xb1, 0xb6, 0x7f, 0xbb,
- 0xc8, 0x9b, 0xbf, 0x30, 0x69, 0xfe, 0x65, 0x95, 0xdd, 0x10, 0x6d, 0x95,
- 0x4c, 0xc1, 0xc3, 0xee, 0x62, 0xe7, 0x7a, 0xfa, 0xbe, 0x77, 0xae, 0x97,
- 0x66, 0x39, 0x9d, 0x69, 0x58, 0x14, 0x26, 0x0e, 0x10, 0xc4, 0x07, 0x0f,
- 0xe4, 0xdf, 0xd5, 0xc4, 0x1a, 0x8e, 0xcc, 0x27, 0xda, 0x99, 0x72, 0x50,
- 0x07, 0x2b, 0xd2, 0x3d, 0x1d, 0x91, 0x35, 0xdd, 0x5b, 0x5f, 0x22, 0x0c,
- 0x35, 0xe1, 0x21, 0xde, 0xc2, 0x44, 0xe4, 0xb4, 0x01, 0x75, 0xa9, 0xc4,
- 0x82, 0x47, 0xcd, 0x02, 0x48, 0x64, 0x8d, 0x0a, 0xf2, 0x34, 0xdf, 0xf3,
- 0xed, 0xd4, 0x8a, 0x0b, 0xc9, 0x78, 0x8d, 0xac, 0xf2, 0x59, 0xe9, 0xe0,
- 0xa1, 0xdd, 0x00, 0xa3, 0xc6, 0xe0, 0x44, 0x43, 0x62, 0xa9, 0xa5, 0xdf,
- 0x3a, 0x97, 0xd3, 0x79, 0x2e, 0xc5, 0x3e, 0xef, 0x42, 0xf3, 0xdd, 0xbf,
- 0x8b, 0x20, 0xc2, 0x77, 0x91, 0x9e, 0xf4, 0x61, 0x47, 0x84, 0x57, 0x58,
- 0x16, 0xc3, 0x92, 0x16, 0x91, 0xd9, 0x04, 0x09, 0xe7, 0x34, 0x68, 0x43,
- 0x02, 0x77, 0x5d, 0x5e, 0xa3, 0x5e, 0x58, 0x9d, 0x50, 0xb8, 0xc3, 0xc0,
- 0x38, 0xe1, 0xb8, 0xf5, 0x6b, 0x3a, 0xb6, 0x79, 0x99, 0xca, 0xbe, 0xf8,
- 0xf0, 0xbb, 0xc0, 0xb4, 0xdd, 0x8e, 0xb0, 0xb1, 0x5c, 0x7e, 0x07, 0x8f,
- 0xe4, 0x62, 0x8e, 0x4c, 0x29, 0xef, 0xca, 0x95, 0x85, 0xd9, 0x2d, 0xcb,
- 0x43, 0x88, 0x54, 0xba, 0xea, 0xd9, 0xcc, 0xf1, 0x7b, 0xa2, 0x42, 0x52,
- 0x38, 0x33, 0xae, 0x03, 0xb6, 0x79, 0x9f, 0x54, 0x5b, 0x1e, 0x02, 0xdc,
- 0x62, 0xda, 0xd6, 0x95, 0xb8, 0x6a, 0x65, 0x2e, 0xb3, 0xfa, 0xa9, 0x2f,
- 0x09, 0xce, 0x28, 0x5f, 0xd7, 0x05, 0x92, 0xfb, 0xd9, 0x49, 0xa2, 0x18,
- 0xee, 0xeb, 0x9a, 0x0b, 0x2f, 0xa5, 0x1b, 0xb9, 0x94, 0xca, 0xae, 0x50,
- 0x2f, 0x4d, 0x36, 0x0b, 0xfa, 0x0d, 0xe2, 0x5f, 0x55, 0xe3, 0x33, 0x47,
- 0x9b, 0x15, 0x1f, 0x89, 0xa2, 0x9e, 0xb5, 0xd6, 0x6b, 0x0a, 0x9e, 0xb5,
- 0x44, 0x2f, 0x09, 0x56, 0x0c, 0x30, 0x68, 0x0f, 0xe8, 0x58, 0xb4, 0x1e,
- 0x61, 0x93, 0xb8, 0xac, 0x64, 0x6b, 0x3a, 0x62, 0x36, 0x5a, 0x10, 0x71,
- 0x99, 0xf1, 0xdc, 0xc2, 0x8f, 0xc5, 0x07, 0x52, 0x4f, 0x45, 0xd5, 0x1c,
- 0x68, 0xd9, 0xf1, 0x98, 0x73, 0x26, 0x9a, 0xc7, 0xec, 0xbe, 0x8e, 0xa8,
- 0x87, 0xfc, 0x13, 0x8d, 0x7b, 0x9f, 0xcf, 0x6b, 0xa3, 0x0a, 0xaa, 0x29,
- 0xae, 0x9d, 0x2c, 0xaa, 0xca, 0x9b, 0x23, 0xba, 0xb6, 0xc8, 0x6d, 0x47,
- 0x74, 0x20, 0xe0, 0x47, 0xbe, 0x64, 0x33, 0x5d, 0x15, 0x00, 0x57, 0x10,
- 0xec, 0x43, 0x29, 0x3c, 0xae, 0xf6, 0xfd, 0xc8, 0x45, 0x7e, 0x4a, 0x32,
- 0x10, 0x02, 0x3e, 0xd7, 0x14, 0x76, 0x46, 0x66, 0xf4, 0x75, 0xfc, 0xf1,
- 0xe3, 0xa8, 0x4c, 0xa4, 0x40, 0x71, 0x59, 0xce, 0x91, 0x85, 0x5d, 0xaf,
- 0xe8, 0x3c, 0xfc, 0x56, 0xcb, 0xb9, 0x5f, 0xa6, 0x57, 0x1c, 0x9a, 0x88,
- 0x9f, 0x5d, 0x98, 0x13, 0x0e, 0x6c, 0x42, 0xcb, 0x62, 0xfb, 0x27, 0x3d,
- 0xbf, 0x04, 0xe4, 0x9b, 0x46, 0x68, 0x09, 0xdb, 0xd4, 0x54, 0xd9, 0x76,
- 0x6a, 0x8e, 0x7b, 0x19, 0x90, 0xb2, 0x9a, 0x24, 0x30, 0x4f, 0x7c, 0x26,
- 0x8b, 0xdd, 0xfa, 0x58, 0x0d, 0xdf, 0xa8, 0x09, 0xfa, 0x4d, 0x15, 0xb0,
- 0x48, 0x2b, 0xce, 0x62, 0xd2, 0x97, 0x45, 0xdd, 0xad, 0x19, 0x33, 0x84,
- 0x61, 0x8a, 0x0e, 0xc6, 0x79, 0x03, 0xf6, 0x46, 0x27, 0xd2, 0x17, 0x31,
- 0x00, 0xae, 0xc7, 0x10, 0x8e, 0xa1, 0xb5, 0x6f, 0xa7, 0xcb, 0x80, 0x9e,
- 0xaf, 0x93, 0xb4, 0xf0, 0xfe, 0x83, 0xd2, 0xa9, 0xd7, 0x9e, 0x2b, 0x85,
- 0xd5, 0x03, 0xd7, 0x2d, 0x88, 0x86, 0xf9, 0x48, 0x11, 0xc1, 0x00, 0xbb,
- 0x91, 0xa9, 0x94, 0x26, 0x46, 0x72, 0x25, 0xc9, 0xaf, 0x2c, 0x93, 0x88,
- 0x7a, 0xae, 0x3e, 0x38, 0xd4, 0x8e, 0x28, 0x3b, 0xf3, 0x56, 0x4e, 0x38,
- 0xa1, 0x5d, 0x0f, 0xb1, 0x40, 0x9a, 0x4c, 0x21, 0x53, 0xb4, 0x71, 0x1d,
- 0x3d, 0x57, 0x92, 0x9d, 0xed, 0x62, 0x22, 0xde, 0xb8, 0x22, 0xe6, 0x20,
- 0x41, 0xcd, 0x93, 0xd0, 0x67, 0x12, 0x2d, 0xcb, 0x6b, 0x0d, 0x45, 0xa6,
- 0x75, 0x2e, 0xf3, 0x81, 0xca, 0x6e, 0x73, 0x06, 0x1d, 0x68, 0x4a, 0x24,
- 0x32, 0x64, 0x0f, 0x9b, 0x54, 0xd6, 0xd1, 0xfb, 0x4a, 0x6f, 0x73, 0x2d,
- 0x47, 0x1a, 0x1a, 0x93, 0x84, 0x91, 0x31, 0xcd, 0xc9, 0x36, 0x0d, 0xd3,
- 0x62, 0x1c, 0x63, 0xb7, 0xd0, 0x5d, 0x1e, 0xe9, 0xd0, 0x24, 0xc5, 0x94,
- 0x4b, 0xa3, 0x49, 0x57, 0xc4, 0xad, 0x3f, 0x71, 0x74, 0x2e, 0x19, 0x07,
- 0xa2, 0xb8, 0xe2, 0xbc, 0xf1, 0x3c, 0xab, 0xd2, 0xef, 0x79, 0xb7, 0x59,
- 0x36, 0xa9, 0x3b, 0x95, 0x38, 0xfa, 0x43, 0xfd, 0x0f, 0xe1, 0x7e, 0xd6,
- 0x9f, 0x53, 0xda, 0x69, 0xd7, 0xbe, 0x94, 0x3b, 0xd7, 0x41, 0xa3, 0x49,
- 0x38, 0x3a, 0x03, 0x3b, 0xea, 0x07, 0xba, 0x13, 0x91, 0xc5, 0xa9, 0xd7,
- 0x6a, 0x23, 0x35, 0x9b, 0x13, 0xe0, 0x2a, 0x7f, 0x37, 0x81, 0xe7, 0x1a,
- 0xc6, 0xc0, 0x7e, 0xf4, 0xd3, 0x4f, 0x83, 0x88, 0x11, 0xb3, 0x7e, 0x22,
- 0xed, 0xe0, 0x27, 0x36, 0x05, 0xfd, 0x54, 0x68, 0x74, 0xc2, 0x4f, 0xb7,
- 0xd4, 0xe5, 0xc1, 0xba, 0x80, 0xf5, 0x28, 0x28, 0xdc, 0x23, 0xa5, 0x8b,
- 0xc4, 0x45, 0xae, 0x85, 0xcb, 0x58, 0x79, 0x93, 0xbc, 0x6a, 0x07, 0xb0,
- 0xd6, 0x85, 0x34, 0x4e, 0x1b, 0xb3, 0x5a, 0x64, 0x92, 0x56, 0xa1, 0x9c,
- 0x06, 0x7c, 0x00, 0xcc, 0xa2, 0xff, 0xbb, 0xbe, 0xdf, 0x9b, 0xa0, 0x10,
- 0x9a, 0xea, 0xc2, 0xfc, 0x60, 0xcb, 0x40, 0x24, 0x8c, 0xa0, 0x92, 0xba,
- 0xc5, 0x62, 0xe1, 0xe1, 0xc3, 0x0d, 0x1d, 0xe0, 0x94, 0xad, 0x31, 0x77,
- 0x28, 0x59, 0x88, 0x58, 0x52, 0xd9, 0x60, 0x36, 0x24, 0x2d, 0xaf, 0xef,
- 0x21, 0x84, 0xb5, 0x04, 0xe0, 0xcc, 0x59, 0x93, 0x03, 0x3e, 0xd8, 0xe6,
- 0xec, 0x1e, 0x72, 0xcf, 0x4b, 0x12, 0xec, 0xb0, 0x0b, 0x79, 0x2e, 0x8d,
- 0xa5, 0x3f, 0xec, 0x07, 0x06, 0x53, 0xc3, 0x14, 0xe9, 0xac, 0x55, 0xe9,
- 0x41, 0xb0, 0xa4, 0x56, 0x65, 0x67, 0x5a, 0x83, 0x79, 0xf8, 0x24, 0xf1,
- 0x4d, 0xd0, 0xe3, 0x3d, 0x00, 0x60, 0x0c, 0xc7, 0x42, 0x7b, 0xf8, 0x83,
- 0x0e, 0x33, 0xae, 0x01, 0x93, 0xdb, 0xbb, 0x69, 0x15, 0x5c, 0xb5, 0x43,
- 0x76, 0xe6, 0x78, 0x94, 0x77, 0x10, 0x07, 0xdb, 0xc5, 0x70, 0xa7, 0x96,
- 0x9c, 0x71, 0x7c, 0xdf, 0xc1, 0xa5, 0x7d, 0xee, 0x20, 0x0f, 0x03, 0x75,
- 0x80, 0x18, 0x89, 0xf8, 0x2e, 0x13, 0x2e, 0x1b, 0x8d, 0xf3, 0x81, 0x54,
- 0x7c, 0x31, 0xed, 0x23, 0x48, 0x19, 0xea, 0x70, 0xf9, 0xb5, 0x14, 0x11,
- 0x1e, 0xd3, 0xab, 0xa8, 0xb7, 0xf6, 0x1a, 0xec, 0x75, 0xa6, 0xa8, 0x9b,
- 0xfc, 0xcf, 0x09, 0x9d, 0x37, 0x8a, 0x0b, 0xa9, 0xf2, 0xf1, 0xa6, 0x5d,
- 0xe7, 0x7f, 0xb5, 0x2b, 0x7c, 0x4b, 0xed, 0x2f, 0x62, 0xf7, 0x5a, 0x83,
- 0x27, 0x68, 0x4b, 0xab, 0xac, 0x13, 0xab, 0x03, 0x8d, 0x35, 0x85, 0x17,
- 0xe0, 0x32, 0x5f, 0x65, 0xb3, 0x7a, 0x18, 0xca, 0x7a, 0xc6, 0xcb, 0xf9,
- 0x99, 0xdc, 0xa3, 0x9a, 0xda, 0x2c, 0x9d, 0xc4, 0x95, 0x3d, 0x83, 0x59,
- 0x4b, 0x53, 0x3f, 0x58, 0x6a, 0x63, 0x4c, 0xb3, 0xd6, 0xc2, 0xec, 0x6e,
- 0xa9, 0xd4, 0x86, 0x6a, 0xdc, 0x1c, 0x2e, 0x93, 0xaa, 0x19, 0xb9, 0x77,
- 0x9d, 0x0b, 0xd0, 0x4a, 0x6f, 0x3f, 0x3a, 0xae, 0xcc, 0x3b, 0xa4, 0x73,
- 0x74, 0xf1, 0x0d, 0xcd, 0x30, 0x29, 0x46, 0xb2, 0xf9, 0xe6, 0xf4, 0xed,
- 0x91, 0x0b, 0x66, 0x15, 0x2d, 0x9f, 0x3f, 0xe9, 0x04, 0xdb, 0x1a, 0x21,
- 0x22, 0xc1, 0xd2, 0x81, 0x07, 0xed, 0x22, 0x3f, 0x58, 0x1d, 0x52, 0xe6,
- 0x97, 0x77, 0xab, 0x74, 0xb6, 0x89, 0x94, 0xed, 0xf7, 0x59, 0xfa, 0x71,
- 0x28, 0x66, 0x0c, 0x00, 0xd1, 0x95, 0x96, 0xb3, 0x6c, 0xe9, 0xce, 0xa2,
- 0xea, 0xe7, 0x8b, 0x0e, 0xb4, 0x0c, 0x2b, 0xf9, 0x14, 0xa2, 0xc5, 0x21,
- 0x01, 0x23, 0xcd, 0xc4, 0x1f, 0x22, 0x4d, 0x6e, 0x31, 0x03, 0x20, 0x16,
- 0x0a, 0xa4, 0x1b, 0xec, 0x7b, 0x47, 0x60, 0x6e, 0xb0, 0xdf, 0xdc, 0xdc,
- 0xc1, 0xd9, 0xd9, 0xeb, 0x83, 0x8b, 0x03, 0x37, 0x37, 0x5c, 0xc5, 0x60,
- 0x2a, 0xd0, 0x4d, 0x59, 0x70, 0xd3, 0xe4, 0xfe, 0xfe, 0xef, 0x39, 0x6b,
- 0xa3, 0x79, 0xd7, 0x9f, 0x9d, 0x9f, 0xb2, 0x85, 0xe1, 0xf7, 0x3f, 0x1d,
- 0xf8, 0xc2, 0xcd, 0x28, 0xcf, 0xd8, 0x2e, 0x9f, 0xbb, 0xb7, 0x15, 0xf1,
- 0xf8, 0x0c, 0x8a, 0x67, 0xe0, 0xdc, 0xfc, 0x92, 0x1e, 0x1d, 0x7d, 0xe0,
- 0x3d, 0x2d, 0xa6, 0x4e, 0x78, 0x12, 0xe3, 0x9d, 0x6c, 0xe7, 0xa0, 0x1d,
- 0xee, 0x17, 0x4c, 0x24, 0xf7, 0x4c, 0xcc, 0x80, 0x76, 0x6c, 0xad, 0xe6,
- 0x24, 0xf1, 0x93, 0xd0, 0x5a, 0x81, 0x75, 0xb0, 0xb1, 0x8d, 0xe9, 0x6b,
- 0xc6, 0x0b, 0xd5, 0x84, 0x93, 0x73, 0xfb, 0x63, 0x1b, 0x24, 0xe9, 0xe8,
- 0x60, 0xb8, 0xc2, 0x02, 0x24, 0x9c, 0x33, 0x97, 0xb2, 0x5c, 0x23, 0x1b,
- 0xad, 0xaa, 0x53, 0xad, 0xb3, 0x23, 0xee, 0x08, 0xa2, 0x73, 0x9b, 0xc3,
- 0xa8, 0x6d, 0x37, 0x1e, 0x0e, 0x87, 0x66, 0x55, 0x96, 0x69, 0xd3, 0x07,
- 0xad, 0x87, 0x2a, 0x2b, 0x3e, 0x64, 0x7c, 0xbe, 0x9b, 0x4d, 0x84, 0xfc,
- 0xa1, 0x29, 0xcb, 0x2b, 0x82, 0x80, 0x3e, 0x85, 0x2a, 0xa6, 0xc8, 0x3f,
- 0x6c, 0x9b, 0x1b, 0xcd, 0x1a, 0x4f, 0x8f, 0x96, 0x2b, 0x36, 0xd8, 0xf0,
- 0x5f, 0xdb, 0xbb, 0xa3, 0x9d, 0x5e, 0x7b, 0xf4, 0x88, 0x05, 0x84, 0x51,
- 0xcc, 0x20, 0x76, 0x05, 0x35, 0x39, 0x7f, 0x7c, 0x80, 0xc2, 0xc0, 0x48,
- 0x22, 0x5d, 0x52, 0x07, 0x9d, 0x63, 0x19, 0x9e, 0xb6, 0x8c, 0x97, 0xe2,
- 0x15, 0xf0, 0x1c, 0x31, 0xcb, 0x91, 0x37, 0x1b, 0xb3, 0x36, 0x04, 0x43,
- 0x4c, 0xaf, 0x7b, 0x81, 0xb3, 0x99, 0xb8, 0x35, 0x1b, 0xeb, 0xfc, 0xab,
- 0xf2, 0xc9, 0xdc, 0xfe, 0x07, 0x28, 0x61, 0x6b, 0xb9, 0x5d, 0xcd, 0xf2,
- 0x7e, 0x93, 0x90, 0x20, 0x38, 0x47, 0xfa, 0x14, 0xdb, 0xd1, 0x5e, 0x4a,
- 0x9d, 0xdd, 0x36, 0x62, 0x7e, 0xcd, 0x17, 0x50, 0x72, 0x40, 0x9c, 0xb0,
- 0x06, 0xbc, 0x15, 0x85, 0x01, 0xe2, 0x1e, 0x00, 0xb4, 0x48, 0x38, 0xa4,
- 0x33, 0x4a, 0x67, 0xad, 0x2c, 0xed, 0x06, 0xf2, 0x86, 0x1b, 0x04, 0x2b,
- 0xdf, 0x93, 0xc4, 0x89, 0xfc, 0xd2, 0xba, 0x09, 0x87, 0xc0, 0x23, 0x21,
- 0xd5, 0x7c, 0xd5, 0x92, 0x17, 0x9a, 0xef, 0x8f, 0x98, 0xcb, 0xd6, 0x30,
- 0x3a, 0xc4, 0xa8, 0xc3, 0x4f, 0xe4, 0xce, 0xe4, 0x87, 0x72, 0x96, 0x38,
- 0x53, 0x2d, 0x23, 0xe6, 0xa5, 0x80, 0xf9, 0xc9, 0x14, 0x2f, 0x0e, 0xcf,
- 0x3e, 0x7c, 0x7b, 0x74, 0x74, 0x76, 0xfc, 0xfa, 0xe4, 0x48, 0xef, 0x19,
- 0xf7, 0xd1, 0xbb, 0x8b, 0xef, 0x4e, 0x0c, 0xdf, 0xcf, 0xd6, 0xa7, 0x65,
- 0x06, 0xe3, 0x90, 0x23, 0x34, 0x77, 0x92, 0x66, 0xab, 0x8f, 0x03, 0xa0,
- 0x8c, 0x10, 0x31, 0x1f, 0x1c, 0xff, 0x30, 0x88, 0xbe, 0x39, 0x1b, 0xbe,
- 0xff, 0xa1, 0x05, 0x04, 0x51, 0x0b, 0xf2, 0x6d, 0x0a, 0x96, 0x2e, 0xe4,
- 0x17, 0x55, 0x58, 0xfc, 0xdc, 0x4d, 0xff, 0xed, 0x28, 0x4c, 0xfa, 0xdb,
- 0xa2, 0x8a, 0x50, 0x73, 0xab, 0x2c, 0x80, 0x7c, 0x0e, 0xa4, 0x78, 0xbd,
- 0x7a, 0x41, 0x0e, 0xcf, 0x77, 0xb4, 0x8a, 0x73, 0x83, 0x00, 0xef, 0xa3,
- 0x97, 0x6b, 0x10, 0x79, 0xb6, 0xc7, 0xe3, 0x6f, 0xb6, 0xa2, 0xb3, 0x00,
- 0xba, 0xd9, 0xd9, 0x5a, 0x46, 0x16, 0xe0, 0xc7, 0x66, 0x1a, 0x6a, 0x3c,
- 0xb0, 0xda, 0x14, 0x8c, 0xb5, 0xd9, 0x76, 0xd2, 0x6a, 0x0b, 0x76, 0x87,
- 0x9b, 0xf2, 0x27, 0x92, 0x25, 0xb2, 0x84, 0xa8, 0x37, 0xb0, 0xff, 0x3a,
- 0x0a, 0xa1, 0x08, 0x8c, 0x4d, 0xc9, 0x08, 0x77, 0x7c, 0x14, 0x26, 0x45,
- 0x61, 0x87, 0xe9, 0x88, 0xce, 0xd2, 0x99, 0xe4, 0x96, 0xb0, 0xc6, 0x20,
- 0x92, 0x42, 0x14, 0xf5, 0xff, 0x6b, 0x7b, 0x54, 0x96, 0xd7, 0xdb, 0xe9,
- 0xec, 0x43, 0x51, 0xc6, 0xfd, 0xe6, 0xe5, 0x1c, 0x7c, 0x3d, 0xe3, 0xaf,
- 0xa3, 0xfe, 0xc8, 0x3d, 0xaa, 0xbf, 0xf3, 0xe7, 0xbf, 0x25, 0xd4, 0x18,
- 0xad, 0xcd, 0xa3, 0xc8, 0x90, 0xad, 0x9d, 0xe0, 0x47, 0x47, 0x4e, 0x0c,
- 0x57, 0xd7, 0x01, 0x37, 0x82, 0x6d, 0x90, 0xcd, 0xed, 0xaa, 0xd3, 0x2c,
- 0xe0, 0x3d, 0x51, 0x03, 0x11, 0x97, 0xce, 0xed, 0xeb, 0xa3, 0xf3, 0x81,
- 0x00, 0x46, 0x86, 0x60, 0x91, 0x0e, 0x1d, 0x75, 0xa4, 0x20, 0x91, 0xeb,
- 0xd4, 0xd3, 0xc1, 0x3f, 0x11, 0x24, 0xf2, 0xa6, 0x98, 0x44, 0x2f, 0xe7,
- 0xf4, 0xe2, 0xbc, 0x3b, 0xd1, 0x54, 0x2a, 0xf8, 0xf9, 0x32, 0x84, 0x0d,
- 0x70, 0x13, 0x05, 0x1f, 0x14, 0x09, 0x15, 0xcd, 0x88, 0x5e, 0xda, 0xa5,
- 0x98, 0x56, 0xb0, 0x89, 0xf1, 0x1b, 0xad, 0xac, 0xbc, 0x3e, 0x22, 0x61,
- 0x99, 0x4a, 0x18, 0xc1, 0x85, 0x7f, 0x82, 0xef, 0x6b, 0xf9, 0xc6, 0xfe,
- 0xa0, 0xad, 0x7c, 0xf7, 0x75, 0xd5, 0xfb, 0xb4, 0x71, 0xd2, 0x1a, 0x1f,
- 0x21, 0xc1, 0x77, 0x94, 0x71, 0x28, 0x4c, 0x74, 0xa9, 0xda, 0x46, 0x18,
- 0x08, 0x53, 0xb6, 0x40, 0xff, 0x5d, 0x73, 0xcd, 0xe0, 0xab, 0x6e, 0x63,
- 0xdc, 0xba, 0xc2, 0x14, 0xb1, 0x03, 0xf5, 0x0b, 0x0b, 0x52, 0x58, 0xb5,
- 0xc9, 0xa7, 0x46, 0x02, 0xa3, 0x35, 0x68, 0x4c, 0x3c, 0x50, 0x24, 0xf2,
- 0xb1, 0x30, 0xc2, 0xe1, 0xe7, 0x1c, 0xcd, 0x39, 0xfc, 0x8e, 0xd5, 0x40,
- 0xf3, 0xb2, 0x09, 0xd2, 0x2a, 0x40, 0xee, 0x41, 0x9d, 0x5d, 0xc7, 0xda,
- 0x95, 0xb6, 0x48, 0xab, 0xdf, 0x90, 0x74, 0xe6, 0xa8, 0x04, 0x91, 0x96,
- 0xd5, 0x90, 0xdd, 0x56, 0xdd, 0x61, 0xd0, 0x50, 0x9a, 0x34, 0x89, 0xc1,
- 0xfc, 0x66, 0x01, 0x14, 0xb3, 0xb0, 0x30, 0xa9, 0x77, 0x85, 0x50, 0xaf,
- 0x52, 0x8b, 0x46, 0x0f, 0xbb, 0x4a, 0x6d, 0xdc, 0xa6, 0xc9, 0x9d, 0xf7,
- 0xec, 0xd6, 0x50, 0x78, 0xd4, 0x97, 0x8b, 0x65, 0x01, 0x33, 0x93, 0xa2,
- 0x8b, 0x8c, 0x0c, 0xdd, 0x05, 0x90, 0xb4, 0x88, 0xa7, 0xd7, 0x24, 0x3e,
- 0x0e, 0x11, 0x30, 0x1a, 0xd5, 0xf1, 0x49, 0xd8, 0x98, 0xd0, 0x18, 0x28,
- 0xe7, 0xf5, 0x69, 0x18, 0x5a, 0x67, 0xfd, 0x47, 0xff, 0x20, 0x0f, 0xd1,
- 0x05, 0xbd, 0x09, 0x31, 0xba, 0x6c, 0x5d, 0x28, 0xa9, 0x79, 0xe1, 0x30,
- 0x4b, 0x25, 0xc5, 0x9a, 0x17, 0xb5, 0xc3, 0x71, 0x16, 0x29, 0x26, 0x69,
- 0xcd, 0xa2, 0xa5, 0xe0, 0x3b, 0x71, 0xf4, 0xee, 0x64, 0xec, 0x13, 0x56,
- 0x2a, 0x2d, 0xf0, 0x21, 0x20, 0xd8, 0xeb, 0x1c, 0x1f, 0x61, 0x94, 0xd6,
- 0xc9, 0x71, 0x47, 0x29, 0x5d, 0x36, 0x09, 0xec, 0x93, 0x5a, 0xbd, 0x48,
- 0x82, 0xe4, 0xfc, 0x52, 0x0b, 0xc7, 0x20, 0x26, 0x50, 0x3c, 0xd9, 0x66,
- 0x01, 0x64, 0xcd, 0xc9, 0xa5, 0x2b, 0xb5, 0x97, 0x98, 0x87, 0xf8, 0x27,
- 0xb1, 0xa3, 0x6a, 0x1c, 0x8c, 0xc5, 0xd7, 0x95, 0xab, 0xc9, 0x30, 0xc8,
- 0x20, 0x16, 0x86, 0x00, 0x7c, 0x9b, 0x74, 0xca, 0xca, 0xfd, 0x4d, 0x3b,
- 0x28, 0x65, 0xf3, 0xec, 0xf4, 0xec, 0x89, 0x91, 0x93, 0xa5, 0x7b, 0xd7,
- 0xdc, 0x9c, 0xd3, 0x88, 0xa5, 0x34, 0x85, 0x94, 0xe2, 0xa7, 0x6b, 0xc4,
- 0xd5, 0x55, 0x7d, 0x8f, 0xd7, 0x91, 0x17, 0xa2, 0xb1, 0x8e, 0xea, 0xa8,
- 0xa8, 0x87, 0xb5, 0x71, 0xee, 0x69, 0x90, 0x38, 0xdb, 0x01, 0xda, 0x61,
- 0x31, 0x06, 0x8e, 0x14, 0x35, 0x86, 0x1e, 0x74, 0x28, 0x64, 0xe8, 0x4f,
- 0x6e, 0x30, 0x6a, 0x3a, 0x6d, 0xad, 0xe4, 0x11, 0x92, 0xda, 0x49, 0xda,
- 0x94, 0xfc, 0xef, 0xb2, 0x9e, 0x00, 0x2e, 0xe9, 0x0c, 0x28, 0x5f, 0xc3,
- 0xae, 0x64, 0xa0, 0x0b, 0xae, 0xd9, 0x49, 0xb1, 0x57, 0x20, 0xd8, 0xd4,
- 0x15, 0x6f, 0xf9, 0x41, 0x9c, 0x66, 0x12, 0xd8, 0xe8, 0x11, 0x06, 0x06,
- 0xf5, 0xb0, 0xe8, 0x8e, 0xba, 0x0c, 0x41, 0x55, 0x3d, 0xc9, 0x99, 0x22,
- 0x9d, 0x9b, 0x04, 0x49, 0xb7, 0x76, 0xba, 0x56, 0xea, 0x89, 0xd2, 0x69,
- 0xb3, 0x1b, 0x8a, 0x7e, 0xe9, 0x2a, 0x4f, 0xcf, 0x7b, 0xd5, 0x27, 0xd6,
- 0x93, 0xa5, 0x34, 0x16, 0x45, 0xe4, 0xbb, 0xe4, 0xb8, 0x3f, 0xf5, 0x52,
- 0x09, 0xe4, 0x63, 0x5a, 0xf5, 0x01, 0xf3, 0x55, 0x62, 0x49, 0x78, 0x4d,
- 0xba, 0x8e, 0xb2, 0x16, 0x33, 0xb7, 0xb0, 0xd7, 0x7a, 0xba, 0xd3, 0x6e,
- 0x2d, 0xa7, 0xbf, 0x56, 0xbc, 0xa6, 0x33, 0x22, 0x01, 0xe5, 0x4d, 0xb6,
- 0x22, 0x67, 0x4c, 0xd6, 0x65, 0x97, 0xc8, 0x8f, 0xd2, 0x27, 0x0b, 0x68,
- 0x6f, 0xc8, 0x06, 0xb8, 0xe2, 0xf0, 0xfc, 0x26, 0x51, 0x48, 0x1a, 0x03,
- 0x40, 0xee, 0x0d, 0xae, 0xa9, 0x8a, 0x5c, 0xdd, 0x9c, 0x4d, 0x05, 0x25,
- 0xf4, 0xe1, 0x74, 0xcd, 0xda, 0x35, 0x5d, 0x70, 0x17, 0x74, 0xbb, 0x3c,
- 0xf9, 0xe1, 0x87, 0xa8, 0x0e, 0x52, 0xb6, 0xb5, 0x2e, 0x22, 0x1b, 0x0a,
- 0x3a, 0xdd, 0xb8, 0x5d, 0x3c, 0xc1, 0x68, 0x40, 0x89, 0x8b, 0xbd, 0xc3,
- 0x50, 0xde, 0x21, 0x99, 0xe8, 0x4e, 0x5f, 0x25, 0xd8, 0x0a, 0xa1, 0x9c,
- 0x30, 0x3a, 0xa5, 0x7d, 0x19, 0xfb, 0x30, 0x8f, 0x81, 0x8b, 0xb0, 0x14,
- 0x6f, 0x38, 0xa2, 0x66, 0xc2, 0xa5, 0x2a, 0xdd, 0x75, 0x42, 0x42, 0xc0,
- 0x5d, 0x36, 0xea, 0x2a, 0x37, 0xd4, 0x06, 0x50, 0x93, 0xc8, 0x73, 0xcc,
- 0x48, 0xaa, 0x2e, 0x01, 0xf7, 0x91, 0x2d, 0x82, 0x41, 0x91, 0x67, 0x57,
- 0x36, 0xb5, 0x15, 0xd7, 0x20, 0x1e, 0x08, 0x04, 0x30, 0x08, 0x42, 0x37,
- 0x87, 0x61, 0x0a, 0x0f, 0x8a, 0x2a, 0x78, 0xf1, 0xcc, 0x51, 0x19, 0xee,
- 0x16, 0x3f, 0xde, 0x61, 0x1b, 0xb9, 0x43, 0x4d, 0xa0, 0xc0, 0x62, 0x8a,
- 0x58, 0x06, 0xcd, 0x25, 0x11, 0xd2, 0xff, 0x63, 0xbd, 0xc6, 0xaf, 0xe2,
- 0x24, 0x09, 0xe9, 0xb5, 0x92, 0x40, 0x38, 0xf2, 0xa0, 0x2a, 0x56, 0x58,
- 0x21, 0xde, 0x10, 0x4e, 0xca, 0x67, 0x07, 0x80, 0x21, 0x08, 0xb1, 0x40,
- 0x69, 0x71, 0x1b, 0x28, 0x68, 0x21, 0xf1, 0xd0, 0x0b, 0x40, 0xa5, 0xb4,
- 0xfc, 0xd2, 0x36, 0x2f, 0xcb, 0x74, 0xe3, 0xcc, 0xb6, 0x9a, 0xe7, 0x73,
- 0x38, 0x5c, 0xc4, 0x1f, 0x87, 0x78, 0xac, 0x6c, 0x61, 0xab, 0xb7, 0x6c,
- 0x9d, 0xd2, 0x42, 0x19, 0x2e, 0x98, 0x69, 0xb5, 0x2e, 0xe0, 0x5e, 0xa3,
- 0x24, 0x99, 0x82, 0xf8, 0x6e, 0xf8, 0xfa, 0xe8, 0xa2, 0x79, 0xb4, 0x00,
- 0x7b, 0xa0, 0x26, 0x02, 0x84, 0xb9, 0xd3, 0xdf, 0x67, 0xef, 0x2f, 0xb6,
- 0x7c, 0x5d, 0x1d, 0xa1, 0xd2, 0x40, 0x07, 0x71, 0xe1, 0xd7, 0x6d, 0xb4,
- 0x44, 0x09, 0x2d, 0x57, 0x06, 0x0b, 0x44, 0x44, 0x77, 0x20, 0xb8, 0x12,
- 0xd8, 0x93, 0x9d, 0xdd, 0x01, 0xfd, 0xb3, 0x07, 0x6b, 0xdb, 0x93, 0x9d,
- 0x27, 0xce, 0x83, 0x60, 0x4f, 0xb5, 0x9c, 0x08, 0x1c, 0x52, 0x85, 0xb2,
- 0x72, 0x81, 0x23, 0x22, 0x7a, 0xf2, 0xf1, 0x23, 0xbe, 0xaa, 0x47, 0xc3,
- 0x0d, 0x5d, 0x50, 0xed, 0x3a, 0x8f, 0x89, 0x0d, 0xdc, 0xaf, 0x38, 0xcc,
- 0x66, 0xab, 0x4c, 0xc2, 0x7d, 0xd8, 0xe8, 0x81, 0xf0, 0xf5, 0xd1, 0x3a,
- 0x28, 0xa9, 0xaa, 0x99, 0x51, 0x1c, 0x62, 0x49, 0x11, 0xad, 0xf0, 0xe4,
- 0x5d, 0x2f, 0x16, 0x0b, 0xdf, 0x66, 0x8c, 0x78, 0x4c, 0xf2, 0x2d, 0xc1,
- 0x38, 0x76, 0x3e, 0x86, 0xf7, 0x75, 0x8d, 0x24, 0x88, 0x5d, 0x2a, 0x33,
- 0x52, 0xd5, 0x7f, 0x0d, 0x48, 0xdb, 0x3e, 0x07, 0x80, 0xd2, 0xa1, 0xc0,
- 0x0a, 0xdb, 0xaf, 0x7b, 0x12, 0x5c, 0x2a, 0x7f, 0x3c, 0x09, 0x55, 0x0b,
- 0xab, 0xcf, 0xd6, 0x59, 0x9b, 0xe0, 0x40, 0x2a, 0x86, 0x85, 0xac, 0x8b,
- 0x8f, 0x1f, 0x57, 0x6c, 0xe2, 0x34, 0x15, 0x96, 0xa0, 0x35, 0xcf, 0x59,
- 0xeb, 0xd6, 0xaa, 0xb7, 0x13, 0xbf, 0x77, 0xd4, 0x00, 0x41, 0x34, 0x0d,
- 0x30, 0xed, 0xac, 0x2e, 0xdc, 0x50, 0x26, 0x78, 0x18, 0xa9, 0x7b, 0x1c,
- 0xfb, 0x6c, 0xee, 0x5c, 0xcd, 0x9d, 0x10, 0xf5, 0xaf, 0x1b, 0x8e, 0xc5,
- 0x9c, 0xa6, 0xa4, 0x17, 0xcc, 0x05, 0x3e, 0xc8, 0x05, 0x81, 0x17, 0x36,
- 0x2c, 0x09, 0x1e, 0xf6, 0xc1, 0x57, 0xfc, 0xde, 0xbf, 0xfc, 0x37, 0x45,
- 0x6e, 0x75, 0xb4, 0x8a, 0x3f, 0xa0, 0x23, 0x2e, 0xa6, 0x26, 0x8e, 0x3f,
- 0x98, 0x4b, 0x0a, 0x6e, 0x31, 0x84, 0x79, 0xe0, 0x25, 0x49, 0x1c, 0xc9,
- 0x6c, 0xad, 0xb3, 0x1e, 0x52, 0x26, 0xf1, 0x85, 0x74, 0xb1, 0x5a, 0xf8,
- 0xec, 0x41, 0x2e, 0xe5, 0x50, 0x25, 0xbe, 0x54, 0x6d, 0x08, 0x29, 0x3c,
- 0xec, 0xa0, 0x11, 0x00, 0xc8, 0xf9, 0xac, 0x64, 0xe8, 0x86, 0x40, 0x39,
- 0x33, 0x1c, 0x0d, 0x0d, 0xde, 0xd3, 0x25, 0x50, 0x31, 0x89, 0x9b, 0x47,
- 0xec, 0x52, 0xdc, 0x92, 0x83, 0xb9, 0x7a, 0x0f, 0x5d, 0x1b, 0xe9, 0x52,
- 0xa2, 0xe6, 0x38, 0xfc, 0x7e, 0x26, 0xe2, 0x31, 0x36, 0xc1, 0x8d, 0x13,
- 0x25, 0x82, 0x65, 0x5c, 0x92, 0xc2, 0x40, 0x17, 0x42, 0x2b, 0x5e, 0x65,
- 0x42, 0x4d, 0xdc, 0xa5, 0xb3, 0xea, 0x1a, 0x38, 0x8d, 0xb8, 0x22, 0x19,
- 0xed, 0x84, 0xc1, 0x4a, 0x54, 0xe0, 0x48, 0xdb, 0xc9, 0x41, 0x93, 0x6e,
- 0xc8, 0x7b, 0xd9, 0x23, 0xac, 0x69, 0x24, 0x10, 0x2c, 0x1c, 0x99, 0x8e,
- 0x6d, 0x40, 0x5c, 0xe7, 0xb6, 0x98, 0x88, 0x1c, 0xd8, 0x00, 0x49, 0x7c,
- 0xab, 0x4b, 0x06, 0x7c, 0x6c, 0x4b, 0x8f, 0x96, 0xce, 0x33, 0x72, 0x87,
- 0x02, 0x26, 0x98, 0xfe, 0x8d, 0xe4, 0xd1, 0x7d, 0xab, 0x1a, 0xa9, 0x20,
- 0x63, 0x81, 0x07, 0x48, 0x32, 0x09, 0xf1, 0xab, 0x9b, 0x74, 0xde, 0xb2,
- 0x49, 0xa0, 0x7b, 0xd2, 0x9f, 0x17, 0x78, 0xfd, 0x6d, 0x5f, 0xa3, 0x54,
- 0x18, 0xb7, 0x2d, 0xd1, 0xa0, 0xd3, 0x81, 0x02, 0x38, 0xf6, 0xaf, 0xa4,
- 0x8b, 0xaf, 0xfb, 0x2e, 0x96, 0xa5, 0x75, 0xd9, 0xf9, 0x48, 0x55, 0xb3,
- 0xa5, 0x97, 0xfb, 0xd1, 0xde, 0xce, 0xce, 0xb7, 0xc4, 0x62, 0x17, 0xd8,
- 0x94, 0xdd, 0xaf, 0xbb, 0x8b, 0x02, 0x28, 0x19, 0x17, 0x82, 0xc1, 0xac,
- 0x45, 0xb7, 0x6f, 0x61, 0xf4, 0xd6, 0x85, 0x93, 0x02, 0xc1, 0xb3, 0x68,
- 0xb6, 0x2a, 0x8c, 0x13, 0x75, 0x6e, 0x9c, 0xcb, 0x8d, 0x65, 0x7b, 0x68,
- 0x13, 0x0a, 0x62, 0x81, 0x44, 0x09, 0xde, 0xf9, 0x6b, 0xfa, 0x2d, 0x09,
- 0x88, 0x02, 0x9d, 0x74, 0x00, 0x2d, 0x90, 0xdc, 0xc1, 0x20, 0x7b, 0xab,
- 0x82, 0x6b, 0xa0, 0x22, 0x12, 0x14, 0x18, 0x55, 0x30, 0xd2, 0x9a, 0x7b,
- 0x29, 0xcb, 0x05, 0xf5, 0x04, 0x64, 0xe1, 0x91, 0x78, 0x78, 0x32, 0x5d,
- 0xd9, 0x5d, 0x4c, 0xc2, 0x72, 0xc9, 0x5b, 0xb0, 0xf4, 0xf0, 0xcf, 0xcc,
- 0x21, 0x31, 0x04, 0x39, 0x86, 0xce, 0x01, 0x2a, 0x39, 0x68, 0x5e, 0x58,
- 0x6b, 0x4e, 0x96, 0xe9, 0x52, 0x6b, 0x13, 0xb1, 0xd2, 0x09, 0x9b, 0x2a,
- 0xe6, 0xc8, 0x88, 0xc2, 0x4b, 0xad, 0xf0, 0xcd, 0x03, 0x91, 0x76, 0x61,
- 0xff, 0x9d, 0xf3, 0x03, 0x73, 0x56, 0xa8, 0xf3, 0x56, 0xbe, 0xce, 0x7c,
- 0x09, 0xc3, 0xb2, 0xbb, 0x8c, 0x82, 0x21, 0x71, 0x16, 0xf2, 0x14, 0x65,
- 0x00, 0x38, 0x9f, 0xe5, 0x37, 0x34, 0x32, 0x01, 0x7e, 0x4f, 0xd0, 0x3e,
- 0x5e, 0x12, 0xf9, 0x7e, 0xf1, 0x23, 0x57, 0x05, 0xfd, 0xb9, 0xa3, 0xfe,
- 0x69, 0xac, 0x09, 0x5d, 0x7c, 0x96, 0x2c, 0x69, 0xaa, 0xf0, 0xd5, 0x79,
- 0xd0, 0x8e, 0x64, 0x1d, 0x5b, 0x15, 0x52, 0x5f, 0xd7, 0xa8, 0x33, 0x24,
- 0xd8, 0xcc, 0xf9, 0x9b, 0xe5, 0xd6, 0x28, 0x44, 0xf3, 0x93, 0x46, 0x5c,
- 0x2b, 0xf0, 0x45, 0x67, 0xc2, 0x9c, 0x60, 0xab, 0x6b, 0x31, 0x23, 0x8e,
- 0x7d, 0x9c, 0x26, 0x3e, 0xd8, 0x0a, 0xad, 0xd8, 0x7c, 0x27, 0xab, 0xf2,
- 0x9e, 0xd1, 0x8b, 0xc4, 0x8b, 0x51, 0xe6, 0x0e, 0xbf, 0x11, 0x0b, 0x88,
- 0xe1, 0xb7, 0xc3, 0xd3, 0x18, 0x60, 0x47, 0xa2, 0x91, 0xab, 0x9c, 0x2e,
- 0xfa, 0xb8, 0x28, 0x48, 0x54, 0xd3, 0xad, 0xd6, 0x54, 0x3a, 0x1a, 0x3c,
- 0x2b, 0x3f, 0x30, 0x08, 0x39, 0xc7, 0x04, 0xb5, 0xbd, 0x5a, 0x76, 0xc4,
- 0x93, 0x71, 0x72, 0x6d, 0x0b, 0xd1, 0xac, 0x96, 0xb9, 0x6e, 0xea, 0x87,
- 0x89, 0x9b, 0x0f, 0x6a, 0x40, 0x27, 0xb0, 0x42, 0xb0, 0xca, 0x14, 0xbc,
- 0xa9, 0x39, 0xff, 0x02, 0x4d, 0x0e, 0xd9, 0xd2, 0x9c, 0x1f, 0xdd, 0xc9,
- 0xd2, 0xd1, 0x1f, 0x3d, 0x46, 0x9f, 0x54, 0x43, 0x82, 0x54, 0x1d, 0x28,
- 0x52, 0x25, 0xc7, 0x53, 0xb0, 0xa6, 0xe8, 0x05, 0xf2, 0x7c, 0xd4, 0x05,
- 0xb9, 0xcd, 0xcf, 0xe4, 0xa2, 0x54, 0x8a, 0x35, 0xa1, 0x2a, 0xf2, 0xd9,
- 0x6a, 0x0a, 0x13, 0x0b, 0x47, 0xce, 0xa5, 0xd5, 0x7d, 0x34, 0x11, 0xc8,
- 0x30, 0xcb, 0x5f, 0xe7, 0xa6, 0x9d, 0x3c, 0xdc, 0x68, 0x4e, 0x0d, 0xee,
- 0xb1, 0x3c, 0xe5, 0x30, 0x5e, 0x71, 0xc7, 0x00, 0xf3, 0x39, 0x51, 0x41,
- 0xa3, 0x68, 0xe9, 0x23, 0x28, 0xd1, 0xd4, 0x8d, 0x91, 0x2d, 0x4e, 0x50,
- 0x56, 0x08, 0x3e, 0x56, 0x2e, 0x76, 0x82, 0xab, 0x8d, 0x11, 0xf1, 0x42,
- 0x52, 0xfd, 0x8a, 0xc3, 0x75, 0x1b, 0x0d, 0x86, 0xc8, 0xcf, 0x8b, 0x81,
- 0x0a, 0xe8, 0x0f, 0xfa, 0xb1, 0xde, 0xba, 0x9b, 0x1a, 0x7e, 0xab, 0x14,
- 0xce, 0x2c, 0x3c, 0x29, 0x0b, 0x8b, 0x7c, 0xa8, 0xb9, 0x81, 0x5a, 0xdc,
- 0x5d, 0xe7, 0xf3, 0x50, 0x48, 0x69, 0x07, 0x48, 0x10, 0xcf, 0x09, 0x52,
- 0x39, 0x83, 0xc4, 0x08, 0x46, 0x2b, 0xe2, 0x81, 0x5a, 0xbd, 0x93, 0x09,
- 0x80, 0xed, 0xff, 0x92, 0x4f, 0x54, 0xbf, 0x8b, 0x58, 0x34, 0xed, 0xca,
- 0x73, 0x93, 0x70, 0x80, 0x6b, 0xae, 0x29, 0x4b, 0xfc, 0x5d, 0x02, 0x4b,
- 0x78, 0x3c, 0x59, 0x52, 0x31, 0xbf, 0x41, 0x3c, 0x39, 0x6c, 0x3d, 0x91,
- 0x54, 0x9b, 0x47, 0x84, 0x30, 0xe7, 0xe9, 0x13, 0xcf, 0x6b, 0x34, 0xf7,
- 0xd9, 0xe8, 0xc9, 0x1e, 0x67, 0x21, 0x85, 0xcc, 0x28, 0x9e, 0xb2, 0xbe,
- 0x55, 0x46, 0x96, 0x27, 0x83, 0xe4, 0x35, 0xe5, 0xe6, 0x95, 0x00, 0x43,
- 0xac, 0x94, 0x47, 0x0d, 0xdb, 0xee, 0x5a, 0x55, 0x39, 0x12, 0x86, 0xb5,
- 0x2b, 0xe1, 0xdd, 0xa6, 0xf6, 0x56, 0x45, 0x3c, 0xbd, 0x37, 0xc8, 0x5c,
- 0x1f, 0x29, 0xc6, 0x4d, 0xf0, 0x2b, 0x34, 0x30, 0x3c, 0xdd, 0x42, 0x82,
- 0xcf, 0xdc, 0x20, 0x98, 0x6b, 0xa7, 0x40, 0x2a, 0x68, 0xa6, 0x63, 0x59,
- 0x99, 0x8b, 0xa1, 0xb5, 0xb6, 0x46, 0xef, 0xfa, 0x87, 0xb2, 0xdc, 0xab,
- 0x34, 0x1b, 0x9a, 0x3c, 0xff, 0x52, 0x7f, 0xf9, 0xe2, 0x81, 0xd0, 0x23,
- 0xbc, 0xe1, 0x34, 0x00, 0xe5, 0xab, 0x7a, 0x37, 0x9b, 0xf5, 0xa9, 0x46,
- 0xb7, 0x6b, 0x35, 0x18, 0xbb, 0x04, 0xb5, 0x49, 0xd7, 0x26, 0xf4, 0x73,
- 0x8b, 0x11, 0x92, 0x42, 0xb1, 0xd3, 0x7c, 0xee, 0x1c, 0x1f, 0xd3, 0xce,
- 0x48, 0x79, 0x2b, 0xf7, 0xac, 0x65, 0x30, 0xb1, 0x20, 0x3a, 0xaa, 0xc6,
- 0x70, 0xa2, 0x83, 0x0a, 0xf8, 0xe5, 0x10, 0xd6, 0xdb, 0x26, 0xe9, 0xe3,
- 0xb7, 0x07, 0x67, 0x03, 0xd8, 0x06, 0x71, 0xa9, 0x8e, 0xdf, 0xb2, 0x95,
- 0x53, 0x2c, 0xe5, 0xf5, 0xb9, 0x8b, 0x1b, 0x4d, 0x50, 0xcf, 0x82, 0x6a,
- 0x6c, 0x4d, 0xb9, 0x6d, 0xe2, 0x42, 0x1c, 0x1b, 0x4b, 0xa7, 0x05, 0x06,
- 0xd9, 0xd8, 0xc7, 0xe0, 0x7a, 0x7b, 0x4f, 0x3e, 0x7f, 0x3a, 0xc0, 0x6f,
- 0xcf, 0x76, 0x5e, 0x88, 0xb6, 0x74, 0x7c, 0x74, 0xf1, 0xa6, 0xa9, 0x71,
- 0x14, 0xa4, 0xab, 0xc9, 0xbf, 0xc3, 0x24, 0x2e, 0xae, 0xe3, 0xa2, 0xe2,
- 0xb8, 0xa9, 0x61, 0xb9, 0xa8, 0x96, 0xc3, 0x9d, 0x9d, 0x51, 0x45, 0x0c,
- 0xa5, 0x56, 0xf7, 0xe0, 0xe9, 0x68, 0x67, 0xeb, 0xb7, 0x24, 0x20, 0x36,
- 0xd1, 0x0d, 0x79, 0x85, 0xa3, 0x97, 0x6b, 0x0a, 0x96, 0x6f, 0xf2, 0x12,
- 0x6e, 0x39, 0x1a, 0x72, 0xa5, 0x40, 0x82, 0xd2, 0xf0, 0xa9, 0x37, 0xf7,
- 0x38, 0x6c, 0x34, 0x47, 0x02, 0x5d, 0xd5, 0x46, 0x9a, 0xac, 0xd6, 0x21,
- 0x52, 0x6d, 0x5a, 0xd9, 0x0e, 0xa9, 0x13, 0x18, 0x2b, 0x3a, 0x7d, 0x05,
- 0x7d, 0x1a, 0x06, 0xc2, 0x35, 0x65, 0x73, 0x05, 0x8d, 0xa1, 0x48, 0x18,
- 0x80, 0x48, 0x2e, 0x21, 0x8d, 0xa7, 0xb0, 0xca, 0xd9, 0x0f, 0x14, 0x97,
- 0xd8, 0x7b, 0x56, 0x2f, 0xea, 0x8e, 0x35, 0x01, 0xe3, 0xfb, 0x95, 0x6b,
- 0xe2, 0xef, 0x3d, 0x11, 0x28, 0x61, 0xb3, 0x76, 0x19, 0x7c, 0x6d, 0xd8,
- 0x85, 0xd2, 0xa0, 0xbe, 0x1f, 0x1e, 0xe6, 0x4e, 0x73, 0x98, 0x1f, 0x51,
- 0x3a, 0x0f, 0x36, 0xe2, 0x97, 0x10, 0xdf, 0x3f, 0x51, 0xf3, 0xc3, 0x1b,
- 0x9b, 0xa6, 0xc5, 0x6c, 0x79, 0x48, 0x71, 0x81, 0xee, 0x11, 0xcd, 0x8e,
- 0x0d, 0x2a, 0xeb, 0x62, 0x0e, 0xbd, 0xb1, 0x2f, 0xad, 0x27, 0xbd, 0x81,
- 0x2c, 0xc1, 0xa6, 0x07, 0x75, 0xb0, 0x99, 0x2e, 0x21, 0x18, 0xae, 0x6b,
- 0x4e, 0x50, 0xc1, 0x69, 0x09, 0xed, 0x2f, 0xa8, 0x0b, 0x01, 0x93, 0x64,
- 0xf2, 0x11, 0xe1, 0x7f, 0xa4, 0xd3, 0x3f, 0x7f, 0xd2, 0x36, 0x81, 0x9f,
- 0x5e, 0x1c, 0xed, 0x87, 0x45, 0x6b, 0xc4, 0x5c, 0xae, 0x96, 0x2a, 0x09,
- 0xd8, 0xe3, 0xcc, 0x6f, 0xc6, 0x48, 0x61, 0x00, 0xd5, 0x60, 0x76, 0x83,
- 0x0e, 0xf4, 0x38, 0xe4, 0x08, 0x72, 0x75, 0x22, 0x71, 0x81, 0x54, 0xad,
- 0xe0, 0x06, 0x0b, 0x67, 0xb0, 0xda, 0xe1, 0xde, 0xb6, 0xd0, 0x55, 0x9d,
- 0x15, 0xd3, 0x96, 0xca, 0x35, 0x0c, 0xe6, 0x25, 0x14, 0xda, 0x5a, 0x2c,
- 0xa1, 0x10, 0x48, 0xea, 0x56, 0x7c, 0x21, 0xa7, 0xdb, 0xb1, 0x68, 0x45,
- 0x66, 0x40, 0xed, 0x66, 0x9f, 0x0d, 0xb2, 0xdf, 0x2e, 0x0c, 0xc2, 0xea,
- 0xb2, 0x91, 0x9d, 0x0a, 0xe2, 0x2d, 0xa6, 0xcb, 0xea, 0xd7, 0x12, 0xef,
- 0xc0, 0x83, 0x31, 0x8b, 0x24, 0x26, 0x61, 0x7a, 0xf0, 0x10, 0x75, 0x95,
- 0xfd, 0x85, 0x15, 0x51, 0xfd, 0x29, 0xe2, 0xac, 0x01, 0xb9, 0xdb, 0xe0,
- 0x2c, 0x24, 0x77, 0x9a, 0x2e, 0xd3, 0x00, 0xaa, 0xd5, 0xdd, 0x0f, 0x71,
- 0x3b, 0x41, 0x9d, 0xbd, 0x22, 0x68, 0xc3, 0x1d, 0xa7, 0xdc, 0x67, 0xb9,
- 0x4b, 0xe3, 0xf9, 0xe8, 0x81, 0xa3, 0x11, 0x0e, 0x2c, 0x1c, 0x19, 0xaa,
- 0xa1, 0x38, 0x56, 0x83, 0x5a, 0x48, 0x8e, 0x03, 0x6d, 0x7e, 0x77, 0xfe,
- 0xe6, 0xcf, 0x66, 0xef, 0xd9, 0x1a, 0x74, 0x1a, 0xd3, 0x1b, 0x53, 0xa8,
- 0x05, 0xf4, 0xab, 0x44, 0x51, 0x5b, 0x3a, 0xff, 0x47, 0x07, 0xb1, 0xcd,
- 0x72, 0xc4, 0x1b, 0x6d, 0x72, 0x35, 0x0e, 0xae, 0xac, 0xae, 0x62, 0xff,
- 0x93, 0xd1, 0x33, 0xb8, 0xa2, 0xde, 0x1c, 0x3e, 0x7b, 0xb2, 0xb7, 0xbb,
- 0x35, 0x6a, 0xdf, 0x06, 0x1b, 0x9f, 0xb4, 0xfe, 0x6e, 0xcb, 0x92, 0x8f,
- 0x4b, 0x26, 0x98, 0xcd, 0xa3, 0x1f, 0xce, 0xde, 0xd5, 0xe7, 0x27, 0x33,
- 0x6a, 0x89, 0x75, 0xeb, 0x66, 0xe8, 0x0d, 0x89, 0xb5, 0xf6, 0x2d, 0x89,
- 0x10, 0x07, 0xa7, 0x0d, 0x4c, 0xd1, 0x7b, 0x53, 0xa4, 0x7c, 0x06, 0x7a,
- 0xbc, 0x20, 0xbd, 0x13, 0x12, 0x5e, 0x49, 0x31, 0x39, 0x65, 0x68, 0xaa,
- 0xa4, 0xd7, 0xc0, 0x92, 0xaa, 0xcf, 0xae, 0x66, 0xc0, 0x86, 0x3a, 0xd9,
- 0xa1, 0x48, 0x7a, 0x96, 0xa6, 0x6a, 0x24, 0x5c, 0xff, 0xa6, 0x0c, 0xb0,
- 0x0e, 0xe4, 0xec, 0xb7, 0x0a, 0x4f, 0xa1, 0x61, 0x19, 0xa4, 0xf0, 0xb4,
- 0xb0, 0x6a, 0x9c, 0xdb, 0xc6, 0x79, 0x22, 0xd6, 0x41, 0x7f, 0x22, 0x84,
- 0x27, 0xa9, 0x57, 0xb8, 0x69, 0x17, 0x11, 0xb4, 0x30, 0x9b, 0x60, 0x38,
- 0x25, 0x32, 0xa3, 0x48, 0xa8, 0x28, 0x57, 0xc5, 0x6c, 0xb5, 0xa0, 0x15,
- 0xf8, 0xea, 0xde, 0xc2, 0x8e, 0xf4, 0xc2, 0x86, 0xca, 0xde, 0xce, 0x69,
- 0x48, 0x60, 0xfa, 0x7a, 0xb6, 0x53, 0x6b, 0x6d, 0x84, 0x45, 0x68, 0x18,
- 0x57, 0x87, 0xbb, 0xae, 0xf4, 0x1a, 0x27, 0x1c, 0x8a, 0x75, 0xb0, 0x69,
- 0x73, 0xe3, 0x8b, 0xfb, 0xb7, 0x94, 0x2a, 0x92, 0x2a, 0x66, 0xb9, 0xff,
- 0xf1, 0x24, 0xfd, 0x9a, 0x19, 0x5c, 0x1c, 0xf5, 0x52, 0x11, 0x1a, 0x65,
- 0xec, 0x5c, 0x9e, 0x25, 0xc3, 0x18, 0xb5, 0x68, 0xeb, 0xad, 0xf6, 0x22,
- 0x3c, 0x78, 0x13, 0x0c, 0xd2, 0x02, 0x28, 0x44, 0xfa, 0x7b, 0x1a, 0x6d,
- 0xb2, 0x44, 0x16, 0x3d, 0xfb, 0xfc, 0xd9, 0xd3, 0x2d, 0x55, 0xf9, 0x5d,
- 0x7c, 0xce, 0x56, 0x97, 0xf3, 0x0d, 0xeb, 0xb6, 0x2a, 0x1d, 0x88, 0xf4,
- 0x22, 0x45, 0x7d, 0x28, 0xd0, 0xba, 0xba, 0xf1, 0xa4, 0xcc, 0x0e, 0x94,
- 0x71, 0x98, 0x94, 0x2c, 0x06, 0xb7, 0xd9, 0x1c, 0x75, 0x26, 0xc5, 0xa5,
- 0xa2, 0x4d, 0x1c, 0x8e, 0xa0, 0x4e, 0x47, 0xe4, 0xb2, 0xd1, 0x71, 0x55,
- 0xc9, 0xd5, 0xe0, 0xf2, 0x2d, 0xd8, 0x86, 0x71, 0x5c, 0x75, 0x9a, 0xbe,
- 0xc5, 0xc5, 0x14, 0x96, 0x3a, 0x44, 0x59, 0xbf, 0x3c, 0xb8, 0x8b, 0xc4,
- 0x19, 0x00, 0x83, 0xbf, 0xde, 0x75, 0x5d, 0xc8, 0x8a, 0x24, 0xbd, 0xc2,
- 0xdc, 0xc7, 0x77, 0x67, 0x7d, 0x1d, 0x05, 0xbd, 0x8a, 0xb7, 0xdf, 0xde,
- 0xd7, 0x70, 0x1e, 0x5f, 0x5a, 0xb0, 0x6d, 0x6d, 0x5b, 0x24, 0x0b, 0x43,
- 0x32, 0x96, 0x5b, 0x3d, 0x2f, 0x7c, 0xbd, 0x19, 0xb1, 0xe7, 0xc8, 0x05,
- 0x8d, 0x18, 0xc6, 0x75, 0xb0, 0x10, 0xbe, 0xbc, 0xb7, 0x42, 0x18, 0xd4,
- 0x46, 0xb6, 0xa6, 0xba, 0x84, 0x23, 0xb6, 0x30, 0xb9, 0x58, 0xdd, 0x50,
- 0x08, 0x69, 0xb5, 0xdf, 0x1d, 0x51, 0xb6, 0x6b, 0xae, 0x48, 0xa7, 0x8d,
- 0x75, 0x58, 0x33, 0x78, 0x29, 0xbb, 0x82, 0x9c, 0x70, 0xe8, 0x36, 0xc3,
- 0x76, 0xb6, 0x4a, 0xb4, 0x89, 0xf1, 0x6e, 0x6f, 0x6f, 0x3d, 0x3a, 0x66,
- 0x7d, 0xf0, 0xb1, 0x31, 0x9e, 0x89, 0xb2, 0x91, 0x85, 0x75, 0x2a, 0xfc,
- 0x10, 0xb8, 0x4b, 0xde, 0x2f, 0x41, 0xba, 0x95, 0xa0, 0x46, 0xb1, 0xbf,
- 0xb3, 0xd0, 0x12, 0x91, 0x1c, 0xd4, 0x01, 0xc8, 0x03, 0x64, 0xd8, 0x58,
- 0xe7, 0x57, 0x9f, 0xba, 0x0a, 0xaf, 0x92, 0xac, 0xae, 0x5c, 0x41, 0xb3,
- 0x35, 0x38, 0x94, 0xb1, 0x55, 0x3a, 0x2c, 0x0b, 0xf2, 0x4c, 0x38, 0x36,
- 0x27, 0x98, 0x9f, 0x9c, 0x2a, 0xef, 0x54, 0x96, 0x33, 0x68, 0x4a, 0x82,
- 0x38, 0x9f, 0xdb, 0xac, 0xd8, 0x3d, 0xdd, 0x28, 0xbf, 0x38, 0x6a, 0x01,
- 0x51, 0xc9, 0x93, 0x7c, 0x7c, 0xcc, 0x23, 0x9d, 0x66, 0x1d, 0x52, 0xab,
- 0x77, 0x1d, 0xa2, 0x41, 0xd2, 0xf1, 0x6f, 0xfc, 0x9c, 0x05, 0x50, 0xce,
- 0x92, 0xd5, 0x02, 0xbc, 0x80, 0x12, 0xc3, 0xed, 0xc6, 0x55, 0x70, 0xd4,
- 0x8d, 0x15, 0xb3, 0x52, 0x69, 0xf8, 0xb4, 0xb6, 0x98, 0x03, 0x39, 0xa1,
- 0x08, 0xb5, 0xef, 0x12, 0x82, 0x01, 0xdc, 0xff, 0xa0, 0xd8, 0x0f, 0x70,
- 0x96, 0xf4, 0xb2, 0x51, 0x1c, 0x54, 0x2e, 0x8b, 0x89, 0x5b, 0x68, 0x0d,
- 0x48, 0x1b, 0x05, 0x37, 0x68, 0xc6, 0x56, 0xa6, 0x2c, 0xa9, 0x8a, 0x69,
- 0xcb, 0xb0, 0xe4, 0x9c, 0xe1, 0xe5, 0x54, 0x4d, 0xdf, 0x23, 0x3c, 0x48,
- 0x5d, 0x7f, 0xd0, 0x5f, 0x98, 0x45, 0x6b, 0x22, 0xc4, 0x96, 0xf9, 0xa9,
- 0x34, 0x28, 0xa8, 0x23, 0xe6, 0xbd, 0x5f, 0xba, 0x20, 0x7d, 0x0d, 0x92,
- 0x62, 0x1e, 0x29, 0x1a, 0xb3, 0x40, 0x56, 0x65, 0xb3, 0xc8, 0xfb, 0xcb,
- 0x1d, 0xde, 0xfa, 0xfd, 0xb2, 0x15, 0xfd, 0x1a, 0x94, 0x62, 0xe6, 0x36,
- 0x00, 0xc2, 0x20, 0xc9, 0x1f, 0x3e, 0x6e, 0x01, 0xba, 0x01, 0x0b, 0xc1,
- 0xa1, 0xdf, 0x56, 0x2b, 0x86, 0x75, 0x8c, 0x2e, 0x6a, 0x19, 0x11, 0x60,
- 0xba, 0xc1, 0x4c, 0x37, 0xe9, 0x66, 0x60, 0x76, 0x5e, 0x2d, 0x37, 0x77,
- 0xb7, 0x04, 0x98, 0x57, 0x8b, 0xa7, 0x74, 0x26, 0x83, 0x5a, 0x35, 0x69,
- 0x04, 0x77, 0x1d, 0xba, 0xbe, 0xe1, 0xc1, 0x65, 0xc0, 0x74, 0x04, 0x91,
- 0x5f, 0xea, 0x61, 0x90, 0x55, 0x73, 0x55, 0x1f, 0xd8, 0xff, 0xd5, 0xa5,
- 0x0e, 0x0b, 0x0c, 0xd4, 0x92, 0xb3, 0x1d, 0x4a, 0x29, 0x62, 0xb7, 0xe9,
- 0x11, 0xfa, 0xe5, 0x82, 0xb0, 0x62, 0xc8, 0xb4, 0x7c, 0xf3, 0xd9, 0x90,
- 0x07, 0x7c, 0x55, 0xe4, 0x6d, 0xa8, 0x4e, 0x4e, 0x14, 0xd3, 0x2b, 0xe4,
- 0x62, 0x5d, 0xf1, 0xe9, 0x1e, 0x67, 0xe5, 0xf4, 0xc2, 0xa2, 0xee, 0x92,
- 0xfc, 0xd3, 0x31, 0xd9, 0xfa, 0x96, 0xb6, 0xc8, 0xf4, 0x80, 0xb3, 0x0b,
- 0xd3, 0xa9, 0x9d, 0x72, 0x29, 0x4e, 0x80, 0x44, 0x0f, 0x86, 0xfa, 0x52,
- 0x9e, 0x4e, 0x0c, 0x44, 0x63, 0x1d, 0x60, 0xd2, 0x26, 0x96, 0xa3, 0xa4,
- 0xd6, 0x51, 0x67, 0x9b, 0x6d, 0x87, 0x26, 0x0c, 0x00, 0xa4, 0x37, 0x57,
- 0x81, 0x13, 0x81, 0x7c, 0x12, 0xd9, 0x21, 0x82, 0x33, 0x73, 0x76, 0xa1,
- 0x02, 0xd9, 0xdf, 0x0e, 0x0f, 0x6a, 0x7f, 0x71, 0xcf, 0x37, 0x59, 0xbf,
- 0x46, 0x7a, 0x51, 0xbf, 0x64, 0x83, 0x60, 0xd5, 0xb7, 0xe5, 0x6d, 0x24,
- 0x95, 0xb5, 0xab, 0x41, 0xac, 0xe9, 0x5b, 0x48, 0x5b, 0xba, 0xf0, 0xad,
- 0x4b, 0xe3, 0xfe, 0x08, 0xbe, 0x1b, 0x48, 0xe0, 0xfb, 0x64, 0xc5, 0xe1,
- 0x26, 0xcd, 0x4a, 0xa9, 0xc2, 0xaf, 0x45, 0x2c, 0x90, 0x27, 0xb4, 0xca,
- 0x9d, 0x47, 0x79, 0x61, 0xfc, 0x9f, 0x24, 0x5e, 0x84, 0xb5, 0x22, 0x51,
- 0xd0, 0xb9, 0x6c, 0x0b, 0x75, 0x2b, 0x90, 0x76, 0x19, 0x9e, 0x88, 0x46,
- 0x6c, 0xa2, 0xf4, 0x81, 0x00, 0x14, 0x69, 0x5c, 0x5b, 0xef, 0x04, 0xa9,
- 0x44, 0x03, 0x0e, 0x6d, 0x42, 0x35, 0x5f, 0xb9, 0x7b, 0xd4, 0xb4, 0xaa,
- 0x8d, 0x38, 0xdc, 0x7d, 0x5a, 0x8f, 0xe9, 0xf5, 0x2a, 0xbb, 0xa1, 0x21,
- 0xb4, 0xc3, 0x9e, 0xcd, 0xc9, 0x91, 0xa2, 0xe6, 0x89, 0x14, 0x50, 0x35,
- 0x48, 0x09, 0x79, 0x9d, 0x01, 0xb3, 0x6e, 0x91, 0xc2, 0xaa, 0x75, 0x4c,
- 0x1e, 0x0a, 0x57, 0x13, 0xdb, 0xae, 0x2c, 0xa0, 0x8c, 0xca, 0x2d, 0xe0,
- 0xc3, 0x69, 0x90, 0x56, 0x15, 0x43, 0x02, 0xa2, 0xae, 0x82, 0x78, 0x08,
- 0xe1, 0x53, 0x86, 0x06, 0xc3, 0x97, 0x8d, 0x5a, 0x3a, 0x5b, 0x47, 0x76,
- 0x55, 0x8a, 0x73, 0x5c, 0xb7, 0x95, 0xc9, 0x34, 0x04, 0x31, 0xec, 0x18,
- 0x89, 0xf2, 0xe1, 0x61, 0x47, 0x11, 0xc0, 0x8b, 0x46, 0x39, 0x62, 0x47,
- 0x8a, 0xf6, 0xd2, 0xa0, 0x86, 0x61, 0x0b, 0x27, 0xa4, 0x25, 0x10, 0x74,
- 0x1c, 0x59, 0xa9, 0x3d, 0xb3, 0x49, 0x2a, 0x46, 0x3e, 0x5f, 0x55, 0x92,
- 0xf8, 0xcc, 0x66, 0x31, 0xce, 0x27, 0xd9, 0xb2, 0x03, 0x25, 0x07, 0xd0,
- 0x85, 0x45, 0x08, 0x1f, 0xeb, 0xc4, 0x16, 0x45, 0xd4, 0xb7, 0x33, 0xf9,
- 0x4a, 0x54, 0x96, 0xaa, 0xee, 0xac, 0x00, 0xe8, 0x5d, 0x21, 0x7c, 0x8e,
- 0xf5, 0x58, 0xe4, 0x4c, 0x3a, 0x26, 0xdb, 0xb2, 0x20, 0x99, 0x32, 0x51,
- 0x5b, 0x90, 0xc0, 0x06, 0x0c, 0xe9, 0xc0, 0x57, 0x77, 0x72, 0xc5, 0x0d,
- 0x4c, 0xe3, 0x78, 0x30, 0x48, 0xe2, 0x81, 0x98, 0xc0, 0x8e, 0xb5, 0xb6,
- 0x6a, 0x0d, 0x02, 0x90, 0xab, 0x22, 0xbf, 0x0e, 0x8b, 0x65, 0x75, 0x89,
- 0x6a, 0x95, 0x11, 0x2d, 0x56, 0xec, 0x68, 0x68, 0xd9, 0x9a, 0x69, 0x5f,
- 0xe6, 0x2b, 0x01, 0x09, 0x67, 0xa7, 0xb5, 0xfa, 0xcb, 0x48, 0x42, 0x8f,
- 0x27, 0xbc, 0x3b, 0x93, 0x7b, 0x37, 0x4d, 0x4b, 0xb2, 0x47, 0x36, 0xbc,
- 0xa9, 0xd4, 0x6d, 0xf2, 0xb0, 0xc7, 0x1a, 0xfd, 0x7c, 0x67, 0x8c, 0xb5,
- 0x45, 0x19, 0xe2, 0x09, 0x09, 0x31, 0x41, 0x6e, 0x94, 0x9f, 0x28, 0x93,
- 0x5d, 0x75, 0xd8, 0x4c, 0xdd, 0x60, 0x4c, 0x5c, 0x67, 0x9b, 0x40, 0x2c,
- 0xa5, 0x48, 0x14, 0x77, 0x45, 0x97, 0xc1, 0x12, 0x63, 0xf2, 0x7a, 0x1e,
- 0x96, 0x95, 0x70, 0x5e, 0x83, 0xe5, 0x72, 0xa4, 0x85, 0x3b, 0xdf, 0xd9,
- 0x63, 0xd1, 0xe6, 0xf8, 0xec, 0xdd, 0xd1, 0xd7, 0xa7, 0x5b, 0x8f, 0xb9,
- 0x16, 0x14, 0xd2, 0x10, 0x61, 0x28, 0x38, 0x54, 0x38, 0xde, 0x1d, 0xed,
- 0xc0, 0xef, 0x04, 0x88, 0xb9, 0xf0, 0x6a, 0xef, 0x0a, 0xba, 0x1b, 0x48,
- 0x36, 0xaa, 0x9c, 0x57, 0xc1, 0xb5, 0x73, 0xc3, 0xff, 0xd4, 0x80, 0xff,
- 0xb8, 0x2b, 0xdc, 0xff, 0xeb, 0xf1, 0x78, 0x78, 0x70, 0x76, 0x2c, 0xd5,
- 0xab, 0xe9, 0xe7, 0x1a, 0xe0, 0xec, 0xae, 0xe8, 0x7e, 0x31, 0x8f, 0x73,
- 0xc8, 0x60, 0x3d, 0xc0, 0x3f, 0x88, 0xe9, 0x47, 0xf3, 0xcd, 0xeb, 0xf6,
- 0xec, 0x78, 0x1b, 0x5d, 0xc1, 0xb1, 0x81, 0x95, 0xe8, 0x8e, 0xe9, 0x6b,
- 0x57, 0x2e, 0x11, 0x74, 0x3f, 0xe4, 0x6c, 0x80, 0x40, 0x8d, 0x81, 0xc4,
- 0x24, 0x7f, 0x92, 0xc2, 0x3b, 0x5c, 0x19, 0x92, 0x60, 0x37, 0x8c, 0x11,
- 0xdb, 0xd3, 0x39, 0x23, 0xcd, 0xc0, 0xe1, 0x1b, 0xf6, 0x7b, 0xd8, 0x67,
- 0x05, 0x6e, 0x91, 0xc1, 0xb1, 0x49, 0xb6, 0xd2, 0xf0, 0x96, 0xa6, 0x71,
- 0xaf, 0x3f, 0x24, 0xe6, 0xb5, 0xdf, 0x97, 0x7c, 0x8d, 0x24, 0xe3, 0x42,
- 0xbb, 0x91, 0x9d, 0xb5, 0x28, 0xb0, 0x97, 0xd5, 0x6e, 0x6c, 0x87, 0xb6,
- 0x33, 0x5c, 0x75, 0x8f, 0x8e, 0x8e, 0x28, 0x8b, 0x57, 0xe2, 0x0d, 0x54,
- 0xd1, 0xf1, 0x9f, 0x82, 0x8b, 0x1b, 0x1e, 0x89, 0x20, 0xb9, 0xed, 0xa1,
- 0x6b, 0x5e, 0xf9, 0x8c, 0x4f, 0x84, 0x53, 0xb7, 0x86, 0x8b, 0x00, 0xbf,
- 0x38, 0x3c, 0xab, 0x55, 0x42, 0x6f, 0x59, 0x3d, 0x26, 0xf7, 0x3e, 0x47,
- 0x1c, 0xc9, 0xb9, 0x99, 0x6b, 0x7d, 0x31, 0x5a, 0x5f, 0xd8, 0xb0, 0x0a,
- 0x2a, 0x1c, 0x75, 0xdd, 0x7b, 0xb5, 0x8b, 0xcf, 0x15, 0xff, 0x5c, 0x7f,
- 0xf5, 0xf9, 0x19, 0x04, 0xb7, 0x9f, 0xfb, 0xb0, 0xb1, 0x34, 0x8a, 0x25,
- 0x95, 0xce, 0x3a, 0x33, 0xb5, 0x6c, 0x85, 0xac, 0x16, 0x8a, 0xae, 0x11,
- 0xe3, 0x00, 0x19, 0x66, 0xd7, 0xf1, 0x6b, 0x1a, 0x0d, 0x0b, 0x62, 0xa4,
- 0x80, 0x06, 0x36, 0xb3, 0xb6, 0x00, 0xe9, 0x8d, 0xe2, 0xe0, 0xdc, 0x28,
- 0xdb, 0xed, 0x2d, 0x97, 0xdc, 0x46, 0x32, 0x0a, 0x56, 0x45, 0x6b, 0xdc,
- 0x2a, 0x60, 0x5c, 0x37, 0xce, 0x2c, 0x9b, 0xfb, 0x0b, 0x89, 0x3a, 0x8c,
- 0xae, 0x57, 0x85, 0x40, 0x1a, 0x28, 0x20, 0x91, 0x22, 0x6d, 0x17, 0x09,
- 0x8f, 0xb9, 0x3e, 0xe0, 0x56, 0x0d, 0x3e, 0x51, 0xca, 0xe9, 0xd8, 0x2f,
- 0x34, 0x09, 0x61, 0x52, 0xe4, 0x37, 0x74, 0x5a, 0xf9, 0x35, 0x57, 0x91,
- 0x5d, 0x64, 0x38, 0xd3, 0x2d, 0xe9, 0x46, 0x99, 0x39, 0xbf, 0x68, 0x47,
- 0x04, 0x2a, 0x6a, 0x0f, 0x68, 0x8c, 0x83, 0x17, 0x86, 0x04, 0x16, 0x1e,
- 0xd9, 0x7c, 0x06, 0x24, 0x0a, 0xf1, 0x9b, 0xeb, 0x5f, 0xfb, 0x60, 0xc2,
- 0xb6, 0x87, 0x5b, 0xe1, 0xfc, 0xff, 0x79, 0x34, 0xe4, 0xc8, 0x22, 0xa4,
- 0xa1, 0x8e, 0x2d, 0xaf, 0x11, 0x93, 0x70, 0xfd, 0x97, 0x44, 0x55, 0xc2,
- 0xcd, 0xd9, 0x32, 0xd7, 0xb4, 0x0d, 0xa3, 0x2a, 0xc6, 0x30, 0x80, 0xcc,
- 0x11, 0x53, 0x35, 0x54, 0x11, 0x8e, 0x4b, 0x91, 0x30, 0x8e, 0x99, 0x2f,
- 0xe5, 0xa3, 0x78, 0xa5, 0xd0, 0xb3, 0xdb, 0x62, 0x06, 0x8b, 0x65, 0xee,
- 0xd2, 0x16, 0x7f, 0x13, 0xf8, 0x04, 0x6f, 0x0f, 0xc0, 0xd2, 0x90, 0x5a,
- 0xae, 0x6e, 0x94, 0x3f, 0x84, 0x70, 0x24, 0xd2, 0x53, 0x4b, 0xa5, 0x10,
- 0x78, 0x7b, 0x17, 0x27, 0x23, 0x09, 0x84, 0x2e, 0xed, 0x97, 0x81, 0x8f,
- 0x43, 0x9e, 0x21, 0x50, 0xaa, 0xd1, 0x11, 0x07, 0xbd, 0x74, 0xe8, 0x39,
- 0x96, 0x24, 0x8a, 0x39, 0xa6, 0x8a, 0xc3, 0x29, 0x2e, 0x09, 0x55, 0x1a,
- 0x63, 0xf3, 0x36, 0x58, 0xf8, 0x8b, 0x2b, 0xfa, 0xda, 0xa9, 0xf3, 0x95,
- 0x95, 0xda, 0xf4, 0xad, 0x96, 0x85, 0x7d, 0xe4, 0x90, 0xed, 0xdf, 0xf8,
- 0x48, 0xef, 0x81, 0x58, 0x90, 0x44, 0x1f, 0xeb, 0x10, 0x20, 0x31, 0x9a,
- 0xc8, 0x3f, 0x34, 0x08, 0x7e, 0xdf, 0xff, 0x7c, 0xc7, 0x62, 0x7d, 0xd9,
- 0x68, 0x17, 0x3e, 0x03, 0xe8, 0xc6, 0x0e, 0x35, 0x02, 0xc8, 0x81, 0x79,
- 0xe5, 0x1e, 0x6d, 0xd6, 0xa3, 0x78, 0x31, 0x7a, 0xba, 0x55, 0xa3, 0x97,
- 0x6a, 0xbe, 0x70, 0xc8, 0x9a, 0x26, 0x98, 0x44, 0xef, 0x2e, 0x4e, 0xde,
- 0x76, 0xd8, 0x04, 0xe0, 0x48, 0xc4, 0x77, 0xf5, 0xaf, 0x5a, 0xc6, 0x4e,
- 0x04, 0x63, 0x73, 0x2c, 0x39, 0x89, 0x8f, 0xe9, 0x55, 0x26, 0xd8, 0xff,
- 0x6f, 0xd3, 0x69, 0x91, 0x97, 0xf9, 0xa5, 0xb8, 0x33, 0xed, 0x82, 0xa1,
- 0x2f, 0x8e, 0x8f, 0xc7, 0xd1, 0x5d, 0x32, 0xb1, 0x64, 0xab, 0x56, 0x68,
- 0xa1, 0xe4, 0x2f, 0x82, 0x04, 0x97, 0x45, 0x9a, 0x54, 0x2c, 0x68, 0x98,
- 0x5d, 0x8f, 0x13, 0xb0, 0xf9, 0xa5, 0x64, 0x98, 0x64, 0xa4, 0x70, 0x26,
- 0x50, 0xdf, 0xb8, 0xd0, 0xc0, 0x1c, 0x5c, 0x69, 0x99, 0xe4, 0x1d, 0x96,
- 0x5d, 0x19, 0x80, 0xb1, 0x14, 0x59, 0x1b, 0xdc, 0x15, 0x93, 0xb8, 0x74,
- 0xe0, 0x53, 0x69, 0xc1, 0x14, 0xc7, 0xc2, 0x86, 0x9a, 0x63, 0x6e, 0x52,
- 0x64, 0xf9, 0xb7, 0xb2, 0xdf, 0xb5, 0xfa, 0xa4, 0x63, 0x87, 0x66, 0x90,
- 0xc8, 0x66, 0x79, 0x01, 0x37, 0x49, 0x80, 0xa6, 0xcc, 0x68, 0xfe, 0x2b,
- 0x04, 0x7f, 0xf2, 0xf0, 0xee, 0x3b, 0x24, 0xf6, 0xeb, 0x5c, 0x62, 0x2f,
- 0xb1, 0xcc, 0xcc, 0x95, 0x24, 0x2f, 0x10, 0x41, 0x5a, 0x0a, 0x4e, 0xab,
- 0x65, 0x8f, 0x8c, 0x95, 0x3c, 0x26, 0xe1, 0xd9, 0x7e, 0xf8, 0xec, 0x24,
- 0xb5, 0xb6, 0xbf, 0x4e, 0xaf, 0xd6, 0x20, 0xe4, 0x8b, 0x16, 0xd5, 0x14,
- 0x33, 0x79, 0x44, 0xca, 0x2f, 0x0b, 0x15, 0x2e, 0x9b, 0xa5, 0x58, 0x3a,
- 0xd0, 0x40, 0x6a, 0x92, 0x25, 0x51, 0xdb, 0x83, 0x55, 0x76, 0x1f, 0x16,
- 0x29, 0x71, 0x81, 0x68, 0xee, 0xa8, 0x16, 0xfb, 0x21, 0xc1, 0xb1, 0x65,
- 0x1d, 0x6d, 0x27, 0x89, 0x4a, 0xb0, 0x3a, 0x94, 0x38, 0x13, 0x20, 0x79,
- 0x36, 0xa3, 0x7f, 0x46, 0x5d, 0x39, 0x7f, 0xd8, 0x72, 0x16, 0x22, 0xd5,
- 0x28, 0xd0, 0x99, 0x0d, 0xf0, 0xbd, 0xc0, 0x2a, 0xa9, 0xd9, 0x20, 0xd7,
- 0x87, 0xc2, 0x14, 0xbc, 0xb2, 0x9a, 0xe5, 0x0c, 0x6d, 0xab, 0x8a, 0x00,
- 0x5f, 0xe1, 0x72, 0x7b, 0xff, 0xc7, 0xdf, 0xdb, 0xf9, 0x48, 0x3f, 0xfe,
- 0x2c, 0x92, 0xb4, 0x00, 0x68, 0x78, 0x34, 0x09, 0x23, 0x9d, 0xd2, 0x57,
- 0xfe, 0xe0, 0x4d, 0x62, 0xa4, 0x28, 0x71, 0xcb, 0xc9, 0x11, 0x6a, 0x0a,
- 0xa7, 0xea, 0x42, 0xd4, 0xab, 0x57, 0xc7, 0x66, 0x7c, 0x1f, 0x60, 0xc3,
- 0x71, 0x60, 0x45, 0x13, 0x8b, 0x23, 0x47, 0xbc, 0x28, 0x90, 0xf4, 0x6c,
- 0x1d, 0x0e, 0xb9, 0xc1, 0xcd, 0xd4, 0x6b, 0xce, 0x00, 0xe8, 0x43, 0x1c,
- 0x3f, 0x18, 0x3f, 0xdf, 0x2c, 0x27, 0x52, 0xc5, 0xb1, 0x0d, 0xa7, 0x2a,
- 0x7b, 0xab, 0xfe, 0x8d, 0xff, 0xa0, 0xbd, 0x18, 0x54, 0x77, 0xf9, 0xdf,
- 0x47, 0x1c, 0xd4, 0x08, 0xc6, 0x3b, 0xcc, 0xa5, 0xc4, 0xf6, 0x87, 0xdf,
- 0xed, 0x72, 0x08, 0x51, 0xaf, 0x5d, 0x3a, 0x1b, 0x2b, 0x60, 0x5b, 0xec,
- 0x50, 0x78, 0xd6, 0xa0, 0xb7, 0xd6, 0xbb, 0xe3, 0x5e, 0x06, 0x7c, 0x05,
- 0xfc, 0x7d, 0xc4, 0xff, 0xfe, 0xb8, 0x3b, 0x7c, 0xf6, 0xb3, 0xeb, 0xf5,
- 0x77, 0xbb, 0x1f, 0x7e, 0xb7, 0xd7, 0xeb, 0xac, 0x1d, 0xaf, 0x89, 0x81,
- 0xf5, 0x88, 0xbe, 0x12, 0xc5, 0x4b, 0x35, 0x84, 0x56, 0xb5, 0x4d, 0x5f,
- 0x37, 0x01, 0x85, 0x59, 0xda, 0x69, 0x1f, 0x6c, 0x85, 0x7a, 0x04, 0x0a,
- 0x3d, 0xac, 0xe1, 0x1b, 0x68, 0x2d, 0x5a, 0xd2, 0x56, 0xc3, 0xb7, 0xa6,
- 0x82, 0xb5, 0x0d, 0x73, 0x66, 0xcb, 0x72, 0x0a, 0x8c, 0x84, 0xd9, 0x3d,
- 0xdd, 0x73, 0x82, 0xb4, 0x3a, 0x72, 0xe1, 0x33, 0x26, 0x3d, 0x2a, 0xe1,
- 0x2a, 0x46, 0xd7, 0xa6, 0xbb, 0xf1, 0x19, 0x51, 0x6e, 0xab, 0xcb, 0x32,
- 0xe1, 0x4d, 0x42, 0x9e, 0xe6, 0xb5, 0xe0, 0x2a, 0x0e, 0xaf, 0x10, 0xbb,
- 0x3f, 0x40, 0x4d, 0xb4, 0xd3, 0x47, 0x8e, 0x4f, 0x1c, 0x3a, 0xa7, 0xa4,
- 0x68, 0x91, 0x96, 0x8f, 0x77, 0x18, 0xe0, 0xf8, 0xea, 0x2e, 0x81, 0xf4,
- 0xda, 0xbc, 0x77, 0x36, 0x4f, 0x9d, 0xae, 0x83, 0xc7, 0x42, 0x90, 0xfb,
- 0xf0, 0xf5, 0xc0, 0x1d, 0x9e, 0x44, 0x56, 0x11, 0x7d, 0xba, 0xaa, 0xda,
- 0x40, 0x24, 0xa3, 0xad, 0xae, 0x1c, 0x81, 0xb0, 0x2d, 0x03, 0x3d, 0xd3,
- 0x60, 0xee, 0xa8, 0x94, 0x82, 0x3a, 0xa2, 0x0f, 0x0a, 0xd6, 0x2a, 0xf3,
- 0x22, 0x89, 0x3a, 0x6d, 0xcb, 0x26, 0xae, 0x52, 0xee, 0xc0, 0x61, 0x3c,
- 0x27, 0xf3, 0xb2, 0x4d, 0x1b, 0x87, 0xec, 0xeb, 0x61, 0x2c, 0xbb, 0x0a,
- 0x99, 0xe3, 0x83, 0xb0, 0x6e, 0xaa, 0x4b, 0x4c, 0x8c, 0x6f, 0xbd, 0x13,
- 0xc7, 0xce, 0xa8, 0x46, 0xc9, 0xaf, 0xcb, 0xfc, 0x1e, 0xd5, 0x2d, 0x14,
- 0x0e, 0xf0, 0x39, 0x76, 0xc5, 0xac, 0x7c, 0x5e, 0x61, 0x90, 0x01, 0xdf,
- 0x95, 0xcc, 0x8a, 0x1a, 0x07, 0x60, 0x4f, 0x92, 0xf7, 0xd5, 0x18, 0x41,
- 0xe0, 0x48, 0x51, 0xfc, 0x19, 0x7e, 0x56, 0x00, 0xc9, 0xba, 0x5c, 0x8a,
- 0x8e, 0xdb, 0xb4, 0x21, 0x73, 0x2f, 0xe7, 0xf1, 0xd5, 0xbf, 0x74, 0xa2,
- 0xd4, 0x2a, 0x6a, 0x14, 0x73, 0x22, 0xe0, 0xd3, 0x4a, 0x88, 0x6e, 0x96,
- 0x98, 0x2e, 0x1a, 0x00, 0x98, 0xd0, 0xbc, 0x53, 0xa9, 0x44, 0xf2, 0xfb,
- 0xbd, 0x9d, 0x36, 0x2b, 0xd6, 0x6c, 0x3a, 0x80, 0xb8, 0x59, 0x2d, 0x22,
- 0xa6, 0xa7, 0xd2, 0x08, 0x4a, 0x24, 0x4a, 0x5f, 0xf4, 0x20, 0x41, 0xd6,
- 0x10, 0x9d, 0xa5, 0x21, 0x00, 0x30, 0xd6, 0xa1, 0xd4, 0x76, 0x06, 0x9f,
- 0xfe, 0x5a, 0xc6, 0xf2, 0x28, 0x67, 0xa1, 0xdb, 0x8b, 0x2f, 0xfc, 0xbd,
- 0xe1, 0x24, 0xa1, 0x9b, 0xa7, 0x39, 0xc7, 0x4d, 0x1f, 0x5a, 0x3a, 0x88,
- 0xea, 0x31, 0x54, 0xdc, 0xd9, 0x57, 0x78, 0x27, 0xba, 0x80, 0x4e, 0xc7,
- 0xb4, 0x7d, 0xca, 0xf5, 0xcc, 0xa3, 0xbd, 0xd1, 0x8e, 0x0a, 0x7e, 0x0f,
- 0xa6, 0xbf, 0x8a, 0xbf, 0xa6, 0xd6, 0x86, 0xaf, 0x88, 0xc9, 0xf2, 0xfa,
- 0x5f, 0x56, 0x59, 0x1d, 0x95, 0xbf, 0xd3, 0xcd, 0x25, 0x6a, 0x98, 0x49,
- 0xf9, 0x5a, 0x05, 0xa1, 0x16, 0xa5, 0x14, 0x9e, 0x72, 0xc5, 0xec, 0x2b,
- 0xd8, 0xfe, 0xd3, 0x92, 0x32, 0xd0, 0xe0, 0xba, 0xfa, 0x11, 0xad, 0xc1,
- 0x2a, 0x42, 0x88, 0xd9, 0x6f, 0x0a, 0xf3, 0x91, 0x89, 0xfc, 0xe6, 0xaa,
- 0x52, 0xe1, 0xbe, 0x3e, 0x7f, 0x73, 0xd8, 0x68, 0xee, 0xf9, 0x67, 0xcf,
- 0x76, 0x7e, 0xcb, 0x78, 0x94, 0x5a, 0x3d, 0x8b, 0x87, 0xeb, 0x05, 0xfd,
- 0xaa, 0x82, 0x41, 0xdd, 0xf5, 0x82, 0xac, 0x08, 0xc6, 0x2f, 0x2b, 0x16,
- 0xa4, 0xae, 0xd1, 0x2e, 0x3f, 0x61, 0x98, 0xa6, 0xe8, 0xe3, 0x7d, 0xc2,
- 0x5a, 0x48, 0xac, 0x36, 0xa5, 0xa5, 0x06, 0xf5, 0xb3, 0x00, 0xcb, 0x11,
- 0x5f, 0xab, 0xac, 0xc3, 0xc7, 0x2a, 0x36, 0x70, 0xbe, 0x01, 0xac, 0x76,
- 0xf4, 0xe1, 0xe9, 0xbb, 0x77, 0x47, 0x87, 0xae, 0x8c, 0x96, 0x22, 0x7e,
- 0x7b, 0x49, 0x59, 0xca, 0x1f, 0x89, 0x4a, 0xdd, 0x5d, 0x2f, 0x48, 0x02,
- 0x59, 0x2d, 0x3f, 0x5b, 0x47, 0x80, 0xa4, 0x0b, 0x09, 0xd2, 0x0d, 0xd0,
- 0x2b, 0x2c, 0x76, 0x5f, 0x18, 0x55, 0x87, 0x0a, 0xda, 0x5d, 0x26, 0xc6,
- 0xe7, 0xbd, 0x83, 0x7f, 0xb6, 0x4a, 0xc4, 0x68, 0x8e, 0x56, 0x50, 0x24,
- 0x46, 0x60, 0xd0, 0xff, 0x3f, 0x56, 0x26, 0xe6, 0x1b, 0x0b, 0x5f, 0x68,
- 0x61, 0xe1, 0xd6, 0xa5, 0x7f, 0x11, 0x62, 0x55, 0xa1, 0x0b, 0x02, 0x1b,
- 0xba, 0x93, 0x9d, 0xc3, 0x84, 0x3c, 0x0e, 0xab, 0x2d, 0xbd, 0xeb, 0x3b,
- 0x80, 0x26, 0x59, 0x57, 0xfa, 0x65, 0x1d, 0x38, 0x5c, 0x80, 0x02, 0x27,
- 0xcc, 0x5b, 0x4a, 0x6d, 0xfd, 0xf2, 0x0a, 0x2d, 0xeb, 0x43, 0x28, 0xb8,
- 0xbe, 0x8d, 0x13, 0xd0, 0x86, 0xcb, 0x81, 0x71, 0x84, 0x8a, 0x73, 0xaf,
- 0xe6, 0x5d, 0x16, 0x74, 0x2d, 0x40, 0xa7, 0x24, 0x6c, 0xac, 0x67, 0x73,
- 0xf8, 0xd1, 0xbd, 0xdb, 0x05, 0xc8, 0x80, 0x90, 0x94, 0x56, 0x6c, 0x4c,
- 0x36, 0xb4, 0xa6, 0xa0, 0xd1, 0xdb, 0x04, 0x15, 0x1b, 0x5e, 0x4e, 0x0b,
- 0x06, 0xc2, 0xbb, 0x53, 0x88, 0x4d, 0xdc, 0x10, 0xe1, 0x3f, 0xde, 0xb7,
- 0x8c, 0x3d, 0x8a, 0x55, 0x4f, 0x64, 0xb6, 0xa0, 0x2b, 0x7c, 0x6e, 0x19,
- 0xde, 0x69, 0xa5, 0x75, 0x57, 0x51, 0x47, 0x03, 0x67, 0xda, 0xe5, 0x02,
- 0x69, 0x9c, 0x17, 0xf5, 0x32, 0x6c, 0x79, 0x65, 0xe7, 0x9c, 0x9a, 0x5a,
- 0xe4, 0xb1, 0xa4, 0x35, 0x01, 0x49, 0xdd, 0x1d, 0x0d, 0x8c, 0xdb, 0xdc,
- 0x2c, 0xc6, 0x1e, 0x7c, 0x52, 0x7a, 0x3b, 0xa8, 0xd5, 0xa9, 0xb7, 0x2e,
- 0x00, 0x5e, 0xd5, 0x68, 0x81, 0x17, 0xd0, 0xd4, 0x2f, 0x35, 0x6f, 0x1b,
- 0x27, 0x50, 0xf9, 0x90, 0xd5, 0xd6, 0x6e, 0x8d, 0x4c, 0x4e, 0xbe, 0xa1,
- 0xab, 0xe8, 0x5a, 0xd9, 0x52, 0x55, 0x79, 0xc0, 0xe8, 0xeb, 0x25, 0xc7,
- 0xd7, 0x06, 0x40, 0x03, 0xb5, 0xe8, 0x5c, 0xec, 0x2a, 0x5a, 0x5a, 0x5b,
- 0x2d, 0xea, 0x5a, 0x5e, 0x36, 0x2f, 0xb6, 0x11, 0xf0, 0x97, 0x21, 0x3b,
- 0x3a, 0x87, 0xcd, 0x08, 0xdc, 0xb0, 0x0b, 0xab, 0x1b, 0xa6, 0x7a, 0xbe,
- 0xdb, 0xe4, 0x84, 0x51, 0xe3, 0x0e, 0x44, 0x46, 0x8d, 0x1b, 0x0b, 0x1f,
- 0x6f, 0x03, 0x63, 0xa3, 0xaf, 0x67, 0xcb, 0x7e, 0xfd, 0xa6, 0xfd, 0x06,
- 0x05, 0x07, 0xa6, 0x86, 0x48, 0x20, 0x58, 0xaa, 0xae, 0x22, 0x82, 0x46,
- 0x0d, 0x82, 0x6a, 0x6c, 0x1d, 0x81, 0xb7, 0xbc, 0x0e, 0x16, 0x63, 0x3a,
- 0xe7, 0x88, 0xde, 0x7e, 0x19, 0x4a, 0x01, 0x1a, 0x02, 0x0d, 0x2f, 0x0b,
- 0x2d, 0x94, 0x65, 0x0a, 0xd7, 0xaa, 0x02, 0xc7, 0xe5, 0x4d, 0xb9, 0x1e,
- 0x66, 0xc8, 0x47, 0x73, 0x64, 0x61, 0xf9, 0x10, 0x6b, 0x51, 0xfc, 0x73,
- 0x69, 0xd5, 0x18, 0x27, 0xef, 0x55, 0xbd, 0x39, 0xb7, 0x45, 0x2d, 0xb0,
- 0xb0, 0x96, 0x56, 0xea, 0x6a, 0x89, 0xb4, 0xb4, 0x55, 0xf9, 0x7a, 0x44,
- 0x27, 0xa6, 0xc7, 0x65, 0x46, 0x7a, 0xf5, 0x0c, 0x24, 0x4d, 0xd9, 0xb3,
- 0xb7, 0x69, 0x25, 0x82, 0x01, 0xb7, 0x25, 0x42, 0xbb, 0x1e, 0xd4, 0x36,
- 0xc4, 0xfb, 0xb5, 0xc9, 0xb1, 0x47, 0xe0, 0xbf, 0x6d, 0x70, 0x42, 0xd7,
- 0xd4, 0xfa, 0x51, 0xf5, 0xac, 0x6e, 0xd5, 0xee, 0xce, 0x68, 0xb7, 0x17,
- 0x02, 0x28, 0x23, 0xb0, 0x82, 0x63, 0x21, 0xc2, 0x76, 0x3a, 0xee, 0xc2,
- 0x2e, 0xab, 0x6f, 0xd8, 0xc1, 0xe2, 0x7e, 0x14, 0x84, 0xa7, 0xb4, 0xba,
- 0xd0, 0x10, 0x96, 0x66, 0xcb, 0xc3, 0x40, 0x1b, 0x01, 0xa9, 0x2d, 0x39,
- 0x94, 0xc7, 0x41, 0x59, 0xd4, 0x2a, 0xdb, 0xcb, 0xfd, 0xed, 0xea, 0xc3,
- 0x77, 0xe1, 0x59, 0x05, 0x49, 0x14, 0xdd, 0x55, 0xe3, 0x5d, 0xff, 0x2d,
- 0x2b, 0xd4, 0x2f, 0x16, 0xed, 0xd8, 0x63, 0xe4, 0x8e, 0xa1, 0x7a, 0x3d,
- 0x9c, 0x6f, 0x8d, 0x8b, 0xcb, 0x2b, 0x9e, 0x8d, 0xf0, 0x82, 0xb8, 0xbc,
- 0x1d, 0x39, 0x1f, 0x13, 0x64, 0x8f, 0x90, 0xf7, 0xae, 0xca, 0x7a, 0x1c,
- 0x05, 0xaa, 0xd2, 0x7b, 0x40, 0x8a, 0x90, 0xe1, 0xa2, 0x65, 0x87, 0xa9,
- 0x31, 0x1c, 0xaa, 0x95, 0x7e, 0x98, 0x2c, 0xd9, 0x60, 0x87, 0x17, 0x39,
- 0x11, 0x38, 0x09, 0x43, 0x05, 0xf8, 0x9d, 0x3f, 0xfe, 0xd1, 0xf3, 0xa8,
- 0x7a, 0xe5, 0xb5, 0xdd, 0x17, 0xa3, 0x67, 0xde, 0x4a, 0x25, 0x20, 0x01,
- 0x51, 0x6f, 0xff, 0x47, 0xa4, 0xc5, 0xfc, 0x3c, 0xfc, 0x91, 0xfe, 0xfc,
- 0xb9, 0xe7, 0x18, 0x25, 0xc2, 0xc4, 0x44, 0xbe, 0x70, 0x93, 0xb7, 0xa4,
- 0x0d, 0x3c, 0xe4, 0x82, 0xa9, 0x21, 0x71, 0xb1, 0x2b, 0x11, 0xa7, 0x51,
- 0x32, 0xab, 0x85, 0x9a, 0xd5, 0x8e, 0x25, 0x09, 0xf6, 0x10, 0x70, 0x88,
- 0x52, 0xdc, 0x5a, 0x4a, 0x42, 0x88, 0x7f, 0x69, 0x60, 0xe5, 0x6e, 0x14,
- 0x3f, 0x81, 0xaf, 0x77, 0x4b, 0xc1, 0x57, 0xf6, 0x3c, 0x42, 0x1c, 0x98,
- 0x9a, 0x42, 0xf4, 0xb3, 0x0d, 0x07, 0xa2, 0xc3, 0x49, 0xa0, 0x56, 0xd6,
- 0x5e, 0xc2, 0x15, 0x44, 0x10, 0x4a, 0x5c, 0x28, 0x91, 0x4b, 0xb9, 0xd4,
- 0x39, 0x96, 0x37, 0x3c, 0x45, 0x4d, 0x75, 0x16, 0x4c, 0xb6, 0x8d, 0x40,
- 0x08, 0xc6, 0xd8, 0x2c, 0x3d, 0x78, 0x12, 0xa0, 0xd4, 0xd7, 0xe4, 0x7d,
- 0x2e, 0xbc, 0xf6, 0x72, 0x79, 0x5d, 0x50, 0xbb, 0x0f, 0x60, 0x75, 0xd2,
- 0x53, 0xf2, 0x8c, 0xa3, 0xda, 0xa5, 0x07, 0x8d, 0xfc, 0x2d, 0xd5, 0x11,
- 0x41, 0x57, 0x59, 0x53, 0x09, 0x07, 0xbc, 0xde, 0xa2, 0xe0, 0x0a, 0xe0,
- 0xdf, 0x55, 0x48, 0x2c, 0x8c, 0xf6, 0x9e, 0xef, 0x3e, 0xdf, 0x26, 0x2e,
- 0xf2, 0x64, 0xb4, 0x17, 0x22, 0xac, 0xd3, 0x11, 0xa3, 0x31, 0x34, 0x2f,
- 0x4f, 0x20, 0xf0, 0x78, 0xd1, 0x8d, 0x39, 0x60, 0x1e, 0x96, 0xd0, 0x55,
- 0xf9, 0xde, 0x27, 0x2a, 0xc4, 0x8c, 0xa9, 0xe3, 0xf2, 0x0b, 0x5a, 0x79,
- 0x21, 0xa6, 0xa3, 0xb2, 0x40, 0xc3, 0xa3, 0x51, 0xc7, 0xc0, 0x4a, 0xea,
- 0x63, 0x4f, 0x52, 0xba, 0xf9, 0xab, 0x7c, 0xa5, 0xc8, 0x71, 0xec, 0xee,
- 0x70, 0xc5, 0x85, 0x38, 0x3b, 0x24, 0xef, 0x2c, 0xfa, 0x08, 0x00, 0x16,
- 0x57, 0x68, 0xc2, 0x85, 0x47, 0x04, 0x2e, 0x6e, 0xa4, 0x32, 0xa4, 0x52,
- 0x24, 0x01, 0x25, 0x57, 0xf8, 0x56, 0x9e, 0xde, 0x37, 0xef, 0x91, 0x6f,
- 0x88, 0x3c, 0x6f, 0x59, 0x64, 0x8f, 0xed, 0x86, 0x92, 0x64, 0x73, 0x71,
- 0x91, 0xc6, 0xb2, 0x18, 0x1e, 0xe5, 0x57, 0x3f, 0x90, 0x50, 0xf9, 0xae,
- 0xb2, 0x96, 0xb5, 0xac, 0x8d, 0x51, 0x33, 0x30, 0x44, 0xb0, 0x40, 0x18,
- 0x26, 0x97, 0x33, 0xa8, 0xc5, 0x15, 0x28, 0x41, 0x26, 0xe0, 0x0b, 0x0f,
- 0xe5, 0x96, 0x3c, 0x54, 0x1d, 0x4f, 0x91, 0x76, 0xfe, 0x07, 0x92, 0xc5,
- 0xde, 0xff, 0x4f, 0x16, 0xff, 0x44, 0xb2, 0x78, 0xd1, 0x45, 0x16, 0x4f,
- 0xfe, 0x07, 0x92, 0xc5, 0x93, 0xff, 0x9f, 0x2c, 0xfe, 0x79, 0x64, 0xb1,
- 0xf7, 0xbc, 0x9e, 0x1e, 0x07, 0x7d, 0x92, 0x2e, 0x39, 0x53, 0x2b, 0x5b,
- 0x28, 0xe8, 0xa0, 0x0c, 0x5d, 0xba, 0x50, 0xd0, 0x89, 0x2c, 0x99, 0x29,
- 0x54, 0x49, 0x55, 0x60, 0x2f, 0x3d, 0x90, 0x5e, 0xdb, 0x22, 0xc1, 0x70,
- 0x9c, 0xf1, 0x7c, 0x14, 0x9d, 0xb9, 0xd7, 0x90, 0xe3, 0xc4, 0xe9, 0xbe,
- 0x88, 0xb2, 0x98, 0x27, 0x97, 0xd8, 0x02, 0xc8, 0x29, 0x03, 0x7c, 0x09,
- 0x31, 0x8a, 0xad, 0x46, 0xc3, 0x56, 0x76, 0x14, 0xbf, 0x22, 0x81, 0x0f,
- 0x68, 0x85, 0x15, 0xd0, 0xd8, 0xa7, 0xb3, 0x58, 0x0e, 0x65, 0x9f, 0x64,
- 0xa9, 0xfe, 0x20, 0x0a, 0xab, 0x14, 0x71, 0xee, 0x5d, 0xbb, 0x5e, 0xd2,
- 0x47, 0x71, 0xea, 0xfd, 0x2d, 0x29, 0xf2, 0xc8, 0xf2, 0xfa, 0x15, 0x8b,
- 0x0d, 0x85, 0xc5, 0x4c, 0x4c, 0xf0, 0x1f, 0x72, 0xbf, 0x2d, 0x2d, 0xe3,
- 0x8f, 0xa8, 0xb7, 0x28, 0xf0, 0x7b, 0x0c, 0xf3, 0xe1, 0xd2, 0x6b, 0x32,
- 0x16, 0xb5, 0x52, 0x33, 0xba, 0xf9, 0x95, 0x33, 0x91, 0x18, 0xd1, 0xfb,
- 0xad, 0x73, 0xc0, 0x42, 0x0b, 0x1b, 0x0e, 0xc2, 0xc8, 0x19, 0xa7, 0x6b,
- 0x5e, 0x0a, 0x00, 0x91, 0x0c, 0xc7, 0x95, 0x13, 0x19, 0x75, 0xc8, 0xe9,
- 0xaf, 0x13, 0x36, 0x6d, 0x87, 0x03, 0x1a, 0x40, 0x6d, 0xbe, 0x55, 0xcd,
- 0xdf, 0x85, 0xc8, 0xf9, 0x40, 0x17, 0x3f, 0xc4, 0xf6, 0x90, 0xea, 0x63,
- 0xae, 0x3a, 0xa2, 0xe5, 0x5e, 0xb9, 0x65, 0x30, 0x47, 0x70, 0xb8, 0x18,
- 0x9b, 0x48, 0xc7, 0x31, 0xb7, 0x18, 0xba, 0xfc, 0x94, 0x65, 0x80, 0xc9,
- 0x04, 0x4a, 0x7b, 0xb9, 0x9a, 0xfc, 0x45, 0x35, 0x42, 0x1a, 0x72, 0x0c,
- 0xf4, 0xba, 0x5a, 0x9d, 0x4c, 0xa9, 0x1a, 0xb3, 0x9a, 0xa8, 0x17, 0xa7,
- 0xdd, 0x1c, 0x7d, 0x08, 0x8f, 0x9d, 0xab, 0x5c, 0xa3, 0x74, 0xa6, 0x01,
- 0x3f, 0x3c, 0xa6, 0xd6, 0xa4, 0x82, 0xa8, 0x95, 0xd6, 0xbe, 0xdb, 0x79,
- 0x62, 0x8d, 0xa1, 0xd4, 0xda, 0x2c, 0xe1, 0x66, 0xb9, 0xd5, 0x54, 0x21,
- 0xd6, 0xe2, 0x73, 0xf8, 0xf1, 0xb5, 0x6d, 0x11, 0xb9, 0x0e, 0xd8, 0x8b,
- 0x5a, 0x0e, 0xfe, 0xc8, 0x3f, 0xba, 0x15, 0xa6, 0x1a, 0xf8, 0xb1, 0x05,
- 0xf3, 0xf1, 0xe3, 0x38, 0x1b, 0x78, 0x7d, 0x5d, 0x07, 0xaf, 0xf8, 0x5b,
- 0xe9, 0xe1, 0xe1, 0xb6, 0xe1, 0x27, 0xfd, 0x05, 0x1d, 0xbc, 0xcf, 0x24,
- 0x6d, 0x3e, 0xe4, 0x10, 0x4b, 0x05, 0xe2, 0x61, 0x76, 0x77, 0x17, 0x17,
- 0x99, 0xc4, 0xe2, 0x85, 0x85, 0xdf, 0x39, 0x05, 0x6a, 0x09, 0x23, 0x4d,
- 0x0b, 0xeb, 0xf6, 0x92, 0x0d, 0x55, 0xb0, 0x56, 0xe5, 0x99, 0xa5, 0x3b,
- 0x2a, 0xae, 0xa6, 0xc5, 0xad, 0x2d, 0xf3, 0xca, 0xfc, 0x75, 0xd1, 0x8c,
- 0x75, 0x8f, 0x02, 0xf7, 0x43, 0x07, 0x20, 0xbb, 0x6d, 0x84, 0xaf, 0x40,
- 0xc6, 0x2d, 0xc3, 0x04, 0xb3, 0x5a, 0xa2, 0xe4, 0x83, 0xe2, 0x7d, 0x88,
- 0x54, 0x1f, 0xfb, 0xdd, 0x93, 0xae, 0x9b, 0x11, 0x2e, 0x08, 0xc0, 0xc0,
- 0x85, 0xe7, 0xf0, 0x41, 0x6f, 0xf3, 0x14, 0xf0, 0xb7, 0x48, 0xe0, 0x1c,
- 0xfd, 0xba, 0x3a, 0x17, 0x83, 0xa0, 0x7c, 0x5d, 0x5c, 0x86, 0x69, 0x14,
- 0xed, 0xf0, 0x32, 0xaf, 0x76, 0xc7, 0x02, 0x00, 0x40, 0x54, 0x9c, 0xc5,
- 0x95, 0x1d, 0x31, 0xbf, 0x0d, 0x18, 0xa6, 0x14, 0x6b, 0xe1, 0xb4, 0x8e,
- 0x69, 0xd2, 0x8e, 0xd8, 0xf1, 0x15, 0x0d, 0x1e, 0x83, 0x93, 0xd8, 0x6b,
- 0xdd, 0x27, 0x92, 0x70, 0xfd, 0xe8, 0xad, 0x12, 0x42, 0x04, 0x1a, 0x0b,
- 0x48, 0x66, 0x21, 0xb5, 0x78, 0x48, 0x4a, 0xbb, 0x1a, 0x25, 0xe7, 0x6a,
- 0x0d, 0x25, 0x5f, 0xa2, 0xf0, 0xec, 0x5d, 0xc8, 0x57, 0x0b, 0xb6, 0x0c,
- 0x2a, 0xd0, 0x4b, 0x07, 0x87, 0x7a, 0x64, 0x2a, 0x1f, 0xef, 0x87, 0x71,
- 0x76, 0xcf, 0x3e, 0xb6, 0x07, 0xae, 0x45, 0x66, 0xe4, 0x6c, 0xf3, 0x60,
- 0x98, 0x91, 0x54, 0xea, 0xdb, 0x34, 0x22, 0x9b, 0x2d, 0xd4, 0x4b, 0x51,
- 0x96, 0x17, 0xab, 0x96, 0xf1, 0x0f, 0x4f, 0xd2, 0x36, 0x99, 0x79, 0xdd,
- 0x63, 0xe2, 0xa9, 0xf3, 0xc7, 0xca, 0x48, 0x42, 0x79, 0x57, 0xcc, 0x2f,
- 0x20, 0x11, 0xc0, 0xef, 0xd3, 0x6d, 0x69, 0xdf, 0x76, 0xf9, 0x8a, 0x05,
- 0x57, 0x86, 0x1a, 0x12, 0xaf, 0x5b, 0x36, 0x40, 0xbf, 0x9e, 0x74, 0x4d,
- 0x19, 0x65, 0x62, 0x1f, 0x91, 0x03, 0xb8, 0xff, 0xb5, 0x20, 0x55, 0xc1,
- 0x4c, 0x6d, 0x66, 0xeb, 0xfc, 0x26, 0x32, 0x4b, 0x9d, 0xe4, 0x7b, 0x49,
- 0x87, 0x41, 0x8b, 0x80, 0x81, 0x65, 0x36, 0x63, 0x9e, 0x31, 0xed, 0x49,
- 0x20, 0x90, 0x5b, 0x13, 0x86, 0xf1, 0xd7, 0x40, 0x7b, 0xe5, 0x49, 0x77,
- 0x22, 0x8c, 0xfb, 0x76, 0xef, 0x4a, 0x07, 0x26, 0x3e, 0xf8, 0x36, 0x3a,
- 0xe2, 0x81, 0xa5, 0xf5, 0xb4, 0x05, 0x59, 0xa3, 0x19, 0xa2, 0xc2, 0x1e,
- 0x25, 0x6b, 0x0c, 0x5c, 0x22, 0xc8, 0x3a, 0xd7, 0xe8, 0x57, 0x2f, 0x92,
- 0xf4, 0xdf, 0xb1, 0x4a, 0xda, 0x59, 0x27, 0x14, 0x6e, 0x50, 0xd2, 0xbd,
- 0x3d, 0xa3, 0x75, 0xe9, 0x18, 0x6b, 0x26, 0xe5, 0xd3, 0x29, 0x7c, 0x3e,
- 0x45, 0x0b, 0x91, 0xe7, 0xae, 0xa3, 0xec, 0x55, 0x38, 0xe1, 0x07, 0xa7,
- 0xe8, 0x06, 0x54, 0x9b, 0x65, 0x53, 0x08, 0xaf, 0x8f, 0xc5, 0x0d, 0x45,
- 0x91, 0xb2, 0xc3, 0x19, 0x3f, 0xac, 0x35, 0xbb, 0xc8, 0xbb, 0x4f, 0x9c,
- 0x7e, 0x47, 0xec, 0x67, 0xf4, 0xdf, 0xdc, 0x53, 0x44, 0x99, 0xd6, 0x76,
- 0x14, 0xbd, 0xd4, 0xa6, 0xf2, 0xa0, 0x8f, 0x53, 0xa7, 0xb1, 0x3b, 0xda,
- 0x01, 0xef, 0xfd, 0x78, 0x8f, 0x48, 0xab, 0x7d, 0xbe, 0xc5, 0x7e, 0x6e,
- 0xb2, 0xe0, 0xf7, 0xca, 0x74, 0xbd, 0x41, 0x1f, 0xf3, 0xe2, 0x77, 0x75,
- 0x50, 0xae, 0x46, 0x66, 0x08, 0x7f, 0xe8, 0x8a, 0x64, 0xac, 0xaf, 0x47,
- 0x02, 0xe4, 0x09, 0x2b, 0x47, 0xc2, 0x59, 0xe0, 0x78, 0x7f, 0x77, 0xe7,
- 0xf3, 0x9d, 0x6e, 0xf0, 0x4f, 0x48, 0x14, 0x16, 0xf1, 0x32, 0x4d, 0x82,
- 0xca, 0x98, 0xa9, 0x2f, 0x8b, 0x14, 0xf8, 0xd1, 0xf4, 0xca, 0x64, 0x37,
- 0x5a, 0xd7, 0x3d, 0x00, 0xa7, 0x5a, 0xaa, 0xe6, 0x66, 0xb5, 0xd1, 0x3a,
- 0x88, 0x32, 0x73, 0x3f, 0x39, 0xbf, 0x8f, 0x73, 0x2e, 0x75, 0x24, 0x55,
- 0x7b, 0x47, 0x7b, 0x6d, 0x6d, 0x4c, 0x94, 0x77, 0xe1, 0x86, 0x21, 0x8f,
- 0xd1, 0x07, 0x77, 0x6b, 0x9b, 0xb2, 0x9a, 0x3c, 0x50, 0xf2, 0xe7, 0x1b,
- 0x3a, 0x37, 0x67, 0x12, 0xb2, 0x2a, 0x45, 0x61, 0x3e, 0xb1, 0xe0, 0x0f,
- 0x5e, 0x69, 0x55, 0x85, 0x5a, 0x57, 0xed, 0xe7, 0x37, 0xae, 0x87, 0xb4,
- 0x79, 0x80, 0x18, 0x9d, 0xcf, 0x46, 0x4f, 0x5e, 0x70, 0x9e, 0xb9, 0x54,
- 0xed, 0x0d, 0xd6, 0x9e, 0x0e, 0x4a, 0xce, 0xc8, 0x68, 0x92, 0x95, 0xad,
- 0x31, 0x5a, 0xb2, 0xfa, 0xeb, 0xe6, 0xe1, 0xd5, 0x91, 0x65, 0xa3, 0x06,
- 0x0f, 0x2a, 0x07, 0xc0, 0xcd, 0x54, 0x4f, 0x4f, 0xe2, 0x59, 0x5c, 0xb1,
- 0xb7, 0x6d, 0xd8, 0xce, 0xe8, 0x10, 0x4b, 0xaf, 0x2a, 0xe7, 0xb3, 0x51,
- 0x33, 0x1d, 0x41, 0x63, 0x86, 0xb9, 0x07, 0x2b, 0xd6, 0x1d, 0xc4, 0xd9,
- 0xb6, 0xb0, 0x86, 0x27, 0x5e, 0x1f, 0x9e, 0xa0, 0x3a, 0x28, 0x97, 0x51,
- 0xb4, 0x9c, 0x7a, 0xae, 0x0c, 0xb6, 0xbc, 0x07, 0x04, 0x69, 0x3a, 0x29,
- 0xcb, 0xeb, 0x3d, 0xa2, 0x87, 0xbd, 0xd1, 0xe7, 0xac, 0x4f, 0x8a, 0xcd,
- 0x7b, 0x0d, 0xf8, 0x98, 0x42, 0x66, 0x34, 0x5a, 0x3b, 0x5d, 0x26, 0xd9,
- 0x78, 0x7c, 0x12, 0x66, 0xe4, 0xff, 0xd5, 0x76, 0xd0, 0x2a, 0xdb, 0xfa,
- 0x00, 0x5b, 0x5f, 0xf1, 0x35, 0x0f, 0x54, 0x1a, 0x2d, 0x37, 0x6c, 0x01,
- 0x6c, 0x52, 0x30, 0xaf, 0xc5, 0x97, 0x83, 0xd2, 0x92, 0xa1, 0x47, 0x1e,
- 0x65, 0x98, 0x35, 0x30, 0x47, 0x31, 0xea, 0x11, 0xf5, 0x13, 0x16, 0x1c,
- 0x6d, 0x23, 0xaa, 0xd6, 0xb3, 0xdf, 0x1b, 0xf5, 0x28, 0x35, 0xde, 0x2d,
- 0x89, 0x0b, 0x92, 0x6a, 0x39, 0x16, 0x30, 0x38, 0x2d, 0xff, 0x8b, 0x9b,
- 0x45, 0xb5, 0x59, 0x5f, 0x73, 0xa2, 0xc3, 0xf3, 0xba, 0x3d, 0x86, 0xfb,
- 0x75, 0xac, 0x05, 0x26, 0xe2, 0x62, 0x92, 0x56, 0x45, 0xac, 0xd5, 0x70,
- 0xb4, 0x42, 0x47, 0xe0, 0x16, 0xe6, 0x34, 0x70, 0x24, 0x22, 0xf0, 0x6b,
- 0x9d, 0xce, 0x48, 0x12, 0x1b, 0xfe, 0x17, 0x7a, 0xd5, 0x06, 0x44, 0x76,
- 0x44, 0x38, 0xc2, 0x57, 0x47, 0x6f, 0x4e, 0xcf, 0x8f, 0xea, 0x48, 0x64,
- 0x52, 0x09, 0x00, 0x91, 0x05, 0xcd, 0xd1, 0xfd, 0x05, 0xf9, 0x71, 0x0e,
- 0x3f, 0xc5, 0x2a, 0x0a, 0x9c, 0x7d, 0xff, 0x3a, 0x28, 0x81, 0x61, 0x75,
- 0x63, 0x02, 0x84, 0x2b, 0x25, 0xa7, 0x56, 0x76, 0x28, 0x11, 0xe3, 0x96,
- 0x87, 0xa1, 0x76, 0xc3, 0x13, 0xf0, 0x5f, 0x44, 0xa7, 0x48, 0x67, 0xb1,
- 0xe4, 0xe6, 0x94, 0x25, 0x1b, 0x88, 0x5c, 0xb3, 0x2d, 0xbf, 0x70, 0xc2,
- 0xd0, 0xd2, 0x9c, 0xe6, 0x65, 0x17, 0x0b, 0x07, 0x9e, 0x72, 0x2c, 0xea,
- 0x28, 0x72, 0x9d, 0xf8, 0x5e, 0x10, 0x9b, 0x2c, 0x01, 0x39, 0xe8, 0xa5,
- 0xcb, 0xa4, 0xc6, 0xf1, 0x7c, 0x12, 0x7f, 0x28, 0xbc, 0xba, 0x15, 0x7c,
- 0x38, 0x88, 0xfe, 0x22, 0xf5, 0x87, 0x2f, 0x05, 0x27, 0xd9, 0xaf, 0x63,
- 0x87, 0x70, 0x40, 0xdd, 0x6e, 0x96, 0xc4, 0xc2, 0xfd, 0x48, 0xdd, 0xb2,
- 0xe9, 0x80, 0xfb, 0x7f, 0xec, 0x47, 0x6a, 0x0c, 0xc1, 0x6d, 0x24, 0xd9,
- 0x76, 0x6b, 0x32, 0x27, 0x11, 0x08, 0x2a, 0x00, 0x10, 0x5b, 0x8f, 0xc5,
- 0x50, 0xd9, 0xac, 0xad, 0x0a, 0x40, 0xb7, 0xd7, 0xda, 0xea, 0x84, 0x9a,
- 0x73, 0xc9, 0x0a, 0x5f, 0xea, 0x4d, 0x60, 0x8d, 0x0c, 0x02, 0x90, 0x6a,
- 0x04, 0x51, 0xb4, 0xb8, 0x52, 0x18, 0x3d, 0x83, 0x12, 0x11, 0x5a, 0xf0,
- 0xeb, 0xcf, 0x96, 0x64, 0x09, 0xb8, 0xb2, 0xf2, 0x3e, 0xab, 0xe0, 0xcb,
- 0x07, 0x17, 0x9b, 0xe6, 0x05, 0xa2, 0x1f, 0xda, 0x64, 0xec, 0xe9, 0xb6,
- 0x84, 0xe5, 0xf6, 0xc5, 0xb3, 0x17, 0x7c, 0xec, 0x10, 0x22, 0xa4, 0x40,
- 0x08, 0x9a, 0x3a, 0x82, 0x62, 0x07, 0x3a, 0x62, 0x33, 0x84, 0xb6, 0xa0,
- 0x7d, 0x74, 0xfb, 0xcd, 0xc8, 0x37, 0x49, 0x18, 0x55, 0x01, 0x24, 0x3a,
- 0x0e, 0x9a, 0x1a, 0xad, 0x55, 0x63, 0xd7, 0x05, 0xda, 0xe0, 0x66, 0xd1,
- 0x82, 0x46, 0xb4, 0x0b, 0xf1, 0x8d, 0x26, 0xbf, 0xe9, 0x79, 0x90, 0x76,
- 0x6b, 0xbb, 0xbf, 0x6e, 0x74, 0x4a, 0x0e, 0x1c, 0xb5, 0x49, 0x84, 0xc9,
- 0x1e, 0xbf, 0xcd, 0x3f, 0x6c, 0x39, 0xd4, 0x2a, 0x2d, 0x08, 0xc0, 0x78,
- 0xb4, 0xab, 0xa4, 0x86, 0xb5, 0xb7, 0xae, 0xb9, 0x4b, 0x30, 0x2c, 0x5a,
- 0xbd, 0x66, 0x6e, 0xa4, 0x54, 0x1e, 0xad, 0xf2, 0x25, 0x0b, 0x33, 0xc2,
- 0x67, 0x75, 0xef, 0xdb, 0xe1, 0xe4, 0x3c, 0x07, 0xa4, 0xe1, 0x4c, 0xa4,
- 0x2e, 0x81, 0xc9, 0x0b, 0x24, 0xe3, 0x65, 0x08, 0xa7, 0x51, 0x5a, 0xd4,
- 0x3b, 0x12, 0x01, 0x05, 0x34, 0x57, 0x36, 0x99, 0x76, 0xb0, 0x26, 0xe1,
- 0x83, 0xc1, 0x69, 0xd4, 0x3b, 0xa2, 0x51, 0x4c, 0x12, 0xa7, 0x59, 0x19,
- 0x9e, 0xe3, 0x66, 0x6f, 0xda, 0x20, 0x01, 0x52, 0xae, 0x5d, 0xc1, 0x51,
- 0xd1, 0x36, 0x97, 0x57, 0x23, 0x01, 0x77, 0x58, 0x56, 0xf7, 0x62, 0x47,
- 0x49, 0x16, 0x0c, 0x3f, 0x83, 0x1a, 0xe2, 0x88, 0x2c, 0xd3, 0xba, 0x59,
- 0xc8, 0x46, 0x1b, 0xb6, 0x2b, 0xda, 0x0b, 0x09, 0x44, 0x6f, 0x9c, 0x41,
- 0x5f, 0xad, 0x93, 0x52, 0x09, 0xea, 0x12, 0xc9, 0x69, 0x0e, 0x2a, 0x4b,
- 0x56, 0xe7, 0xaf, 0xc6, 0x65, 0x3b, 0x29, 0xae, 0x0d, 0x75, 0x74, 0x7d,
- 0x55, 0x2c, 0x05, 0xa6, 0x24, 0xea, 0xc0, 0x3d, 0x08, 0x04, 0x49, 0x79,
- 0xd2, 0x78, 0x05, 0x0a, 0x76, 0x42, 0xd0, 0xc6, 0xab, 0xc7, 0xaf, 0x6b,
- 0xf0, 0x56, 0x12, 0xe7, 0x4e, 0x3b, 0xdd, 0xdd, 0x9c, 0x8f, 0xf3, 0x96,
- 0xf0, 0x27, 0x7f, 0x9f, 0xb8, 0xd6, 0xbc, 0xdc, 0x3c, 0xb9, 0xf7, 0xdf,
- 0x74, 0x37, 0xa7, 0x6d, 0x88, 0x2f, 0x43, 0x5a, 0xb0, 0x66, 0x41, 0x2b,
- 0x06, 0x0a, 0xcc, 0xd4, 0xc0, 0xb8, 0x8e, 0xd6, 0x49, 0x3b, 0x7a, 0xf1,
- 0x7a, 0x91, 0xcf, 0x24, 0xb2, 0xe6, 0xb1, 0xb5, 0xe0, 0x07, 0x6d, 0x2d,
- 0xd4, 0x3a, 0x5c, 0x86, 0xf3, 0x42, 0x23, 0x44, 0xa5, 0x4c, 0x79, 0xca,
- 0x07, 0xba, 0x9b, 0xf3, 0x13, 0x95, 0xb2, 0x91, 0xdc, 0x3c, 0x5e, 0x0e,
- 0xa7, 0x90, 0x45, 0xf9, 0xb4, 0x0a, 0x66, 0xc0, 0x0f, 0x74, 0x37, 0xa7,
- 0xee, 0xfe, 0xf6, 0xcc, 0xd8, 0x52, 0x88, 0xd8, 0xdf, 0xc7, 0x66, 0xc6,
- 0x0f, 0xb6, 0x76, 0x99, 0x3e, 0x14, 0x1e, 0xde, 0xd8, 0x62, 0xd9, 0x9c,
- 0x35, 0x41, 0x26, 0xb5, 0x0d, 0xb6, 0x1d, 0xc6, 0x18, 0xba, 0x36, 0x58,
- 0x43, 0x99, 0xdb, 0x8c, 0xdc, 0x23, 0xbf, 0xc9, 0xea, 0xb8, 0x07, 0xd7,
- 0x6e, 0xb0, 0xf6, 0xd1, 0x5a, 0x85, 0x79, 0xa6, 0x05, 0x48, 0x3e, 0x08,
- 0xaa, 0x06, 0xc3, 0x7c, 0x56, 0x1f, 0x1e, 0x5e, 0x90, 0x79, 0x66, 0x55,
- 0xd1, 0x80, 0xe0, 0xe4, 0x78, 0x85, 0x26, 0xad, 0xc4, 0xf5, 0x7a, 0x69,
- 0x8a, 0xca, 0xb5, 0x86, 0xec, 0x7d, 0x7f, 0x91, 0xaf, 0x3f, 0x45, 0xd7,
- 0x68, 0x9a, 0x55, 0x16, 0x77, 0x0d, 0x1e, 0x13, 0x8c, 0xb1, 0xab, 0x4c,
- 0x51, 0x90, 0x56, 0xd7, 0x9a, 0xe2, 0xe2, 0x86, 0x4d, 0x83, 0x4e, 0x34,
- 0xf8, 0xb0, 0x3e, 0x28, 0x09, 0x84, 0x86, 0xa7, 0x6d, 0xb7, 0x65, 0x4a,
- 0xe6, 0xbd, 0xf3, 0xb9, 0x0d, 0xfe, 0x38, 0x3f, 0x40, 0xc7, 0xf5, 0x2e,
- 0xdd, 0x99, 0x6c, 0x8e, 0x6f, 0x79, 0x37, 0xb3, 0xce, 0xf9, 0x57, 0xeb,
- 0x3a, 0x2c, 0x0e, 0xee, 0x50, 0x51, 0x58, 0x74, 0x95, 0xc6, 0x2e, 0x2d,
- 0xff, 0x63, 0xcd, 0x52, 0x74, 0x27, 0x65, 0xb4, 0x3a, 0xa7, 0xc7, 0xb8,
- 0x39, 0x2b, 0x1b, 0x80, 0xed, 0x58, 0xbf, 0x38, 0xfa, 0xb4, 0x1f, 0xa2,
- 0xf0, 0xf7, 0x10, 0x1e, 0xd0, 0xaf, 0x91, 0x1d, 0x87, 0x07, 0x18, 0x9e,
- 0x76, 0xdb, 0x64, 0x79, 0xb3, 0x84, 0x4b, 0x32, 0x0a, 0x2d, 0x20, 0x71,
- 0xe7, 0xf1, 0x93, 0x25, 0x23, 0x5f, 0xbb, 0xc6, 0xc5, 0xe2, 0x91, 0x43,
- 0x4e, 0x0f, 0xf8, 0x59, 0x71, 0xd8, 0x6e, 0x30, 0xab, 0xd6, 0xb9, 0x94,
- 0xb9, 0x2e, 0xd7, 0xac, 0xfc, 0xba, 0x11, 0xd4, 0xa8, 0x70, 0xfd, 0x48,
- 0xf4, 0xc9, 0xce, 0xe1, 0xf8, 0xc5, 0x65, 0x3f, 0xd2, 0xbd, 0x1f, 0x59,
- 0x77, 0x73, 0x3a, 0x5c, 0xff, 0x96, 0x2e, 0xcf, 0xc0, 0x41, 0xd5, 0xa8,
- 0xe9, 0x84, 0xb5, 0xe6, 0x36, 0x6d, 0xd8, 0x01, 0xff, 0x45, 0x0c, 0x82,
- 0xb5, 0xb5, 0x79, 0x70, 0x08, 0x87, 0x05, 0xf2, 0x7a, 0x10, 0xc9, 0xf5,
- 0x12, 0x3f, 0x3a, 0x13, 0x18, 0xb6, 0x4d, 0xc3, 0xda, 0x66, 0x78, 0x40,
- 0x8e, 0x72, 0x85, 0xdb, 0x96, 0xb9, 0x09, 0x83, 0x3d, 0x6b, 0x28, 0xd8,
- 0x26, 0x87, 0x0d, 0x4a, 0xbc, 0x3a, 0x4a, 0xa6, 0x71, 0xc6, 0x64, 0xeb,
- 0x52, 0xa7, 0xa5, 0xd9, 0xb2, 0x54, 0xac, 0x58, 0xec, 0x75, 0xdb, 0xbb,
- 0xa3, 0xdd, 0x41, 0x54, 0xd7, 0xc9, 0x4c, 0xb8, 0xe6, 0xa2, 0xf7, 0x9a,
- 0x90, 0xc6, 0x5d, 0x37, 0xed, 0x0c, 0xe7, 0xdc, 0x71, 0x69, 0x72, 0xa6,
- 0x27, 0x05, 0xf8, 0xd7, 0xbd, 0x20, 0xcf, 0x98, 0xcd, 0xad, 0x05, 0xdc,
- 0x19, 0x3e, 0x7d, 0xf1, 0xa2, 0x76, 0xa5, 0x85, 0x9a, 0xf3, 0xb3, 0x9d,
- 0x1d, 0x01, 0xb2, 0x6e, 0xbe, 0x46, 0x5f, 0x0c, 0x5f, 0xe0, 0xc5, 0xfa,
- 0x6b, 0x52, 0x44, 0x61, 0xfd, 0x7b, 0x43, 0xfe, 0xa6, 0xa3, 0x3b, 0xd8,
- 0x53, 0xd6, 0xbe, 0xf5, 0x82, 0xbb, 0xeb, 0x78, 0x0b, 0x0f, 0xcb, 0x32,
- 0xe6, 0x97, 0x97, 0x0c, 0xe4, 0xca, 0x4f, 0x4a, 0xe5, 0xf7, 0xbc, 0xb8,
- 0x8b, 0x8b, 0x59, 0x7b, 0xba, 0x3b, 0x83, 0xe1, 0xee, 0xba, 0xe9, 0xc2,
- 0x26, 0xc0, 0x23, 0xc1, 0x7e, 0xb2, 0x06, 0x45, 0xc2, 0xf3, 0xe6, 0x37,
- 0x5b, 0x5d, 0xb3, 0xff, 0x6c, 0x67, 0x67, 0xf0, 0x9c, 0x7f, 0xbe, 0x78,
- 0xb1, 0xd6, 0x41, 0xe8, 0xfb, 0x78, 0x62, 0x53, 0xab, 0x8d, 0x96, 0xda,
- 0xe9, 0x68, 0x7d, 0x97, 0x5a, 0xdd, 0x7d, 0xf1, 0x62, 0xc0, 0xbd, 0x3c,
- 0xfb, 0xa4, 0xd6, 0xab, 0xbb, 0xdc, 0x5b, 0xb6, 0xf8, 0x75, 0x4f, 0x8f,
- 0x65, 0x63, 0x06, 0xac, 0x0d, 0xbc, 0x02, 0xba, 0x77, 0x60, 0xe8, 0xf1,
- 0x11, 0xf6, 0x61, 0x20, 0x34, 0xa2, 0x34, 0x96, 0xac, 0x45, 0x8a, 0x03,
- 0x26, 0x36, 0x85, 0x25, 0xf6, 0x21, 0x2e, 0xe6, 0x4c, 0xf1, 0x49, 0x70,
- 0x92, 0xf9, 0x38, 0x4b, 0xaf, 0xd2, 0xca, 0xa3, 0x35, 0x94, 0xd1, 0x26,
- 0xd1, 0xcb, 0x16, 0xac, 0x07, 0x82, 0x42, 0xad, 0xce, 0xe5, 0x3e, 0xa2,
- 0x31, 0x05, 0x47, 0xae, 0xcf, 0xda, 0x44, 0x9f, 0xb6, 0x22, 0x99, 0xcf,
- 0x9c, 0x75, 0x49, 0x2f, 0x11, 0x79, 0x6e, 0x28, 0x4f, 0xc8, 0x41, 0x83,
- 0x0a, 0x28, 0xb8, 0x85, 0x31, 0x62, 0x61, 0x1a, 0x7d, 0x46, 0x0e, 0x01,
- 0x3c, 0xc8, 0xba, 0x10, 0x4c, 0x40, 0x09, 0xbf, 0xf4, 0x53, 0xed, 0x97,
- 0x4d, 0x14, 0xcb, 0xa4, 0x5e, 0xc9, 0x7c, 0x96, 0x58, 0x59, 0xa9, 0x3a,
- 0x70, 0xa1, 0x7b, 0x5d, 0x4c, 0x38, 0xab, 0xa2, 0x81, 0xbd, 0xf4, 0x67,
- 0x9f, 0xe5, 0x02, 0x3f, 0x31, 0x2b, 0xb4, 0x77, 0xb1, 0x65, 0xd7, 0x20,
- 0xab, 0xce, 0xce, 0xbe, 0xab, 0x17, 0x3b, 0xcb, 0x35, 0x9a, 0x08, 0x00,
- 0x71, 0xd8, 0x20, 0x6b, 0xce, 0xaa, 0x7f, 0xa9, 0xab, 0x79, 0x86, 0x78,
- 0x1e, 0x83, 0x5f, 0x13, 0x33, 0xbb, 0x24, 0xe9, 0x04, 0x41, 0xb8, 0x52,
- 0xd1, 0x4d, 0xa7, 0x2c, 0xb5, 0x59, 0x36, 0x1a, 0x09, 0x0f, 0x57, 0x49,
- 0x15, 0x94, 0x39, 0xb1, 0x14, 0x6f, 0x3f, 0x0b, 0x43, 0x46, 0x07, 0x4b,
- 0x92, 0xc5, 0xf7, 0x35, 0xca, 0x04, 0xb7, 0x4c, 0xbd, 0xc2, 0x52, 0x34,
- 0x06, 0xd8, 0x84, 0xb5, 0x1d, 0xe3, 0xcd, 0x72, 0x4c, 0x90, 0x76, 0x8d,
- 0xe8, 0x30, 0x8c, 0x3a, 0x11, 0xfa, 0x0a, 0xcc, 0x05, 0x56, 0x55, 0x28,
- 0x97, 0x18, 0x8a, 0xad, 0x11, 0xc6, 0x80, 0x72, 0x1a, 0xd8, 0x09, 0xee,
- 0x36, 0xdc, 0xd2, 0xe4, 0x63, 0x85, 0x12, 0x60, 0x78, 0xcc, 0x6e, 0xa5,
- 0xf1, 0xf1, 0xff, 0x3e, 0x1a, 0x85, 0x91, 0xd1, 0xff, 0xa0, 0x18, 0xd3,
- 0xf3, 0x20, 0x0b, 0x94, 0x5f, 0xeb, 0x4a, 0x72, 0x09, 0x40, 0xae, 0x1b,
- 0xf5, 0x44, 0x6d, 0x6f, 0xd8, 0x33, 0xcb, 0x14, 0x83, 0xac, 0x63, 0x25,
- 0xcc, 0xae, 0x6a, 0x2b, 0xb4, 0x8c, 0x8b, 0x65, 0xe4, 0xad, 0x12, 0xe6,
- 0xd5, 0x13, 0x9b, 0xaf, 0x47, 0x56, 0x15, 0x73, 0x69, 0xec, 0x63, 0x71,
- 0xb4, 0xac, 0x6b, 0x53, 0x98, 0xf6, 0x69, 0xcd, 0xb2, 0xed, 0x5c, 0x09,
- 0x17, 0x99, 0xc3, 0xbc, 0x00, 0xdc, 0x57, 0x68, 0xa4, 0xe7, 0x9b, 0x98,
- 0x74, 0x52, 0x3c, 0xde, 0x09, 0x3b, 0x20, 0x28, 0x43, 0x61, 0xae, 0xa6,
- 0x13, 0x86, 0x64, 0x86, 0xf3, 0xc4, 0x10, 0x51, 0xe0, 0xd9, 0x0a, 0x6b,
- 0x3e, 0x75, 0xe4, 0x7b, 0x94, 0x74, 0xe1, 0x03, 0x44, 0x91, 0x81, 0xab,
- 0xa4, 0xf3, 0x08, 0x08, 0x86, 0x86, 0x20, 0x22, 0x60, 0x88, 0x65, 0x50,
- 0x4b, 0x57, 0xcd, 0x6b, 0xf2, 0x70, 0xab, 0x62, 0x3a, 0xe3, 0x7a, 0xc0,
- 0xba, 0xc0, 0xf8, 0x0f, 0x3e, 0x5e, 0xbe, 0x6c, 0x17, 0x98, 0x49, 0xae,
- 0x66, 0x43, 0x15, 0x9a, 0xea, 0x67, 0x98, 0x57, 0xe1, 0xce, 0x05, 0x05,
- 0x06, 0xbb, 0x9b, 0x06, 0xb1, 0x2a, 0xf1, 0x5c, 0xcd, 0x16, 0x8c, 0xfd,
- 0x06, 0x77, 0x87, 0xcb, 0xfa, 0x85, 0x09, 0xad, 0x35, 0xd3, 0x0a, 0xd6,
- 0x43, 0xa0, 0xc0, 0xb8, 0x3a, 0x0e, 0xc8, 0xee, 0x45, 0xfe, 0x59, 0x54,
- 0x8b, 0x8f, 0x77, 0xc8, 0x73, 0x0b, 0x18, 0xf8, 0x01, 0x33, 0xd2, 0x74,
- 0xce, 0x52, 0xbf, 0xa8, 0x0e, 0x3f, 0xa0, 0x95, 0xb8, 0x6b, 0x15, 0x35,
- 0xac, 0xf9, 0xb3, 0x83, 0x04, 0x66, 0x0e, 0xa3, 0x79, 0x28, 0x00, 0xe3,
- 0x5a, 0x24, 0x8b, 0x9a, 0xbf, 0x58, 0xbc, 0x00, 0xbc, 0xa6, 0x3c, 0x69,
- 0x97, 0x36, 0x5e, 0x76, 0x5b, 0x6a, 0x67, 0x49, 0x6c, 0x10, 0x1c, 0xb4,
- 0xa7, 0x44, 0xa9, 0xed, 0x24, 0xea, 0xbb, 0xa4, 0x48, 0x3c, 0x26, 0x2d,
- 0xa2, 0xd5, 0xe8, 0xf4, 0x8d, 0xa2, 0x71, 0x4e, 0xcf, 0x77, 0x14, 0x9d,
- 0xb2, 0xfc, 0x91, 0x1a, 0x44, 0x25, 0xc6, 0xe3, 0xab, 0x42, 0x73, 0xb6,
- 0xb4, 0x18, 0x80, 0xeb, 0xf3, 0xed, 0x40, 0xb5, 0x82, 0xa5, 0x96, 0x06,
- 0x6e, 0xb5, 0xc4, 0x07, 0xca, 0x44, 0x61, 0x6c, 0x64, 0x96, 0xd3, 0x1b,
- 0xe6, 0xd1, 0x10, 0x20, 0xfb, 0x00, 0xdc, 0x0a, 0x9a, 0x7b, 0x28, 0x31,
- 0x6e, 0xf7, 0x45, 0x3d, 0xa6, 0x90, 0xeb, 0x9e, 0xcd, 0x89, 0xa1, 0xbf,
- 0x64, 0xf7, 0x23, 0xbc, 0x8f, 0xfb, 0x6b, 0x72, 0xa8, 0xce, 0x1c, 0x80,
- 0xdc, 0x94, 0x86, 0xc0, 0x29, 0x02, 0x9a, 0x2b, 0x22, 0x73, 0xf4, 0x93,
- 0x94, 0x04, 0x16, 0xa1, 0x15, 0x71, 0x47, 0x2e, 0xe3, 0xb4, 0x18, 0xb5,
- 0x7c, 0x9a, 0x0e, 0xf0, 0xd3, 0xa6, 0xc6, 0x92, 0xa2, 0x2b, 0xfb, 0xac,
- 0x55, 0x8e, 0x25, 0x14, 0x75, 0xb3, 0xdc, 0x32, 0x64, 0xd3, 0x35, 0x72,
- 0x7b, 0x2d, 0x1f, 0x49, 0x91, 0xfa, 0x61, 0x6b, 0x70, 0x75, 0x1f, 0x05,
- 0x4b, 0x15, 0x41, 0x49, 0x98, 0xf2, 0x2c, 0xa8, 0x0c, 0xd1, 0x8a, 0x5f,
- 0xb2, 0xba, 0x36, 0x23, 0x41, 0x16, 0xe0, 0xf3, 0xcf, 0x07, 0x8b, 0xfa,
- 0xcf, 0x25, 0xe1, 0x73, 0x3b, 0xa9, 0xa6, 0xdb, 0x02, 0x2d, 0x05, 0x12,
- 0xcf, 0x00, 0xb7, 0xe9, 0xb4, 0x83, 0x56, 0x99, 0xfb, 0x96, 0x83, 0x47,
- 0xcc, 0x0f, 0x41, 0xc9, 0xbb, 0x20, 0x1f, 0x0a, 0x1c, 0xd5, 0x7c, 0xb8,
- 0x1d, 0x06, 0xda, 0x4b, 0x83, 0x69, 0x0a, 0x16, 0xdd, 0x39, 0x3b, 0x0d,
- 0xbe, 0xa9, 0x76, 0x4f, 0xf0, 0x2b, 0xbe, 0xcc, 0x62, 0x07, 0xf5, 0x66,
- 0x49, 0x70, 0xeb, 0xb8, 0x50, 0xbb, 0x3a, 0x38, 0xa3, 0x83, 0x10, 0x0c,
- 0x36, 0xbe, 0xcb, 0xf4, 0xce, 0xa7, 0x07, 0x23, 0x90, 0xb8, 0x39, 0x83,
- 0x47, 0x00, 0x4a, 0xcd, 0x23, 0x00, 0x8c, 0x96, 0xc0, 0xae, 0xd1, 0x55,
- 0x3e, 0xbf, 0x9f, 0xad, 0xce, 0x33, 0xfd, 0xc4, 0x25, 0x48, 0x75, 0x04,
- 0x9e, 0xe9, 0xe6, 0x3e, 0x1c, 0x3c, 0xb4, 0x3b, 0x7a, 0x52, 0x3f, 0x03,
- 0xac, 0x11, 0x76, 0x55, 0x9c, 0x80, 0x10, 0x07, 0x4e, 0x88, 0x22, 0x19,
- 0x88, 0x0d, 0x93, 0x84, 0x1f, 0xb6, 0x30, 0x24, 0x16, 0x26, 0x84, 0x80,
- 0x03, 0x81, 0x13, 0x61, 0x6e, 0xa3, 0xa5, 0x39, 0xda, 0x60, 0x88, 0x81,
- 0xff, 0x88, 0xe3, 0x2c, 0xad, 0xf4, 0x4d, 0xa1, 0xd1, 0x96, 0x5e, 0x27,
- 0x92, 0x39, 0xab, 0xe5, 0x98, 0x78, 0x19, 0x1f, 0x95, 0xd5, 0x72, 0xd4,
- 0xae, 0x87, 0xe1, 0xe2, 0xc5, 0xf4, 0x5d, 0xea, 0x7e, 0x27, 0x4c, 0x3e,
- 0x44, 0xea, 0x8d, 0x46, 0xf2, 0x96, 0x56, 0xcc, 0xce, 0x82, 0x6d, 0x5a,
- 0x3c, 0x11, 0xac, 0x94, 0x6b, 0x11, 0x5c, 0xb8, 0x29, 0xeb, 0x9c, 0x35,
- 0x7b, 0x48, 0xd0, 0xc5, 0xf6, 0x79, 0x51, 0xa4, 0xe0, 0xd9, 0xc0, 0x7c,
- 0x01, 0x4f, 0x3f, 0x7e, 0x6c, 0xef, 0x84, 0x2f, 0x66, 0x0e, 0x5d, 0x51,
- 0x5d, 0xf3, 0xcf, 0x3e, 0x7e, 0xac, 0x7f, 0xf9, 0x40, 0x99, 0x6a, 0x96,
- 0x1d, 0x50, 0x8f, 0xab, 0xca, 0x75, 0xa5, 0xe2, 0x60, 0x15, 0x0d, 0x96,
- 0x58, 0x71, 0x1b, 0xef, 0x62, 0x89, 0x5e, 0x6d, 0xfb, 0x82, 0xa0, 0xfd,
- 0x09, 0x47, 0xaa, 0xae, 0x13, 0x7f, 0x4d, 0x30, 0x18, 0xd6, 0x35, 0x9d,
- 0x4a, 0xa9, 0x24, 0xa5, 0x44, 0xef, 0x2a, 0x57, 0xaf, 0x34, 0x7b, 0xac,
- 0x19, 0x16, 0x12, 0x4b, 0x75, 0x4e, 0x80, 0xe5, 0xaf, 0xb2, 0x2a, 0x9d,
- 0xf3, 0x3b, 0xa8, 0x50, 0x48, 0xaf, 0xef, 0xd2, 0xfa, 0xa7, 0xd9, 0x8a,
- 0x75, 0x2a, 0x59, 0x6d, 0x74, 0xe8, 0x8a, 0x65, 0x75, 0x2d, 0xfb, 0x3c,
- 0xbe, 0x8f, 0x5c, 0x24, 0x85, 0x81, 0xd7, 0x07, 0xc0, 0x2c, 0x18, 0x97,
- 0xa0, 0x20, 0x5a, 0x1e, 0x1a, 0xd6, 0x62, 0x88, 0x57, 0x3b, 0x0e, 0xb3,
- 0xbb, 0x83, 0x34, 0xe9, 0x2e, 0xf9, 0x48, 0x8b, 0x2d, 0xa1, 0x96, 0x92,
- 0x3a, 0x4a, 0x8a, 0x1e, 0xdf, 0x32, 0x57, 0x79, 0x41, 0x1b, 0xba, 0x50,
- 0xa9, 0x43, 0x82, 0x46, 0x5b, 0x61, 0x1a, 0xd2, 0x95, 0x2b, 0x5d, 0x28,
- 0x01, 0xbc, 0xa8, 0x59, 0x22, 0xde, 0xc1, 0xbc, 0x52, 0x39, 0xd5, 0xca,
- 0xad, 0x60, 0x75, 0x6d, 0xd4, 0x0f, 0x5d, 0x45, 0x7b, 0xe1, 0x31, 0xfc,
- 0xc7, 0xe7, 0x5c, 0x05, 0x6b, 0xf4, 0x40, 0xc1, 0x45, 0x13, 0x80, 0xcb,
- 0x79, 0x92, 0x2c, 0x35, 0x8e, 0xc5, 0x4a, 0xb0, 0xcb, 0xb4, 0xf4, 0x18,
- 0x8a, 0x08, 0xa0, 0x54, 0xa8, 0x6a, 0xcd, 0xba, 0x03, 0xae, 0xb7, 0x37,
- 0x7b, 0x9e, 0x7c, 0x22, 0x7e, 0x1c, 0x05, 0xac, 0x44, 0xcf, 0xd5, 0x66,
- 0x5a, 0x85, 0xe2, 0x4c, 0xf7, 0x89, 0x74, 0x5b, 0xa6, 0xab, 0xac, 0xdb,
- 0xe6, 0x48, 0x46, 0xd7, 0x7a, 0x6b, 0x54, 0x93, 0x92, 0xda, 0x88, 0x12,
- 0xe2, 0x7b, 0x85, 0x3c, 0x08, 0x33, 0xe1, 0x15, 0x04, 0x1f, 0x65, 0x7f,
- 0x08, 0xea, 0x95, 0x42, 0xb7, 0x88, 0x1c, 0x08, 0xea, 0x9c, 0xca, 0x12,
- 0xb6, 0x58, 0x2d, 0x02, 0xef, 0x1b, 0x6a, 0x84, 0xe9, 0xea, 0x36, 0x72,
- 0x4f, 0x6d, 0x3c, 0xf6, 0x91, 0xa7, 0x80, 0x36, 0xe4, 0xc0, 0x3f, 0x8b,
- 0x20, 0x1e, 0x2d, 0xc2, 0x29, 0xa6, 0x44, 0xd9, 0x66, 0x7e, 0x50, 0xe3,
- 0xa8, 0x38, 0x2e, 0x95, 0x27, 0xe4, 0x1d, 0xe3, 0xc2, 0x76, 0xdc, 0x9e,
- 0xab, 0x0a, 0xd5, 0x32, 0x83, 0x29, 0x5f, 0xb1, 0x51, 0x01, 0x6e, 0x27,
- 0xe6, 0x69, 0x30, 0x1a, 0xc6, 0x26, 0xe3, 0xb9, 0xe9, 0xd0, 0xb6, 0xf8,
- 0xe3, 0x79, 0xce, 0x91, 0xd2, 0xa5, 0x2b, 0xc7, 0x51, 0xb4, 0xf0, 0x6b,
- 0x50, 0x59, 0x40, 0xd8, 0xcd, 0xac, 0xa3, 0xa2, 0xd8, 0xbb, 0x9c, 0x73,
- 0xc9, 0x5d, 0xcd, 0x10, 0xd7, 0x8e, 0xbe, 0xd9, 0x2e, 0x1f, 0xa0, 0xed,
- 0x68, 0x25, 0xa2, 0x41, 0x1d, 0xf3, 0x44, 0x07, 0x0d, 0x94, 0x00, 0x81,
- 0x6d, 0xbc, 0x36, 0xe4, 0x6f, 0xbe, 0xe3, 0x3a, 0x4a, 0x84, 0xca, 0xe5,
- 0xc6, 0x8e, 0x4b, 0x44, 0x3d, 0xf0, 0x7c, 0x3a, 0xca, 0x9f, 0x61, 0x07,
- 0xa8, 0x91, 0x34, 0x9f, 0x21, 0x5e, 0x42, 0x38, 0x4a, 0xab, 0x38, 0xaf,
- 0xe4, 0x98, 0xea, 0x68, 0xfa, 0xa5, 0xab, 0xfe, 0xc4, 0xaf, 0x4b, 0x59,
- 0x16, 0x94, 0x56, 0x0d, 0x6a, 0xab, 0x8e, 0x22, 0x2d, 0x14, 0x55, 0xb5,
- 0x4b, 0xcd, 0x7a, 0x08, 0x15, 0xd0, 0x6e, 0x25, 0x00, 0x1d, 0x56, 0xbb,
- 0xd3, 0x31, 0xda, 0x7f, 0x22, 0x93, 0x2a, 0x51, 0x4d, 0x3a, 0x9d, 0xb7,
- 0x33, 0x1e, 0xc6, 0xf8, 0x50, 0x74, 0xb1, 0xbf, 0xae, 0x52, 0x94, 0xbe,
- 0x02, 0x7c, 0xc0, 0xeb, 0x9c, 0xf7, 0xbf, 0xd4, 0xd8, 0xe9, 0x2b, 0x48,
- 0x62, 0x1a, 0x46, 0x54, 0x28, 0x57, 0xa1, 0xee, 0x5b, 0x2a, 0x2c, 0x23,
- 0x0e, 0x8f, 0xac, 0x10, 0x08, 0xd0, 0xdf, 0x17, 0x74, 0x49, 0x8d, 0x1c,
- 0x8a, 0x39, 0x31, 0x84, 0x0e, 0x80, 0x7f, 0x35, 0xdc, 0x94, 0x37, 0x6d,
- 0x09, 0x74, 0x50, 0x8b, 0xdf, 0x87, 0xd3, 0x5e, 0x9d, 0x10, 0x15, 0x67,
- 0x84, 0x90, 0xe6, 0xb7, 0x2d, 0x70, 0x67, 0x56, 0x2b, 0x9d, 0x9b, 0xb2,
- 0xd0, 0xf0, 0x26, 0xd9, 0xd4, 0x02, 0x23, 0xcb, 0xb8, 0x9c, 0x0f, 0xd3,
- 0x26, 0xe1, 0x0b, 0x94, 0xa7, 0x0b, 0xd1, 0xf1, 0x22, 0x04, 0x12, 0xca,
- 0xc6, 0x07, 0xa4, 0x49, 0xb7, 0xf1, 0x3d, 0x1f, 0x62, 0x37, 0x4f, 0x76,
- 0x6b, 0xaa, 0xd0, 0x18, 0x5b, 0x41, 0xcb, 0x3a, 0xc4, 0x22, 0xae, 0x41,
- 0xd9, 0xf6, 0xec, 0x7c, 0x58, 0x8a, 0x14, 0x17, 0x48, 0x5b, 0xd8, 0x14,
- 0xcb, 0x21, 0x30, 0x9c, 0x67, 0x3e, 0x84, 0xad, 0xf2, 0xeb, 0x88, 0x5f,
- 0xa8, 0xcd, 0xb9, 0x9c, 0x4b, 0xb0, 0x94, 0xc1, 0x4d, 0x09, 0xf4, 0x94,
- 0x80, 0x4e, 0x5d, 0x14, 0xf7, 0x16, 0x14, 0xc9, 0xa9, 0xcc, 0x17, 0x27,
- 0xe3, 0x40, 0x05, 0xf0, 0xe6, 0x83, 0x36, 0xe7, 0xe1, 0xb4, 0x3f, 0x91,
- 0x9d, 0x61, 0x8a, 0x44, 0x3d, 0xe5, 0xb0, 0x7a, 0xb6, 0xab, 0xa8, 0x2c,
- 0xa6, 0x55, 0x2b, 0x5b, 0xa2, 0x76, 0xb3, 0x26, 0x45, 0x4a, 0xd7, 0xa1,
- 0x8d, 0x42, 0xd2, 0xed, 0x69, 0xec, 0x43, 0x4b, 0xfe, 0x67, 0x1e, 0x81,
- 0xd9, 0x10, 0x4b, 0xfb, 0xab, 0x88, 0x02, 0xaa, 0x02, 0x0c, 0x5b, 0x56,
- 0x90, 0x2a, 0x62, 0x48, 0xd3, 0x39, 0xa2, 0x11, 0x93, 0x6c, 0x5a, 0xdc,
- 0xd7, 0x10, 0x33, 0x67, 0x9f, 0x50, 0xf0, 0xaf, 0xae, 0x3c, 0x30, 0x3c,
- 0x2b, 0x33, 0x25, 0xc6, 0x24, 0xd7, 0x2a, 0x90, 0xf4, 0x89, 0x1b, 0x63,
- 0xfd, 0x5c, 0xef, 0xa2, 0xcc, 0x6a, 0xb3, 0x39, 0x5f, 0xc2, 0x5d, 0xdc,
- 0x75, 0xb4, 0x99, 0x72, 0x30, 0x4c, 0x8f, 0x02, 0x4a, 0x6d, 0x88, 0x04,
- 0xc9, 0x2e, 0xa6, 0x99, 0xd0, 0x60, 0x93, 0x7b, 0x5d, 0xae, 0x60, 0x16,
- 0xd5, 0xb4, 0xc5, 0xc6, 0x6e, 0x63, 0x7d, 0x3a, 0x82, 0xe5, 0x06, 0x91,
- 0x12, 0x80, 0x52, 0x80, 0x92, 0x00, 0x6d, 0xa6, 0x82, 0x3f, 0x87, 0x14,
- 0x50, 0xaf, 0x85, 0xde, 0x9a, 0x8e, 0x9c, 0xc3, 0x4a, 0x4d, 0x25, 0x9f,
- 0xba, 0xed, 0x6e, 0xa3, 0x3f, 0xb9, 0x32, 0xe9, 0xda, 0xdd, 0xf0, 0xdb,
- 0xa1, 0xfb, 0x01, 0x0b, 0x9a, 0xa7, 0x1a, 0xd0, 0xc8, 0x66, 0x3c, 0xeb,
- 0xc4, 0x20, 0x42, 0x9d, 0xf3, 0x67, 0x5b, 0xa3, 0x4f, 0xdd, 0x16, 0x27,
- 0x63, 0xeb, 0xa6, 0xb4, 0x41, 0x93, 0xe3, 0x47, 0xb6, 0x04, 0x02, 0x2c,
- 0x43, 0xc1, 0xb5, 0xb2, 0x05, 0x14, 0xb6, 0x3c, 0x94, 0xaf, 0xaa, 0x5a,
- 0xb0, 0x39, 0x5f, 0x24, 0x28, 0xd3, 0x12, 0x23, 0x7f, 0x23, 0x2c, 0x5e,
- 0x7e, 0x39, 0x8f, 0xef, 0xba, 0x00, 0x9c, 0x71, 0x98, 0xa5, 0x6a, 0x1d,
- 0xad, 0x76, 0x18, 0xb0, 0x5c, 0x7a, 0xea, 0xfd, 0xea, 0xe8, 0x60, 0x7c,
- 0x31, 0x6a, 0x5e, 0x39, 0xad, 0x74, 0x22, 0x14, 0x1b, 0x52, 0x33, 0x11,
- 0xb8, 0x02, 0x1b, 0x16, 0x23, 0x2e, 0x8d, 0x5b, 0x38, 0xf0, 0x3c, 0x1e,
- 0x9e, 0x8c, 0xce, 0xda, 0xe7, 0xfc, 0xa7, 0x0e, 0x00, 0x23, 0x48, 0x88,
- 0x70, 0x78, 0x4e, 0xd2, 0x39, 0xcf, 0x80, 0xc6, 0x45, 0xac, 0x77, 0xa1,
- 0x79, 0x16, 0x5c, 0xdf, 0x3e, 0xca, 0xe7, 0x00, 0xdf, 0x42, 0x37, 0x0d,
- 0x28, 0xf3, 0x56, 0xb9, 0xd0, 0x83, 0xf3, 0x77, 0xc7, 0xef, 0xbe, 0xde,
- 0xaf, 0xdd, 0x99, 0xf3, 0x3c, 0x2f, 0x13, 0xf5, 0xd1, 0x0b, 0x8a, 0xba,
- 0xac, 0x96, 0xe4, 0x87, 0x3a, 0xc4, 0x8d, 0x8e, 0x4b, 0x9c, 0xc1, 0x0d,
- 0x05, 0x2a, 0xb6, 0xbc, 0x11, 0xd3, 0x9c, 0xd6, 0x96, 0x61, 0x89, 0x67,
- 0xf4, 0x70, 0x9d, 0xdf, 0x32, 0x9f, 0xde, 0x94, 0x4f, 0xc5, 0xd8, 0xf5,
- 0xc9, 0xb1, 0xf6, 0xe3, 0xd3, 0xc3, 0x6f, 0xc7, 0x4f, 0x83, 0x48, 0xfb,
- 0xaa, 0x61, 0xb8, 0xd1, 0xf2, 0xb3, 0x78, 0xa3, 0x9d, 0xa6, 0xfa, 0x48,
- 0x98, 0x7d, 0x9d, 0x2b, 0x3d, 0x0b, 0x6d, 0xa2, 0x9d, 0xc7, 0xaa, 0x5e,
- 0xc4, 0x84, 0x4d, 0x5d, 0x69, 0xbe, 0x72, 0x08, 0xfa, 0x01, 0x5c, 0xd5,
- 0x40, 0xa5, 0xc8, 0xfb, 0x8e, 0x2a, 0x85, 0x56, 0xdd, 0x24, 0xa8, 0x67,
- 0xd2, 0x8a, 0x8e, 0x63, 0x18, 0x0e, 0x31, 0x96, 0x7c, 0x36, 0x68, 0x8a,
- 0x3b, 0xc4, 0x29, 0x48, 0xfe, 0x9b, 0xaf, 0xb8, 0x67, 0xe0, 0x75, 0x38,
- 0x40, 0x13, 0x17, 0xac, 0xd9, 0x94, 0x3f, 0x64, 0xe5, 0x2d, 0x7e, 0x9f,
- 0xa1, 0x5a, 0xfc, 0x50, 0x75, 0xb3, 0x63, 0x7d, 0x6a, 0x7f, 0x7b, 0xdb,
- 0x9b, 0xb3, 0x24, 0xb8, 0x70, 0xf4, 0xdb, 0x69, 0x05, 0xd2, 0x67, 0xfc,
- 0xab, 0x88, 0x22, 0xfe, 0x34, 0xaa, 0x68, 0x49, 0xc9, 0xbf, 0x90, 0x2a,
- 0x3e, 0x5f, 0xc7, 0x6c, 0x3b, 0x0b, 0xdb, 0x3c, 0x48, 0x13, 0xae, 0xce,
- 0xcd, 0xff, 0x20, 0xaa, 0x88, 0x3f, 0x8d, 0x2c, 0xe2, 0x1a, 0x5d, 0xac,
- 0xc9, 0x09, 0xff, 0x2d, 0x31, 0x25, 0x31, 0x8c, 0x67, 0x43, 0x87, 0x8d,
- 0xff, 0x18, 0xc5, 0xd4, 0x4c, 0xb4, 0x2c, 0x24, 0x80, 0x68, 0x9e, 0xe9,
- 0x6c, 0x37, 0x61, 0x09, 0x4e, 0x42, 0xd0, 0x34, 0x33, 0xc6, 0x77, 0x43,
- 0xf4, 0xe3, 0xee, 0xdb, 0x7a, 0x94, 0x03, 0x39, 0xda, 0x12, 0xfc, 0x26,
- 0xa1, 0xae, 0x56, 0x38, 0xf3, 0x2f, 0xa7, 0xb5, 0xff, 0x57, 0x70, 0xa0,
- 0x67, 0xbe, 0xb2, 0xc1, 0xa7, 0xd0, 0xdc, 0xb3, 0x6b, 0x47, 0x73, 0x5d,
- 0x45, 0x3f, 0x8d, 0x37, 0xfd, 0xc6, 0xf9, 0x3a, 0x1d, 0x72, 0x95, 0xad,
- 0x3a, 0xdc, 0xd4, 0x05, 0xa9, 0xd8, 0x88, 0x6e, 0x08, 0x01, 0xf4, 0x35,
- 0x09, 0xa4, 0x8d, 0xb4, 0xab, 0x74, 0xec, 0x52, 0xa9, 0x03, 0xeb, 0xb1,
- 0xa0, 0x51, 0xd1, 0x08, 0x5a, 0x77, 0xe6, 0xb3, 0x5f, 0xc3, 0x1e, 0x8d,
- 0xd2, 0x19, 0xcf, 0x60, 0x22, 0x49, 0xdb, 0x42, 0xdf, 0x5a, 0x71, 0x33,
- 0xb7, 0x62, 0xd2, 0x5d, 0xce, 0x60, 0xc0, 0x71, 0x5b, 0x5a, 0xdb, 0xa3,
- 0xb4, 0x5e, 0xe3, 0xa3, 0x1d, 0x99, 0x05, 0xeb, 0x52, 0xda, 0xfe, 0xdf,
- 0xc2, 0x43, 0x9f, 0x7d, 0x1a, 0x39, 0xff, 0x33, 0x6e, 0xd6, 0xff, 0x41,
- 0xc4, 0xdb, 0xb1, 0xcd, 0x9b, 0x8a, 0x4c, 0x26, 0x9a, 0xa1, 0x5c, 0x2c,
- 0x5b, 0x82, 0x33, 0xe3, 0x44, 0x78, 0x2c, 0xe2, 0xf1, 0xd9, 0x77, 0xcf,
- 0x25, 0xf0, 0x6d, 0xdc, 0x86, 0xd6, 0x3f, 0x79, 0x7d, 0x70, 0xd6, 0x71,
- 0x33, 0x5c, 0x91, 0xc2, 0xbf, 0x4c, 0x87, 0xac, 0x56, 0xb1, 0x09, 0xee,
- 0xa5, 0xfe, 0xc2, 0x24, 0xde, 0x65, 0x64, 0x34, 0x23, 0xa9, 0x3d, 0x2f,
- 0xd8, 0xdd, 0xe2, 0x31, 0xc6, 0x2c, 0x55, 0x3f, 0x63, 0x87, 0xd3, 0x74,
- 0x31, 0xdb, 0x96, 0x3f, 0x87, 0x97, 0x7f, 0x9d, 0xb5, 0x55, 0xbd, 0x10,
- 0x18, 0xbb, 0x96, 0x88, 0xa8, 0x60, 0xe3, 0x69, 0xb5, 0xae, 0x04, 0x73,
- 0xb9, 0x1f, 0x9c, 0xf2, 0x48, 0x73, 0x6b, 0x01, 0x2a, 0xbd, 0x6e, 0x5e,
- 0x42, 0x73, 0xad, 0xea, 0x07, 0x52, 0x2b, 0x04, 0x55, 0x07, 0xf8, 0xeb,
- 0xed, 0xa0, 0x29, 0xd7, 0x7e, 0xc7, 0x67, 0xd6, 0x7a, 0x47, 0x02, 0x0f,
- 0x77, 0x26, 0x6d, 0x31, 0xc2, 0x9e, 0x8e, 0x2a, 0xe8, 0xa7, 0xfd, 0x25,
- 0xec, 0x0d, 0x8c, 0xbd, 0x50, 0xb6, 0xaa, 0x90, 0xb0, 0x3b, 0xdf, 0xdf,
- 0xb5, 0x43, 0x2d, 0xfd, 0xa8, 0xfb, 0x2e, 0x35, 0x6b, 0x34, 0x81, 0x31,
- 0x9b, 0xa6, 0xcb, 0x78, 0xae, 0x69, 0x9d, 0x0f, 0xd5, 0x4e, 0x6a, 0x96,
- 0x9e, 0xa9, 0x4f, 0x88, 0x94, 0xed, 0x66, 0x39, 0xb7, 0x3a, 0x18, 0xb7,
- 0xd5, 0x93, 0xb3, 0xe4, 0x69, 0x6c, 0x1e, 0xce, 0xa7, 0xaa, 0xe9, 0x08,
- 0xdd, 0x47, 0x0e, 0x2f, 0x9e, 0x68, 0x27, 0x25, 0xc1, 0x41, 0x0d, 0xe8,
- 0xa7, 0xdd, 0x17, 0xcf, 0x77, 0xa3, 0x32, 0xbe, 0x07, 0x3e, 0x4a, 0xa9,
- 0xef, 0x3f, 0x1d, 0x3d, 0xd9, 0x7e, 0x3a, 0x7a, 0x1a, 0xf9, 0xd2, 0xb2,
- 0x93, 0xc4, 0xda, 0x27, 0xc6, 0xd9, 0x42, 0xc5, 0x90, 0xf3, 0xf4, 0xee,
- 0xe8, 0x90, 0x59, 0xb5, 0xa5, 0xf8, 0x36, 0xd4, 0x3b, 0x03, 0x65, 0xa2,
- 0x55, 0x1b, 0xb9, 0xac, 0xe0, 0x2e, 0xa5, 0xb4, 0x63, 0x39, 0x22, 0xa3,
- 0x4d, 0x84, 0xe8, 0x67, 0x6e, 0x24, 0xcc, 0x2c, 0x85, 0x4c, 0x75, 0x65,
- 0xba, 0x20, 0x40, 0xc2, 0x35, 0x09, 0x56, 0x6c, 0xf4, 0x70, 0x35, 0xa0,
- 0xb2, 0x22, 0x3d, 0xb5, 0xe8, 0x8e, 0x12, 0x3a, 0x57, 0x63, 0x24, 0x5c,
- 0x81, 0x5c, 0xed, 0x5a, 0xfc, 0xcc, 0xfa, 0x8a, 0xc5, 0xcf, 0xd7, 0x52,
- 0x2a, 0x2c, 0xf8, 0xa5, 0xab, 0xd2, 0x65, 0x2d, 0x9b, 0x41, 0xeb, 0xfb,
- 0xa0, 0x38, 0x70, 0x7f, 0xd8, 0xb7, 0x4b, 0xca, 0x62, 0x67, 0xb8, 0xb7,
- 0x4a, 0x2c, 0xa6, 0xcd, 0x9a, 0x10, 0xff, 0x70, 0xb9, 0xb5, 0xe2, 0xdb,
- 0xa0, 0x4a, 0xe6, 0x59, 0x52, 0x69, 0xb9, 0xc9, 0xe8, 0xe5, 0xe9, 0xd9,
- 0xc5, 0xab, 0xdb, 0x78, 0xde, 0x8a, 0xf1, 0x60, 0x14, 0x45, 0x2b, 0xcd,
- 0xe9, 0xac, 0xb9, 0xfc, 0x66, 0x90, 0x1c, 0x35, 0x76, 0x39, 0x42, 0xf6,
- 0x64, 0x17, 0xac, 0xd2, 0xc5, 0xc5, 0x9f, 0xcf, 0x8e, 0x5e, 0xbd, 0x64,
- 0x5b, 0xf0, 0x17, 0x6c, 0x90, 0x2f, 0x6b, 0xa6, 0x61, 0x2e, 0x03, 0xdd,
- 0xbe, 0x19, 0x7f, 0x78, 0x7d, 0x3c, 0x3e, 0x3b, 0x39, 0x3d, 0x7c, 0xf5,
- 0xf2, 0x07, 0x76, 0x61, 0xd2, 0xea, 0xdd, 0x07, 0xef, 0xba, 0xcf, 0x5c,
- 0xba, 0x43, 0xbb, 0xf8, 0xdd, 0xd1, 0xf7, 0x1f, 0x8e, 0xde, 0x7d, 0xf7,
- 0xea, 0xe5, 0x6d, 0x5c, 0x0c, 0x78, 0x7e, 0xf2, 0x36, 0x9b, 0x64, 0x3b,
- 0xea, 0x22, 0x07, 0x6b, 0x74, 0x81, 0x6a, 0x88, 0x4b, 0x8e, 0x1d, 0x7c,
- 0x20, 0xac, 0x4c, 0xee, 0x32, 0x5f, 0x6f, 0xae, 0x29, 0xe0, 0x07, 0x51,
- 0x6c, 0xf5, 0x94, 0xd6, 0xf7, 0xe7, 0x27, 0xa3, 0x4e, 0x82, 0x71, 0x15,
- 0x19, 0x7c, 0x3d, 0x0e, 0xb5, 0x0d, 0xf9, 0x56, 0x51, 0xfc, 0xc2, 0xd7,
- 0x9d, 0x56, 0xc8, 0xd0, 0x07, 0x63, 0xe8, 0x84, 0x75, 0xf9, 0x70, 0x5a,
- 0x57, 0x0a, 0x52, 0x82, 0x68, 0x68, 0x06, 0x29, 0x30, 0x0b, 0xb6, 0x2d,
- 0x32, 0x65, 0xde, 0x36, 0x79, 0xf9, 0xd8, 0x77, 0xf8, 0xde, 0x21, 0xd4,
- 0x70, 0x04, 0x08, 0xe6, 0x76, 0x28, 0x40, 0xc5, 0x92, 0xa0, 0x52, 0x9f,
- 0x84, 0x30, 0xe2, 0xbc, 0x58, 0x0b, 0xe6, 0xce, 0x60, 0xe6, 0x37, 0x6e,
- 0x5c, 0x85, 0xd0, 0x6f, 0x3d, 0xf9, 0xc1, 0x52, 0xd3, 0x82, 0x42, 0x22,
- 0x1d, 0xe9, 0x71, 0x75, 0x7c, 0x53, 0xf1, 0x44, 0xb2, 0x4c, 0xc9, 0xb9,
- 0x7b, 0x9c, 0x7e, 0xe9, 0x22, 0x87, 0x65, 0x63, 0x3d, 0x3a, 0x76, 0xdb,
- 0x97, 0x89, 0x9a, 0xec, 0xee, 0xcc, 0xd9, 0x61, 0xcb, 0x1d, 0x2c, 0xf8,
- 0xe6, 0x78, 0xcb, 0xa5, 0x3b, 0x72, 0x8b, 0x67, 0xef, 0x2f, 0x82, 0x4c,
- 0xd7, 0x56, 0xb4, 0x5a, 0xeb, 0x10, 0x36, 0x04, 0x65, 0xbf, 0x50, 0xbd,
- 0x61, 0xaf, 0x59, 0x57, 0xc6, 0x4c, 0xfd, 0xc4, 0x18, 0xb8, 0xb2, 0xb8,
- 0xc7, 0x2e, 0x68, 0x89, 0x7e, 0x1a, 0x47, 0x2c, 0xb9, 0x5e, 0x74, 0xbd,
- 0x68, 0x20, 0x52, 0xe2, 0xea, 0x9f, 0x04, 0xfd, 0x8c, 0xc2, 0x7e, 0xc4,
- 0xf1, 0xb6, 0xd5, 0x4a, 0xea, 0xbb, 0x6f, 0x46, 0xea, 0xbb, 0xbe, 0x79,
- 0x9c, 0x0e, 0x52, 0x4e, 0x46, 0x06, 0x9b, 0x37, 0xbb, 0x15, 0x26, 0x44,
- 0x79, 0x1d, 0x35, 0x54, 0x24, 0x6b, 0x0d, 0xc8, 0xe7, 0x28, 0xf3, 0x8d,
- 0xec, 0x74, 0x04, 0x7d, 0x19, 0xa4, 0xb5, 0xd5, 0xa4, 0x56, 0x9f, 0xa2,
- 0x35, 0x5b, 0x76, 0x82, 0x36, 0xc9, 0x26, 0x76, 0x2c, 0xea, 0x9f, 0x1b,
- 0x02, 0x32, 0xb3, 0xc2, 0xe1, 0x85, 0x8f, 0xda, 0xe3, 0xa0, 0xbb, 0xce,
- 0x00, 0x2c, 0x94, 0xd7, 0x1b, 0x5e, 0xb4, 0xf0, 0xe0, 0xf8, 0x05, 0x0e,
- 0x59, 0x0b, 0x42, 0xd9, 0x11, 0x21, 0xca, 0xfb, 0x22, 0x94, 0xa4, 0x19,
- 0x37, 0x10, 0x2a, 0x46, 0x1a, 0x40, 0xcb, 0xfe, 0x90, 0x35, 0x79, 0xcd,
- 0x65, 0xd4, 0xbb, 0x9a, 0xe7, 0x93, 0x09, 0x4d, 0xaa, 0xe7, 0x2a, 0x71,
- 0x5c, 0x10, 0xdb, 0xbc, 0x82, 0xc8, 0x3b, 0x30, 0xb4, 0x40, 0x7f, 0x58,
- 0x51, 0xc1, 0x0a, 0x7d, 0xad, 0xcb, 0xcd, 0xc5, 0xde, 0x1a, 0xb2, 0xbc,
- 0xed, 0x2b, 0x2a, 0x4c, 0xdd, 0x07, 0xe5, 0x2f, 0x11, 0x8b, 0xc5, 0x9f,
- 0x5a, 0xff, 0xad, 0x30, 0x5e, 0xce, 0x25, 0xf5, 0x59, 0x9f, 0xca, 0x7c,
- 0xc0, 0x72, 0xb4, 0xb2, 0x50, 0xda, 0x91, 0xe7, 0xc9, 0x13, 0xa6, 0x09,
- 0xf4, 0xfe, 0x83, 0x07, 0xb1, 0x3b, 0xe0, 0x7f, 0xf7, 0xfe, 0xde, 0xb3,
- 0xfa, 0x51, 0x5c, 0xb1, 0x4f, 0x06, 0x5f, 0x71, 0xc9, 0x9e, 0xd2, 0x8a,
- 0x56, 0x75, 0xd4, 0xa8, 0x62, 0xb7, 0xe1, 0xda, 0xd6, 0xd3, 0xc5, 0xd5,
- 0x8f, 0xbb, 0xc3, 0xdd, 0x9d, 0x9d, 0x9d, 0x9f, 0x47, 0x4b, 0x5e, 0xba,
- 0x4b, 0x34, 0x4f, 0xff, 0x8e, 0x96, 0xe9, 0x94, 0x0d, 0xf9, 0xb4, 0x99,
- 0x69, 0xcc, 0x4d, 0x6f, 0x4b, 0x7f, 0xdb, 0xc1, 0xcd, 0x5f, 0x4d, 0x97,
- 0xc3, 0x2c, 0xef, 0x0a, 0x91, 0xb9, 0x58, 0x15, 0x59, 0x50, 0x7c, 0xf5,
- 0xc3, 0xbb, 0xd3, 0xd7, 0x47, 0x27, 0x07, 0x7f, 0xb6, 0x10, 0x5b, 0x07,
- 0x9b, 0xc0, 0x03, 0xf9, 0x90, 0xc4, 0xe5, 0xfd, 0x87, 0x32, 0xa9, 0xe8,
- 0xcb, 0xcd, 0x27, 0x5b, 0xc8, 0x7c, 0x6d, 0xd5, 0xdf, 0xbe, 0x12, 0xb1,
- 0xdd, 0x70, 0x14, 0x34, 0x62, 0xc9, 0xdf, 0xde, 0xa3, 0xa6, 0xeb, 0xa9,
- 0x16, 0xf8, 0x5a, 0xb1, 0x37, 0x64, 0x32, 0xbf, 0x29, 0xd3, 0xbf, 0xd1,
- 0xbd, 0xc3, 0xd8, 0x8a, 0xed, 0x78, 0xe6, 0x0b, 0x45, 0x50, 0xa8, 0x22,
- 0xfe, 0x2d, 0xfa, 0xea, 0xe4, 0x5b, 0x0e, 0x23, 0x77, 0x4a, 0xcd, 0x42,
- 0x52, 0xf6, 0xa3, 0x2f, 0x9e, 0xed, 0xee, 0x6d, 0xb9, 0x82, 0x22, 0x92,
- 0x8c, 0xc2, 0x87, 0xb3, 0xe5, 0x56, 0xff, 0x5b, 0x12, 0x54, 0x76, 0x10,
- 0xae, 0xec, 0x7d, 0x8c, 0x52, 0xa4, 0x5d, 0x6f, 0x39, 0x80, 0xfe, 0xc1,
- 0x17, 0x5c, 0x01, 0x66, 0x91, 0x13, 0x45, 0x5a, 0x60, 0x45, 0x17, 0x3e,
- 0x2b, 0x68, 0x14, 0x14, 0x6b, 0x8d, 0x68, 0x38, 0x9a, 0x5f, 0xd2, 0x2d,
- 0x9b, 0xfc, 0xa3, 0x65, 0x9d, 0x47, 0x3d, 0x55, 0xb4, 0xda, 0xf3, 0x92,
- 0xbd, 0xc4, 0x2c, 0x7f, 0x44, 0x2f, 0xed, 0xb7, 0x2f, 0xda, 0x91, 0x75,
- 0x11, 0x3b, 0x65, 0xda, 0xa8, 0x41, 0x90, 0x5b, 0x22, 0xbe, 0xff, 0x38,
- 0xa6, 0xd1, 0x17, 0x9a, 0x0a, 0xf3, 0x0d, 0xda, 0xe1, 0x9f, 0x6e, 0x5e,
- 0xbd, 0xf1, 0xf9, 0x59, 0x6f, 0xa0, 0x7a, 0x0a, 0x75, 0x30, 0xa4, 0xbf,
- 0x69, 0xbc, 0x10, 0xe1, 0x9f, 0xed, 0x3c, 0x7b, 0xba, 0xa5, 0x46, 0x0f,
- 0x8c, 0x53, 0x0a, 0xfc, 0xb4, 0x6b, 0x2e, 0xe0, 0x4b, 0x57, 0x2c, 0x59,
- 0xb0, 0x2f, 0x7c, 0xa2, 0x1d, 0x91, 0x5e, 0x7d, 0x96, 0x62, 0x30, 0xd1,
- 0xaa, 0xd8, 0xeb, 0xa3, 0x22, 0x74, 0xcf, 0x20, 0xf7, 0x61, 0x98, 0xed,
- 0xf2, 0xea, 0x4f, 0x1b, 0x0b, 0xe9, 0xc6, 0xf0, 0xd2, 0x7e, 0xeb, 0x5a,
- 0x48, 0x5f, 0xd6, 0x59, 0x8b, 0xd2, 0x39, 0x5c, 0x25, 0x5e, 0xe1, 0xe6,
- 0x02, 0x2b, 0xd2, 0xd7, 0x7a, 0x6f, 0x8a, 0xf3, 0xbf, 0x87, 0x93, 0x1c,
- 0x39, 0x07, 0xa9, 0x82, 0x09, 0xf9, 0x05, 0xb4, 0x0c, 0x97, 0xb2, 0xa3,
- 0x1e, 0xda, 0xc3, 0xd3, 0xc3, 0xeb, 0x2f, 0xf9, 0xdf, 0xae, 0x69, 0xf1,
- 0xe7, 0x4e, 0x63, 0xff, 0x27, 0x4c, 0x2b, 0x98, 0x97, 0x5b, 0x51, 0x9d,
- 0x5b, 0x4b, 0x75, 0xae, 0x1e, 0xdf, 0xbb, 0xdb, 0xdd, 0xd1, 0x4e, 0xa7,
- 0x93, 0xf3, 0x0d, 0x97, 0xb0, 0xab, 0xa3, 0x68, 0xf1, 0x84, 0x0c, 0x7c,
- 0x97, 0xfd, 0x94, 0x60, 0x10, 0x4e, 0x07, 0x33, 0x68, 0xb0, 0x35, 0x40,
- 0x6f, 0xfc, 0xb2, 0x03, 0x3a, 0xa8, 0xd5, 0x68, 0x79, 0xda, 0x3a, 0x99,
- 0x34, 0xa8, 0xdd, 0x5f, 0x37, 0xa8, 0xdd, 0xdf, 0x74, 0x50, 0x7b, 0xbf,
- 0x6e, 0x50, 0x7b, 0xbf, 0xd5, 0xa0, 0x8a, 0xa1, 0x25, 0x65, 0x74, 0x63,
- 0x44, 0x9f, 0x6b, 0xf8, 0x16, 0xc3, 0x1b, 0x2d, 0x18, 0x51, 0x91, 0xd9,
- 0xe9, 0x85, 0x72, 0xf4, 0xe1, 0x91, 0xbe, 0xeb, 0x43, 0x68, 0x44, 0x60,
- 0x68, 0x47, 0xce, 0xaa, 0xac, 0xe2, 0x42, 0x0e, 0xcb, 0x7a, 0xc9, 0x51,
- 0x71, 0xd6, 0xae, 0x32, 0xeb, 0x44, 0x73, 0xbd, 0x11, 0x38, 0x04, 0x99,
- 0xae, 0x35, 0xcf, 0x69, 0x92, 0x2a, 0x82, 0xed, 0x63, 0x11, 0xda, 0xcf,
- 0xeb, 0x13, 0x66, 0xe8, 0x9c, 0x4e, 0x9d, 0xcc, 0x55, 0xf8, 0x8d, 0x39,
- 0xe0, 0x82, 0xe3, 0x32, 0xe4, 0xe1, 0x68, 0xb6, 0x5a, 0x2c, 0x0d, 0xd6,
- 0x22, 0xcd, 0x34, 0xc8, 0x97, 0xc7, 0x4b, 0x97, 0xf3, 0x55, 0x6e, 0xb7,
- 0xda, 0xa0, 0x65, 0xd8, 0xe1, 0x92, 0x48, 0xf8, 0x36, 0x11, 0x74, 0x53,
- 0x0e, 0xeb, 0x4f, 0x33, 0xa9, 0x6d, 0x26, 0x15, 0x61, 0xf3, 0x00, 0x14,
- 0x4e, 0x45, 0x58, 0x11, 0xc1, 0xdf, 0xb7, 0x5c, 0xe9, 0x2c, 0x36, 0x73,
- 0x54, 0x0a, 0x07, 0x73, 0xa9, 0xc6, 0x82, 0xfc, 0xb9, 0xa0, 0x42, 0xa4,
- 0x55, 0x51, 0x5a, 0x63, 0x07, 0xe8, 0xb6, 0x51, 0x87, 0xf6, 0x69, 0xc4,
- 0xcf, 0x0c, 0x6f, 0x07, 0x52, 0x27, 0x76, 0x92, 0x97, 0x89, 0x24, 0x85,
- 0x60, 0x1d, 0x5a, 0x36, 0xa3, 0x72, 0x9a, 0xa6, 0xbf, 0xa5, 0x93, 0x4c,
- 0x7a, 0x45, 0x37, 0x0f, 0x6f, 0x58, 0x2c, 0xdb, 0x25, 0xbb, 0x15, 0x6e,
- 0x96, 0xdf, 0x2d, 0x89, 0x38, 0x74, 0xfb, 0xf5, 0x7f, 0xd0, 0x86, 0xd1,
- 0xff, 0x73, 0x35, 0x64, 0xce, 0x3a, 0x4c, 0xe7, 0x31, 0x8c, 0x49, 0xba,
- 0x34, 0x82, 0x26, 0x3c, 0x4f, 0x62, 0xce, 0x4c, 0x37, 0x13, 0xf6, 0x75,
- 0xf2, 0x51, 0x94, 0xff, 0xf6, 0x65, 0xaf, 0x80, 0x49, 0xd7, 0x6c, 0x36,
- 0xc3, 0xb3, 0x07, 0xe3, 0xc3, 0xe3, 0xe3, 0x9a, 0x1d, 0x91, 0x17, 0x4f,
- 0x92, 0x3b, 0x10, 0x8a, 0x56, 0x72, 0x9a, 0x0b, 0x87, 0x03, 0x62, 0xb8,
- 0x5d, 0x00, 0x66, 0x82, 0x4c, 0xca, 0x15, 0x9d, 0xe3, 0x32, 0xb5, 0x94,
- 0xda, 0x58, 0x2f, 0xe8, 0x8c, 0xad, 0x03, 0x9c, 0xdb, 0x70, 0xbd, 0x22,
- 0x59, 0xb7, 0xfc, 0x47, 0x13, 0xe4, 0xe8, 0xb7, 0x26, 0xbd, 0x8e, 0xdc,
- 0xc7, 0xb3, 0x42, 0xd3, 0x33, 0x25, 0x6f, 0x41, 0x93, 0x17, 0x19, 0x41,
- 0x87, 0x35, 0x40, 0xa1, 0x40, 0x1a, 0xa1, 0x0d, 0x16, 0xea, 0xa1, 0xe5,
- 0xaf, 0x76, 0x40, 0x8e, 0xaa, 0x19, 0xaa, 0x6c, 0x56, 0x22, 0x6f, 0x70,
- 0xe9, 0x55, 0x96, 0x7e, 0x84, 0x0d, 0x94, 0x84, 0x85, 0x97, 0x9c, 0x7f,
- 0xb8, 0xa6, 0xfe, 0xe0, 0xa1, 0x15, 0xc7, 0x72, 0x38, 0x87, 0xb4, 0x08,
- 0x28, 0x40, 0xa4, 0x35, 0xdc, 0xa5, 0x8d, 0x41, 0xa8, 0x8e, 0x83, 0x61,
- 0x77, 0xd8, 0x1f, 0xb3, 0xa4, 0x62, 0x17, 0x46, 0x5d, 0xe1, 0x78, 0x5a,
- 0x17, 0x81, 0x57, 0x03, 0xab, 0xf5, 0x08, 0xd9, 0x66, 0x7f, 0xad, 0xec,
- 0x16, 0xa4, 0x4f, 0x06, 0x85, 0x1e, 0x39, 0xc1, 0xca, 0xe4, 0x8f, 0xb0,
- 0xae, 0xab, 0xe8, 0xf4, 0x0f, 0x17, 0xee, 0x1e, 0x45, 0xa7, 0x8e, 0x62,
- 0x86, 0xd9, 0x00, 0xc0, 0xa1, 0x55, 0x31, 0xd5, 0xa8, 0x41, 0xfc, 0x3e,
- 0xb4, 0x0c, 0xdc, 0xf5, 0x55, 0xbc, 0x91, 0xca, 0x7b, 0xef, 0x31, 0x1f,
- 0xe5, 0xda, 0x71, 0x43, 0x1c, 0x04, 0x5a, 0xcd, 0x92, 0xb4, 0x95, 0xa5,
- 0xa6, 0xe1, 0xb5, 0xd4, 0x36, 0x99, 0x44, 0x27, 0xd0, 0x65, 0xf7, 0x7c,
- 0x15, 0x67, 0x6e, 0x39, 0x4f, 0x2b, 0xae, 0xc5, 0x17, 0xe5, 0x99, 0x83,
- 0x1f, 0x42, 0x02, 0xca, 0x34, 0x9f, 0x13, 0xbf, 0x69, 0x79, 0x1e, 0x90,
- 0x73, 0x23, 0x67, 0x13, 0x66, 0xe0, 0xc5, 0x32, 0x27, 0x9d, 0x58, 0xc1,
- 0xb0, 0xc5, 0x22, 0x87, 0x37, 0x4d, 0xfb, 0xf6, 0x9d, 0x77, 0x20, 0xc3,
- 0xd6, 0xd4, 0x4a, 0xa4, 0x90, 0xd9, 0x66, 0x4c, 0x63, 0x5a, 0x51, 0x84,
- 0xc5, 0x75, 0x27, 0xd4, 0xc8, 0x25, 0xff, 0x2d, 0x11, 0x79, 0x52, 0xe4,
- 0x65, 0xf4, 0xdd, 0x33, 0xc3, 0x68, 0xfb, 0x3e, 0xcd, 0x66, 0xcc, 0x5e,
- 0xa4, 0x56, 0xbc, 0xb3, 0xce, 0xc8, 0x5a, 0xc3, 0x6f, 0xd0, 0xc9, 0x73,
- 0xcd, 0x8f, 0x6b, 0xaf, 0x2b, 0xb5, 0x8a, 0xfd, 0xae, 0x31, 0x13, 0x20,
- 0x63, 0xd3, 0x20, 0x19, 0x32, 0x28, 0x2f, 0x3a, 0x08, 0x37, 0xa8, 0x32,
- 0x06, 0x60, 0x3c, 0xbe, 0x1b, 0xee, 0xa3, 0x7c, 0x52, 0x49, 0x39, 0x06,
- 0x37, 0xea, 0x8b, 0x94, 0xcf, 0x82, 0xab, 0xca, 0x3b, 0xcb, 0xdb, 0x21,
- 0xed, 0xaa, 0xe7, 0xf8, 0x50, 0xe1, 0x86, 0x2c, 0x7e, 0xcd, 0x90, 0x3b,
- 0xd7, 0x1c, 0x9b, 0xce, 0x06, 0x2f, 0x58, 0xfe, 0x36, 0xd6, 0x44, 0xfb,
- 0xe2, 0xd6, 0x61, 0x60, 0x57, 0x55, 0xf3, 0xfc, 0xce, 0xb4, 0x50, 0x2d,
- 0x94, 0x28, 0xe3, 0x72, 0x5d, 0xa5, 0x56, 0x59, 0x86, 0xd0, 0x71, 0x29,
- 0x0b, 0x36, 0xd0, 0x68, 0xcc, 0x42, 0x7d, 0x06, 0x56, 0x57, 0x49, 0x97,
- 0xb3, 0xe3, 0x4a, 0xe0, 0x04, 0x84, 0x12, 0x86, 0x62, 0xd8, 0x4f, 0xa5,
- 0x2c, 0xdb, 0xa5, 0x87, 0xba, 0x6f, 0x53, 0x74, 0xde, 0x38, 0x2c, 0xe1,
- 0x56, 0x31, 0x01, 0x4a, 0x5e, 0x57, 0xf4, 0x3a, 0xbf, 0xcb, 0x86, 0x27,
- 0x1c, 0x93, 0x1b, 0x9d, 0xe4, 0x57, 0xb4, 0x54, 0xef, 0xa4, 0x26, 0x43,
- 0xd3, 0x8a, 0x79, 0xf6, 0x2e, 0xda, 0x7c, 0xcf, 0x73, 0x3a, 0x73, 0xce,
- 0x32, 0x7e, 0x72, 0x4b, 0x2b, 0xc0, 0x12, 0x63, 0x0c, 0x80, 0xf7, 0x07,
- 0xd1, 0xd1, 0x0f, 0x07, 0x6f, 0xcf, 0x4e, 0x8e, 0x7e, 0x12, 0x75, 0xac,
- 0x35, 0x1d, 0xfe, 0xf8, 0x4b, 0x1b, 0x3a, 0x57, 0x19, 0xd7, 0x9a, 0x26,
- 0x74, 0x5d, 0xcf, 0xef, 0xd7, 0x73, 0x01, 0x39, 0x38, 0x46, 0x7c, 0xe3,
- 0xf1, 0xd9, 0xf1, 0x50, 0xf1, 0x07, 0xe4, 0xfc, 0x2b, 0xa8, 0x1b, 0xce,
- 0xaf, 0x26, 0xe4, 0x7d, 0xdb, 0x8e, 0x42, 0xb6, 0xb3, 0x30, 0xf0, 0xc0,
- 0xc4, 0x03, 0x81, 0xf2, 0xa5, 0x19, 0x74, 0x83, 0x41, 0x57, 0xae, 0x48,
- 0xea, 0xb4, 0x65, 0x0b, 0x42, 0x3d, 0x2e, 0x8f, 0xbc, 0x5d, 0x26, 0xf3,
- 0x44, 0xb1, 0x53, 0xd7, 0x70, 0x50, 0xe0, 0x6e, 0x60, 0x1b, 0xd9, 0x43,
- 0xd1, 0x2a, 0x51, 0xae, 0x1e, 0x8b, 0x89, 0x43, 0x41, 0x54, 0x6f, 0xbe,
- 0xd0, 0x88, 0x70, 0x0d, 0xd5, 0x3b, 0x1d, 0x5b, 0xd8, 0x27, 0x21, 0x66,
- 0x15, 0xed, 0xf7, 0x7e, 0x43, 0x29, 0xef, 0xbd, 0x0b, 0x30, 0xf8, 0xc7,
- 0x5f, 0x24, 0x1a, 0x33, 0xf2, 0xc8, 0x45, 0xf2, 0x20, 0x59, 0xb0, 0x2e,
- 0x60, 0x84, 0xf1, 0x30, 0x65, 0xcc, 0x72, 0xa5, 0xfd, 0xa6, 0x23, 0xc9,
- 0xa1, 0x54, 0xd3, 0x88, 0x40, 0x0e, 0x2d, 0x43, 0x90, 0xc7, 0xb5, 0x40,
- 0xd2, 0x6a, 0x7d, 0xe7, 0x5b, 0x1a, 0xf9, 0x2f, 0xa3, 0x83, 0xc6, 0xbe,
- 0xb7, 0xe3, 0x07, 0x3f, 0x95, 0x0e, 0xde, 0xff, 0xb6, 0x74, 0x80, 0x6a,
- 0xd2, 0x2f, 0xdf, 0x9f, 0x9f, 0xac, 0xdb, 0xf2, 0x18, 0xc6, 0x67, 0x86,
- 0x5c, 0x48, 0xaa, 0xe9, 0x75, 0x3d, 0x41, 0x0d, 0x18, 0xf9, 0x79, 0xc9,
- 0xa1, 0xbb, 0xe0, 0xc9, 0xf7, 0x01, 0x58, 0x48, 0x2b, 0xe5, 0x52, 0x45,
- 0x6e, 0x6d, 0x96, 0x1a, 0xe5, 0x94, 0x70, 0x5c, 0x0d, 0x01, 0x4c, 0xed,
- 0x23, 0xc9, 0xc5, 0x0b, 0xc9, 0xb3, 0xd4, 0xd0, 0x92, 0x1a, 0x9a, 0xa8,
- 0x22, 0x5d, 0x12, 0xa3, 0xb4, 0x44, 0x06, 0xd8, 0xf6, 0xbb, 0xee, 0x5e,
- 0x9e, 0x10, 0xe3, 0x67, 0x88, 0x07, 0x77, 0xe0, 0x52, 0xde, 0x86, 0x39,
- 0x1f, 0x0a, 0xd5, 0x11, 0x34, 0x36, 0x1f, 0xb0, 0x02, 0x3e, 0xd7, 0xbf,
- 0xcb, 0x87, 0xe5, 0xea, 0x6d, 0xdb, 0x9a, 0x86, 0x72, 0x73, 0xe3, 0x85,
- 0xaf, 0x80, 0x05, 0xc8, 0x71, 0x0c, 0xfa, 0xfd, 0x76, 0x15, 0xcf, 0x6f,
- 0x24, 0xf3, 0x9c, 0xb4, 0x80, 0x42, 0x33, 0xea, 0x0d, 0x16, 0x4c, 0x73,
- 0x60, 0x88, 0x53, 0x33, 0xca, 0x6c, 0x17, 0xee, 0xef, 0x64, 0x75, 0x75,
- 0x65, 0x6a, 0x71, 0x99, 0x24, 0x86, 0x85, 0xd1, 0x2f, 0x23, 0xd1, 0xb8,
- 0x68, 0xd5, 0x7a, 0xab, 0x6c, 0xa6, 0xe8, 0xb8, 0xd1, 0x75, 0x9e, 0xcf,
- 0x7a, 0x52, 0xfd, 0x8f, 0x45, 0xe4, 0x36, 0x24, 0x48, 0x11, 0x96, 0x45,
- 0xed, 0x7f, 0xd1, 0xb7, 0xbc, 0xe1, 0x9e, 0xd6, 0x46, 0x66, 0x05, 0xae,
- 0x27, 0x0a, 0x14, 0x91, 0x36, 0x1f, 0x96, 0x41, 0xd4, 0x7f, 0xd9, 0xef,
- 0xcc, 0x4a, 0xaf, 0xbf, 0x23, 0xa6, 0x03, 0x01, 0x12, 0x9b, 0x3a, 0xe7,
- 0x23, 0xed, 0xc3, 0x75, 0x4a, 0x82, 0x6e, 0xa6, 0xbe, 0x28, 0xce, 0xf0,
- 0xd7, 0xf8, 0x8f, 0xa6, 0x18, 0x06, 0x55, 0x32, 0x56, 0xd9, 0xde, 0x0d,
- 0x15, 0x23, 0xed, 0xff, 0x41, 0x47, 0xe0, 0x0a, 0xfe, 0x00, 0xfe, 0xef,
- 0x32, 0xf7, 0x60, 0x5f, 0x2d, 0x2c, 0x36, 0x1e, 0x43, 0xdb, 0xfd, 0xec,
- 0xab, 0x1c, 0x8a, 0x78, 0x22, 0xa5, 0x9f, 0x50, 0x4a, 0x5b, 0x2a, 0xeb,
- 0x5e, 0x5b, 0x99, 0xe6, 0xd4, 0x44, 0x47, 0x21, 0x18, 0xa6, 0x92, 0xb4,
- 0x0d, 0x91, 0x6e, 0x82, 0x96, 0x53, 0xd8, 0x7c, 0xa5, 0x0f, 0x80, 0xe6,
- 0x14, 0x9c, 0x5f, 0x97, 0x03, 0xa8, 0xee, 0xb2, 0xa3, 0x6a, 0x89, 0x31,
- 0x45, 0xf3, 0xb8, 0xfa, 0xb3, 0x27, 0xd9, 0x13, 0x96, 0xf8, 0xc1, 0x9a,
- 0x31, 0x1e, 0x4c, 0x32, 0x68, 0x20, 0xea, 0xc8, 0x18, 0xb4, 0x61, 0xa7,
- 0x05, 0x09, 0xc1, 0xb2, 0x90, 0x9d, 0xe6, 0x54, 0x57, 0xfb, 0x2d, 0x46,
- 0xe2, 0xd7, 0x6a, 0x8e, 0xb5, 0xc6, 0x42, 0xcd, 0xb1, 0xc3, 0x9b, 0x1a,
- 0x66, 0xd0, 0xd5, 0xf1, 0x64, 0x91, 0x34, 0x17, 0xf0, 0xaa, 0x3b, 0x7e,
- 0x10, 0x51, 0x1e, 0x7c, 0x48, 0xa3, 0x97, 0x22, 0xab, 0xac, 0x4f, 0x08,
- 0xb6, 0x60, 0x83, 0xc0, 0x94, 0x10, 0x61, 0xe5, 0x90, 0xd3, 0x66, 0x30,
- 0xce, 0x6c, 0xfa, 0x9a, 0x27, 0xec, 0x3a, 0x83, 0xc3, 0xa4, 0x65, 0xd9,
- 0x85, 0x2d, 0x0f, 0x41, 0x32, 0xd2, 0x4a, 0xa4, 0x42, 0x5e, 0x55, 0x38,
- 0x7f, 0x1f, 0xb3, 0x25, 0x05, 0xa3, 0xd1, 0x80, 0x91, 0x2a, 0xf9, 0xc8,
- 0x4a, 0xfa, 0xc7, 0x96, 0x23, 0x41, 0x51, 0x74, 0x43, 0xce, 0x65, 0xc1,
- 0x0c, 0x5a, 0xf1, 0x59, 0x7b, 0x69, 0x89, 0xa7, 0x88, 0x59, 0x8c, 0x5b,
- 0xe0, 0xe8, 0x15, 0x38, 0x7e, 0xd4, 0x93, 0xf1, 0xb0, 0x67, 0x22, 0x57,
- 0xc9, 0x9f, 0x5b, 0x80, 0xe5, 0x43, 0x81, 0x38, 0x62, 0xc9, 0x11, 0xd5,
- 0xf6, 0xa5, 0x46, 0xe8, 0x46, 0x07, 0x46, 0x27, 0x86, 0xd8, 0xfb, 0xd2,
- 0x0c, 0x28, 0x3d, 0xf3, 0x95, 0xfa, 0x4a, 0xa5, 0x66, 0x6d, 0xa8, 0xc2,
- 0x55, 0xe9, 0x70, 0x2b, 0x89, 0x3b, 0x18, 0x00, 0x14, 0xbc, 0x6b, 0xd4,
- 0xe8, 0xb0, 0xd7, 0x5d, 0x95, 0xc0, 0xad, 0x01, 0x62, 0x0b, 0xc1, 0x5e,
- 0x54, 0x01, 0x31, 0x6b, 0x8f, 0xf4, 0x62, 0xb7, 0x18, 0x97, 0x99, 0xaa,
- 0xd2, 0x6a, 0xd5, 0xf6, 0xd4, 0x28, 0xee, 0x1f, 0x9c, 0x70, 0x60, 0xe2,
- 0xbc, 0x13, 0xde, 0x53, 0x86, 0x83, 0xc4, 0xd6, 0xa1, 0x0a, 0xb1, 0xcd,
- 0x6a, 0x72, 0x9a, 0x38, 0xd0, 0xe5, 0xa6, 0x71, 0xe3, 0x80, 0x65, 0x02,
- 0x3f, 0xba, 0xba, 0xa7, 0x86, 0x1a, 0xf8, 0xfd, 0x7f, 0xd8, 0x97, 0x00,
- 0xba, 0xfc, 0xbb, 0x2d, 0x96, 0x0e, 0x3b, 0x6e, 0x55, 0x16, 0x07, 0x83,
- 0xfb, 0x3d, 0x16, 0x05, 0x30, 0xdd, 0xb2, 0x32, 0xc0, 0xe0, 0xe1, 0xe6,
- 0x7e, 0x3f, 0x72, 0xde, 0x70, 0x6b, 0xc2, 0x6a, 0xcf, 0x77, 0x00, 0xe8,
- 0xca, 0x31, 0xfe, 0x29, 0xe3, 0xaa, 0x78, 0x56, 0x95, 0x5e, 0xa1, 0x2d,
- 0x64, 0x1b, 0x7f, 0x2a, 0xa4, 0x5a, 0x5b, 0x54, 0xc5, 0x13, 0xc1, 0x19,
- 0xd6, 0xcf, 0xdb, 0x56, 0x2f, 0x8e, 0x35, 0xd9, 0xc7, 0x6e, 0xfc, 0x7e,
- 0x28, 0x20, 0xa6, 0x4a, 0xe8, 0x8a, 0x49, 0x6c, 0x9f, 0xc9, 0xb6, 0xdc,
- 0xa5, 0xd9, 0x93, 0xbd, 0x61, 0x20, 0xe9, 0x0c, 0x3a, 0xc3, 0xf5, 0xd8,
- 0x1a, 0x98, 0x4f, 0xa7, 0xf0, 0xb5, 0x4d, 0x85, 0x39, 0xfc, 0x5e, 0x11,
- 0x70, 0x90, 0xe8, 0x25, 0x10, 0x0d, 0x33, 0x93, 0x1b, 0x56, 0x1e, 0x52,
- 0xa6, 0xd3, 0xc5, 0xd5, 0x49, 0x3c, 0xc1, 0xee, 0x38, 0x90, 0xaa, 0xae,
- 0x78, 0x26, 0x3e, 0xa1, 0x34, 0xd0, 0x0f, 0x70, 0xa9, 0x29, 0xdd, 0x1d,
- 0xca, 0x67, 0xc3, 0x0b, 0x7c, 0x66, 0x58, 0x58, 0x9a, 0xad, 0x9c, 0xcc,
- 0x5c, 0x4c, 0xeb, 0xa0, 0x8d, 0x18, 0x14, 0x75, 0x85, 0x02, 0x71, 0x74,
- 0x2c, 0x9d, 0xee, 0xd6, 0x38, 0xed, 0x30, 0x7d, 0x90, 0x62, 0x52, 0xc4,
- 0xad, 0x1f, 0x6e, 0x0d, 0x16, 0x8c, 0x39, 0xc9, 0x34, 0x56, 0x52, 0x42,
- 0x4c, 0x99, 0x8e, 0x8c, 0x2d, 0xd8, 0x4d, 0x31, 0xbe, 0x5a, 0x35, 0xba,
- 0xa3, 0x2e, 0x29, 0x2a, 0x55, 0x50, 0xb5, 0xa0, 0xb2, 0x21, 0xdd, 0x72,
- 0x86, 0xd2, 0x51, 0xe5, 0x73, 0x09, 0x89, 0xe0, 0x96, 0x1f, 0x99, 0x2b,
- 0xa7, 0xa3, 0x0a, 0x6e, 0x6d, 0x50, 0x42, 0xa9, 0x0e, 0xbe, 0x04, 0x36,
- 0x64, 0xd2, 0xd4, 0x23, 0x55, 0xd4, 0xd4, 0x16, 0x12, 0x1d, 0x23, 0x41,
- 0x3c, 0x97, 0x28, 0x27, 0x0c, 0x0f, 0xd8, 0xc3, 0x13, 0xc3, 0x43, 0x35,
- 0xff, 0xdc, 0xc3, 0xcd, 0xb9, 0x71, 0xc8, 0x55, 0x3d, 0x0c, 0x84, 0xb4,
- 0x51, 0x33, 0xb7, 0x6c, 0xb7, 0x15, 0x6a, 0x7c, 0x59, 0x2d, 0x3f, 0x00,
- 0x60, 0xf4, 0x03, 0x00, 0xc7, 0x2e, 0x02, 0x2b, 0x04, 0x3e, 0xc0, 0x72,
- 0x09, 0x26, 0x1c, 0xe9, 0xec, 0xa9, 0x56, 0x16, 0x9a, 0xe7, 0x22, 0x86,
- 0xb5, 0x62, 0x28, 0xdb, 0x2b, 0xd7, 0xa8, 0x93, 0x60, 0xee, 0xa2, 0x46,
- 0x12, 0xd9, 0xd3, 0xd6, 0xc0, 0x38, 0x34, 0xe3, 0x03, 0x90, 0x58, 0x1c,
- 0x85, 0xd0, 0x1d, 0x92, 0x14, 0x0c, 0x55, 0xdf, 0x80, 0x6a, 0x01, 0x9d,
- 0x48, 0x2e, 0xed, 0x2a, 0xb3, 0x90, 0x90, 0x87, 0x07, 0x06, 0x3d, 0x41,
- 0xeb, 0x45, 0x6a, 0x75, 0x1a, 0x8e, 0x98, 0xc2, 0x2e, 0xd2, 0x30, 0x59,
- 0x56, 0x77, 0x01, 0x05, 0xbc, 0x53, 0x8f, 0xcc, 0x13, 0x69, 0x28, 0x7b,
- 0x91, 0xfa, 0x9e, 0xd2, 0xd8, 0xe3, 0x20, 0xca, 0x14, 0x70, 0x4e, 0x30,
- 0x61, 0xd6, 0x09, 0xae, 0xf3, 0xbb, 0x47, 0x0f, 0x97, 0x04, 0xc2, 0xf0,
- 0x55, 0x3e, 0x5a, 0xb3, 0x32, 0x5a, 0xb0, 0xbe, 0xb1, 0x32, 0xf5, 0x05,
- 0xd1, 0x15, 0xf1, 0xc2, 0x5b, 0x47, 0xd8, 0x5c, 0xb4, 0x06, 0x05, 0x27,
- 0x8a, 0x36, 0x1d, 0xb0, 0xaa, 0x54, 0xbe, 0xb1, 0xd8, 0x1d, 0x3d, 0x93,
- 0x5a, 0xee, 0xe6, 0xb1, 0xe6, 0xc0, 0x5b, 0x5a, 0x18, 0x05, 0xed, 0x0d,
- 0x47, 0x34, 0xe0, 0x87, 0x74, 0x19, 0xb0, 0x84, 0xa0, 0xbe, 0xbb, 0xc3,
- 0xed, 0x93, 0xa0, 0x41, 0x26, 0xc9, 0x00, 0xcc, 0x8f, 0x0f, 0xd1, 0x63,
- 0xe3, 0x98, 0x22, 0xfc, 0x21, 0x12, 0x38, 0x8b, 0x20, 0xb5, 0x78, 0x68,
- 0xb2, 0x87, 0xda, 0x94, 0x8e, 0xcf, 0x6e, 0x9f, 0xb6, 0x4d, 0x48, 0x8d,
- 0xff, 0xe8, 0xa1, 0xe7, 0xf5, 0xc3, 0xf5, 0xa2, 0x23, 0x0d, 0x49, 0xa6,
- 0x24, 0x90, 0x62, 0x3a, 0x25, 0x19, 0x7e, 0x98, 0x1e, 0xa2, 0x3e, 0x11,
- 0xf0, 0x81, 0xc6, 0x30, 0x1f, 0x1e, 0x43, 0x30, 0x87, 0x47, 0x47, 0x42,
- 0x7d, 0x19, 0xc9, 0x70, 0xfd, 0xd4, 0x77, 0x0a, 0xd5, 0x45, 0x7d, 0xd3,
- 0x6d, 0x1b, 0xb9, 0x6f, 0x80, 0x9a, 0xa1, 0x57, 0x9e, 0x0c, 0xa5, 0x5b,
- 0x4a, 0x8c, 0x3a, 0x84, 0xc6, 0x47, 0x41, 0x28, 0x78, 0x0c, 0x06, 0xa7,
- 0x50, 0xba, 0x31, 0xd0, 0x10, 0xfc, 0x87, 0x8a, 0xc0, 0x89, 0xc8, 0x77,
- 0xa9, 0xe3, 0x9b, 0x78, 0xea, 0xfd, 0x75, 0x84, 0xd6, 0x1e, 0x87, 0x75,
- 0xf7, 0x01, 0x54, 0xac, 0xa6, 0x53, 0xc3, 0x7a, 0x72, 0x38, 0x22, 0xb1,
- 0xae, 0x86, 0xd9, 0x3f, 0x87, 0x62, 0x15, 0xc8, 0xe7, 0x8f, 0xac, 0x05,
- 0x07, 0x0e, 0xba, 0x09, 0x69, 0xb6, 0x8c, 0x5d, 0xd9, 0x0a, 0x5c, 0xc1,
- 0xa0, 0x0b, 0xe0, 0x14, 0x53, 0x4e, 0xbd, 0x79, 0xb8, 0x39, 0x56, 0xde,
- 0xc3, 0x12, 0x85, 0x2e, 0x9d, 0x00, 0x58, 0x25, 0x62, 0xce, 0xa1, 0xfb,
- 0xd0, 0xcf, 0xfa, 0x53, 0x18, 0x55, 0xc7, 0x92, 0x30, 0x83, 0x76, 0x87,
- 0xef, 0xc2, 0xf3, 0xec, 0xfa, 0x11, 0xfc, 0x6f, 0x13, 0xea, 0x9a, 0xc3,
- 0xd6, 0x38, 0x4f, 0x8f, 0xcd, 0xa1, 0x93, 0xc4, 0x75, 0x0e, 0x76, 0xda,
- 0x82, 0x39, 0xac, 0x3b, 0x6d, 0xbf, 0xd5, 0x61, 0xe3, 0x68, 0xb5, 0x0f,
- 0x86, 0xec, 0x2a, 0x23, 0x11, 0xd0, 0x29, 0x8f, 0xd3, 0x24, 0x31, 0x66,
- 0xc2, 0xa7, 0x99, 0xda, 0xed, 0xe9, 0x8e, 0xd8, 0x30, 0xb4, 0xa6, 0xa6,
- 0x85, 0xe8, 0xa1, 0xd6, 0xcc, 0xb9, 0xea, 0x9a, 0x82, 0xf2, 0xfe, 0x08,
- 0xb9, 0x72, 0x8d, 0x8d, 0xce, 0x1e, 0xed, 0x20, 0x7c, 0xda, 0xf8, 0xa5,
- 0x88, 0xcf, 0x27, 0x1d, 0xd4, 0xf0, 0x98, 0x75, 0x77, 0xad, 0x31, 0xab,
- 0x9f, 0xd8, 0xf5, 0xda, 0x30, 0x5b, 0x92, 0xe4, 0x93, 0x99, 0xdf, 0x07,
- 0x6e, 0x2b, 0x66, 0x83, 0x61, 0x00, 0xbb, 0x2b, 0xcf, 0x04, 0x82, 0x26,
- 0xc9, 0x8a, 0xe5, 0xaa, 0x10, 0x48, 0xb0, 0xc7, 0xef, 0x68, 0xd3, 0xa5,
- 0x5d, 0x7b, 0x1c, 0x4b, 0xc8, 0xa3, 0x5b, 0x32, 0x3a, 0x22, 0xc0, 0x9a,
- 0xd6, 0x8c, 0xca, 0x4d, 0x31, 0x1c, 0x95, 0x7e, 0xd8, 0x1c, 0x93, 0x1f,
- 0xd4, 0x2f, 0x1c, 0x95, 0xb4, 0xf7, 0x29, 0x63, 0x2a, 0xe7, 0x1f, 0x68,
- 0x0c, 0xe9, 0xe5, 0x3d, 0x6d, 0x7b, 0x49, 0x82, 0xf8, 0xe3, 0xd2, 0x7a,
- 0x24, 0x0f, 0x1a, 0xd1, 0x31, 0x22, 0x02, 0x0d, 0xbb, 0x88, 0xa6, 0x49,
- 0x51, 0x49, 0x8d, 0x64, 0x80, 0x56, 0xe0, 0xd7, 0x47, 0x48, 0x50, 0x7d,
- 0x14, 0x2a, 0xb2, 0x38, 0x65, 0x64, 0xc4, 0xc0, 0x80, 0x30, 0x72, 0x41,
- 0xc1, 0xd5, 0xb6, 0x3a, 0xf2, 0x76, 0xa2, 0xa6, 0xe9, 0xb5, 0x0c, 0x6a,
- 0x55, 0x8d, 0x1e, 0x00, 0x13, 0x75, 0xfd, 0x93, 0xa2, 0x12, 0x2f, 0x97,
- 0x7a, 0xc4, 0x3f, 0x61, 0xee, 0x02, 0xe6, 0x04, 0x72, 0x57, 0x48, 0x2e,
- 0x05, 0x48, 0xac, 0xf2, 0xfc, 0xc6, 0x97, 0x96, 0x83, 0xd1, 0xee, 0xe1,
- 0xe6, 0x04, 0x8d, 0x4f, 0x57, 0x70, 0x7b, 0x3c, 0xfe, 0x86, 0x61, 0x3a,
- 0x1d, 0xb7, 0xd9, 0xf6, 0x9e, 0x3f, 0x88, 0x5e, 0x9f, 0x70, 0x09, 0xba,
- 0x8a, 0x94, 0x58, 0x07, 0x67, 0xec, 0xf9, 0xd4, 0x65, 0xa8, 0x8b, 0x95,
- 0xbf, 0xc9, 0x44, 0x2f, 0x0e, 0xcf, 0x22, 0xd7, 0x8d, 0xce, 0xaa, 0x5e,
- 0x64, 0x95, 0x51, 0xad, 0x1f, 0xa1, 0x73, 0x15, 0x48, 0xeb, 0x73, 0xec,
- 0x9c, 0x11, 0xab, 0x43, 0x6c, 0x72, 0x5c, 0x2d, 0xff, 0x1f, 0xda, 0x58,
- 0xe8, 0x63, 0x92, 0x48, 0x0c, 0x03, 0xee, 0xe3, 0x43, 0xe6, 0x92, 0x4d,
- 0xdd, 0x25, 0xcc, 0x3a, 0xc6, 0x2c, 0x43, 0x96, 0x1c, 0xba, 0xe6, 0x80,
- 0xb5, 0x32, 0x82, 0x24, 0xfd, 0x7c, 0xea, 0x98, 0x7d, 0x1e, 0x86, 0x03,
- 0x8a, 0xe3, 0x31, 0x4b, 0xe1, 0x39, 0x83, 0xb6, 0x9c, 0x24, 0xa4, 0xff,
- 0x7d, 0x8a, 0x16, 0xae, 0x06, 0x61, 0x41, 0x76, 0x66, 0x04, 0x04, 0xd7,
- 0xa8, 0x2f, 0x29, 0x46, 0xa2, 0x3c, 0x47, 0x1c, 0x3e, 0xca, 0x26, 0x62,
- 0x4d, 0xf3, 0x42, 0xed, 0x4d, 0x6f, 0x99, 0x9a, 0x9a, 0x9a, 0x89, 0x5a,
- 0x11, 0xd3, 0x15, 0x87, 0x2f, 0x75, 0xe4, 0xe3, 0xb5, 0x54, 0xd3, 0x69,
- 0x3e, 0x17, 0x9f, 0xcc, 0x2d, 0xd0, 0x75, 0xbb, 0xf7, 0xc2, 0xcb, 0x5d,
- 0xdd, 0x8b, 0x9d, 0x56, 0x4a, 0x1b, 0x0a, 0xd0, 0x69, 0xcf, 0x3f, 0xca,
- 0xa6, 0x88, 0xc5, 0x2d, 0xcb, 0x20, 0x32, 0x01, 0x64, 0x22, 0x84, 0x3a,
- 0xb0, 0xf3, 0x81, 0x4a, 0x65, 0x9f, 0x46, 0x0a, 0xb0, 0xc3, 0xd9, 0xd2,
- 0x1a, 0x00, 0xa4, 0x86, 0x7a, 0xb0, 0x77, 0x40, 0xbe, 0x54, 0xd0, 0x69,
- 0xde, 0xd0, 0xc7, 0x46, 0x17, 0x4b, 0xb9, 0xb8, 0xc6, 0x2a, 0x48, 0x58,
- 0x57, 0xed, 0x96, 0x49, 0x3e, 0x26, 0xed, 0xca, 0x1c, 0x9d, 0x2c, 0x3e,
- 0xd5, 0xd8, 0x63, 0x9f, 0x12, 0x12, 0xac, 0x56, 0x10, 0x9c, 0xf4, 0x29,
- 0x52, 0x6c, 0x97, 0x60, 0x8f, 0xa1, 0x62, 0xe4, 0x9f, 0x7e, 0x7c, 0x7e,
- 0x93, 0x23, 0x2f, 0xd1, 0x35, 0x28, 0x1e, 0xd1, 0x75, 0x74, 0xa2, 0x4f,
- 0x55, 0xaa, 0x80, 0x29, 0x66, 0xd6, 0x2c, 0x3b, 0x48, 0x4d, 0x16, 0x21,
- 0x16, 0xcf, 0x36, 0x10, 0x6a, 0x87, 0x64, 0xa0, 0x78, 0xa8, 0x60, 0x07,
- 0x1a, 0x33, 0xc3, 0x30, 0xca, 0x89, 0xd4, 0xa7, 0x22, 0xd1, 0x7c, 0xce,
- 0xa7, 0xa7, 0x4a, 0x3e, 0xe9, 0xa6, 0xe1, 0xeb, 0xbf, 0xfb, 0xcc, 0x88,
- 0xc4, 0xe6, 0x57, 0xd8, 0x01, 0xae, 0xd6, 0x8f, 0x8e, 0x65, 0xe3, 0x49,
- 0x58, 0x25, 0x1c, 0x80, 0x9f, 0x42, 0x46, 0x6c, 0xc2, 0x48, 0xb4, 0x18,
- 0x16, 0x26, 0xe4, 0x70, 0x2a, 0xc5, 0xff, 0x91, 0x68, 0xed, 0xbe, 0x45,
- 0xfa, 0xa8, 0xaa, 0x96, 0x2a, 0xd0, 0x2e, 0xb8, 0xf3, 0xaa, 0xd3, 0xe2,
- 0x8a, 0x8c, 0x1a, 0x33, 0x62, 0xca, 0x84, 0xe0, 0x20, 0x76, 0x26, 0x27,
- 0x76, 0x13, 0x27, 0x52, 0xee, 0xc4, 0xe7, 0xb1, 0x40, 0xbd, 0x60, 0xe1,
- 0xe5, 0x91, 0x11, 0x78, 0xb3, 0x24, 0x3b, 0xc7, 0x90, 0xa9, 0x38, 0x9f,
- 0xf9, 0x68, 0x0c, 0xd5, 0x81, 0x7d, 0xb9, 0xac, 0xfd, 0x87, 0x9b, 0x53,
- 0x67, 0xdd, 0x6f, 0x51, 0xac, 0x21, 0x40, 0x68, 0x78, 0xf9, 0xa3, 0xa5,
- 0xd6, 0xee, 0x6f, 0x6f, 0xff, 0xfc, 0x63, 0x2d, 0x92, 0xe2, 0xcb, 0x9f,
- 0x7f, 0x79, 0x69, 0x68, 0x41, 0x24, 0xea, 0xf4, 0x93, 0x68, 0x68, 0x85,
- 0x3a, 0x9f, 0x5a, 0x3e, 0x22, 0x0d, 0x07, 0x0b, 0x86, 0xe3, 0x4a, 0x3b,
- 0xe6, 0xeb, 0xca, 0x2d, 0xd7, 0xb1, 0xcf, 0x3f, 0xfa, 0x22, 0x8a, 0xa5,
- 0x54, 0xca, 0x76, 0x88, 0x4e, 0x83, 0x28, 0x80, 0xf1, 0x19, 0x74, 0x62,
- 0x58, 0x70, 0x87, 0x1c, 0x49, 0xe8, 0x91, 0x57, 0xe0, 0x2a, 0x12, 0xc5,
- 0x29, 0x98, 0xe4, 0x54, 0xe0, 0x45, 0x5c, 0xa0, 0x7d, 0x17, 0x7a, 0xbb,
- 0xc0, 0xd8, 0xbe, 0xcb, 0x3d, 0xdc, 0x45, 0x00, 0x18, 0xa2, 0x79, 0x6a,
- 0x7a, 0xd4, 0xe7, 0x02, 0x12, 0x5f, 0x7a, 0x5c, 0xbf, 0x16, 0xaa, 0x2f,
- 0x97, 0x32, 0x83, 0xc3, 0xc6, 0x95, 0xb6, 0x16, 0xa0, 0xd0, 0x0b, 0xc9,
- 0x55, 0xd7, 0x0e, 0x14, 0x3e, 0xcf, 0x5b, 0x27, 0xd3, 0xac, 0x2b, 0x7c,
- 0x54, 0x90, 0x3f, 0xba, 0x41, 0x45, 0x1f, 0x86, 0x3a, 0x31, 0x5b, 0x92,
- 0xac, 0xb4, 0x6c, 0xa3, 0xb2, 0xd7, 0x96, 0xcb, 0xc3, 0xe0, 0x50, 0x84,
- 0x45, 0xae, 0x87, 0x3f, 0xe9, 0x80, 0xf5, 0xa1, 0x3b, 0x28, 0x15, 0x7c,
- 0xe0, 0xae, 0xac, 0x69, 0x95, 0x18, 0xca, 0xa4, 0x23, 0xee, 0x4e, 0x47,
- 0x66, 0x79, 0xb9, 0xc7, 0x1a, 0xd8, 0xd6, 0x5f, 0x9b, 0x82, 0x8d, 0x64,
- 0x15, 0x09, 0x1a, 0x68, 0xc5, 0x67, 0x0a, 0xd8, 0x8a, 0x83, 0x3f, 0x91,
- 0x1c, 0x74, 0x69, 0xbd, 0x87, 0x64, 0x54, 0x1b, 0x71, 0x57, 0x36, 0xc1,
- 0x81, 0xf1, 0xc0, 0x86, 0x90, 0xa3, 0xa1, 0x60, 0x9c, 0xdc, 0x8b, 0x70,
- 0xd5, 0x2c, 0xac, 0x56, 0xae, 0x89, 0x70, 0x1d, 0x97, 0x09, 0xc9, 0x42,
- 0x62, 0xdb, 0x90, 0x02, 0x21, 0x8c, 0xab, 0x29, 0x6b, 0xcb, 0x6f, 0x7b,
- 0x60, 0x7d, 0x17, 0x34, 0x4c, 0xdf, 0x23, 0x78, 0xcf, 0x88, 0xa3, 0xbb,
- 0x02, 0xfb, 0x34, 0x1c, 0xa2, 0xf8, 0xf8, 0xb5, 0x90, 0xb3, 0xf3, 0x45,
- 0x79, 0x26, 0x08, 0xa8, 0x5a, 0x96, 0x14, 0xe2, 0x36, 0x60, 0xdf, 0xa5,
- 0x5b, 0xa6, 0x6a, 0x45, 0xa2, 0xce, 0xbc, 0x5d, 0x33, 0x1d, 0xfe, 0x4a,
- 0x61, 0x48, 0x9a, 0xa5, 0x34, 0x5c, 0x1a, 0x0f, 0x6a, 0x4e, 0xf6, 0x5e,
- 0x1b, 0x59, 0xe3, 0x35, 0x7b, 0xaf, 0x61, 0x7c, 0x41, 0xf4, 0x56, 0x2d,
- 0xa8, 0xdc, 0x57, 0x48, 0x6b, 0x53, 0x2b, 0xef, 0xc1, 0x46, 0xdb, 0x24,
- 0x87, 0xaa, 0x24, 0x3e, 0xb8, 0x43, 0x27, 0x5d, 0x07, 0x32, 0xe1, 0xde,
- 0x70, 0xe1, 0xa9, 0x47, 0x51, 0x4b, 0x2a, 0xb5, 0x71, 0x22, 0x0a, 0x28,
- 0xac, 0x28, 0xec, 0xf1, 0xa5, 0xcf, 0x86, 0xfd, 0xfd, 0xd3, 0x1d, 0x66,
- 0x2e, 0xd6, 0x4a, 0x1c, 0x06, 0x4d, 0xfd, 0xfe, 0x49, 0xfc, 0x10, 0xc3,
- 0x84, 0x12, 0xd5, 0xe2, 0x96, 0x52, 0xe0, 0x87, 0x4b, 0xa3, 0xc3, 0xb7,
- 0x70, 0x17, 0x5b, 0xf0, 0xa7, 0xbc, 0xd5, 0x42, 0x3b, 0xed, 0x38, 0x49,
- 0x83, 0x20, 0x7b, 0xa1, 0x0a, 0x59, 0x89, 0xf1, 0xdd, 0x68, 0x53, 0x59,
- 0xd5, 0x56, 0x47, 0x34, 0x0b, 0x06, 0xc0, 0x25, 0x60, 0xe1, 0x4d, 0xe2,
- 0x4d, 0xf9, 0xe3, 0xfa, 0xa0, 0xe6, 0x7f, 0xdc, 0xd5, 0xf5, 0x83, 0x14,
- 0x4a, 0x11, 0xae, 0xbc, 0xb6, 0xec, 0xb7, 0x84, 0xb6, 0x8f, 0x5d, 0x02,
- 0xb5, 0xab, 0x1a, 0x62, 0x6f, 0x6a, 0x42, 0x5c, 0x98, 0x72, 0xca, 0x6d,
- 0xad, 0x32, 0xb6, 0x4a, 0x74, 0xc0, 0x4a, 0x7b, 0xc2, 0xc5, 0x81, 0x75,
- 0x79, 0x52, 0x17, 0xb5, 0xcb, 0xcf, 0x99, 0xd9, 0x3c, 0x44, 0x6b, 0x47,
- 0xfd, 0x0c, 0x0b, 0xa4, 0x0f, 0x3c, 0x1e, 0x32, 0x1a, 0x5f, 0x2d, 0x04,
- 0xab, 0xa3, 0xf5, 0x12, 0xc2, 0xcc, 0xc8, 0xaf, 0x8f, 0x2e, 0xb6, 0xda,
- 0x38, 0xbb, 0x1a, 0xcd, 0x80, 0x91, 0xa1, 0x68, 0x96, 0x9e, 0xef, 0xd8,
- 0x15, 0xa5, 0x71, 0xc9, 0xc1, 0x12, 0x88, 0x94, 0x7c, 0x24, 0xd9, 0x2a,
- 0xeb, 0xc6, 0xcb, 0x3c, 0xa4, 0x65, 0x60, 0x86, 0x1c, 0x04, 0x23, 0x69,
- 0xf4, 0x90, 0x95, 0x43, 0x09, 0xf4, 0x1c, 0x06, 0x22, 0xe0, 0x16, 0x5f,
- 0x1f, 0x9d, 0x1c, 0x5d, 0x1c, 0x21, 0xb9, 0xa4, 0x65, 0xc8, 0x9d, 0xe3,
- 0xf6, 0xaa, 0x92, 0xe9, 0x75, 0x46, 0x34, 0x7f, 0xc5, 0xdb, 0x81, 0xdc,
- 0xee, 0xef, 0x93, 0xc9, 0xeb, 0x83, 0xef, 0xb8, 0xea, 0x1b, 0x9f, 0x99,
- 0xb3, 0xf3, 0xd3, 0xb3, 0x37, 0xc7, 0xef, 0x5e, 0x0f, 0xa2, 0xc3, 0xd3,
- 0xb3, 0x3f, 0x0f, 0xa2, 0xb7, 0xa7, 0xdf, 0x1d, 0x75, 0x44, 0xeb, 0x72,
- 0xfc, 0x59, 0x47, 0xe0, 0x93, 0xd6, 0x56, 0xd1, 0xf2, 0x03, 0x80, 0xa8,
- 0x96, 0x9a, 0x22, 0xf5, 0x80, 0x75, 0x66, 0xcb, 0x25, 0x32, 0xe2, 0x69,
- 0xe9, 0x69, 0x2d, 0x07, 0xd1, 0x37, 0x47, 0x07, 0xaf, 0x9b, 0xe2, 0xc0,
- 0xd9, 0xe9, 0x58, 0x66, 0xc5, 0xb3, 0x73, 0x93, 0x66, 0xf6, 0x4d, 0xcc,
- 0x92, 0xed, 0xdc, 0xac, 0x64, 0xde, 0x24, 0x01, 0x4e, 0x28, 0x1d, 0x01,
- 0x18, 0xc9, 0x66, 0x6b, 0x2b, 0x46, 0x23, 0x06, 0xc2, 0x05, 0xdb, 0x3d,
- 0x7c, 0x13, 0x22, 0xe5, 0xc6, 0x60, 0xf9, 0x85, 0x40, 0xc4, 0xb9, 0xc0,
- 0xee, 0x82, 0x62, 0xa6, 0x38, 0xd0, 0xca, 0xde, 0x78, 0x6b, 0x36, 0x3a,
- 0x9d, 0x27, 0x52, 0x8b, 0xc9, 0x20, 0x86, 0x20, 0x2a, 0x49, 0xf4, 0x43,
- 0xac, 0x31, 0x6c, 0x93, 0x84, 0x23, 0x6c, 0x4a, 0xd4, 0x14, 0x02, 0x91,
- 0x68, 0x14, 0x74, 0x9b, 0xbd, 0xcb, 0xba, 0x4a, 0x24, 0x99, 0x45, 0x39,
- 0x41, 0x52, 0x63, 0x33, 0x24, 0x2f, 0xa1, 0xef, 0x53, 0x83, 0xb3, 0x7e,
- 0x90, 0x8f, 0x3b, 0xc0, 0x29, 0x20, 0x52, 0xac, 0x2e, 0x89, 0x3c, 0x13,
- 0x09, 0x17, 0xc1, 0x3e, 0xe9, 0x41, 0xc4, 0xcd, 0x70, 0xcc, 0x47, 0xfc,
- 0x1a, 0xa9, 0x26, 0xdd, 0x57, 0xc0, 0xe6, 0x9b, 0x35, 0xa7, 0x3b, 0x2c,
- 0x74, 0xa6, 0x2d, 0x06, 0x59, 0x2b, 0x27, 0xc7, 0xb4, 0xaf, 0x7c, 0xd4,
- 0x9b, 0x81, 0x88, 0x08, 0x36, 0x94, 0x12, 0xb5, 0x29, 0x6f, 0x35, 0xce,
- 0x3a, 0xb5, 0xd5, 0xee, 0x98, 0xb1, 0x91, 0x3b, 0x7b, 0xe6, 0x2f, 0x1e,
- 0xeb, 0xba, 0x65, 0x06, 0x3b, 0x3f, 0xba, 0x38, 0x6f, 0x78, 0xf5, 0x9f,
- 0x77, 0xd8, 0xf2, 0x36, 0x19, 0x8a, 0xb9, 0xb3, 0x57, 0xfe, 0x62, 0x5d,
- 0xaf, 0xe0, 0x2e, 0xdc, 0xef, 0x43, 0x69, 0xc7, 0x4f, 0xba, 0x80, 0x94,
- 0x37, 0x05, 0xf3, 0xb9, 0xa3, 0x3f, 0xfe, 0xe2, 0x81, 0x59, 0x7e, 0x73,
- 0x74, 0x72, 0xd6, 0x9e, 0xe5, 0x77, 0xe7, 0x6f, 0xfe, 0x3c, 0x7a, 0x20,
- 0xa1, 0xf4, 0x1f, 0x1f, 0x16, 0xfc, 0x31, 0xae, 0xaa, 0x4e, 0x04, 0xf5,
- 0x32, 0x86, 0xd5, 0xce, 0x60, 0xe6, 0x2d, 0x12, 0xa4, 0x0e, 0x83, 0x27,
- 0xc8, 0xca, 0x81, 0xde, 0x46, 0x53, 0x6f, 0x89, 0x0d, 0x4e, 0xc4, 0xd2,
- 0x12, 0xd9, 0xc4, 0x5e, 0x25, 0xf1, 0x94, 0x3e, 0x73, 0x75, 0xf7, 0xf0,
- 0x1d, 0x8f, 0x25, 0x9d, 0x70, 0x45, 0x96, 0x51, 0x90, 0xb7, 0xdf, 0x21,
- 0xbc, 0x6a, 0x64, 0x2f, 0x7a, 0x73, 0xc7, 0xfb, 0xe3, 0xec, 0x6a, 0x94,
- 0x17, 0x29, 0xdb, 0xe7, 0xb4, 0x4e, 0x9e, 0x34, 0x16, 0xa1, 0x1a, 0x2c,
- 0x9f, 0x5a, 0x66, 0x00, 0x5d, 0xcd, 0x59, 0xc8, 0x90, 0x80, 0x06, 0x44,
- 0xed, 0xa6, 0x17, 0xd0, 0xee, 0xf9, 0x3b, 0xd7, 0xaa, 0xc9, 0xcc, 0x5d,
- 0x91, 0x75, 0xe5, 0x3d, 0xed, 0xf3, 0xc2, 0x33, 0x14, 0xd3, 0x37, 0xdc,
- 0x6c, 0xfd, 0x44, 0x39, 0xa2, 0x8b, 0xb8, 0x45, 0x01, 0x50, 0x91, 0xb6,
- 0x6e, 0x90, 0x92, 0x6e, 0x50, 0xdb, 0xb0, 0x7b, 0x04, 0x51, 0xb2, 0xa3,
- 0x44, 0x4b, 0x63, 0xf0, 0xbf, 0x9d, 0xc5, 0x90, 0x9c, 0xab, 0x87, 0x67,
- 0xc3, 0x0e, 0x65, 0x2d, 0xed, 0x20, 0x2f, 0x4b, 0x15, 0x87, 0x49, 0xc3,
- 0x41, 0xa2, 0xa1, 0xc9, 0x2d, 0xd4, 0x88, 0xa0, 0x43, 0x01, 0xa4, 0x19,
- 0xd4, 0x3c, 0x6e, 0x5c, 0x09, 0x10, 0x60, 0x1a, 0x62, 0x3a, 0xa3, 0xee,
- 0x83, 0x17, 0x5a, 0x73, 0xb2, 0xd2, 0x86, 0x01, 0xac, 0x5e, 0x30, 0x24,
- 0x23, 0xd4, 0x5d, 0x2b, 0x46, 0xc0, 0xea, 0x84, 0x80, 0x25, 0xfe, 0xf9,
- 0xb1, 0x92, 0x54, 0x12, 0x10, 0x5e, 0x07, 0x7e, 0x12, 0xf9, 0x6b, 0xa5,
- 0xb8, 0x16, 0x60, 0xef, 0xb0, 0x6a, 0x60, 0x4d, 0x36, 0x3a, 0x7d, 0x9d,
- 0x65, 0x94, 0x54, 0xd3, 0x1a, 0xc6, 0x10, 0x62, 0xd7, 0x89, 0x8e, 0x45,
- 0x42, 0x20, 0x0e, 0x3f, 0x88, 0xa4, 0xe8, 0x88, 0xc4, 0x43, 0xe9, 0x7b,
- 0xc3, 0x0e, 0x9b, 0x10, 0xdb, 0xbe, 0xd6, 0xb0, 0xe6, 0x7f, 0xdc, 0x29,
- 0xfe, 0xb3, 0x27, 0x0a, 0x59, 0xc4, 0x97, 0xf8, 0xe3, 0x17, 0x91, 0x45,
- 0x50, 0xf1, 0x43, 0xfc, 0x70, 0x9b, 0x44, 0xfb, 0x35, 0xfa, 0x18, 0xb6,
- 0xf2, 0x5d, 0x67, 0x5b, 0x92, 0x50, 0xe8, 0x37, 0x5b, 0x6d, 0x5c, 0x7c,
- 0x9d, 0xd6, 0x69, 0x22, 0x78, 0x06, 0xe9, 0x04, 0x6d, 0xa5, 0x54, 0xf6,
- 0x58, 0x92, 0x3d, 0x52, 0x2e, 0x78, 0xcb, 0xb7, 0x29, 0x4e, 0x4f, 0xf2,
- 0x5b, 0x62, 0xae, 0xfd, 0x0d, 0x98, 0x6b, 0x5c, 0x37, 0x13, 0x07, 0xe0,
- 0xe5, 0x2c, 0x86, 0x69, 0x17, 0x59, 0xf2, 0xd4, 0xf4, 0x17, 0xff, 0xd9,
- 0x5d, 0xb6, 0xd2, 0xea, 0x39, 0x2b, 0xde, 0xbf, 0xa4, 0xf0, 0x8b, 0xf3,
- 0x80, 0x55, 0x2c, 0x2e, 0x2a, 0x84, 0x8a, 0x80, 0x8b, 0x7c, 0xa6, 0x88,
- 0x63, 0x71, 0xe5, 0x97, 0x3a, 0xe9, 0x84, 0x87, 0x92, 0xa2, 0x41, 0x7c,
- 0x0a, 0x91, 0xdb, 0x44, 0x2b, 0xcb, 0xe3, 0x5e, 0xd3, 0x5e, 0x60, 0xeb,
- 0x6e, 0xe1, 0xa8, 0x6a, 0x75, 0x15, 0x16, 0xb8, 0x5b, 0xf3, 0x31, 0xf5,
- 0x28, 0x0e, 0xe5, 0x3b, 0x3c, 0x24, 0x7a, 0x5f, 0xd9, 0xbe, 0x95, 0x50,
- 0x16, 0xc3, 0x85, 0xa0, 0x0b, 0x00, 0x23, 0x87, 0x36, 0xbb, 0x7a, 0x95,
- 0x34, 0xcc, 0xd2, 0x70, 0xf3, 0x38, 0x3c, 0x03, 0x78, 0xf8, 0xb1, 0x8b,
- 0x67, 0xec, 0x8a, 0xef, 0x0f, 0x8a, 0xb0, 0x5d, 0x25, 0x95, 0x8b, 0x66,
- 0x9a, 0x79, 0x59, 0x5c, 0x06, 0xb5, 0xb9, 0xe0, 0xc9, 0x6c, 0x89, 0x3d,
- 0xba, 0x73, 0x2b, 0x1c, 0xce, 0x5f, 0x0d, 0x0c, 0x88, 0x1a, 0xe5, 0xf7,
- 0x19, 0x08, 0x88, 0x6e, 0x60, 0x20, 0xff, 0x68, 0x19, 0x3c, 0x34, 0x1b,
- 0xac, 0x48, 0x2b, 0xd5, 0xa2, 0xaa, 0x57, 0xfc, 0xb0, 0x3c, 0x19, 0xb6,
- 0x83, 0x5b, 0xb9, 0x95, 0x70, 0x45, 0xcd, 0x18, 0xc7, 0x88, 0x60, 0xd1,
- 0xe6, 0x70, 0xcb, 0x49, 0x7d, 0x28, 0x35, 0x26, 0xa4, 0xd1, 0x76, 0x5f,
- 0xc7, 0x2e, 0xe4, 0xd4, 0xe5, 0x47, 0x08, 0x50, 0xbf, 0x51, 0x88, 0xd2,
- 0x04, 0x77, 0xb6, 0x2d, 0x26, 0x64, 0xe3, 0x96, 0x69, 0x47, 0x7c, 0x78,
- 0xab, 0xb1, 0x2c, 0xb9, 0x0b, 0x1b, 0xf3, 0x7a, 0x97, 0x6b, 0xf0, 0x37,
- 0x3c, 0x53, 0xd7, 0x22, 0x95, 0xce, 0x97, 0x2d, 0x7b, 0x04, 0x7b, 0xfb,
- 0x23, 0xfe, 0xc6, 0xcc, 0xfb, 0x22, 0x45, 0xc6, 0x12, 0x71, 0x8e, 0xe2,
- 0x83, 0x21, 0xf2, 0x97, 0xc3, 0x2d, 0xec, 0x04, 0xe3, 0x28, 0xaf, 0xf9,
- 0x52, 0x75, 0x60, 0x02, 0xb5, 0x2a, 0x11, 0x6f, 0x07, 0xa8, 0x34, 0x94,
- 0xb5, 0xe3, 0x8c, 0xde, 0xe2, 0xc3, 0x51, 0xf4, 0x5a, 0xb3, 0x06, 0x90,
- 0xd5, 0xbf, 0xba, 0x4a, 0x30, 0x2c, 0x84, 0x91, 0x07, 0xcd, 0x7c, 0xa7,
- 0x29, 0x3e, 0x1d, 0x84, 0xa2, 0xef, 0x97, 0xb5, 0xb4, 0x03, 0x71, 0x76,
- 0x08, 0xcc, 0x58, 0x66, 0xb5, 0x9a, 0x26, 0xf8, 0xdb, 0x6c, 0xa0, 0x29,
- 0xa2, 0x5e, 0xcb, 0x51, 0x87, 0x15, 0x43, 0xdc, 0x27, 0x98, 0xb8, 0xf7,
- 0x7a, 0x98, 0x9f, 0xc0, 0xde, 0x67, 0x59, 0x55, 0xf2, 0x71, 0x5c, 0xd3,
- 0x5d, 0x60, 0x04, 0xd0, 0xbe, 0x9e, 0x14, 0x33, 0x38, 0x07, 0xef, 0xf9,
- 0xd1, 0x22, 0x2e, 0x44, 0xa1, 0xcc, 0x6e, 0xcc, 0x84, 0x2c, 0x96, 0x91,
- 0x64, 0xba, 0xaa, 0xea, 0x28, 0x8b, 0xa1, 0x65, 0xc5, 0x6a, 0xf2, 0x61,
- 0x58, 0x9b, 0x70, 0x07, 0xe9, 0x7e, 0xf4, 0xce, 0xcc, 0x82, 0xbc, 0xdf,
- 0xdb, 0x52, 0x0f, 0x99, 0x78, 0x3b, 0xf5, 0xe3, 0x2e, 0x44, 0x03, 0x1b,
- 0x73, 0x91, 0x08, 0xde, 0x1a, 0xf2, 0x88, 0x21, 0x1e, 0x75, 0x76, 0x4f,
- 0x14, 0x59, 0xcc, 0xba, 0xfa, 0x7e, 0x23, 0xa5, 0xac, 0x83, 0xae, 0x9d,
- 0xa9, 0x4e, 0xab, 0x5c, 0x97, 0xad, 0x1c, 0x8a, 0x56, 0xcf, 0x50, 0xa8,
- 0x49, 0xd7, 0x75, 0xf1, 0xe4, 0xf6, 0xaa, 0xad, 0x7f, 0x2b, 0xb8, 0x1c,
- 0xf1, 0x5a, 0x1e, 0xc9, 0x8e, 0xa5, 0x7a, 0x7c, 0xe4, 0x52, 0xfa, 0x5a,
- 0xb3, 0xb8, 0x29, 0x26, 0x4f, 0xe9, 0xc7, 0xb7, 0xfc, 0x83, 0x19, 0x10,
- 0x2b, 0x5e, 0x02, 0x1f, 0x2d, 0x08, 0x54, 0x6d, 0x4e, 0xc3, 0x95, 0x3a,
- 0xf4, 0x87, 0x6e, 0x7a, 0x69, 0xf9, 0x23, 0x9c, 0x7d, 0xe3, 0x6b, 0x8f,
- 0xc0, 0x17, 0x6c, 0xed, 0x0c, 0xcc, 0x96, 0xb6, 0xb1, 0x36, 0xfa, 0x68,
- 0x3c, 0x00, 0x4a, 0xb2, 0x14, 0x2e, 0x1a, 0x4b, 0x2e, 0x19, 0x2d, 0x42,
- 0x5b, 0x34, 0xa1, 0xa5, 0xfa, 0x1b, 0x9b, 0x66, 0x57, 0xa4, 0xc9, 0x10,
- 0x61, 0x4f, 0x61, 0xf6, 0x5b, 0x38, 0x8e, 0x87, 0x8a, 0xc4, 0x0e, 0xad,
- 0x46, 0xe0, 0xed, 0x60, 0xa4, 0x15, 0xe3, 0x47, 0xba, 0x66, 0x08, 0xeb,
- 0xa7, 0x8c, 0xbc, 0xcd, 0xa8, 0x33, 0x7d, 0xf3, 0xc1, 0xa5, 0x7a, 0xcd,
- 0x79, 0x71, 0x26, 0x06, 0xca, 0x51, 0x40, 0x6e, 0x52, 0xec, 0x36, 0x7b,
- 0xb2, 0x4a, 0xad, 0x7c, 0x30, 0x1e, 0x56, 0x83, 0xa5, 0x64, 0x99, 0xae,
- 0x19, 0x27, 0x12, 0xf7, 0x50, 0x19, 0x0a, 0xe9, 0x4c, 0x37, 0x96, 0x77,
- 0xb7, 0x48, 0x16, 0x0c, 0x7b, 0xe9, 0x93, 0xf1, 0x20, 0x26, 0x22, 0x83,
- 0x1a, 0x9d, 0xaf, 0xf1, 0x79, 0xcd, 0x38, 0x4d, 0x9b, 0xd5, 0x7f, 0x09,
- 0xcb, 0xff, 0x97, 0x96, 0x01, 0xbc, 0xbc, 0xcf, 0xa6, 0xd7, 0xaf, 0xdf,
- 0x8d, 0x37, 0x1e, 0x88, 0xe9, 0x0f, 0x27, 0x87, 0xe7, 0x8b, 0x3c, 0x63,
- 0x62, 0x08, 0x82, 0x2c, 0x58, 0x6b, 0x3a, 0x08, 0xbe, 0xeb, 0x6e, 0xae,
- 0xf6, 0x82, 0x09, 0x03, 0x08, 0x0d, 0x16, 0x73, 0x84, 0xc6, 0x27, 0xe2,
- 0x22, 0x1d, 0xc6, 0x7c, 0x14, 0xba, 0x6b, 0xc7, 0xba, 0x33, 0xcd, 0x19,
- 0x42, 0xc9, 0xcc, 0x9a, 0x2c, 0x50, 0x47, 0x90, 0x21, 0x3c, 0xda, 0x74,
- 0x7d, 0xf6, 0xee, 0xe8, 0xeb, 0x53, 0xfb, 0xf1, 0x4b, 0xb6, 0xf9, 0x24,
- 0x2e, 0xae, 0x92, 0x0e, 0x68, 0xd1, 0x70, 0x85, 0x6a, 0x70, 0x47, 0x81,
- 0x02, 0x40, 0xb4, 0x3a, 0xe7, 0xd7, 0x85, 0x4c, 0x07, 0x4a, 0xad, 0xf8,
- 0xa8, 0x58, 0x37, 0x25, 0x5a, 0x94, 0xbd, 0xaf, 0xbf, 0x6a, 0x5f, 0x90,
- 0xaf, 0xdf, 0xad, 0xe9, 0x8e, 0xbf, 0x19, 0x9a, 0x3c, 0xa4, 0x96, 0xc0,
- 0x20, 0x73, 0xbf, 0xbd, 0x16, 0x0a, 0x28, 0xdd, 0x3d, 0x00, 0x43, 0x9b,
- 0x7e, 0x84, 0x4b, 0xd0, 0x13, 0xfa, 0xe3, 0xc1, 0x07, 0x15, 0xbb, 0xae,
- 0xbb, 0x2b, 0x06, 0xb5, 0xdb, 0x1c, 0x4b, 0xb1, 0xb1, 0x73, 0x89, 0x44,
- 0x3a, 0x53, 0xc3, 0xf4, 0x56, 0xc7, 0x16, 0xad, 0xc5, 0xcd, 0xf3, 0x78,
- 0x07, 0x11, 0xea, 0x51, 0x6d, 0xb4, 0x99, 0xcf, 0x9e, 0xfc, 0xd8, 0xde,
- 0x73, 0xea, 0xb0, 0x13, 0x6a, 0x71, 0x48, 0x87, 0x69, 0x9b, 0x0f, 0xbd,
- 0x25, 0x61, 0x8c, 0xef, 0xab, 0xc7, 0x4f, 0x86, 0xdb, 0x0a, 0xf7, 0x4e,
- 0xb4, 0x39, 0xa1, 0x4b, 0xd0, 0x5d, 0x9b, 0x52, 0xbe, 0xe9, 0x29, 0x10,
- 0xfc, 0xba, 0x9b, 0x7b, 0xf6, 0xf9, 0xb3, 0xa7, 0x5b, 0x5b, 0x83, 0xc8,
- 0x4c, 0xc9, 0x92, 0x30, 0xc6, 0xee, 0x1e, 0x66, 0x05, 0x12, 0xae, 0xc3,
- 0x63, 0xbe, 0x46, 0x79, 0x3e, 0xcb, 0xcf, 0x69, 0x5b, 0xed, 0xbc, 0x9a,
- 0xeb, 0x5e, 0xe5, 0x75, 0x61, 0xf8, 0x0a, 0x30, 0x49, 0x07, 0x22, 0x11,
- 0x1b, 0x9b, 0x29, 0xe9, 0x6e, 0x53, 0x3f, 0xc8, 0xda, 0x83, 0x26, 0xa5,
- 0xe5, 0x1d, 0x7a, 0x8b, 0x78, 0x9f, 0xc0, 0x99, 0xec, 0xf2, 0x62, 0x34,
- 0xed, 0x37, 0xc7, 0x27, 0x47, 0x8e, 0x8f, 0xfc, 0xd7, 0xf6, 0x88, 0x07,
- 0x59, 0x4c, 0x5b, 0x5c, 0x53, 0x04, 0xc9, 0x20, 0x1f, 0x7b, 0x10, 0xa1,
- 0xba, 0xe5, 0xb7, 0x03, 0xd1, 0x66, 0xf1, 0xb1, 0xc7, 0xc9, 0xa4, 0x86,
- 0x8f, 0xde, 0x7d, 0x77, 0x7c, 0x7e, 0xfa, 0xee, 0xed, 0xd1, 0x3b, 0x97,
- 0xf7, 0xc0, 0xd7, 0x73, 0xb7, 0xdb, 0xb1, 0xe5, 0x81, 0x49, 0x39, 0x73,
- 0x86, 0x05, 0x52, 0x76, 0x89, 0xf1, 0x2c, 0x68, 0xb7, 0xf4, 0xaf, 0x51,
- 0xd8, 0x5c, 0xf0, 0x90, 0xed, 0x1b, 0x13, 0xc9, 0x92, 0x03, 0x96, 0x67,
- 0x9c, 0x59, 0x36, 0x92, 0x24, 0x10, 0xf1, 0xf6, 0xa4, 0xe2, 0xac, 0xfc,
- 0x38, 0x4d, 0x14, 0x4e, 0xbf, 0x0c, 0xca, 0xf7, 0x59, 0x12, 0x94, 0xcf,
- 0x15, 0xab, 0x0d, 0xc2, 0x93, 0x9a, 0x94, 0x37, 0x5f, 0xe7, 0xf5, 0x04,
- 0x34, 0x44, 0x58, 0xf9, 0xe5, 0x5a, 0x5d, 0x47, 0x70, 0x25, 0x45, 0x12,
- 0x21, 0x11, 0x05, 0xb7, 0xae, 0x47, 0x74, 0xb5, 0xb0, 0x81, 0xa6, 0xfa,
- 0x1f, 0xcc, 0xa0, 0x16, 0x50, 0x80, 0xba, 0x1d, 0x5f, 0x68, 0xf4, 0x40,
- 0x1b, 0xc6, 0xb0, 0x0c, 0x5d, 0x74, 0x0e, 0x83, 0xc5, 0xb0, 0x18, 0xe0,
- 0xdd, 0xdc, 0x08, 0xef, 0xfa, 0x0f, 0x67, 0xe7, 0xa7, 0x3f, 0xfc, 0xf9,
- 0x1f, 0xdc, 0x45, 0x70, 0xb4, 0x7f, 0xe4, 0x1b, 0xcf, 0x1a, 0xff, 0xf9,
- 0x57, 0xf5, 0xf6, 0x60, 0x77, 0xf5, 0xf6, 0x07, 0x9a, 0x68, 0xb8, 0x0e,
- 0x73, 0x1e, 0xce, 0x38, 0x41, 0x72, 0xf7, 0xe5, 0xd5, 0x2d, 0x90, 0xd8,
- 0x31, 0x07, 0x49, 0x2d, 0x2f, 0x6b, 0xa5, 0x7e, 0xba, 0xea, 0x01, 0x02,
- 0x05, 0x1c, 0x25, 0xfe, 0xbc, 0xbc, 0x14, 0x16, 0x7a, 0x1c, 0xa0, 0xae,
- 0x04, 0xee, 0x7f, 0xb7, 0x1e, 0x07, 0x27, 0x27, 0xbf, 0x7e, 0x11, 0x5c,
- 0xc0, 0x47, 0x6d, 0x19, 0x60, 0x00, 0x71, 0x13, 0x1a, 0x3a, 0x01, 0xd7,
- 0xc8, 0xbf, 0x03, 0x4d, 0xd2, 0x0d, 0xe7, 0xdd, 0xa9, 0x8e, 0x46, 0x1c,
- 0x7f, 0xc3, 0x32, 0x21, 0x45, 0x00, 0x7e, 0x17, 0x56, 0xb9, 0xf8, 0x5a,
- 0xe4, 0x81, 0xb5, 0x4a, 0xea, 0x86, 0x5f, 0x5a, 0xe5, 0x76, 0x04, 0x11,
- 0x00, 0x5d, 0x08, 0x29, 0xe8, 0xb9, 0xf3, 0x59, 0x4b, 0xfd, 0x15, 0x94,
- 0xd5, 0x42, 0x06, 0x7b, 0x47, 0xa4, 0x01, 0xdb, 0x8d, 0x39, 0x6e, 0xa9,
- 0x48, 0xcb, 0x1b, 0xa4, 0xef, 0xf3, 0xa1, 0x1c, 0x48, 0xdd, 0xd9, 0x0a,
- 0x65, 0xb8, 0x59, 0x63, 0xc0, 0x50, 0x68, 0xec, 0x32, 0x62, 0xfa, 0xf7,
- 0xe2, 0xf4, 0xf0, 0xf4, 0x84, 0x7e, 0x39, 0x7a, 0x73, 0xfc, 0x83, 0x67,
- 0x68, 0x52, 0x8f, 0x45, 0x39, 0xaf, 0x31, 0x08, 0x57, 0x9f, 0xa5, 0xed,
- 0xc2, 0x6e, 0xc1, 0x64, 0xd7, 0xd5, 0xc8, 0xce, 0xf0, 0x99, 0x4f, 0x0a,
- 0x98, 0x09, 0xe3, 0x8c, 0x82, 0x1d, 0xc2, 0x45, 0x1c, 0x32, 0xbd, 0xfa,
- 0xde, 0xca, 0xa0, 0x20, 0x4f, 0xa5, 0x97, 0x2e, 0x3a, 0x35, 0x34, 0xb8,
- 0x9a, 0x8d, 0x45, 0x8d, 0x2c, 0x6c, 0x1b, 0xf6, 0x88, 0xcf, 0xac, 0x71,
- 0x0f, 0x82, 0x49, 0x9a, 0xf2, 0x1d, 0x04, 0xbd, 0x68, 0x90, 0xc4, 0x46,
- 0x18, 0x98, 0xe1, 0x07, 0x0b, 0x07, 0xac, 0x6b, 0xae, 0x3e, 0x27, 0x5d,
- 0x00, 0x4d, 0x7d, 0x46, 0x4a, 0x21, 0x7c, 0xfa, 0x5e, 0x01, 0x72, 0xf1,
- 0x41, 0x1d, 0x79, 0xf8, 0x30, 0xf8, 0x41, 0x99, 0xfc, 0xeb, 0x2a, 0xbd,
- 0x8d, 0x91, 0xe2, 0x0f, 0x7c, 0x00, 0x79, 0xa9, 0xd1, 0x46, 0xfc, 0xab,
- 0x1a, 0x89, 0xeb, 0xad, 0x3c, 0xfb, 0x35, 0x8d, 0x3c, 0x6b, 0xb4, 0x71,
- 0xfd, 0xab, 0x1a, 0x71, 0x75, 0xc5, 0xe8, 0x5a, 0xfc, 0xe1, 0xf8, 0x22,
- 0x3a, 0x3c, 0x7d, 0xed, 0x69, 0xf4, 0xc2, 0x5d, 0xed, 0x31, 0xc9, 0x35,
- 0x24, 0x8c, 0xc3, 0xbe, 0x86, 0xba, 0xaa, 0x41, 0x35, 0x71, 0xa4, 0x2b,
- 0x96, 0xbe, 0xd0, 0x7d, 0x8a, 0x8f, 0x0a, 0xc9, 0x41, 0x0c, 0xd1, 0x42,
- 0xf5, 0x71, 0xad, 0x50, 0xeb, 0xc2, 0x56, 0x98, 0xb2, 0xb9, 0xbc, 0x40,
- 0x5c, 0x18, 0x9a, 0xc8, 0x24, 0x66, 0x8f, 0x6a, 0x26, 0x8e, 0x68, 0xd6,
- 0x04, 0x2a, 0x1f, 0xf9, 0x98, 0xbb, 0x9c, 0x66, 0x18, 0x78, 0x38, 0xf3,
- 0x17, 0xf1, 0x48, 0xa2, 0xfe, 0x73, 0x61, 0x73, 0x8c, 0xa6, 0x96, 0x4c,
- 0xbd, 0xab, 0x9c, 0x30, 0xab, 0x51, 0x8c, 0x16, 0x96, 0x80, 0xe4, 0xc5,
- 0x52, 0x1b, 0x7c, 0x59, 0x38, 0x8f, 0x7c, 0x2f, 0x66, 0x4e, 0x97, 0xd7,
- 0x9a, 0xa7, 0x2d, 0x16, 0xe5, 0x9a, 0x70, 0xfd, 0xec, 0xc9, 0x8f, 0x37,
- 0x52, 0x80, 0x9d, 0xce, 0x9f, 0x66, 0xe1, 0xa6, 0x7f, 0x0b, 0xee, 0xe8,
- 0x27, 0x3e, 0x00, 0x65, 0x11, 0xcf, 0x25, 0x2c, 0x48, 0x02, 0x21, 0x49,
- 0xdf, 0xa9, 0xe2, 0x8f, 0x88, 0xe4, 0x62, 0x91, 0x08, 0x6b, 0x38, 0x0d,
- 0xd8, 0xe0, 0x53, 0x65, 0xce, 0x91, 0xa9, 0xf6, 0x72, 0xfe, 0xcc, 0x65,
- 0xa0, 0x79, 0x77, 0x71, 0xe9, 0x02, 0x42, 0x39, 0x7e, 0x45, 0x41, 0xa8,
- 0xc4, 0x45, 0x51, 0x72, 0x85, 0xdb, 0x6e, 0xb7, 0xb1, 0xeb, 0xd6, 0x40,
- 0x8b, 0x72, 0x09, 0x19, 0x47, 0xd0, 0x40, 0x3a, 0x4d, 0x25, 0xc5, 0x2a,
- 0x2d, 0xe5, 0x4b, 0xae, 0xe5, 0x26, 0x8b, 0x36, 0x5c, 0x63, 0xaf, 0xcd,
- 0x05, 0x7c, 0x4e, 0x39, 0x9c, 0xc9, 0x1f, 0xb3, 0x1c, 0x2b, 0x29, 0x01,
- 0x56, 0x5c, 0xe0, 0x93, 0xbe, 0xb8, 0x17, 0x57, 0x70, 0x9c, 0xe5, 0x1d,
- 0x90, 0x48, 0x6e, 0x63, 0x54, 0x09, 0xf6, 0x1a, 0xe7, 0x33, 0x8b, 0x5b,
- 0x50, 0x5e, 0x6e, 0x65, 0xbe, 0x8c, 0x89, 0xc3, 0xe0, 0xa3, 0xb5, 0x0a,
- 0x94, 0x6b, 0x49, 0x5e, 0xc2, 0x54, 0x72, 0xef, 0x78, 0xae, 0xed, 0xa8,
- 0x3b, 0x6d, 0x25, 0x50, 0x3d, 0x9e, 0xaf, 0xe9, 0x87, 0x1b, 0x93, 0x7d,
- 0x93, 0x4e, 0x9a, 0x69, 0x1b, 0xdc, 0x7e, 0xbb, 0xb5, 0xcf, 0x9a, 0x24,
- 0x62, 0x59, 0x14, 0x0c, 0xf9, 0x99, 0x87, 0xc9, 0x54, 0x9f, 0xeb, 0x93,
- 0x6c, 0x85, 0xb8, 0x4b, 0xd8, 0x72, 0xe4, 0xe2, 0x7d, 0x8b, 0x64, 0x39,
- 0x77, 0x53, 0xb4, 0x0f, 0x91, 0xbd, 0x05, 0x67, 0x24, 0x56, 0x7c, 0xaa,
- 0xe3, 0x6d, 0x87, 0x94, 0x85, 0x02, 0xe3, 0x0b, 0xdf, 0x49, 0x8c, 0x6c,
- 0x1b, 0x22, 0x92, 0x2c, 0x75, 0x04, 0xa9, 0x95, 0x7a, 0xf1, 0x11, 0xe7,
- 0x8b, 0x03, 0x4e, 0xcf, 0xfe, 0xb6, 0x37, 0xda, 0x91, 0x90, 0x72, 0x53,
- 0xf8, 0x40, 0x7e, 0xac, 0xc3, 0xaa, 0x10, 0xd4, 0x16, 0x5f, 0x73, 0x03,
- 0x20, 0x1b, 0x71, 0xa6, 0x31, 0x6d, 0xa8, 0x09, 0x3f, 0x8a, 0xde, 0xb6,
- 0xb3, 0x80, 0xf3, 0xcb, 0x4a, 0xb1, 0xcf, 0xd8, 0xd2, 0x3e, 0x0b, 0xea,
- 0x4b, 0xe1, 0x4a, 0x0e, 0x4a, 0x86, 0xf0, 0x09, 0x70, 0xf7, 0x0e, 0xe2,
- 0x09, 0xa3, 0x76, 0x7a, 0xbb, 0x07, 0xfe, 0xf3, 0xeb, 0xb0, 0xbb, 0xdb,
- 0x5c, 0xec, 0xb3, 0x83, 0xf1, 0xd8, 0x16, 0xfa, 0x30, 0x5c, 0x50, 0x59,
- 0x42, 0xcd, 0xae, 0x65, 0xf0, 0x3d, 0x43, 0x66, 0x6d, 0xab, 0x3b, 0xda,
- 0x46, 0x23, 0x4b, 0x6e, 0xf7, 0x89, 0xeb, 0xcb, 0x75, 0xf5, 0x9d, 0xb4,
- 0x35, 0xf8, 0xc4, 0xae, 0xba, 0xfb, 0xfa, 0xae, 0xa3, 0xaf, 0xa7, 0x2d,
- 0x22, 0xda, 0xdb, 0xfb, 0xcc, 0x00, 0x50, 0x04, 0x52, 0x7e, 0x1e, 0xf9,
- 0x0e, 0x83, 0x1e, 0xe9, 0xb9, 0x21, 0x6c, 0x95, 0xed, 0xbe, 0x94, 0x2e,
- 0x78, 0x34, 0x41, 0x57, 0xcf, 0x5c, 0x57, 0xa4, 0x33, 0xf5, 0xe1, 0x34,
- 0xd3, 0x43, 0xd2, 0x3a, 0x3b, 0xb0, 0x53, 0xf3, 0x41, 0x39, 0xe6, 0x35,
- 0x20, 0x31, 0x6c, 0x6d, 0xde, 0xa1, 0x8d, 0x22, 0xe8, 0xe7, 0x33, 0x3f,
- 0x25, 0x3f, 0x6e, 0x56, 0x6c, 0x14, 0x62, 0x6d, 0x14, 0x1c, 0x56, 0x47,
- 0x28, 0x16, 0x67, 0xef, 0x02, 0xc0, 0x9a, 0x7c, 0x46, 0x5e, 0xf5, 0xbd,
- 0xc8, 0xf1, 0x3b, 0x63, 0x22, 0xd6, 0xfa, 0x36, 0xa3, 0xe8, 0x14, 0x4a,
- 0x58, 0x0d, 0x05, 0x57, 0xd0, 0x67, 0x62, 0x6f, 0xa5, 0x29, 0xc2, 0xd3,
- 0xbe, 0xfb, 0xc2, 0xaf, 0x89, 0x0d, 0xc9, 0x9c, 0x96, 0xdb, 0x7a, 0x7c,
- 0xbc, 0x7f, 0xc4, 0x62, 0x12, 0x12, 0x44, 0x88, 0x70, 0xfe, 0x14, 0x50,
- 0x47, 0x5b, 0xf8, 0x7c, 0x74, 0xa4, 0xb6, 0x9c, 0x6b, 0xe1, 0x12, 0x9c,
- 0x24, 0xb8, 0x83, 0x3c, 0x25, 0xff, 0x75, 0xc5, 0x0c, 0x09, 0xb7, 0x2e,
- 0xdd, 0xa1, 0xfa, 0xa7, 0xbd, 0x27, 0x88, 0x2b, 0x5c, 0x05, 0x0b, 0xb7,
- 0xb2, 0xcf, 0x91, 0xd0, 0x93, 0xe1, 0xd6, 0xdf, 0xe7, 0x7b, 0x4a, 0xcd,
- 0x09, 0x61, 0x9c, 0x0e, 0x76, 0x61, 0xe4, 0x52, 0x09, 0x0d, 0x7f, 0x04,
- 0x30, 0xa8, 0xca, 0x00, 0x05, 0xba, 0xa0, 0xe5, 0x31, 0x72, 0x9d, 0x2b,
- 0xd3, 0xd7, 0x41, 0xd4, 0x83, 0xed, 0x02, 0xe9, 0x22, 0x52, 0xfb, 0x40,
- 0xf4, 0x74, 0x67, 0xa7, 0xa3, 0xca, 0x4f, 0x3c, 0xc9, 0x6f, 0x2d, 0x66,
- 0x55, 0x91, 0x64, 0xf0, 0x96, 0x28, 0xcd, 0x10, 0x2d, 0x4a, 0x16, 0x53,
- 0x87, 0x97, 0x6c, 0x13, 0xe0, 0x15, 0x33, 0x8f, 0x50, 0xb0, 0x6e, 0x72,
- 0x2a, 0xbf, 0x07, 0xb4, 0x8d, 0x2d, 0x5a, 0xe3, 0x38, 0x0a, 0xee, 0x8d,
- 0x95, 0xa5, 0x88, 0x83, 0xda, 0x47, 0x1a, 0x25, 0xd1, 0x1a, 0x99, 0x22,
- 0x31, 0x07, 0xdd, 0x3c, 0x6b, 0x53, 0xc4, 0xf8, 0xe2, 0xf4, 0x5c, 0x29,
- 0xac, 0xcd, 0x75, 0xb5, 0xb0, 0x36, 0x3f, 0xe2, 0xe3, 0x76, 0x07, 0x1d,
- 0x61, 0x08, 0xce, 0x20, 0x2f, 0x19, 0xa3, 0xb4, 0x5c, 0x41, 0xaf, 0xcf,
- 0x7d, 0xc8, 0xa0, 0x4e, 0xed, 0x3b, 0xb5, 0xc0, 0x5b, 0x79, 0x1c, 0xab,
- 0xb6, 0x1d, 0xbc, 0x24, 0x07, 0xed, 0x74, 0x05, 0x62, 0x17, 0x83, 0x31,
- 0xd3, 0x91, 0x9a, 0x8e, 0x39, 0x4e, 0x56, 0xad, 0x69, 0xce, 0x35, 0xd8,
- 0xa4, 0x45, 0x39, 0x44, 0xa7, 0xae, 0x02, 0x92, 0x85, 0x11, 0xb8, 0xbb,
- 0xcb, 0xab, 0xae, 0x70, 0x5b, 0xb3, 0xc3, 0x49, 0x82, 0x32, 0x34, 0x8d,
- 0x34, 0xe6, 0xbc, 0x8c, 0xe6, 0x6e, 0x4f, 0x49, 0x32, 0x92, 0xe8, 0xd5,
- 0xdc, 0x4a, 0xcc, 0x9b, 0xa8, 0xe8, 0xa5, 0xac, 0x1d, 0xb7, 0xce, 0x67,
- 0xa7, 0xe7, 0x17, 0x36, 0x34, 0x74, 0x8b, 0x0f, 0x1a, 0xe7, 0x87, 0x51,
- 0xd4, 0x22, 0x01, 0x02, 0x07, 0x67, 0x91, 0x4d, 0x68, 0x69, 0xa5, 0x2a,
- 0x11, 0xca, 0xa6, 0xa0, 0x1d, 0x6b, 0x88, 0x75, 0xb6, 0xe2, 0xde, 0xa2,
- 0xca, 0x58, 0xdb, 0x71, 0x3c, 0x47, 0xcc, 0x28, 0xcc, 0xa0, 0xbb, 0xdd,
- 0xbd, 0x5e, 0xa6, 0x79, 0xb2, 0xdb, 0xa6, 0x0e, 0x56, 0x9e, 0xcf, 0x8f,
- 0xb8, 0x1c, 0xfb, 0xc5, 0xb5, 0xfc, 0xd6, 0x1a, 0xbb, 0x58, 0x71, 0xf5,
- 0xc3, 0xee, 0x20, 0x15, 0x50, 0x07, 0xe7, 0xfb, 0x70, 0x10, 0x3a, 0xb7,
- 0xef, 0xac, 0xca, 0xc1, 0x9a, 0x3d, 0x09, 0x72, 0xbb, 0xc1, 0x36, 0x95,
- 0x56, 0x90, 0x86, 0x8f, 0x0f, 0x7a, 0xda, 0x4b, 0x8f, 0x6e, 0x5d, 0x39,
- 0x12, 0x8c, 0xfb, 0xec, 0x5b, 0x78, 0xea, 0x5b, 0x58, 0x32, 0x7f, 0xd7,
- 0x06, 0x8e, 0xcd, 0xbb, 0xce, 0x1f, 0xba, 0x30, 0xde, 0xab, 0x24, 0x33,
- 0xc2, 0x90, 0xe7, 0x7c, 0x3b, 0xcf, 0x9c, 0xf7, 0xc8, 0xe4, 0xa3, 0x60,
- 0x28, 0xfc, 0xb1, 0x25, 0xd5, 0x22, 0x84, 0xaf, 0x41, 0x76, 0x4f, 0x9e,
- 0xfb, 0x1b, 0x82, 0x55, 0x09, 0x1f, 0x27, 0xa2, 0x2b, 0x10, 0xdc, 0x48,
- 0x1c, 0x67, 0x93, 0x66, 0xab, 0x04, 0x46, 0xb3, 0xb8, 0x98, 0x33, 0x30,
- 0xb9, 0x06, 0x7a, 0xb4, 0xdc, 0xd2, 0x9a, 0x1e, 0xee, 0xfb, 0xd1, 0x9b,
- 0xe8, 0xf8, 0xe4, 0xc8, 0x6f, 0x97, 0x40, 0x9a, 0xe3, 0x30, 0x7b, 0x21,
- 0x8f, 0x0e, 0x6e, 0xe6, 0xae, 0x8b, 0x51, 0x74, 0xc6, 0xf5, 0xe8, 0xe0,
- 0x7e, 0x2a, 0xff, 0xcd, 0xb7, 0x26, 0x87, 0x05, 0xc6, 0x18, 0xba, 0x40,
- 0x61, 0x14, 0x4d, 0x33, 0xda, 0x5d, 0x7c, 0xc2, 0xbf, 0x06, 0xa5, 0xc4,
- 0x5a, 0x53, 0x7e, 0xe1, 0x5f, 0x2e, 0x69, 0x1e, 0xa4, 0xaa, 0x35, 0x1f,
- 0x79, 0xaa, 0xb4, 0x45, 0x7a, 0x1c, 0x9a, 0x70, 0xec, 0x99, 0xcf, 0x74,
- 0x21, 0xf5, 0x3e, 0x66, 0xd2, 0xc2, 0xa5, 0x3d, 0x53, 0x63, 0xe3, 0x41,
- 0x53, 0x72, 0x29, 0x1c, 0xc8, 0x3a, 0x21, 0x7e, 0x9e, 0x4e, 0x0e, 0x3b,
- 0x4b, 0xa8, 0xad, 0x8c, 0x39, 0xee, 0xdc, 0xc1, 0xd6, 0xba, 0x5c, 0x28,
- 0xe6, 0x98, 0xfc, 0x82, 0xa2, 0x09, 0xb6, 0x41, 0x71, 0x1b, 0xc5, 0xf5,
- 0x9e, 0x0a, 0x35, 0x3a, 0xd2, 0x71, 0xf7, 0x58, 0x6d, 0x74, 0xdc, 0xb1,
- 0x4f, 0x22, 0xe2, 0xdd, 0x66, 0xd3, 0x10, 0xdd, 0xf2, 0xa1, 0x74, 0xf7,
- 0xf4, 0x99, 0x6f, 0xea, 0x12, 0x65, 0x1a, 0x8c, 0xbf, 0x1f, 0xd4, 0x78,
- 0x90, 0xc3, 0xfc, 0x4f, 0xdd, 0x93, 0xa2, 0x2c, 0x88, 0x85, 0xba, 0xe3,
- 0x58, 0x05, 0x7d, 0x08, 0x31, 0x5c, 0xe4, 0x1c, 0x31, 0x91, 0xdd, 0x7b,
- 0xf8, 0x90, 0x91, 0xc4, 0x20, 0x8a, 0x0d, 0x42, 0xea, 0x5f, 0x38, 0x60,
- 0x11, 0xd1, 0x36, 0x55, 0x41, 0x5f, 0xc4, 0x1f, 0x5b, 0x57, 0xfd, 0x62,
- 0xb5, 0x50, 0xd4, 0x84, 0xa0, 0xa7, 0xcf, 0x55, 0x9b, 0xbd, 0xc9, 0x88,
- 0x24, 0xbd, 0xfe, 0x17, 0x32, 0xd3, 0xdc, 0xb9, 0x88, 0x2d, 0x95, 0x23,
- 0x93, 0x50, 0xe5, 0xd2, 0x55, 0xfb, 0xea, 0x00, 0x26, 0xe7, 0x0b, 0x59,
- 0xc5, 0x44, 0x0b, 0x8a, 0xcc, 0x03, 0xdc, 0x4b, 0x5e, 0x6f, 0x7d, 0x4c,
- 0xbe, 0x7a, 0xc0, 0x67, 0x5f, 0x24, 0x7f, 0x41, 0x91, 0xcd, 0x91, 0x5c,
- 0x3a, 0x02, 0x3b, 0x25, 0xb3, 0xe4, 0x90, 0x05, 0xcf, 0xf2, 0x9e, 0xbe,
- 0x50, 0x53, 0x85, 0xaa, 0xc2, 0x56, 0xf9, 0xb1, 0x69, 0x69, 0x7e, 0xb6,
- 0xeb, 0xec, 0x3e, 0x8c, 0x51, 0xd0, 0x2f, 0x85, 0x3b, 0x04, 0x48, 0x05,
- 0xc4, 0xe0, 0xc6, 0xe3, 0x6f, 0xa2, 0xb7, 0xaf, 0x9f, 0x71, 0xba, 0xec,
- 0x55, 0x52, 0x70, 0x51, 0x55, 0xaf, 0x8b, 0x9d, 0x7e, 0x1b, 0x34, 0xb6,
- 0x17, 0xc6, 0x04, 0x88, 0xfe, 0xa4, 0x0c, 0x4d, 0x25, 0x6d, 0xda, 0x42,
- 0x86, 0xdd, 0xbb, 0x32, 0x17, 0x8a, 0x21, 0x65, 0x1b, 0x1a, 0x25, 0x64,
- 0x97, 0x66, 0xb6, 0x45, 0x9d, 0x89, 0x3d, 0x7b, 0xe2, 0x99, 0x58, 0x71,
- 0xbf, 0x64, 0xe0, 0xff, 0xec, 0x8a, 0x05, 0xea, 0x8e, 0x13, 0xf5, 0x4c,
- 0x18, 0xe7, 0xa1, 0x9c, 0x7b, 0x16, 0x66, 0xdb, 0xaf, 0xc5, 0xa5, 0x85,
- 0xcd, 0x04, 0xef, 0x3d, 0x0b, 0xd5, 0x49, 0x12, 0xc8, 0x71, 0x2f, 0x2a,
- 0x1e, 0x3f, 0x24, 0x95, 0xe0, 0xd9, 0xe7, 0xee, 0x59, 0xb6, 0x1d, 0xa4,
- 0x59, 0x50, 0x19, 0x65, 0xcd, 0x1b, 0x2a, 0x04, 0x8b, 0x68, 0xe0, 0xc5,
- 0x33, 0x91, 0x7b, 0x82, 0xb5, 0x0f, 0x5e, 0x79, 0x51, 0xd7, 0x96, 0x51,
- 0x52, 0xd0, 0x17, 0xe8, 0xe6, 0x49, 0xa5, 0xcb, 0xeb, 0xf0, 0x70, 0x3e,
- 0x97, 0x9b, 0xfa, 0xac, 0x09, 0x3c, 0x61, 0x3c, 0x30, 0x09, 0x7d, 0x77,
- 0x76, 0xd4, 0x85, 0xf4, 0x0f, 0x0f, 0x22, 0x7b, 0xa5, 0x55, 0x28, 0x9d,
- 0x69, 0x3d, 0xe8, 0x64, 0x57, 0xcf, 0x0c, 0x4d, 0x39, 0xbf, 0xca, 0xd2,
- 0xbf, 0x25, 0x41, 0xa6, 0xb5, 0x55, 0xb5, 0x09, 0x1e, 0xdf, 0x53, 0x86,
- 0x71, 0x1b, 0xcf, 0x53, 0x65, 0x8a, 0x6c, 0x47, 0xf7, 0x0f, 0x3c, 0x51,
- 0xaa, 0xfd, 0x98, 0xf2, 0x11, 0x95, 0x48, 0x59, 0xae, 0x6f, 0xc6, 0x1e,
- 0x9c, 0xa4, 0x06, 0x64, 0xf2, 0xfc, 0xa9, 0xca, 0x5e, 0x26, 0x1f, 0xf3,
- 0xbd, 0xc4, 0x0b, 0x31, 0x07, 0xe4, 0x79, 0x93, 0x4d, 0x3f, 0xd7, 0xab,
- 0x4f, 0xb7, 0x52, 0x83, 0xb4, 0x62, 0xe3, 0xd0, 0xec, 0x15, 0x28, 0x92,
- 0xbb, 0x34, 0xd3, 0xfc, 0xa7, 0xd6, 0xeb, 0xcf, 0xd7, 0x98, 0xa0, 0x4a,
- 0xb9, 0x37, 0x8f, 0x40, 0x4b, 0xc1, 0xf3, 0x9f, 0xf9, 0x93, 0x20, 0x95,
- 0xbf, 0x04, 0x31, 0xde, 0xe5, 0xf4, 0x20, 0x76, 0xcf, 0x0a, 0x8a, 0xd8,
- 0x59, 0x62, 0xd5, 0x65, 0x09, 0x3b, 0x6d, 0x36, 0xeb, 0x4a, 0x36, 0xbc,
- 0x74, 0xdd, 0xcf, 0x73, 0xe6, 0xa6, 0x41, 0x7f, 0x42, 0x52, 0x6f, 0x50,
- 0x22, 0xd2, 0x2b, 0x08, 0x59, 0xad, 0x98, 0x9b, 0x7f, 0xfa, 0x85, 0xd2,
- 0x86, 0xdd, 0x97, 0x26, 0xa6, 0xae, 0x7d, 0xe3, 0xb3, 0x9d, 0x50, 0x68,
- 0x9d, 0xb1, 0xa5, 0x5e, 0x20, 0x24, 0xd7, 0xbe, 0x20, 0x94, 0x71, 0x4c,
- 0xd7, 0xc8, 0x15, 0x11, 0x35, 0x9e, 0xf1, 0x38, 0xc6, 0xfe, 0xb1, 0xbd,
- 0x1a, 0xd3, 0xbd, 0x08, 0x45, 0xa8, 0xe8, 0xf8, 0x75, 0xf0, 0xe0, 0x13,
- 0x3f, 0xc1, 0x78, 0xce, 0xd2, 0xc0, 0xbd, 0x58, 0x22, 0x4a, 0xad, 0xa7,
- 0x17, 0x3c, 0xfa, 0x54, 0xd3, 0x58, 0x24, 0xda, 0x05, 0xcb, 0xdf, 0x7a,
- 0x46, 0xc8, 0xe1, 0x10, 0x59, 0x67, 0x15, 0x10, 0x17, 0x32, 0xf3, 0x16,
- 0x34, 0xf7, 0xfe, 0xb3, 0xe7, 0x0f, 0x3c, 0xab, 0x97, 0x66, 0xe9, 0xae,
- 0xfa, 0xe0, 0xbd, 0xcf, 0xda, 0xc7, 0xdc, 0xd4, 0x02, 0xc3, 0x85, 0xa1,
- 0xa3, 0xc6, 0x27, 0x2d, 0xda, 0x64, 0x40, 0xc1, 0x7f, 0x33, 0xd3, 0x4f,
- 0xc1, 0xd9, 0x77, 0xe5, 0xbf, 0x85, 0xe3, 0xfd, 0x3c, 0x00, 0x9f, 0x52,
- 0xa3, 0x8f, 0xab, 0xea, 0x1c, 0x56, 0x7a, 0xf4, 0x11, 0xe5, 0x58, 0x9d,
- 0xa0, 0x05, 0xd9, 0x73, 0x92, 0x23, 0x56, 0x99, 0xe7, 0x1c, 0xa2, 0x0c,
- 0x2a, 0x2c, 0xa7, 0xc5, 0x76, 0xeb, 0xe8, 0xbe, 0xa1, 0x4d, 0x05, 0x75,
- 0x04, 0xc6, 0xb3, 0x9d, 0xc6, 0x31, 0x28, 0xaf, 0x57, 0xa2, 0x7a, 0xbb,
- 0x19, 0x79, 0x30, 0xa8, 0xe0, 0xb5, 0x3d, 0xcf, 0xbd, 0x30, 0x36, 0x48,
- 0x8d, 0x87, 0x34, 0x5a, 0xd1, 0xcd, 0x23, 0x90, 0xa1, 0x39, 0x3e, 0x50,
- 0x45, 0xde, 0x83, 0xc9, 0x6e, 0xc6, 0x6b, 0x80, 0x0f, 0x14, 0xab, 0x25,
- 0xe8, 0x46, 0x45, 0x1b, 0x0e, 0x88, 0xa7, 0x5d, 0xba, 0x4e, 0xa6, 0x37,
- 0x76, 0x64, 0x36, 0xe3, 0x06, 0xc2, 0x4b, 0xf0, 0xd6, 0x53, 0xb7, 0xb4,
- 0x50, 0x6b, 0xce, 0x8f, 0x9a, 0x9a, 0x80, 0x7f, 0x54, 0xa8, 0xe6, 0xfc,
- 0x62, 0x7c, 0xb6, 0xcf, 0x63, 0x16, 0x17, 0x0c, 0x1d, 0x88, 0xc3, 0x71,
- 0xf2, 0x57, 0xcd, 0xf3, 0x2d, 0xfd, 0xd3, 0xcf, 0xd7, 0x3c, 0x3d, 0xd6,
- 0x18, 0xa9, 0xe3, 0x19, 0xb3, 0x5f, 0xda, 0x87, 0xf0, 0xa5, 0xcf, 0x14,
- 0x2f, 0xc1, 0x4c, 0xbb, 0x62, 0x39, 0xe2, 0x91, 0xb9, 0x94, 0x1a, 0xff,
- 0xf0, 0xe7, 0x5e, 0xaf, 0xb9, 0x5e, 0x65, 0x37, 0x4e, 0x5e, 0xd4, 0x00,
- 0x36, 0xdb, 0x60, 0xff, 0xc2, 0x0b, 0x3b, 0x1a, 0x01, 0x66, 0x97, 0x73,
- 0x7f, 0x0f, 0xd4, 0x52, 0x61, 0x31, 0xab, 0xe2, 0x3b, 0x22, 0xfe, 0xba,
- 0x0a, 0xd6, 0xe0, 0xc5, 0x8e, 0xbb, 0x7e, 0x97, 0xab, 0x09, 0x09, 0xa4,
- 0xd1, 0x4d, 0x72, 0xdf, 0xa8, 0xbd, 0xce, 0x8e, 0x80, 0x34, 0x63, 0x43,
- 0x84, 0x7f, 0xc4, 0x35, 0xf0, 0xc3, 0x0f, 0xc2, 0xe3, 0x5d, 0x04, 0x95,
- 0xba, 0x16, 0x5c, 0x3d, 0x64, 0x62, 0x88, 0x22, 0x16, 0xf0, 0xf1, 0x82,
- 0x3d, 0xbe, 0x48, 0xe6, 0x09, 0xc3, 0x80, 0x8b, 0x9e, 0x02, 0xc2, 0xee,
- 0x4a, 0x2a, 0xe4, 0x18, 0x63, 0xb8, 0x55, 0x38, 0x7d, 0x17, 0x06, 0xbd,
- 0x8c, 0x03, 0x53, 0xd5, 0x58, 0x45, 0x3b, 0x7e, 0xf0, 0xfe, 0xe2, 0x9b,
- 0xd3, 0xf3, 0x71, 0xb4, 0xcd, 0xf8, 0x8c, 0x17, 0xe7, 0xc7, 0x5f, 0xbd,
- 0x27, 0xfd, 0xdf, 0xb9, 0x65, 0x5e, 0xc7, 0x59, 0x4a, 0x37, 0xc7, 0xb8,
- 0x4a, 0x32, 0xda, 0xc7, 0x2b, 0xab, 0xb9, 0x89, 0x10, 0x1d, 0xbe, 0x2b,
- 0xf3, 0x62, 0xe0, 0xca, 0xaa, 0xdf, 0x5d, 0xe7, 0xba, 0x19, 0x12, 0x6c,
- 0xc9, 0x69, 0x05, 0x9c, 0xad, 0x91, 0x7b, 0xdd, 0x36, 0xad, 0x63, 0x6e,
- 0x46, 0xe6, 0x5d, 0x8d, 0x2e, 0xbe, 0x39, 0x78, 0xf7, 0xed, 0xd8, 0x30,
- 0xee, 0xbf, 0xff, 0xfe, 0xfb, 0xd0, 0xeb, 0xbf, 0xbf, 0xbd, 0x0d, 0xf1,
- 0xf2, 0x3a, 0xfe, 0xf8, 0x71, 0x54, 0x26, 0x1b, 0x1b, 0x6f, 0xbc, 0xaf,
- 0xce, 0x57, 0x4c, 0x2d, 0x57, 0x24, 0x59, 0xd0, 0xd7, 0xdb, 0xb4, 0xbe,
- 0x5c, 0xa1, 0x75, 0x7b, 0x55, 0xa5, 0x73, 0xba, 0x90, 0x92, 0x12, 0x6f,
- 0x6f, 0x6f, 0x6c, 0x8c, 0x8f, 0x8e, 0xa2, 0x83, 0x93, 0xf1, 0x69, 0xf0,
- 0xee, 0xe6, 0x2e, 0x47, 0xae, 0x5c, 0x25, 0xd5, 0x26, 0x43, 0x9d, 0x9e,
- 0x1c, 0x5c, 0xb0, 0xce, 0xfb, 0xdd, 0xd1, 0xf9, 0xf8, 0xf8, 0xf4, 0x1d,
- 0xef, 0x0e, 0x07, 0x2c, 0xc6, 0xf3, 0x3b, 0x8e, 0x57, 0xbd, 0x4c, 0x81,
- 0x3b, 0x73, 0x67, 0xe5, 0x4f, 0x9b, 0x38, 0xf2, 0x74, 0x5f, 0xdd, 0x31,
- 0x04, 0xb4, 0x06, 0x3a, 0x70, 0xe0, 0x3a, 0xad, 0x84, 0x45, 0x22, 0x6e,
- 0x44, 0xde, 0xee, 0x25, 0xd5, 0x7b, 0x92, 0x89, 0x84, 0x57, 0x0f, 0x04,
- 0xad, 0x01, 0xe9, 0x2d, 0x41, 0xdc, 0x64, 0xe7, 0xc4, 0xc7, 0xc7, 0x5c,
- 0x67, 0x24, 0x7a, 0x3f, 0x3e, 0xf8, 0xfa, 0x88, 0x1f, 0xfd, 0x3a, 0xa9,
- 0xfc, 0x7e, 0x48, 0x99, 0x56, 0xee, 0xe4, 0x5d, 0x52, 0x95, 0xd3, 0x78,
- 0xc9, 0x69, 0xe9, 0xd4, 0xcd, 0x50, 0xee, 0xa1, 0xa0, 0x6d, 0xd1, 0x05,
- 0x7c, 0x2d, 0xdb, 0x4c, 0x9f, 0x47, 0xa1, 0xd9, 0xb0, 0xdd, 0xf3, 0xa3,
- 0x83, 0xd7, 0x6f, 0x8f, 0x2c, 0x40, 0x5f, 0x6a, 0x3b, 0x50, 0xa3, 0xd7,
- 0xf9, 0x22, 0x09, 0x6c, 0xe1, 0x2c, 0x1b, 0xf0, 0xe2, 0xd3, 0x37, 0x5c,
- 0xe9, 0xb5, 0xbb, 0x3b, 0xbf, 0x51, 0x78, 0x76, 0x74, 0x99, 0x6e, 0x4b,
- 0xeb, 0xd6, 0x5f, 0xec, 0x96, 0x44, 0xc1, 0xb7, 0x4d, 0x5c, 0x16, 0x9b,
- 0x06, 0x8c, 0x21, 0x9f, 0xef, 0xec, 0xec, 0x3c, 0x30, 0x0f, 0xe8, 0x13,
- 0x7a, 0xeb, 0xd2, 0x54, 0xf6, 0xf9, 0xf1, 0x6d, 0xdf, 0xbe, 0x1f, 0xf1,
- 0x5c, 0xd3, 0xff, 0xb9, 0x20, 0x5b, 0x26, 0x38, 0xb3, 0x69, 0x95, 0x74,
- 0x0f, 0x79, 0x9a, 0xe7, 0x6e, 0x07, 0x6a, 0x8b, 0x43, 0x12, 0x32, 0x24,
- 0x1e, 0x8d, 0xec, 0xc4, 0x1b, 0x32, 0x70, 0xd2, 0x7f, 0x10, 0xcd, 0x56,
- 0xdc, 0x37, 0x9b, 0xe4, 0x6f, 0xa8, 0x4d, 0xfe, 0x31, 0xca, 0x8b, 0xab,
- 0xed, 0xc5, 0x3e, 0x44, 0x1a, 0x7a, 0xe8, 0x0d, 0x03, 0x83, 0x44, 0x24,
- 0x1a, 0xbb, 0xa0, 0xf4, 0x92, 0x17, 0x96, 0xf3, 0x67, 0x3e, 0x61, 0x5c,
- 0xbf, 0x60, 0x15, 0x24, 0x22, 0xea, 0xd2, 0x66, 0x6e, 0x15, 0x19, 0x3b,
- 0x3a, 0x29, 0x79, 0xc3, 0xd8, 0xe2, 0x38, 0x22, 0x06, 0x42, 0xbd, 0x70,
- 0xb8, 0x1b, 0x48, 0x84, 0x7e, 0x2d, 0x88, 0x64, 0x46, 0xd5, 0x47, 0xf0,
- 0x5d, 0x2d, 0x0f, 0x2a, 0x38, 0x89, 0xec, 0xc1, 0x5d, 0x72, 0xde, 0x66,
- 0x81, 0xea, 0x22, 0xe8, 0x81, 0xf3, 0x41, 0x89, 0xf3, 0x5c, 0xe9, 0xc2,
- 0x21, 0x06, 0x88, 0x1b, 0x6e, 0xf6, 0x39, 0x1c, 0x82, 0x7e, 0x4a, 0x47,
- 0x2d, 0x9f, 0xd0, 0x79, 0x30, 0x29, 0x59, 0xfd, 0x4c, 0xaf, 0xe9, 0x80,
- 0x76, 0xc6, 0x34, 0x8a, 0x56, 0x5f, 0x2b, 0x5f, 0xe0, 0xb4, 0x94, 0xee,
- 0x82, 0x12, 0x3d, 0x0c, 0xab, 0xb6, 0x8d, 0x2c, 0xb2, 0x4f, 0xee, 0xe3,
- 0xf0, 0x4c, 0x7f, 0xe3, 0x58, 0x9a, 0xf4, 0x96, 0x27, 0xcf, 0x2c, 0x9e,
- 0x2e, 0x6b, 0xbe, 0x03, 0x4c, 0xc6, 0x45, 0x68, 0x0e, 0xd4, 0x55, 0x64,
- 0x3c, 0x84, 0xfa, 0xc6, 0x03, 0x23, 0xdc, 0xa7, 0xa5, 0xe1, 0x2b, 0xe5,
- 0xbf, 0xb6, 0x47, 0x65, 0x79, 0xbd, 0x9d, 0xce, 0x3e, 0x14, 0x65, 0x1c,
- 0xfd, 0x54, 0xe7, 0xf7, 0xe5, 0xb4, 0x39, 0x89, 0xff, 0xc2, 0x0a, 0xfe,
- 0xa2, 0x95, 0x5a, 0x3f, 0x8b, 0xdf, 0x62, 0x06, 0xc3, 0x21, 0xe0, 0x0a,
- 0xb4, 0xa7, 0x0f, 0xf4, 0xc0, 0x07, 0x87, 0xb9, 0xf0, 0x2b, 0x66, 0xd7,
- 0xc1, 0x0a, 0x69, 0x92, 0x12, 0x68, 0x4e, 0xbc, 0xa5, 0x9b, 0xd0, 0x7b,
- 0x7a, 0x74, 0x7e, 0xdc, 0xdb, 0xd9, 0xd9, 0xdd, 0xdf, 0xfd, 0xfc, 0xc5,
- 0xce, 0xfe, 0xee, 0xee, 0xee, 0xde, 0xfe, 0xee, 0xfe, 0xfe, 0xde, 0xce,
- 0xcf, 0xdb, 0xbd, 0x75, 0x4b, 0xf7, 0xf6, 0xab, 0x35, 0x0d, 0xd2, 0xac,
- 0x7b, 0x12, 0xc5, 0xfa, 0x93, 0x9b, 0x3d, 0x66, 0x35, 0xeb, 0x45, 0xe5,
- 0x62, 0x42, 0x5d, 0xe9, 0xe1, 0x0c, 0x27, 0x53, 0x92, 0x24, 0x9d, 0x04,
- 0x13, 0x7a, 0x7d, 0xfa, 0xfd, 0xbb, 0x93, 0xd3, 0x83, 0xd7, 0xd1, 0xc5,
- 0x69, 0x74, 0x00, 0xbb, 0x5f, 0x07, 0x9f, 0x44, 0x24, 0x3a, 0x67, 0x5c,
- 0x0a, 0xe0, 0x83, 0xf7, 0x11, 0x98, 0x91, 0xca, 0x85, 0x3e, 0x61, 0x10,
- 0xcd, 0x71, 0xe6, 0xd0, 0xeb, 0xb8, 0xa5, 0xd1, 0x75, 0xb5, 0x78, 0xfc,
- 0x46, 0xf8, 0x94, 0x9e, 0x07, 0xe2, 0x8a, 0xf7, 0xaa, 0x3b, 0x86, 0x63,
- 0x27, 0x5f, 0xd3, 0x9a, 0xd4, 0xa1, 0xa5, 0x6e, 0x6c, 0x97, 0x84, 0xb3,
- 0x29, 0x81, 0x5b, 0x78, 0x03, 0xe7, 0x12, 0xde, 0xaf, 0x66, 0x70, 0x90,
- 0x2b, 0xdf, 0xae, 0x71, 0x12, 0x90, 0x91, 0x58, 0x28, 0xdd, 0x6a, 0x4d,
- 0xf0, 0x74, 0xed, 0x94, 0xe8, 0x2e, 0x4f, 0x3e, 0x62, 0xd6, 0x75, 0xde,
- 0x2b, 0x61, 0xce, 0x7e, 0x76, 0x28, 0x3c, 0x60, 0xc6, 0x88, 0xb4, 0xb0,
- 0x21, 0x23, 0xc2, 0xab, 0xa3, 0x3b, 0xee, 0xc7, 0x58, 0xb2, 0xef, 0x82,
- 0xbf, 0x09, 0xef, 0xf1, 0x6d, 0x67, 0xdf, 0x95, 0x01, 0xbc, 0x1f, 0x1f,
- 0xbf, 0xfb, 0x1a, 0x1e, 0xdc, 0xef, 0x4f, 0xcf, 0x5f, 0x8f, 0xa9, 0x59,
- 0x16, 0x70, 0x36, 0x60, 0xe2, 0x63, 0x4e, 0xa8, 0xa3, 0x92, 0x73, 0xc9,
- 0x5d, 0xff, 0x51, 0xc8, 0x69, 0xe0, 0x50, 0x12, 0x30, 0xcc, 0x40, 0xe1,
- 0x61, 0xf4, 0x83, 0xee, 0x5b, 0x23, 0xa0, 0xc6, 0x2f, 0x17, 0xf1, 0xf4,
- 0x9a, 0x35, 0x74, 0x21, 0x56, 0x84, 0xda, 0x6d, 0x73, 0xce, 0xcc, 0x36,
- 0x2b, 0x5e, 0xdb, 0x55, 0x0e, 0x72, 0x44, 0x2b, 0x92, 0xad, 0x68, 0x35,
- 0xae, 0x02, 0xf3, 0x0c, 0xd1, 0xfa, 0xe5, 0x3c, 0xbe, 0x42, 0x87, 0xed,
- 0x63, 0x10, 0x74, 0xa6, 0xdd, 0x7f, 0x6a, 0x97, 0x7c, 0x6d, 0xa0, 0xbd,
- 0x63, 0x10, 0x00, 0x10, 0xd1, 0x00, 0xe9, 0xa0, 0x9e, 0x27, 0x91, 0x3a,
- 0xd9, 0x4f, 0x8f, 0x90, 0x1e, 0xae, 0x12, 0xdd, 0x2c, 0xa1, 0x84, 0xca,
- 0xbd, 0x82, 0x24, 0x43, 0x82, 0xf9, 0x30, 0x40, 0xa4, 0x11, 0xe5, 0x94,
- 0x5b, 0x0a, 0x8c, 0x40, 0xa5, 0x0f, 0x4b, 0xf4, 0x55, 0x6e, 0x64, 0xc9,
- 0x79, 0x30, 0x40, 0x53, 0x2a, 0x2d, 0xde, 0x4d, 0xc5, 0xe0, 0x1e, 0x97,
- 0xc4, 0xe3, 0x80, 0x95, 0x9e, 0xa1, 0xa3, 0xf8, 0x7a, 0x19, 0x1e, 0x55,
- 0xbe, 0xac, 0x68, 0x28, 0x31, 0x17, 0x57, 0x44, 0xc9, 0x60, 0x03, 0xcb,
- 0x26, 0x75, 0x4a, 0xb2, 0x9a, 0x7b, 0x16, 0xf6, 0x22, 0xad, 0xa4, 0xa5,
- 0xe4, 0x15, 0x38, 0xe8, 0x07, 0xbe, 0xbc, 0x04, 0xcb, 0x69, 0x43, 0x43,
- 0x0a, 0xfc, 0x3d, 0xe9, 0x4d, 0x97, 0x7c, 0xc7, 0x91, 0x10, 0x4f, 0x0c,
- 0x5c, 0x28, 0x47, 0x53, 0x70, 0x83, 0xfa, 0xac, 0xb5, 0x65, 0xb3, 0x2c,
- 0x1c, 0x69, 0x8e, 0x39, 0xb3, 0x37, 0xc3, 0xba, 0x15, 0xdc, 0x40, 0xe8,
- 0x91, 0xbb, 0x05, 0x3a, 0xf2, 0xf1, 0x63, 0x0f, 0xc8, 0x12, 0x2c, 0x9b,
- 0x04, 0xdb, 0xf9, 0xf7, 0x68, 0x8f, 0xb8, 0xa9, 0xb4, 0x2a, 0x93, 0xf9,
- 0xa5, 0x22, 0xe8, 0xc8, 0x15, 0xc2, 0xb3, 0x8c, 0x1b, 0x38, 0x3b, 0xec,
- 0x2f, 0xcd, 0x1c, 0xa8, 0x47, 0xae, 0xbc, 0xe4, 0x0a, 0x6c, 0x5d, 0x9e,
- 0x03, 0x49, 0xd6, 0x78, 0x88, 0x38, 0x45, 0xff, 0x24, 0x81, 0x5a, 0xae,
- 0xb9, 0x1a, 0xeb, 0xa8, 0x45, 0x18, 0xf3, 0xad, 0x63, 0x6b, 0xc7, 0xab,
- 0x75, 0xbf, 0x64, 0x34, 0x7c, 0x8e, 0x8a, 0xf0, 0xa5, 0x35, 0x63, 0x4b,
- 0xe3, 0x01, 0xf0, 0x47, 0xf2, 0x91, 0x93, 0x5a, 0x74, 0x6e, 0x5e, 0xc9,
- 0x73, 0x42, 0xbd, 0xce, 0x97, 0x5b, 0xc3, 0xe7, 0xe0, 0x85, 0xbc, 0xda,
- 0x8c, 0x91, 0xc5, 0x8a, 0x9a, 0x46, 0xe2, 0x8a, 0x18, 0x68, 0xaa, 0xa1,
- 0x2b, 0xbd, 0xab, 0x48, 0x17, 0x92, 0x6f, 0x76, 0x6f, 0xde, 0x3f, 0x38,
- 0x5f, 0x63, 0x51, 0x20, 0x21, 0x04, 0x07, 0x1d, 0x33, 0x29, 0xa1, 0x52,
- 0x48, 0x2d, 0x54, 0xb3, 0x36, 0xcb, 0xd5, 0xc4, 0x6f, 0x2c, 0xd3, 0x08,
- 0x82, 0x1c, 0xb9, 0x49, 0xf8, 0x9a, 0x71, 0x6a, 0x5c, 0x8c, 0xef, 0xaa,
- 0x05, 0x7a, 0x94, 0x2a, 0x74, 0x14, 0x31, 0x14, 0x24, 0x30, 0xae, 0x4a,
- 0x47, 0x39, 0xb4, 0x5a, 0x37, 0x7a, 0x21, 0x6e, 0x20, 0xfa, 0xb5, 0xcd,
- 0x6e, 0x94, 0xf3, 0xae, 0xe7, 0x37, 0x8f, 0xb3, 0x9a, 0xf6, 0x90, 0x4c,
- 0x5f, 0x9c, 0xdf, 0x0b, 0x37, 0x48, 0xb3, 0x87, 0x99, 0x8e, 0x0e, 0xe2,
- 0x93, 0x3a, 0xc6, 0x5c, 0x15, 0x2a, 0x06, 0x6e, 0x15, 0x1f, 0x7d, 0x28,
- 0x91, 0x1c, 0x48, 0x8a, 0x69, 0x24, 0x77, 0x98, 0x51, 0xd2, 0xad, 0x23,
- 0x0e, 0xbc, 0xa4, 0x7e, 0xee, 0x47, 0x5f, 0xc5, 0x65, 0x3a, 0x1d, 0x68,
- 0x95, 0x45, 0xad, 0xba, 0xc8, 0x6f, 0xf8, 0xe2, 0x7b, 0x9b, 0x92, 0xd6,
- 0xb3, 0x35, 0x8a, 0xbe, 0xb7, 0xba, 0x99, 0xa4, 0x43, 0x4a, 0x99, 0xb2,
- 0x74, 0x8a, 0xd2, 0xa8, 0x35, 0x1c, 0x21, 0xa5, 0xcf, 0x10, 0xb0, 0x07,
- 0x9d, 0xf8, 0xb2, 0x38, 0xd8, 0xd5, 0xb8, 0xbc, 0x71, 0x9e, 0x30, 0xec,
- 0x95, 0xb2, 0x22, 0xe0, 0x0c, 0x8a, 0x2c, 0x2d, 0x96, 0x81, 0x7c, 0xe5,
- 0xc2, 0x4b, 0xf0, 0xb7, 0x3b, 0xbe, 0x56, 0xed, 0x16, 0xd6, 0xd7, 0x52,
- 0xe3, 0x12, 0x2d, 0x7a, 0x84, 0xaf, 0x5f, 0x6e, 0xce, 0xb1, 0xa8, 0xe1,
- 0x90, 0x16, 0x8c, 0x97, 0x46, 0x19, 0xe8, 0xe9, 0xc5, 0xd1, 0xbf, 0x44,
- 0x07, 0x4d, 0xe7, 0x39, 0xdf, 0x4c, 0x35, 0xe0, 0xa0, 0x81, 0x27, 0x30,
- 0x8c, 0x5d, 0x42, 0x11, 0x33, 0x2d, 0x89, 0xca, 0xdb, 0xbf, 0xa1, 0x89,
- 0xcf, 0xde, 0x44, 0x5c, 0xe6, 0x1a, 0x59, 0x5d, 0xdd, 0x1b, 0x40, 0x3e,
- 0xbf, 0x06, 0x97, 0xc2, 0x9d, 0xaf, 0x02, 0x2b, 0xb9, 0xa3, 0x69, 0x2c,
- 0x91, 0xed, 0x0c, 0x0f, 0x46, 0x9b, 0x92, 0x09, 0x03, 0x45, 0x10, 0xb6,
- 0xc4, 0x0a, 0x0a, 0x00, 0x57, 0x5a, 0x41, 0xd5, 0x92, 0x0c, 0x2e, 0x29,
- 0x94, 0x17, 0x14, 0x94, 0x8d, 0x43, 0xa4, 0xb6, 0x0f, 0x7c, 0xe4, 0x3e,
- 0xd8, 0xc5, 0xa2, 0x57, 0xa0, 0x8c, 0xe5, 0x52, 0xf4, 0xa0, 0x3a, 0xc9,
- 0xda, 0xb1, 0x93, 0xdb, 0xec, 0xcc, 0xc2, 0x10, 0xb1, 0x11, 0x53, 0xe0,
- 0x20, 0xcd, 0xef, 0xc5, 0x6b, 0x8e, 0x3b, 0xd5, 0xb8, 0x66, 0x78, 0x31,
- 0x01, 0xd9, 0x0c, 0x78, 0x4a, 0xa8, 0x5a, 0xad, 0x75, 0x98, 0x24, 0xe8,
- 0x9b, 0x5a, 0xad, 0x87, 0xea, 0x23, 0x79, 0x07, 0xab, 0xca, 0xa3, 0x10,
- 0x18, 0xc1, 0x30, 0x55, 0xa0, 0x94, 0x0a, 0xad, 0x91, 0x15, 0x21, 0x6e,
- 0x10, 0x34, 0x71, 0xc3, 0xe3, 0xaa, 0xc1, 0x9e, 0x5c, 0x85, 0xa3, 0x20,
- 0x46, 0xf5, 0x8d, 0x83, 0x94, 0xd3, 0x66, 0xb9, 0x52, 0xe3, 0x34, 0x09,
- 0x32, 0x74, 0xb2, 0x7c, 0x23, 0xb8, 0xf9, 0x84, 0x7e, 0xf2, 0xd2, 0x78,
- 0xa2, 0xc0, 0x8d, 0x49, 0x91, 0xb6, 0x49, 0x22, 0x95, 0x13, 0xb8, 0xb8,
- 0x0e, 0x76, 0x11, 0x68, 0x9c, 0x7c, 0x02, 0x85, 0x32, 0x17, 0x20, 0xee,
- 0x0d, 0x4f, 0xdd, 0x7c, 0x07, 0xad, 0x9b, 0x27, 0xa7, 0xea, 0x32, 0xb9,
- 0x99, 0xbd, 0x5c, 0x44, 0x27, 0xd6, 0x53, 0x32, 0xad, 0x41, 0x09, 0xe3,
- 0x91, 0x8e, 0x9a, 0x77, 0x07, 0x92, 0x6d, 0xe6, 0xe4, 0x2c, 0xdb, 0xf4,
- 0x1a, 0x6e, 0x1e, 0xf3, 0x94, 0x59, 0xb4, 0xb8, 0xd7, 0xd4, 0x14, 0x95,
- 0x0d, 0x18, 0xe3, 0x01, 0x56, 0x89, 0xcf, 0x3f, 0x6f, 0xc9, 0x82, 0x1f,
- 0xdd, 0xd3, 0xfb, 0xf4, 0x75, 0x60, 0xfd, 0x98, 0x73, 0xa0, 0x09, 0x5b,
- 0x1b, 0x20, 0x87, 0x3a, 0x13, 0x48, 0x87, 0x86, 0x11, 0xc0, 0x80, 0x49,
- 0x8f, 0xce, 0x2f, 0xd3, 0xa2, 0xb2, 0x81, 0xe7, 0xfb, 0x1b, 0xa2, 0x5e,
- 0xcb, 0x40, 0xe3, 0x52, 0x02, 0x96, 0xd6, 0x28, 0x66, 0xc6, 0x26, 0x9b,
- 0xa3, 0x0d, 0xa4, 0x66, 0x92, 0xdc, 0x47, 0x7c, 0xa9, 0xb2, 0x12, 0x30,
- 0xce, 0xb5, 0x61, 0x5e, 0x64, 0x1d, 0x8c, 0xa3, 0x8e, 0x06, 0x1d, 0xb9,
- 0x02, 0x99, 0x9e, 0x47, 0xbc, 0x5f, 0x3f, 0x9c, 0xf7, 0xbf, 0x66, 0x38,
- 0x07, 0xd1, 0x83, 0x29, 0x1a, 0x5a, 0xfe, 0x94, 0x39, 0x7e, 0x69, 0xc9,
- 0x69, 0x39, 0xa8, 0xda, 0xe4, 0x1e, 0x59, 0x23, 0xd4, 0xb8, 0x9d, 0xd4,
- 0xeb, 0x96, 0xb5, 0x0d, 0x13, 0x59, 0x2e, 0x4f, 0x43, 0xa9, 0xe1, 0xf6,
- 0x07, 0x36, 0x94, 0x4f, 0x1d, 0xae, 0xc1, 0x5f, 0x5a, 0x0e, 0x56, 0x23,
- 0xbd, 0x42, 0xd3, 0x9e, 0x76, 0x47, 0x3b, 0xa1, 0x7c, 0xe5, 0x92, 0xa1,
- 0x0a, 0x40, 0xaa, 0x56, 0x80, 0x96, 0xf2, 0x22, 0x0a, 0xcf, 0x04, 0xd9,
- 0x81, 0x8d, 0xd7, 0xf4, 0xb3, 0x5d, 0x81, 0x99, 0xa6, 0x93, 0xa4, 0xb5,
- 0x77, 0x18, 0x41, 0x27, 0x59, 0x2c, 0x91, 0x34, 0x62, 0x1c, 0x30, 0x14,
- 0x02, 0x70, 0x8e, 0x9e, 0xfa, 0x23, 0xf5, 0xcc, 0x6d, 0xb7, 0x8e, 0x51,
- 0x72, 0x0a, 0xb4, 0x9c, 0xb9, 0x84, 0xf5, 0x43, 0xf8, 0x4c, 0x12, 0x69,
- 0xa9, 0x5a, 0x9b, 0xdc, 0x76, 0x58, 0x4f, 0x34, 0x65, 0x7a, 0xc6, 0x65,
- 0x1b, 0x5d, 0xae, 0x0a, 0x30, 0x5e, 0x05, 0x15, 0x54, 0x34, 0x1a, 0x6e,
- 0x95, 0xe3, 0x73, 0x3b, 0x38, 0x0d, 0xd2, 0xb7, 0x13, 0x14, 0x28, 0xe7,
- 0x73, 0x2d, 0xd6, 0x71, 0x20, 0x67, 0x68, 0xf9, 0x38, 0xef, 0x7b, 0x73,
- 0xe2, 0x19, 0xb5, 0x3b, 0x4f, 0x69, 0x40, 0x7d, 0xc0, 0xb2, 0x58, 0xf5,
- 0x65, 0xe5, 0x85, 0x46, 0xc2, 0x0e, 0x61, 0xbc, 0x5e, 0xd8, 0xb8, 0x5d,
- 0x8d, 0xaa, 0xc9, 0x74, 0xe5, 0x1a, 0x18, 0x44, 0xc3, 0xff, 0xa5, 0x2b,
- 0xc3, 0xe2, 0x39, 0xc7, 0x8e, 0xa1, 0x04, 0xc5, 0x32, 0x40, 0xe8, 0xd4,
- 0x14, 0x3f, 0x30, 0x7c, 0x0e, 0x0c, 0xb5, 0x79, 0xb8, 0xbc, 0x5b, 0xcb,
- 0x11, 0x02, 0xff, 0x7b, 0x13, 0x62, 0xb1, 0xd6, 0x2a, 0x4e, 0x2b, 0xab,
- 0x90, 0xe6, 0x36, 0x5c, 0x4d, 0x0b, 0x89, 0x15, 0x6c, 0x0d, 0xd8, 0x5d,
- 0x64, 0x5f, 0x71, 0xd5, 0xbf, 0xc3, 0x3c, 0x0e, 0x97, 0xd5, 0x57, 0x0d,
- 0xd3, 0x91, 0x0a, 0xf1, 0x3b, 0x53, 0x86, 0xe4, 0xb7, 0x0e, 0xe9, 0x85,
- 0xe1, 0x7b, 0x35, 0x67, 0x7c, 0x29, 0x3d, 0x8c, 0x60, 0x76, 0x97, 0x1e,
- 0xce, 0x50, 0x2b, 0xd9, 0x1e, 0xd8, 0xd7, 0x97, 0x38, 0x29, 0xb6, 0xa7,
- 0x96, 0x9c, 0xfa, 0xaa, 0xc8, 0xf3, 0x96, 0x34, 0xcb, 0x85, 0x76, 0x31,
- 0x85, 0xa1, 0x38, 0x74, 0xf8, 0x90, 0xc9, 0xaf, 0xf2, 0xae, 0x2a, 0x8f,
- 0xf7, 0xdc, 0xc4, 0x48, 0xa2, 0xee, 0xd5, 0xf6, 0xb2, 0xb7, 0xbb, 0x2d,
- 0x83, 0xd9, 0x96, 0x06, 0x44, 0xae, 0x53, 0x92, 0xf4, 0x41, 0x20, 0x06,
- 0x40, 0x14, 0xde, 0x5c, 0x9c, 0x23, 0xc0, 0xc1, 0x3b, 0x0b, 0x8d, 0x3c,
- 0x86, 0x77, 0x8d, 0xaf, 0x26, 0xba, 0x6b, 0xa5, 0xba, 0x50, 0xae, 0xfb,
- 0xb3, 0xe1, 0x37, 0x68, 0xe0, 0x44, 0x3e, 0x22, 0xa5, 0xe1, 0x6d, 0xa8,
- 0x35, 0x25, 0x0a, 0x97, 0xc9, 0x15, 0x51, 0x5d, 0x0e, 0x1d, 0x1f, 0x74,
- 0xf1, 0xaf, 0x13, 0x45, 0x9f, 0x1f, 0xbc, 0xfb, 0xfa, 0x08, 0x92, 0x80,
- 0x03, 0x52, 0x4c, 0x99, 0xda, 0x67, 0xab, 0x29, 0x54, 0x21, 0x5a, 0x31,
- 0xc4, 0xbe, 0x01, 0x5a, 0x58, 0xf8, 0x79, 0x0a, 0xa8, 0x2b, 0x21, 0x5e,
- 0x6c, 0xb7, 0x46, 0xb4, 0x6d, 0x44, 0x66, 0x51, 0x85, 0x04, 0xc1, 0x0a,
- 0x23, 0x23, 0xa5, 0xe7, 0x80, 0x36, 0x98, 0x2c, 0x63, 0x45, 0xa8, 0x89,
- 0x43, 0x08, 0x13, 0xb5, 0xb3, 0x8c, 0xea, 0x67, 0x71, 0xc3, 0xd2, 0x5b,
- 0x9c, 0x4e, 0x5f, 0x40, 0xa7, 0x1f, 0x85, 0x56, 0x35, 0x81, 0xd8, 0xd8,
- 0xdd, 0xd9, 0xf1, 0xb5, 0x63, 0x3c, 0x14, 0x4b, 0x8b, 0x5b, 0x16, 0xd1,
- 0xce, 0xf0, 0xc5, 0x8b, 0x75, 0x8c, 0xd0, 0x35, 0x0a, 0x3c, 0x94, 0x67,
- 0x9f, 0xdc, 0xe6, 0x90, 0x1f, 0x5d, 0xd7, 0x66, 0x87, 0x46, 0x83, 0x82,
- 0xf5, 0x1a, 0x4d, 0x58, 0x3a, 0xa9, 0x45, 0x2d, 0x3c, 0xe2, 0xac, 0x81,
- 0xf3, 0x2c, 0x73, 0x6a, 0x0d, 0x2f, 0xe5, 0x86, 0xc7, 0x7e, 0x06, 0x70,
- 0x86, 0x19, 0x83, 0x96, 0x1c, 0x50, 0x98, 0x3a, 0x1f, 0xee, 0x27, 0x2d,
- 0x4c, 0xa0, 0xc0, 0xaf, 0x59, 0xa2, 0xcb, 0xf6, 0x6c, 0x4c, 0x24, 0x78,
- 0x7f, 0xc6, 0xf6, 0xbf, 0xe3, 0x77, 0x5f, 0x8b, 0x39, 0x84, 0x74, 0x7b,
- 0xd8, 0xd2, 0xb7, 0x1b, 0x9a, 0xfe, 0x7b, 0x29, 0x02, 0xc3, 0xe1, 0xa4,
- 0x08, 0xde, 0x90, 0x0a, 0xae, 0x69, 0x26, 0xac, 0xc0, 0xef, 0xfe, 0x1a,
- 0x5b, 0xe5, 0x45, 0x34, 0x0c, 0x84, 0x13, 0xad, 0x00, 0xc3, 0x92, 0xc9,
- 0xe2, 0xde, 0x34, 0x23, 0xed, 0x01, 0xad, 0x9b, 0x67, 0xc6, 0x35, 0x2b,
- 0x7a, 0xae, 0xa8, 0xe7, 0xa0, 0xa0, 0x96, 0x6c, 0xd2, 0xd1, 0xa5, 0x74,
- 0x83, 0xf3, 0xdd, 0x90, 0x44, 0x3e, 0x6d, 0x28, 0x35, 0x53, 0x67, 0xbd,
- 0x66, 0x20, 0x4b, 0x56, 0x03, 0xb3, 0xfd, 0x34, 0xcd, 0x90, 0x52, 0x95,
- 0x3c, 0xe4, 0xea, 0xbc, 0xdb, 0x28, 0x30, 0x9a, 0xe7, 0xff, 0xfd, 0x71,
- 0x3e, 0x30, 0x42, 0x3e, 0xa8, 0x7c, 0x53, 0x65, 0x33, 0x6f, 0xd3, 0xd0,
- 0x11, 0x77, 0x3a, 0x42, 0x2e, 0xe4, 0x7d, 0xe9, 0x3a, 0xee, 0xee, 0x4e,
- 0xde, 0xb7, 0xa5, 0xe9, 0x38, 0x00, 0x2c, 0xd2, 0x6a, 0x8d, 0x20, 0x97,
- 0x7a, 0x6a, 0xba, 0x0c, 0x4b, 0xe1, 0xe0, 0x1c, 0x69, 0x5d, 0x2c, 0xd9,
- 0x88, 0x34, 0xbf, 0x1d, 0x05, 0x84, 0x98, 0x86, 0x80, 0x28, 0x8f, 0xcb,
- 0xeb, 0x06, 0x81, 0xa1, 0x97, 0x0a, 0xc1, 0xcc, 0x2c, 0x8d, 0x85, 0x1a,
- 0xc5, 0xb8, 0xf2, 0x40, 0xd6, 0xc5, 0x2a, 0x53, 0xde, 0xc7, 0xfa, 0x16,
- 0x0d, 0x3e, 0x2e, 0xaf, 0x51, 0x92, 0xd9, 0x99, 0xa2, 0xda, 0xe2, 0x15,
- 0xba, 0x57, 0x54, 0x66, 0x92, 0xa7, 0x44, 0x98, 0x82, 0x70, 0x5d, 0x5b,
- 0x8a, 0xfa, 0x0a, 0x6c, 0x6c, 0xb0, 0x11, 0x7e, 0x9b, 0x4d, 0xf1, 0xe3,
- 0xf6, 0x02, 0x9a, 0x2d, 0xfd, 0x41, 0x7b, 0xbc, 0xf7, 0x31, 0x3c, 0x62,
- 0x99, 0x0f, 0xac, 0x27, 0x9f, 0x7a, 0xe2, 0x44, 0x7e, 0xef, 0xf0, 0x2b,
- 0xe2, 0xd0, 0x05, 0x8c, 0xac, 0x93, 0xd4, 0xeb, 0xd6, 0xb4, 0x50, 0x17,
- 0x80, 0xd1, 0x07, 0x9a, 0x19, 0x50, 0x20, 0x1a, 0xdb, 0x05, 0x85, 0x1d,
- 0xb8, 0xb2, 0x82, 0x74, 0x66, 0xec, 0x3d, 0x84, 0x2c, 0xf1, 0xe5, 0x8e,
- 0xe6, 0x92, 0x87, 0xc2, 0xb2, 0x85, 0xa8, 0xbf, 0x70, 0x75, 0x4b, 0xf6,
- 0x1c, 0xfa, 0xc4, 0x0c, 0x65, 0x80, 0x02, 0x76, 0x50, 0x21, 0xaa, 0x7d,
- 0x7c, 0xc1, 0x66, 0x04, 0x5c, 0x7d, 0xa6, 0x8f, 0x7e, 0x77, 0x74, 0xfe,
- 0xd5, 0xe9, 0xf8, 0x88, 0xf6, 0xe3, 0xf5, 0xd1, 0x57, 0xef, 0x99, 0x6b,
- 0x31, 0x75, 0x88, 0xe9, 0x19, 0xc0, 0xc0, 0x62, 0xff, 0x02, 0xdc, 0x19,
- 0x87, 0xeb, 0x81, 0x4c, 0x45, 0x0e, 0x1a, 0x18, 0x15, 0x9a, 0x88, 0x27,
- 0xf8, 0xba, 0xf3, 0x44, 0x6c, 0x95, 0x29, 0x92, 0x10, 0x3c, 0x06, 0x38,
- 0xc7, 0xfa, 0x71, 0xcd, 0x76, 0xa8, 0x97, 0x7a, 0x94, 0xa4, 0x08, 0x65,
- 0xb9, 0xef, 0x8d, 0x9a, 0xb7, 0x62, 0x99, 0xd6, 0xc3, 0xe7, 0xeb, 0xcd,
- 0xa3, 0x02, 0x03, 0x88, 0xf7, 0xd0, 0xc9, 0xd1, 0x0a, 0xd7, 0x39, 0xcf,
- 0xe5, 0xd6, 0x44, 0x69, 0x74, 0x6e, 0x1b, 0xf7, 0x78, 0x5a, 0xe1, 0x0a,
- 0x17, 0x85, 0x42, 0xcb, 0xb4, 0x97, 0x42, 0xdc, 0xc4, 0xde, 0x24, 0xed,
- 0x7c, 0xae, 0xd7, 0x01, 0xb8, 0x5f, 0x99, 0x08, 0x4e, 0x9c, 0xdc, 0xda,
- 0xea, 0x0f, 0x97, 0x40, 0x5f, 0x2d, 0xa8, 0xb2, 0xa9, 0x4a, 0xf0, 0x1d,
- 0xe6, 0xa9, 0x05, 0x3e, 0xa5, 0x90, 0xb9, 0x95, 0xf9, 0xc3, 0xca, 0x07,
- 0x21, 0x39, 0x4a, 0x3a, 0xb7, 0xeb, 0x59, 0xcf, 0x85, 0xcc, 0x94, 0xed,
- 0x1c, 0x22, 0x08, 0x18, 0x22, 0x33, 0xa0, 0x01, 0xeb, 0x45, 0xbe, 0xbd,
- 0x80, 0x22, 0x67, 0x97, 0xf3, 0x09, 0x02, 0x15, 0x72, 0x7d, 0xe9, 0xf3,
- 0x3a, 0xb2, 0x58, 0x90, 0x4d, 0x24, 0xcc, 0x55, 0xc3, 0xf0, 0x78, 0x4b,
- 0xe1, 0x12, 0x10, 0xe2, 0x6b, 0x9f, 0x77, 0x69, 0x5d, 0xaa, 0x9e, 0xf3,
- 0x19, 0x0d, 0x1c, 0x27, 0x1b, 0x1b, 0x1b, 0xaf, 0x8f, 0x2e, 0x0e, 0x8e,
- 0x4f, 0x8e, 0x5e, 0x47, 0xc7, 0xef, 0xde, 0x9c, 0x9e, 0xbf, 0x3d, 0xb8,
- 0xd0, 0x68, 0x8c, 0xd7, 0xce, 0x22, 0xe7, 0xc1, 0x9c, 0x14, 0x8c, 0x3d,
- 0xb0, 0xd6, 0x81, 0x84, 0x69, 0x17, 0xaf, 0x14, 0x78, 0x5f, 0x96, 0x21,
- 0xa9, 0xad, 0xc1, 0x46, 0xa4, 0x51, 0x1c, 0x1e, 0xfd, 0x8a, 0xe5, 0x82,
- 0x6d, 0xe7, 0x7b, 0x1f, 0xd9, 0x72, 0x9a, 0x19, 0x0d, 0x55, 0x18, 0x1f,
- 0x6c, 0x2a, 0x66, 0x1b, 0xc8, 0xd5, 0x3c, 0xd1, 0x3b, 0x91, 0xb7, 0x53,
- 0xd2, 0xff, 0x41, 0x93, 0xc3, 0xe3, 0xed, 0x3a, 0xe4, 0x30, 0x0c, 0x2d,
- 0x06, 0x86, 0x16, 0x03, 0x0e, 0x25, 0x04, 0xdd, 0xb8, 0xcc, 0x11, 0x54,
- 0x12, 0xb6, 0xe9, 0xe0, 0x24, 0xb0, 0xa3, 0x8c, 0x1e, 0x8c, 0xd8, 0x1f,
- 0x7c, 0x12, 0xee, 0x2f, 0xe3, 0x39, 0x6c, 0x70, 0x11, 0x90, 0x4a, 0x31,
- 0x99, 0x18, 0x3f, 0xb5, 0xa4, 0x9d, 0x72, 0x67, 0x1d, 0x88, 0xae, 0x8e,
- 0x61, 0x9b, 0x77, 0x4e, 0x8b, 0x06, 0x86, 0x4d, 0x6d, 0x3a, 0x7f, 0x3d,
- 0x49, 0x4c, 0xc3, 0x63, 0x2d, 0x26, 0xc9, 0x6b, 0xc1, 0x80, 0xed, 0xfc,
- 0x33, 0x33, 0x44, 0x45, 0x17, 0x3e, 0xea, 0x35, 0xfe, 0x94, 0xa6, 0xac,
- 0x2e, 0x2a, 0x3d, 0x6d, 0xfe, 0xdc, 0x1a, 0x66, 0xcb, 0xf0, 0x35, 0x3d,
- 0x34, 0x5b, 0x2d, 0x96, 0x5a, 0x8f, 0xd8, 0x24, 0x6a, 0xd8, 0xf2, 0x6c,
+ 0x7b, 0x5f, 0x23, 0x47, 0x92, 0x36, 0xfa, 0x3f, 0x9f, 0xa2, 0x96, 0x39,
+ 0xb3, 0x82, 0x19, 0x49, 0x5c, 0xfa, 0x62, 0x37, 0xd3, 0xed, 0x35, 0xa6,
+ 0x69, 0x9b, 0x35, 0xdd, 0xf0, 0x02, 0x6d, 0x7b, 0x5e, 0xdb, 0xbf, 0xfe,
+ 0x95, 0xa4, 0x02, 0x6a, 0x90, 0x54, 0x9a, 0xaa, 0x12, 0x34, 0xb3, 0x3b,
+ 0xfb, 0xd9, 0x4f, 0xc4, 0x13, 0x11, 0x99, 0x59, 0x95, 0x25, 0x68, 0x7b,
+ 0xc7, 0x73, 0xf6, 0x3d, 0xe7, 0x78, 0x77, 0x1a, 0x90, 0xaa, 0xf2, 0x1a,
+ 0x19, 0x19, 0xd7, 0x27, 0x92, 0xe4, 0xb1, 0xff, 0x3e, 0xe0, 0x7f, 0x1f,
+ 0xe8, 0x3f, 0xfa, 0xb9, 0x96, 0x24, 0xa7, 0x65, 0xf1, 0x97, 0x6c, 0x5c,
+ 0x77, 0x3f, 0xfb, 0xe1, 0xc3, 0x7f, 0x26, 0xf2, 0x7f, 0xf4, 0xce, 0x4f,
+ 0xf4, 0x73, 0xed, 0xc1, 0xb6, 0xb7, 0x12, 0xff, 0xc2, 0x7f, 0x7e, 0xd8,
+ 0x4c, 0x1e, 0x7b, 0xe1, 0x3f, 0x93, 0x0d, 0xbc, 0xf0, 0x41, 0x7b, 0x78,
+ 0xc9, 0xbf, 0x7f, 0xf8, 0xf0, 0x70, 0x27, 0x3f, 0xf1, 0xa8, 0xf8, 0x9f,
+ 0x2d, 0x7e, 0xef, 0xa7, 0x0f, 0xfc, 0x2b, 0x7d, 0xb2, 0xb6, 0xf6, 0x6e,
+ 0xff, 0xed, 0xa1, 0xbd, 0x3a, 0x5e, 0x96, 0xd3, 0x64, 0x90, 0xd4, 0x65,
+ 0x3a, 0xaf, 0x2e, 0xb3, 0x32, 0x49, 0x93, 0xf7, 0x67, 0xc7, 0x6b, 0x6b,
+ 0xe7, 0x7f, 0x7e, 0x77, 0x72, 0x7a, 0x7e, 0x74, 0xde, 0x78, 0xec, 0xc7,
+ 0x62, 0x51, 0xe7, 0xc5, 0xbc, 0xfa, 0x39, 0xf9, 0x91, 0x1e, 0x1a, 0x0e,
+ 0x87, 0x3f, 0xaf, 0xad, 0xbd, 0x3e, 0x3c, 0x3f, 0x38, 0x3b, 0x3a, 0xbd,
+ 0x38, 0x3a, 0x79, 0xd7, 0x78, 0x36, 0xc9, 0xab, 0x84, 0x1a, 0xab, 0x8b,
+ 0x62, 0x4a, 0xff, 0xf8, 0xf6, 0x27, 0x69, 0x9d, 0x26, 0x97, 0x65, 0x31,
+ 0x4b, 0x8a, 0x92, 0xbf, 0x48, 0x93, 0x2a, 0x2b, 0x6f, 0xb3, 0xb2, 0x9f,
+ 0x2c, 0xab, 0x7c, 0x7e, 0x95, 0x14, 0xf3, 0x2c, 0x29, 0x2e, 0x93, 0xfa,
+ 0x3a, 0xb3, 0xe6, 0xaa, 0xe5, 0x62, 0x51, 0x94, 0x75, 0x36, 0x49, 0x16,
+ 0x65, 0x51, 0x17, 0xe3, 0x62, 0x5a, 0x25, 0x1b, 0xaf, 0x8f, 0x0e, 0x2e,
+ 0xfa, 0xc9, 0x9b, 0xa3, 0xe3, 0x43, 0xfa, 0xf7, 0xe2, 0x14, 0xff, 0x9c,
+ 0xf7, 0x93, 0xaf, 0x4f, 0x4e, 0xbf, 0x39, 0x3c, 0xeb, 0x27, 0xdf, 0x5c,
+ 0xf0, 0x67, 0xfc, 0x2f, 0x7d, 0x98, 0x1c, 0xbd, 0xdd, 0x3f, 0xed, 0x5b,
+ 0x73, 0xfc, 0x07, 0x7f, 0x78, 0xfc, 0x9a, 0x3e, 0x94, 0x1f, 0xfc, 0xe7,
+ 0xe9, 0xc9, 0xe9, 0x13, 0xfd, 0xc1, 0x7f, 0x9e, 0x5d, 0xbc, 0xa5, 0x6f,
+ 0xcf, 0x2e, 0xce, 0xe9, 0xdf, 0xf3, 0x03, 0xfe, 0x07, 0xbd, 0x9c, 0xbf,
+ 0xfd, 0x0a, 0xff, 0x9c, 0xbb, 0xe6, 0xce, 0xdf, 0xca, 0xe7, 0xe8, 0xe9,
+ 0xe2, 0xf0, 0xf8, 0xdd, 0xe1, 0x45, 0x92, 0xce, 0x27, 0xc9, 0x05, 0x3d,
+ 0xbf, 0x39, 0x4c, 0x2e, 0xae, 0xb3, 0x64, 0x5c, 0xcc, 0x66, 0xfc, 0x11,
+ 0xad, 0xc8, 0x24, 0xab, 0xf2, 0xab, 0x39, 0x4d, 0x85, 0x66, 0x7e, 0x57,
+ 0x94, 0x37, 0x49, 0x72, 0x97, 0xd7, 0xd7, 0xc5, 0xb2, 0xb6, 0xe6, 0x96,
+ 0xb4, 0x1a, 0x49, 0x3e, 0xaf, 0xb3, 0x32, 0x1d, 0xf3, 0x5a, 0x0f, 0xd7,
+ 0x1a, 0xab, 0x5a, 0x5c, 0xd2, 0x1a, 0x56, 0xb4, 0x68, 0xa3, 0x65, 0x35,
+ 0x2d, 0xd2, 0x09, 0x2f, 0x15, 0xbd, 0x72, 0xb9, 0xa4, 0x45, 0x2e, 0xf3,
+ 0xf1, 0x4d, 0x95, 0x4c, 0xf3, 0x9b, 0x8c, 0x17, 0xea, 0xe3, 0xbd, 0x2d,
+ 0x5c, 0x5f, 0x1a, 0x4d, 0x97, 0xb4, 0xa6, 0xf3, 0x81, 0x35, 0x57, 0xe7,
+ 0xe3, 0x94, 0x3b, 0xc0, 0xca, 0x25, 0xcb, 0x05, 0xb7, 0x26, 0x2b, 0x96,
+ 0x2c, 0x8a, 0x8a, 0x5e, 0x3a, 0x3f, 0x3f, 0xa6, 0x91, 0xcf, 0xe7, 0x19,
+ 0xc6, 0x51, 0xf5, 0xe9, 0x8f, 0xe2, 0x26, 0xcf, 0xe8, 0x97, 0xcb, 0x7c,
+ 0x9a, 0x25, 0xb2, 0xa3, 0xae, 0x39, 0xde, 0xda, 0xa4, 0xcc, 0xaa, 0xe5,
+ 0x2c, 0xa3, 0xd5, 0x7b, 0x9b, 0xd5, 0xe9, 0x34, 0x9f, 0xdf, 0xd0, 0xaf,
+ 0x3c, 0xf1, 0x59, 0x51, 0x66, 0xc3, 0x64, 0xbf, 0x4a, 0xee, 0x8b, 0x25,
+ 0x4d, 0x78, 0x3a, 0xa5, 0x3d, 0xcf, 0x92, 0x51, 0x36, 0x2d, 0xee, 0xfa,
+ 0xbc, 0xd3, 0xc9, 0x7c, 0x39, 0x1b, 0x51, 0x03, 0xc5, 0xa5, 0x6f, 0x2e,
+ 0xad, 0x97, 0xd4, 0x9c, 0x3c, 0x3d, 0x4b, 0x69, 0x4e, 0xf4, 0x6e, 0x99,
+ 0x5c, 0x67, 0x34, 0xe7, 0x6a, 0x91, 0xcf, 0xff, 0xa5, 0xb9, 0x2e, 0xb4,
+ 0xb4, 0x8b, 0xe2, 0x2e, 0x2b, 0x69, 0x65, 0x47, 0xf7, 0x09, 0x2d, 0xc2,
+ 0x48, 0x88, 0xf0, 0x92, 0x88, 0x2c, 0x49, 0xa9, 0x09, 0x47, 0x80, 0x83,
+ 0x32, 0x9b, 0xa6, 0x4c, 0x4c, 0xae, 0x8f, 0x21, 0x6d, 0x62, 0xe6, 0xa8,
+ 0x4d, 0x5f, 0xdd, 0x78, 0xb2, 0x89, 0x97, 0x27, 0x34, 0x93, 0x7c, 0x5a,
+ 0xd1, 0x36, 0xf0, 0xb1, 0xd0, 0x67, 0x78, 0x53, 0xf9, 0x98, 0x10, 0x6d,
+ 0xde, 0xcf, 0xeb, 0xf4, 0x23, 0xba, 0x57, 0xda, 0x1c, 0x4c, 0xb2, 0x45,
+ 0x36, 0x9f, 0x64, 0xf3, 0x7a, 0x98, 0xfc, 0xb9, 0x58, 0xf6, 0xa8, 0xef,
+ 0xcb, 0x9c, 0xd6, 0x20, 0xd5, 0xa6, 0xa8, 0x67, 0x22, 0x82, 0x71, 0x99,
+ 0x2f, 0x82, 0xad, 0x28, 0xe6, 0xb4, 0xe7, 0xc9, 0xd9, 0x9b, 0x83, 0xe4,
+ 0xc9, 0x8b, 0xcf, 0x9f, 0xfb, 0x3d, 0xa7, 0x06, 0x92, 0x71, 0x3a, 0xa7,
+ 0x19, 0x67, 0xe3, 0xfc, 0xf2, 0x3e, 0x99, 0x2d, 0xa7, 0x75, 0xbe, 0xa0,
+ 0xd5, 0xa7, 0xce, 0x2b, 0x3e, 0x40, 0x8b, 0xb4, 0xac, 0x2b, 0x26, 0x02,
+ 0x7c, 0x80, 0xb9, 0xdf, 0x95, 0x79, 0xcd, 0x07, 0x09, 0xdf, 0xd1, 0x08,
+ 0xb3, 0xba, 0xb2, 0xe6, 0x98, 0xd6, 0xa8, 0x9f, 0x11, 0xd1, 0x16, 0x2d,
+ 0x6d, 0x5a, 0x51, 0xa7, 0x7b, 0x6b, 0x9e, 0x87, 0x5c, 0xd7, 0xf5, 0x62,
+ 0x6f, 0x6b, 0xab, 0xca, 0xeb, 0x6c, 0xf8, 0x1f, 0x74, 0x0e, 0xfb, 0xf5,
+ 0x5d, 0xd1, 0xaf, 0xaf, 0xcb, 0x2c, 0xfb, 0xfb, 0x90, 0x68, 0xd8, 0x3d,
+ 0x49, 0xfd, 0xde, 0xeb, 0xc0, 0xae, 0xb2, 0x9a, 0x7a, 0xf8, 0xeb, 0x32,
+ 0x9b, 0x73, 0x8b, 0x34, 0x8e, 0x74, 0xba, 0xb8, 0x4e, 0x69, 0x3b, 0x33,
+ 0xa2, 0x46, 0x3e, 0xd9, 0x44, 0x30, 0x3c, 0x2a, 0x39, 0xdb, 0x3f, 0xfe,
+ 0x1c, 0x77, 0x7a, 0x89, 0x3e, 0xe9, 0xdf, 0xa1, 0xbe, 0x95, 0xd2, 0x6a,
+ 0x53, 0x6f, 0x5b, 0x4c, 0x65, 0x3f, 0xee, 0x0c, 0x76, 0xb6, 0xb7, 0x7f,
+ 0x1e, 0xd6, 0x1f, 0xeb, 0x4f, 0x7e, 0x65, 0x7b, 0xdb, 0xbf, 0xc4, 0x4f,
+ 0x6f, 0xf0, 0xac, 0x93, 0x29, 0x11, 0x0e, 0x0f, 0xe1, 0x6f, 0x59, 0x59,
+ 0x54, 0x9b, 0x9d, 0x8d, 0x4d, 0xb3, 0x9a, 0x8e, 0x5d, 0xd0, 0x52, 0x3a,
+ 0xf8, 0x5b, 0xb3, 0xeb, 0x77, 0x59, 0x05, 0xca, 0xf1, 0x33, 0x4e, 0xd2,
+ 0x92, 0xa8, 0xb7, 0xa8, 0x3d, 0x93, 0xea, 0xd3, 0xd1, 0xac, 0xdd, 0xfa,
+ 0xd0, 0xc9, 0xa3, 0xa7, 0x89, 0xbd, 0xa5, 0x53, 0xe6, 0x6c, 0x55, 0x32,
+ 0xcf, 0x3e, 0xba, 0xb3, 0x4e, 0x3c, 0x20, 0x4b, 0xc7, 0xd7, 0x49, 0x41,
+ 0x47, 0xa0, 0xec, 0xd8, 0x88, 0x74, 0x7e, 0x3f, 0x2c, 0xca, 0xab, 0xad,
+ 0xb4, 0x1c, 0x5f, 0xe7, 0xb7, 0xb4, 0x18, 0x2f, 0x5e, 0x3c, 0x1f, 0xd0,
+ 0x3f, 0x2f, 0x7e, 0xde, 0xba, 0x2d, 0xa6, 0xb4, 0x36, 0x4f, 0x7f, 0xde,
+ 0xe2, 0x4d, 0xfe, 0x8f, 0xb4, 0x3f, 0xea, 0x8f, 0xff, 0x3e, 0xbc, 0xae,
+ 0x67, 0xd3, 0x95, 0xa4, 0x43, 0x8d, 0x25, 0xe9, 0xac, 0x58, 0xce, 0x6b,
+ 0x47, 0x2e, 0x44, 0x75, 0x75, 0xc0, 0x9e, 0xe8, 0xc0, 0xd2, 0x29, 0x65,
+ 0xe2, 0x66, 0x2a, 0xe2, 0x73, 0x47, 0x47, 0xd4, 0x1f, 0xc8, 0x7a, 0x7c,
+ 0x4d, 0x73, 0x27, 0xf2, 0x49, 0x75, 0xfe, 0x75, 0x9e, 0xf2, 0xd1, 0x24,
+ 0x0e, 0xc1, 0x1c, 0x0b, 0x4d, 0x49, 0x67, 0x39, 0x3d, 0x57, 0x94, 0x93,
+ 0xac, 0x6c, 0x12, 0x32, 0x86, 0xe3, 0xc7, 0x93, 0xd0, 0x5a, 0x2e, 0xa8,
+ 0xf3, 0x25, 0x33, 0x3b, 0x9c, 0x35, 0x6e, 0x81, 0x4e, 0xe9, 0x15, 0x2d,
+ 0x13, 0x2d, 0x0d, 0x93, 0x16, 0xaf, 0xdc, 0x7d, 0xf2, 0x8e, 0xf6, 0x4f,
+ 0x38, 0x44, 0x40, 0x81, 0xb2, 0x5b, 0x1d, 0xab, 0x76, 0x77, 0x77, 0xb7,
+ 0x9a, 0x94, 0xf6, 0x76, 0x22, 0x6a, 0x0a, 0x5e, 0xeb, 0xa2, 0x80, 0xbd,
+ 0xdd, 0xe6, 0x0b, 0xdf, 0x13, 0x13, 0xf5, 0xe4, 0x4c, 0x03, 0xf9, 0x8f,
+ 0xbf, 0x07, 0xf4, 0x70, 0xc7, 0xdf, 0xe6, 0xf3, 0xdb, 0xe2, 0x86, 0xd6,
+ 0x00, 0xb7, 0x5c, 0xda, 0x58, 0xdf, 0x84, 0xf9, 0xc4, 0x6c, 0x51, 0xbb,
+ 0xeb, 0x83, 0x09, 0x85, 0x3e, 0x1a, 0xa5, 0xa3, 0xe9, 0x7d, 0x72, 0x9d,
+ 0xde, 0x66, 0x3c, 0xf5, 0x05, 0x51, 0x10, 0x2f, 0x06, 0xb1, 0xf5, 0x29,
+ 0xf8, 0x8c, 0x1e, 0xdc, 0x49, 0xb1, 0x1c, 0xd1, 0xe1, 0xff, 0xeb, 0xb2,
+ 0xa8, 0x65, 0x8d, 0xd2, 0xdb, 0x22, 0x9f, 0x34, 0xee, 0xca, 0xeb, 0x8c,
+ 0x19, 0x0e, 0x77, 0x8c, 0x4b, 0x84, 0x18, 0x1e, 0x8f, 0x14, 0x47, 0x20,
+ 0xaf, 0xf9, 0x3a, 0x22, 0x56, 0x45, 0xcb, 0x52, 0x24, 0xc9, 0x55, 0xc1,
+ 0xf4, 0x0b, 0x06, 0x09, 0x02, 0xa4, 0xfd, 0xb9, 0x4e, 0xf9, 0xd6, 0xa1,
+ 0x15, 0x70, 0x14, 0x5a, 0x66, 0xe0, 0x95, 0xd8, 0xb4, 0x74, 0xda, 0x97,
+ 0xdb, 0x85, 0xdf, 0xc9, 0x3e, 0xa6, 0x33, 0x66, 0x44, 0xbd, 0x7f, 0xed,
+ 0xf5, 0x93, 0xde, 0xbf, 0xf5, 0xc0, 0xe7, 0x7b, 0x7f, 0xe8, 0xf9, 0x2d,
+ 0x27, 0x71, 0xe9, 0x36, 0x9f, 0xf0, 0x45, 0x41, 0x33, 0x39, 0x3a, 0xbd,
+ 0x7d, 0x9e, 0xfc, 0x8d, 0xef, 0x76, 0xe2, 0x85, 0xd9, 0x47, 0xa3, 0x17,
+ 0x9b, 0x1b, 0xbd, 0x9d, 0x10, 0x53, 0x4c, 0x17, 0x7c, 0xc9, 0x67, 0xe5,
+ 0x98, 0x88, 0x2b, 0xbd, 0x22, 0x72, 0xa2, 0xbb, 0xd2, 0x9a, 0xe3, 0xf6,
+ 0xf9, 0x15, 0x99, 0x16, 0x31, 0xb0, 0x64, 0x9e, 0xce, 0x88, 0x5e, 0x8f,
+ 0x79, 0x44, 0xf9, 0x3c, 0xde, 0xd0, 0x1f, 0x2f, 0xb3, 0xcf, 0xb7, 0xf7,
+ 0xf6, 0x9e, 0xfc, 0x7e, 0xf7, 0x59, 0x56, 0x5f, 0x6f, 0xff, 0xbc, 0xe5,
+ 0x1e, 0x39, 0xba, 0xc4, 0xb2, 0x1b, 0x25, 0xda, 0x20, 0xe8, 0x16, 0x76,
+ 0x5c, 0x9c, 0xde, 0xa7, 0xdf, 0xb3, 0xcb, 0xfc, 0x63, 0xdf, 0xe4, 0x19,
+ 0x39, 0x11, 0x29, 0x51, 0x08, 0xed, 0x1f, 0x1f, 0x5e, 0x6b, 0xee, 0x6a,
+ 0x99, 0x55, 0xb4, 0x92, 0x77, 0xd7, 0x69, 0x9d, 0xb8, 0x06, 0x64, 0x67,
+ 0x67, 0xf9, 0xd5, 0x75, 0x9d, 0xdc, 0xa5, 0x7c, 0x19, 0x1c, 0xd5, 0xd2,
+ 0x04, 0xdf, 0xc2, 0x74, 0x05, 0x5c, 0xa6, 0xc4, 0xcb, 0x79, 0x0f, 0x71,
+ 0xe5, 0x8e, 0xbc, 0x04, 0x50, 0x13, 0xc5, 0xcb, 0x86, 0x78, 0x71, 0x67,
+ 0x94, 0x56, 0x7c, 0xa6, 0xe6, 0x74, 0x74, 0x6b, 0xba, 0xc3, 0x97, 0xfc,
+ 0xd7, 0x35, 0xdd, 0xd2, 0x58, 0x03, 0x1d, 0x28, 0x2e, 0xb2, 0x37, 0xbc,
+ 0x9d, 0xbc, 0x37, 0xee, 0x72, 0xa1, 0x4d, 0xea, 0xeb, 0x36, 0xbb, 0x37,
+ 0x2a, 0x3a, 0x7b, 0xc4, 0x37, 0x1c, 0x65, 0xac, 0x33, 0xfb, 0x5b, 0x97,
+ 0x79, 0x62, 0x8c, 0x69, 0xc5, 0x17, 0xb9, 0x5c, 0xd7, 0x34, 0xf8, 0x60,
+ 0xb2, 0xb4, 0x68, 0xe9, 0x0d, 0x8b, 0x0c, 0x2d, 0xc1, 0x04, 0xaf, 0x4d,
+ 0x0a, 0x22, 0x32, 0x1a, 0x2d, 0xb1, 0x49, 0x9e, 0x19, 0x33, 0x3f, 0xac,
+ 0x0a, 0x88, 0x9c, 0xda, 0xe4, 0x0f, 0xf3, 0x9a, 0xef, 0x00, 0x48, 0x99,
+ 0x34, 0x5e, 0x5a, 0x14, 0x08, 0x8a, 0xc4, 0x42, 0x83, 0xf9, 0xe3, 0xfa,
+ 0xa2, 0x67, 0x93, 0x5b, 0x92, 0x22, 0x48, 0x60, 0xcc, 0xdc, 0x5b, 0xb8,
+ 0x6f, 0xc7, 0x2c, 0xbb, 0x4c, 0xe9, 0xbc, 0x8c, 0x8b, 0xb2, 0x64, 0x89,
+ 0x9c, 0x77, 0x70, 0x24, 0x2c, 0x6e, 0x96, 0xd1, 0x35, 0x1f, 0x2e, 0x67,
+ 0xce, 0x17, 0x0e, 0xb1, 0x1a, 0x92, 0x1b, 0xc0, 0x4c, 0xe8, 0x7e, 0x07,
+ 0x37, 0xc6, 0xc4, 0x31, 0x3a, 0x6e, 0x7b, 0x3c, 0xce, 0x16, 0x75, 0xd5,
+ 0x35, 0x27, 0xdb, 0x70, 0x1a, 0x4e, 0x99, 0xf1, 0xca, 0x87, 0x42, 0x11,
+ 0xd6, 0xd5, 0x5d, 0xca, 0x90, 0x8b, 0x4c, 0xce, 0x20, 0x39, 0xa9, 0x72,
+ 0xab, 0x56, 0x83, 0x36, 0x88, 0xa3, 0x61, 0xcd, 0x67, 0x3c, 0x50, 0x7e,
+ 0xb8, 0x92, 0x93, 0x0a, 0xce, 0xc9, 0x1b, 0x29, 0x92, 0xb0, 0xf4, 0xcb,
+ 0x97, 0x0a, 0xad, 0xa7, 0x6b, 0x9c, 0x7a, 0x75, 0x7b, 0xca, 0xdd, 0x57,
+ 0xa4, 0x43, 0xd0, 0x4d, 0x3b, 0xa9, 0xae, 0x49, 0x38, 0xaa, 0xf4, 0x64,
+ 0xe7, 0x33, 0xa2, 0x99, 0x5b, 0xde, 0xdf, 0x45, 0x96, 0x4d, 0x86, 0xc9,
+ 0xc9, 0x25, 0x33, 0xd8, 0x92, 0x06, 0x5d, 0xe3, 0x6b, 0xe6, 0xf9, 0xb4,
+ 0x6e, 0x13, 0x08, 0xd9, 0xee, 0x68, 0xc9, 0x50, 0x02, 0xe6, 0xcd, 0x94,
+ 0x46, 0x8b, 0x9d, 0x30, 0x97, 0x9b, 0x36, 0x2f, 0x08, 0x9c, 0x43, 0x62,
+ 0xe4, 0x3c, 0xbc, 0x51, 0x96, 0x80, 0x12, 0x47, 0x59, 0x7d, 0x97, 0x65,
+ 0xae, 0xb9, 0x2a, 0xa3, 0x4b, 0x89, 0x37, 0x4d, 0x24, 0x33, 0x30, 0x43,
+ 0x5e, 0xda, 0xd3, 0xb3, 0x93, 0xaf, 0xcf, 0x0e, 0xcf, 0xcf, 0x93, 0xb7,
+ 0x87, 0x17, 0x87, 0x67, 0x8d, 0x95, 0x9e, 0x17, 0xe5, 0x0c, 0x3b, 0x3a,
+ 0xc9, 0xab, 0xc5, 0x34, 0xbd, 0xe7, 0xad, 0xa6, 0x99, 0x5c, 0x95, 0x7c,
+ 0xb2, 0x66, 0x19, 0x5f, 0x10, 0x93, 0x25, 0x38, 0x59, 0x52, 0x10, 0x7f,
+ 0x48, 0x55, 0x22, 0x65, 0x66, 0x02, 0x31, 0x76, 0x7e, 0xe5, 0x57, 0x9a,
+ 0x38, 0x8e, 0xde, 0x73, 0x7c, 0xd1, 0xb9, 0xfd, 0x60, 0xd1, 0x10, 0xca,
+ 0x47, 0xdf, 0x7f, 0x26, 0xcb, 0x54, 0x61, 0x4e, 0x44, 0xb3, 0xf9, 0x0c,
+ 0xcc, 0x8e, 0x7e, 0x7a, 0x69, 0x30, 0xbb, 0x24, 0x51, 0x98, 0xee, 0xbe,
+ 0x16, 0x69, 0xb8, 0x71, 0x62, 0x5d, 0xa1, 0xd3, 0xb0, 0x92, 0x43, 0x9d,
+ 0xd3, 0x58, 0x67, 0xf9, 0x9c, 0x08, 0x8c, 0x08, 0x52, 0x4f, 0x39, 0x53,
+ 0x02, 0x8d, 0xf5, 0x52, 0x78, 0x82, 0xae, 0x48, 0x53, 0x59, 0xa2, 0x97,
+ 0x69, 0xb3, 0x89, 0x0b, 0xba, 0xe9, 0x61, 0x50, 0x44, 0x9a, 0xcc, 0xaf,
+ 0x47, 0xcc, 0x9a, 0x58, 0x63, 0x20, 0xd1, 0x2e, 0xeb, 0xec, 0xcd, 0xdd,
+ 0x27, 0xf4, 0x06, 0x8d, 0x8d, 0x6e, 0x13, 0xbe, 0x20, 0xae, 0xb3, 0xf6,
+ 0x2a, 0xd2, 0x21, 0x02, 0x6f, 0xb9, 0xcb, 0x2b, 0x1c, 0xaa, 0xbb, 0x62,
+ 0x39, 0x25, 0xf9, 0x9c, 0x1f, 0x58, 0x2e, 0xf0, 0x02, 0x75, 0xb5, 0xf0,
+ 0xa7, 0x67, 0x96, 0x7f, 0xe4, 0x55, 0x6f, 0xb7, 0x42, 0x43, 0xa3, 0x3f,
+ 0x17, 0xb4, 0x09, 0x32, 0x9c, 0x61, 0x9b, 0xb7, 0x82, 0x6b, 0x44, 0x7b,
+ 0xc8, 0xa7, 0x05, 0xec, 0xee, 0xf4, 0xe4, 0xfc, 0x82, 0xef, 0xce, 0xd3,
+ 0xf7, 0x17, 0xd4, 0x10, 0x5d, 0x9e, 0x55, 0x4d, 0xdb, 0xc9, 0x2f, 0xce,
+ 0x33, 0x28, 0x47, 0xd6, 0x1c, 0xed, 0x5a, 0x8e, 0x23, 0x0e, 0xd9, 0xc0,
+ 0xba, 0x94, 0x31, 0x8a, 0xf6, 0xc8, 0xc4, 0x6b, 0xba, 0xa3, 0xdc, 0x7e,
+ 0xfe, 0xa5, 0x64, 0xe3, 0x8b, 0x4d, 0xda, 0xee, 0x81, 0x6b, 0xee, 0x47,
+ 0x7e, 0x1a, 0xb7, 0x76, 0x95, 0xcf, 0xf2, 0x69, 0x1a, 0x48, 0x28, 0xca,
+ 0x89, 0x98, 0xae, 0xdd, 0x79, 0x1c, 0x13, 0xdb, 0xc5, 0xa0, 0xbd, 0x8a,
+ 0xc4, 0x2b, 0x88, 0xd3, 0xec, 0x37, 0x6a, 0xc2, 0x17, 0x29, 0x64, 0xc0,
+ 0x45, 0xee, 0x16, 0x8e, 0x77, 0x8c, 0x8f, 0x79, 0x63, 0x99, 0xda, 0xbb,
+ 0x16, 0x2d, 0x1b, 0x73, 0x72, 0xe8, 0xe0, 0x6e, 0xe1, 0xd6, 0x47, 0x69,
+ 0xb9, 0xee, 0x38, 0x98, 0x28, 0xc6, 0xd4, 0xe8, 0xd5, 0x92, 0x06, 0x2f,
+ 0xab, 0xda, 0x4f, 0x06, 0xbf, 0xe3, 0x91, 0xb3, 0x7e, 0xe4, 0x4e, 0x34,
+ 0xc9, 0xdd, 0xf3, 0xc9, 0x70, 0xed, 0x04, 0x7a, 0xb9, 0x53, 0xe2, 0x4f,
+ 0x44, 0x7d, 0x4f, 0x84, 0xfd, 0x8b, 0x3e, 0x90, 0x88, 0xc6, 0x4d, 0xd2,
+ 0xd7, 0x1d, 0xd1, 0x60, 0x4a, 0x4b, 0x48, 0xcc, 0xe4, 0x2d, 0x0f, 0x5d,
+ 0x3b, 0x53, 0x9d, 0x1f, 0xfb, 0x44, 0xcb, 0x4a, 0xb3, 0x72, 0x57, 0xf2,
+ 0x64, 0x92, 0xf3, 0x77, 0x44, 0xec, 0xc4, 0xa8, 0x97, 0x19, 0x84, 0x5b,
+ 0x9d, 0xe3, 0xcc, 0xcf, 0x8d, 0xb5, 0xa5, 0xea, 0x9a, 0x84, 0xe3, 0x64,
+ 0x5d, 0x18, 0xca, 0x80, 0xbb, 0x59, 0xe7, 0x85, 0x9d, 0xb5, 0x3a, 0xa1,
+ 0xb9, 0x4c, 0xf4, 0xb2, 0x52, 0x01, 0x83, 0xb6, 0x6f, 0x96, 0xde, 0x87,
+ 0x92, 0x28, 0x58, 0x0e, 0x46, 0x5e, 0x94, 0xee, 0xde, 0xa6, 0x9b, 0x61,
+ 0xc1, 0x32, 0x81, 0xb2, 0x22, 0xf0, 0x74, 0x9c, 0x9f, 0x4a, 0x86, 0xd6,
+ 0x27, 0xa1, 0x87, 0x9f, 0xbc, 0xba, 0xb6, 0x47, 0x83, 0xfb, 0x21, 0xa5,
+ 0xb9, 0x31, 0x8f, 0x63, 0xb5, 0x6d, 0x62, 0xec, 0xab, 0x28, 0x45, 0x79,
+ 0x9f, 0x16, 0xcc, 0x75, 0xd6, 0x45, 0xf4, 0xd2, 0x91, 0x63, 0xe8, 0x4c,
+ 0x58, 0x03, 0xec, 0x2a, 0xff, 0x69, 0xcd, 0xb9, 0x61, 0xeb, 0x72, 0x55,
+ 0x8f, 0x0e, 0xcd, 0x2f, 0xd4, 0x39, 0x16, 0x89, 0x6e, 0x80, 0x8a, 0xc9,
+ 0xca, 0xd6, 0x1d, 0xd4, 0x46, 0x1c, 0xbb, 0x57, 0xcb, 0xe1, 0x80, 0x20,
+ 0xdf, 0x5a, 0xf9, 0x0a, 0xb2, 0xb5, 0xf2, 0x63, 0x37, 0x33, 0x9a, 0xd1,
+ 0x24, 0x27, 0x96, 0x46, 0x7c, 0xd5, 0x76, 0xc6, 0xeb, 0x1b, 0x1d, 0xb2,
+ 0xdc, 0x7d, 0x24, 0xa4, 0xb3, 0xea, 0x1c, 0x72, 0x56, 0x1b, 0xd3, 0xe0,
+ 0x84, 0x76, 0xea, 0x18, 0xf3, 0x18, 0xdc, 0x26, 0x7c, 0x1a, 0x48, 0xfa,
+ 0xe5, 0xa3, 0x31, 0x38, 0x39, 0xbe, 0x0d, 0xa8, 0x9a, 0x15, 0xc4, 0x39,
+ 0x5f, 0xb7, 0x7d, 0x28, 0xe1, 0xa3, 0xa2, 0x20, 0x3d, 0xcc, 0x4f, 0x8d,
+ 0x95, 0xa7, 0x6c, 0xce, 0xcc, 0x4a, 0x77, 0x74, 0x30, 0x90, 0xaf, 0xd0,
+ 0xf2, 0x3d, 0x29, 0x00, 0xe9, 0x55, 0x9a, 0x3b, 0x7a, 0x53, 0xc6, 0xe6,
+ 0x9e, 0x9d, 0x17, 0xfa, 0x38, 0xef, 0x14, 0x5f, 0xe4, 0xca, 0x43, 0x96,
+ 0xb8, 0xef, 0x32, 0x9e, 0x17, 0x31, 0x01, 0x9c, 0x64, 0x6d, 0x16, 0xd2,
+ 0x8f, 0x35, 0x37, 0x82, 0xbc, 0xc7, 0xa2, 0x13, 0x38, 0x21, 0x04, 0x21,
+ 0x6a, 0x72, 0x7d, 0x98, 0x7c, 0x53, 0xdc, 0x65, 0x30, 0x49, 0x41, 0x4c,
+ 0xcd, 0xd9, 0xa8, 0x42, 0x12, 0xcd, 0x5d, 0x96, 0xcc, 0x48, 0x82, 0xa2,
+ 0xd5, 0xc4, 0x25, 0x8a, 0xcf, 0x68, 0x9c, 0x5e, 0xf4, 0x2e, 0xee, 0xd0,
+ 0xad, 0x9b, 0x84, 0xdb, 0xc9, 0x4b, 0x39, 0x11, 0xc9, 0x06, 0x2e, 0xe9,
+ 0x31, 0x2f, 0xd6, 0xa2, 0xf6, 0xb3, 0x70, 0xeb, 0x41, 0x6c, 0xb3, 0x0a,
+ 0x0e, 0x17, 0xdf, 0x58, 0x34, 0x82, 0xe4, 0xb3, 0xe1, 0xce, 0x8b, 0xe1,
+ 0xf6, 0x90, 0x45, 0xea, 0xec, 0x36, 0x2f, 0x96, 0x15, 0xf5, 0x8e, 0xa1,
+ 0x24, 0xc1, 0x9b, 0x59, 0xc9, 0xa2, 0x76, 0x71, 0x75, 0x35, 0x95, 0x0b,
+ 0x7c, 0xab, 0xb8, 0xbc, 0x0c, 0xee, 0xf8, 0x32, 0x5b, 0x88, 0x28, 0xcf,
+ 0x8b, 0xa3, 0x87, 0x4e, 0x78, 0x5c, 0x78, 0xb9, 0xeb, 0x72, 0x7a, 0xfd,
+ 0x78, 0xf0, 0x3b, 0xda, 0xe8, 0x81, 0x71, 0xa3, 0x01, 0x31, 0xa3, 0x96,
+ 0xc9, 0xf1, 0x2d, 0x9b, 0x66, 0xc2, 0x2b, 0xd1, 0xb3, 0x2e, 0x11, 0xd8,
+ 0x72, 0x90, 0x96, 0xfb, 0x90, 0x5a, 0x48, 0x1c, 0x3b, 0x0b, 0x0c, 0x3e,
+ 0x01, 0x91, 0x11, 0x73, 0x9a, 0x4f, 0xd2, 0x92, 0x34, 0x69, 0xb6, 0x1b,
+ 0xd1, 0xc3, 0x7c, 0xda, 0x52, 0x21, 0xf7, 0xbe, 0xf0, 0x3c, 0x4f, 0x62,
+ 0x83, 0x3d, 0x1e, 0x60, 0xa8, 0x55, 0x1b, 0xd7, 0xa1, 0xab, 0xa0, 0x92,
+ 0x91, 0xa9, 0x28, 0x9a, 0x7a, 0xc9, 0xc4, 0x33, 0x6f, 0xd3, 0x3b, 0x2f,
+ 0x8b, 0xe9, 0xb4, 0xb8, 0xe3, 0x4b, 0x84, 0x85, 0xc9, 0x60, 0x5b, 0x6d,
+ 0x3b, 0xaa, 0xaa, 0x18, 0xe7, 0x62, 0x38, 0xd2, 0x45, 0x87, 0xae, 0x0c,
+ 0x2b, 0x27, 0xbf, 0x5a, 0xe9, 0xed, 0xce, 0x62, 0x6b, 0x45, 0x9c, 0x24,
+ 0x71, 0x7a, 0x3f, 0x4c, 0x45, 0xad, 0xe6, 0xfc, 0xa5, 0x27, 0x47, 0x52,
+ 0x59, 0x31, 0x8d, 0x24, 0x67, 0x7d, 0xec, 0xce, 0xf4, 0xf6, 0x7c, 0xec,
+ 0x59, 0x63, 0x70, 0x54, 0xfb, 0xad, 0xe6, 0xaa, 0x25, 0xb5, 0x41, 0xeb,
+ 0x3d, 0xc9, 0xd9, 0x3e, 0x48, 0xda, 0x93, 0x98, 0xfc, 0x44, 0xd6, 0xa7,
+ 0xd7, 0xc6, 0xcb, 0xaa, 0x26, 0x41, 0xd3, 0x7a, 0x95, 0xa6, 0xa8, 0x5f,
+ 0x22, 0xc9, 0x7d, 0xa6, 0xb3, 0x56, 0x73, 0x44, 0x74, 0x9f, 0x0d, 0x9f,
+ 0x3c, 0x1f, 0x6e, 0x07, 0x84, 0xb0, 0xcd, 0xeb, 0xcc, 0xaa, 0xd5, 0xce,
+ 0x70, 0xbb, 0xf5, 0xf8, 0x06, 0xdf, 0xe9, 0x9b, 0xb6, 0xe4, 0x8d, 0x35,
+ 0xc7, 0x6d, 0x6f, 0xe7, 0x80, 0xde, 0x0c, 0x6f, 0x32, 0xb9, 0xb3, 0x73,
+ 0x6f, 0x9e, 0x72, 0xbd, 0xd3, 0x0e, 0xcf, 0x21, 0x0e, 0xca, 0x7d, 0x48,
+ 0xf7, 0xf9, 0x9e, 0xb4, 0xb4, 0x33, 0xdc, 0x09, 0xb6, 0x5e, 0x87, 0xb3,
+ 0xd3, 0x3d, 0x9c, 0x98, 0x00, 0x5a, 0x83, 0xd9, 0x31, 0xa1, 0x59, 0x24,
+ 0x25, 0xd7, 0x6f, 0xab, 0x39, 0x53, 0xd5, 0xf4, 0x45, 0x5b, 0x32, 0x5d,
+ 0xa4, 0x27, 0x8d, 0x45, 0xc2, 0x88, 0x76, 0x3f, 0x61, 0x79, 0x40, 0x26,
+ 0x39, 0x69, 0x59, 0xdc, 0x2f, 0x6d, 0x88, 0xdf, 0x1a, 0x59, 0x15, 0x0c,
+ 0x75, 0x57, 0x06, 0xd8, 0x41, 0x3a, 0xb8, 0x58, 0x70, 0x31, 0xf0, 0xc8,
+ 0x97, 0x74, 0x6f, 0x95, 0x53, 0x68, 0x4d, 0x66, 0xf8, 0x24, 0x46, 0x42,
+ 0xfc, 0x2d, 0x9f, 0xd6, 0x4a, 0x90, 0x62, 0x9d, 0xe2, 0xbe, 0x86, 0xed,
+ 0xd1, 0x3d, 0x30, 0x1b, 0xe2, 0x86, 0xf3, 0xc5, 0xbc, 0xf5, 0xc2, 0x6b,
+ 0xe1, 0xc2, 0x2a, 0x6a, 0xbf, 0x3b, 0x7d, 0x47, 0x33, 0x3b, 0x3e, 0xe7,
+ 0x9b, 0x8f, 0x54, 0x53, 0x59, 0x21, 0x7c, 0x4a, 0xcb, 0x6a, 0xbc, 0xdd,
+ 0x8b, 0xc2, 0x24, 0x05, 0xb7, 0x9a, 0x8b, 0x47, 0x6c, 0x06, 0x01, 0x36,
+ 0x40, 0xd3, 0xb7, 0x65, 0x4a, 0x5a, 0x1b, 0xe6, 0xaa, 0xb3, 0xa8, 0xb8,
+ 0xf9, 0xa1, 0xf4, 0x1c, 0xad, 0x0e, 0xa4, 0x03, 0x28, 0x83, 0xae, 0xe5,
+ 0xe6, 0xbb, 0xb2, 0xb2, 0xbc, 0x2a, 0xf3, 0xec, 0xaa, 0xa8, 0xf9, 0x48,
+ 0xdb, 0x67, 0xf4, 0xcc, 0xa0, 0xd5, 0x1c, 0x56, 0x0d, 0x03, 0x02, 0x67,
+ 0x12, 0xfd, 0x4c, 0x55, 0x11, 0xde, 0x6b, 0xd2, 0xb4, 0x88, 0xab, 0x81,
+ 0x1b, 0xac, 0x3d, 0xb4, 0xb0, 0xcf, 0xa3, 0x85, 0x4d, 0xa7, 0x2b, 0x57,
+ 0x96, 0xbb, 0xda, 0x3f, 0xa6, 0xe9, 0xf1, 0xba, 0x06, 0xcb, 0x8a, 0xcf,
+ 0x82, 0x65, 0x85, 0xb9, 0xd7, 0x16, 0x76, 0xf5, 0xca, 0x62, 0x69, 0x3f,
+ 0x79, 0x6d, 0xb9, 0x13, 0xe9, 0xaa, 0x7d, 0x2c, 0x2b, 0xd5, 0xf6, 0x3e,
+ 0x65, 0x6d, 0x83, 0xc5, 0x95, 0x4f, 0x93, 0xdd, 0x88, 0x65, 0x2d, 0x7e,
+ 0x9b, 0xc5, 0xdd, 0x61, 0x46, 0x55, 0x4f, 0xab, 0xdb, 0x88, 0x2f, 0xd0,
+ 0xa4, 0x37, 0xd9, 0x42, 0xc2, 0x86, 0xba, 0x90, 0x2f, 0xf0, 0x32, 0x7b,
+ 0xb6, 0xf0, 0x51, 0x8c, 0x78, 0x36, 0x01, 0x67, 0x24, 0x49, 0xa3, 0x73,
+ 0x38, 0x2b, 0x6a, 0x79, 0x59, 0x86, 0x3e, 0xf4, 0x46, 0x57, 0x6e, 0xd5,
+ 0xdf, 0xcd, 0x3a, 0x9c, 0xe1, 0x76, 0xdf, 0xff, 0xbe, 0xd3, 0x66, 0xe1,
+ 0x7c, 0x07, 0xbb, 0x6f, 0xb1, 0x86, 0x24, 0x27, 0xd4, 0x65, 0x01, 0x83,
+ 0x51, 0x63, 0x88, 0xb8, 0x15, 0x89, 0x33, 0x8e, 0x49, 0x87, 0x23, 0x1e,
+ 0xb9, 0x91, 0x37, 0xbc, 0x65, 0x26, 0x4b, 0xd2, 0x06, 0x8f, 0xd2, 0xf1,
+ 0x0d, 0xdf, 0x44, 0xb9, 0xda, 0xa1, 0x6d, 0x9b, 0xe4, 0xb6, 0x20, 0xdd,
+ 0xf6, 0x36, 0x63, 0x8f, 0x92, 0x75, 0xb4, 0x19, 0xb0, 0xd6, 0x5d, 0x5e,
+ 0xc4, 0xaa, 0x9a, 0xde, 0xee, 0x7e, 0xea, 0x22, 0x72, 0x87, 0x36, 0xc2,
+ 0xdd, 0x78, 0x09, 0xf5, 0x82, 0x5b, 0xb1, 0x88, 0x78, 0xdb, 0x2f, 0xe3,
+ 0x79, 0x41, 0xb7, 0x7c, 0x3e, 0xb3, 0x1e, 0xf2, 0x90, 0x33, 0xb0, 0xb4,
+ 0x4f, 0x4f, 0xdf, 0xae, 0x3c, 0xae, 0x43, 0xfd, 0x3a, 0x67, 0xe7, 0xd1,
+ 0x24, 0x83, 0x99, 0x88, 0x0e, 0xd0, 0x04, 0xce, 0x21, 0xba, 0x7e, 0x32,
+ 0x6a, 0x33, 0x10, 0xba, 0x07, 0x4f, 0x6c, 0xaa, 0x4f, 0x7e, 0xcd, 0x54,
+ 0x9f, 0xfc, 0x13, 0xa6, 0xfa, 0x64, 0xe5, 0x54, 0xfd, 0x2c, 0x9e, 0xf2,
+ 0x2c, 0xf2, 0xc5, 0xed, 0xd3, 0xb6, 0x18, 0xc4, 0x37, 0x9c, 0xca, 0xa3,
+ 0x75, 0xe3, 0x46, 0xa4, 0x2b, 0xa4, 0x98, 0xde, 0x66, 0x2a, 0x24, 0xd0,
+ 0x07, 0x47, 0xa7, 0xb7, 0x4f, 0x59, 0xec, 0x64, 0x39, 0x8d, 0xed, 0x41,
+ 0x2c, 0xe5, 0x76, 0x51, 0x29, 0xab, 0xba, 0xa1, 0xda, 0xc0, 0x06, 0x4b,
+ 0xb6, 0xef, 0x06, 0xa3, 0x79, 0xae, 0xa3, 0x79, 0xde, 0x35, 0x9a, 0x4f,
+ 0x1f, 0xce, 0xf3, 0x60, 0x38, 0xbf, 0x70, 0x34, 0x4f, 0x83, 0xd1, 0xa4,
+ 0x3c, 0x9a, 0x74, 0xc1, 0x6e, 0xb9, 0xf6, 0x16, 0x93, 0x62, 0xbf, 0xc5,
+ 0x9e, 0xdd, 0x4d, 0xb3, 0xeb, 0xab, 0x8b, 0x63, 0xee, 0x3c, 0xa2, 0x90,
+ 0xff, 0xd9, 0x01, 0xa9, 0x43, 0x95, 0x76, 0x54, 0xcb, 0x6d, 0x4b, 0xaf,
+ 0x69, 0xc9, 0x5e, 0x0b, 0x75, 0x90, 0x06, 0x52, 0x2e, 0xfd, 0x8f, 0xb6,
+ 0xdb, 0x79, 0xe6, 0xd8, 0x12, 0xcf, 0x2a, 0xbf, 0x2a, 0xf3, 0xa0, 0x0b,
+ 0x7e, 0xa7, 0x2d, 0x79, 0x14, 0x59, 0xc5, 0x6a, 0x5f, 0xf6, 0x31, 0x67,
+ 0x87, 0x6c, 0xae, 0x06, 0x64, 0x52, 0xf3, 0x92, 0xb1, 0x18, 0xe6, 0x87,
+ 0xec, 0x94, 0x02, 0x55, 0x89, 0x85, 0x11, 0x83, 0x4d, 0x2e, 0xa7, 0xe9,
+ 0x55, 0xc7, 0xd5, 0x98, 0x5f, 0xcd, 0x0b, 0x75, 0x90, 0x56, 0x44, 0x75,
+ 0xf0, 0x68, 0x2b, 0x21, 0x56, 0xc4, 0x45, 0xe6, 0xe3, 0xe9, 0x12, 0x2e,
+ 0xb2, 0x13, 0x9a, 0xe0, 0xf9, 0xf9, 0x37, 0x21, 0x3b, 0xd8, 0xe7, 0x15,
+ 0x64, 0x91, 0x72, 0x90, 0x5e, 0xb1, 0x74, 0xf9, 0x52, 0x7e, 0x54, 0x35,
+ 0xf3, 0xea, 0x2f, 0xba, 0xe5, 0x9d, 0x73, 0xd5, 0x21, 0x61, 0xe7, 0xe7,
+ 0x57, 0xf7, 0x83, 0x77, 0x78, 0xfd, 0x2a, 0xbf, 0x8e, 0x72, 0x47, 0xe8,
+ 0xa1, 0x68, 0x73, 0x32, 0x1e, 0x2b, 0xf1, 0xb2, 0x09, 0x6b, 0x3d, 0xb0,
+ 0x5c, 0x26, 0x07, 0x5f, 0x1f, 0xf1, 0x34, 0xd3, 0x7c, 0x2a, 0x66, 0x35,
+ 0x9d, 0x76, 0x9e, 0x4d, 0x59, 0x63, 0xc2, 0x9a, 0xc1, 0xf1, 0x99, 0x84,
+ 0x66, 0x7a, 0xfd, 0x6f, 0xfd, 0x6d, 0xf1, 0x37, 0x5a, 0xc5, 0x74, 0xeb,
+ 0xe9, 0x70, 0x7b, 0x9d, 0x45, 0x78, 0xba, 0xac, 0xb2, 0xf9, 0xb8, 0x60,
+ 0x4f, 0xc5, 0x68, 0x9a, 0xce, 0x6f, 0x2a, 0x51, 0xba, 0x44, 0x13, 0xe1,
+ 0xb1, 0xf6, 0xe9, 0xf8, 0x95, 0x65, 0xb1, 0x9c, 0x4f, 0x3a, 0xb6, 0x5c,
+ 0xa7, 0x83, 0x23, 0xaf, 0xe6, 0x52, 0xb8, 0x67, 0x88, 0x64, 0xca, 0x1b,
+ 0x33, 0xcb, 0xf2, 0x95, 0x00, 0xa7, 0x0b, 0x6f, 0x1d, 0xc6, 0xe5, 0xc4,
+ 0xfd, 0x56, 0x73, 0x83, 0x6f, 0x20, 0x66, 0x13, 0xd9, 0xb0, 0x3b, 0x5c,
+ 0xce, 0x49, 0x61, 0x46, 0xdc, 0xe8, 0x16, 0x3c, 0xba, 0x94, 0xa9, 0xeb,
+ 0x83, 0x76, 0x43, 0x9b, 0xe2, 0x01, 0xbe, 0x22, 0x0e, 0xf6, 0x69, 0x5a,
+ 0xd5, 0x30, 0xf4, 0x18, 0x05, 0xf1, 0x83, 0xa1, 0x28, 0x9d, 0xce, 0xef,
+ 0x39, 0x40, 0xe0, 0x53, 0x44, 0xe9, 0xcb, 0xfc, 0x8a, 0x38, 0xa8, 0x58,
+ 0xb8, 0x10, 0x53, 0x60, 0xa1, 0x04, 0xac, 0x9b, 0x5d, 0x17, 0x20, 0x30,
+ 0x92, 0x69, 0xb3, 0xe9, 0x65, 0xd7, 0x79, 0x35, 0xe5, 0x1c, 0xfa, 0xab,
+ 0x30, 0x63, 0x0c, 0x2c, 0x38, 0x0a, 0xec, 0x80, 0x4e, 0xc6, 0xd3, 0x34,
+ 0x9f, 0x55, 0x0d, 0xf1, 0x75, 0xd8, 0xc5, 0x4d, 0xd8, 0xfc, 0xca, 0xef,
+ 0x8f, 0xd8, 0xa4, 0x5e, 0x56, 0x6c, 0x2a, 0xe1, 0x0d, 0x49, 0x4d, 0xa2,
+ 0x16, 0x83, 0xf5, 0x75, 0x36, 0xbe, 0x01, 0xd9, 0x05, 0x66, 0xc4, 0x36,
+ 0x47, 0x95, 0x55, 0xc7, 0x82, 0x2d, 0x39, 0x9c, 0x80, 0x44, 0x0f, 0x76,
+ 0xca, 0xe5, 0xf3, 0xc9, 0x72, 0x8c, 0x63, 0xcb, 0x96, 0x11, 0x12, 0xc7,
+ 0xca, 0x94, 0xc5, 0x9b, 0x5a, 0xc2, 0x37, 0x40, 0x17, 0x03, 0x22, 0x82,
+ 0x45, 0xe7, 0xe8, 0xe0, 0xdc, 0x10, 0x99, 0xb4, 0xc1, 0x0e, 0x2a, 0x75,
+ 0x05, 0xc0, 0xca, 0x6e, 0x9a, 0x5e, 0x73, 0x35, 0x5b, 0xcd, 0xc9, 0xda,
+ 0xf6, 0xe9, 0xba, 0xc9, 0xe9, 0xf6, 0x36, 0xff, 0xf2, 0xa4, 0x50, 0x52,
+ 0x1a, 0x90, 0x6e, 0x5e, 0xe5, 0x63, 0x31, 0x4a, 0xe5, 0x57, 0x19, 0x33,
+ 0x0c, 0x16, 0x34, 0xeb, 0xe9, 0x4c, 0x82, 0x30, 0xda, 0x84, 0x36, 0x70,
+ 0x12, 0x5a, 0x44, 0x56, 0x21, 0x47, 0x11, 0x75, 0xc4, 0xd1, 0x87, 0x99,
+ 0x48, 0x43, 0x83, 0x59, 0x2e, 0xb6, 0x4b, 0x1a, 0x8a, 0xf0, 0xcc, 0x36,
+ 0xdf, 0x81, 0x8f, 0xa3, 0xaa, 0x89, 0xb7, 0xf4, 0xf9, 0x88, 0x8c, 0x61,
+ 0x78, 0x66, 0xa3, 0x9e, 0x59, 0x14, 0xcd, 0x34, 0x3a, 0x62, 0x21, 0x90,
+ 0xbd, 0x4d, 0x77, 0xf9, 0x58, 0x1c, 0x0d, 0x70, 0x96, 0x75, 0x98, 0x08,
+ 0xc6, 0xd3, 0x9c, 0x1f, 0x9c, 0x91, 0x5a, 0xcb, 0x6f, 0x89, 0xd4, 0xcc,
+ 0x77, 0x08, 0x69, 0xf0, 0xc4, 0x14, 0x8f, 0xc4, 0xbe, 0x01, 0x73, 0x59,
+ 0x75, 0x0d, 0x13, 0x77, 0x5a, 0xe6, 0xf0, 0x46, 0x45, 0xcd, 0xc9, 0x98,
+ 0x79, 0x92, 0xe1, 0x38, 0xa1, 0x56, 0x89, 0xc1, 0xd7, 0xdb, 0x0a, 0x70,
+ 0x76, 0x98, 0xeb, 0x04, 0x07, 0x67, 0xc4, 0xe7, 0x55, 0x22, 0x63, 0x92,
+ 0x97, 0x7c, 0x77, 0xbd, 0xe2, 0xd9, 0xac, 0x60, 0x89, 0xa7, 0xf0, 0x81,
+ 0x5d, 0x37, 0x8d, 0xc1, 0x01, 0xeb, 0x13, 0x93, 0x89, 0xb4, 0x06, 0x87,
+ 0x21, 0x53, 0x4f, 0xe7, 0xdd, 0x4f, 0x14, 0xc5, 0xec, 0xd0, 0xb5, 0xb5,
+ 0xf0, 0x96, 0x21, 0xda, 0x9a, 0x2c, 0xbf, 0x35, 0xf7, 0x73, 0x20, 0x59,
+ 0xc3, 0x75, 0xbf, 0x7e, 0x9e, 0xd5, 0xed, 0xe6, 0x0e, 0xd0, 0xe1, 0xde,
+ 0x7a, 0x10, 0x01, 0x20, 0xad, 0xea, 0xda, 0x8d, 0x32, 0xf3, 0xd7, 0x8a,
+ 0x25, 0x86, 0x98, 0x28, 0x47, 0x90, 0xed, 0xbc, 0xfa, 0x6e, 0xff, 0xf8,
+ 0xfd, 0xe1, 0xce, 0x9f, 0xda, 0xe4, 0x43, 0xdf, 0xed, 0xca, 0x77, 0xbb,
+ 0xeb, 0x5d, 0x3c, 0x8b, 0x28, 0x28, 0x49, 0x7a, 0xaf, 0x7a, 0x49, 0x75,
+ 0x3f, 0x1b, 0x15, 0x53, 0xc7, 0xb7, 0xb4, 0x13, 0x1e, 0x45, 0x5f, 0x5d,
+ 0x1f, 0xe6, 0x80, 0xc6, 0xc2, 0xf0, 0x15, 0xd9, 0x1e, 0x3b, 0x1c, 0xa0,
+ 0x2a, 0x97, 0x81, 0x02, 0xd2, 0x49, 0xb8, 0x18, 0x55, 0x8d, 0x2b, 0x4f,
+ 0x37, 0x88, 0x5b, 0xae, 0x84, 0x20, 0xfb, 0x89, 0x9c, 0xa4, 0x36, 0x3b,
+ 0x97, 0x19, 0x3b, 0xd7, 0x96, 0x19, 0x00, 0x55, 0x11, 0x49, 0x44, 0xd6,
+ 0xbe, 0x27, 0xf2, 0xad, 0xd9, 0x7a, 0xf2, 0xbe, 0x12, 0xa6, 0x92, 0x57,
+ 0x7a, 0x3e, 0xdb, 0x0c, 0x8f, 0x99, 0x3e, 0xfb, 0x2b, 0x6f, 0xd3, 0x5a,
+ 0x1d, 0x32, 0xeb, 0x3a, 0x96, 0x45, 0x4a, 0x1c, 0xbd, 0x5c, 0xd7, 0xf3,
+ 0xec, 0xc3, 0x9c, 0xd4, 0x3e, 0xc0, 0x07, 0xac, 0x8c, 0xed, 0x32, 0x74,
+ 0xea, 0xb8, 0x47, 0x0d, 0xc5, 0xe2, 0xe8, 0x3a, 0xe3, 0x08, 0x7c, 0xa0,
+ 0x68, 0xd4, 0xec, 0x12, 0xbc, 0xd7, 0x23, 0xd9, 0x2b, 0x33, 0x3d, 0xbf,
+ 0xe2, 0xfd, 0x6b, 0x93, 0x3e, 0x35, 0x36, 0xca, 0xe7, 0x46, 0xdb, 0xaa,
+ 0x86, 0x0d, 0x8e, 0x99, 0xa2, 0xa7, 0x85, 0xb2, 0x74, 0x6f, 0x60, 0x55,
+ 0xff, 0xa6, 0xa3, 0x81, 0x4e, 0xdb, 0x9d, 0xc5, 0x86, 0x15, 0x89, 0x6c,
+ 0x85, 0x0d, 0x54, 0xce, 0x96, 0x23, 0xa7, 0x05, 0x31, 0xf7, 0xb9, 0x50,
+ 0xbe, 0x72, 0xdd, 0xa4, 0x28, 0x3b, 0x9a, 0x7b, 0x97, 0xd5, 0x88, 0x0a,
+ 0xd8, 0xd2, 0x4b, 0xdb, 0x36, 0x12, 0xbd, 0xc8, 0x40, 0x22, 0x02, 0x73,
+ 0x23, 0xf5, 0xfe, 0x4c, 0xb1, 0xb4, 0x86, 0x47, 0xd5, 0x3c, 0xa1, 0xd8,
+ 0xe4, 0x14, 0x57, 0xfe, 0x62, 0xc9, 0x52, 0xd9, 0xbb, 0x22, 0x5a, 0x24,
+ 0x99, 0x81, 0x8b, 0x88, 0x81, 0x17, 0x8e, 0x74, 0x72, 0x3b, 0xbf, 0xdc,
+ 0xd7, 0x90, 0xc5, 0x08, 0xd0, 0x9a, 0x8f, 0x92, 0xd3, 0x8b, 0xae, 0xcd,
+ 0x77, 0xc7, 0x7e, 0x14, 0x83, 0xbf, 0xa4, 0x76, 0xc9, 0xff, 0x86, 0x57,
+ 0xfb, 0x57, 0x2a, 0xbb, 0x0d, 0xd2, 0x6a, 0x9c, 0xe7, 0x5d, 0x02, 0x30,
+ 0x87, 0x40, 0x6e, 0x26, 0x87, 0xb0, 0x2a, 0x24, 0xfb, 0xe7, 0x07, 0x47,
+ 0x47, 0xce, 0x43, 0x3a, 0x94, 0x88, 0x02, 0xc4, 0x3e, 0xaa, 0x98, 0x05,
+ 0x07, 0x81, 0x84, 0x90, 0x8c, 0xda, 0xb3, 0xcb, 0xd8, 0x56, 0x3b, 0x36,
+ 0xd3, 0x84, 0xd0, 0x1e, 0x3d, 0xce, 0x26, 0x55, 0x5c, 0x27, 0x74, 0x61,
+ 0x54, 0x6a, 0x69, 0xff, 0x53, 0x7d, 0xbf, 0xc8, 0x5e, 0xed, 0xaf, 0x0f,
+ 0x43, 0x15, 0xa5, 0xbd, 0xf6, 0xe9, 0x92, 0x45, 0x7f, 0xe1, 0x45, 0xb8,
+ 0x19, 0x78, 0x95, 0x27, 0xea, 0x0d, 0x55, 0xb6, 0xc4, 0x9e, 0x8d, 0x19,
+ 0x8b, 0x6f, 0x97, 0xf0, 0x07, 0xcd, 0x9f, 0x90, 0x66, 0x78, 0x4f, 0x57,
+ 0xed, 0xac, 0x0a, 0xe5, 0x1b, 0xdc, 0x8e, 0x9f, 0x6a, 0x28, 0x54, 0x93,
+ 0xc5, 0x57, 0xfc, 0x4e, 0xd2, 0x16, 0x72, 0x56, 0xca, 0x6e, 0xa6, 0xe0,
+ 0x71, 0x98, 0xc5, 0x30, 0xbc, 0xff, 0x71, 0x30, 0xcc, 0x4e, 0x23, 0x71,
+ 0x2c, 0xad, 0x9d, 0x5d, 0xb2, 0xb5, 0x33, 0x62, 0xf2, 0x39, 0xdd, 0xde,
+ 0xc4, 0x77, 0x88, 0x94, 0xe6, 0xfc, 0xd3, 0xf9, 0x36, 0x72, 0x4c, 0x9f,
+ 0x35, 0x8a, 0x92, 0x03, 0x6c, 0x1a, 0xdc, 0x9f, 0xa5, 0xcb, 0xce, 0xb5,
+ 0x94, 0xeb, 0x9c, 0xa3, 0x01, 0x21, 0x74, 0x78, 0x4b, 0xf1, 0x0a, 0x21,
+ 0x6e, 0xc3, 0x6c, 0xca, 0x2a, 0x44, 0x44, 0xf2, 0x83, 0x49, 0x19, 0xb4,
+ 0xea, 0x81, 0x30, 0xb1, 0x19, 0x51, 0xf2, 0xfb, 0x0a, 0x1e, 0x5d, 0x52,
+ 0x8c, 0xae, 0xb3, 0x52, 0x8f, 0xe2, 0xd2, 0xf4, 0x09, 0x71, 0x21, 0x7d,
+ 0x54, 0x27, 0xc3, 0xc7, 0xfb, 0xe8, 0xed, 0xf3, 0x2c, 0x13, 0x62, 0xd3,
+ 0x07, 0x64, 0x23, 0x83, 0x9d, 0x6d, 0x9f, 0xa7, 0x97, 0x38, 0xfb, 0x7c,
+ 0x2d, 0x3c, 0xa6, 0x97, 0x14, 0xca, 0x39, 0xf1, 0x82, 0x73, 0x5a, 0x1b,
+ 0x1d, 0x88, 0xaf, 0x1d, 0xa1, 0xa3, 0x7a, 0xa4, 0xdb, 0xbc, 0xfd, 0x92,
+ 0x5d, 0xda, 0x12, 0xdf, 0x45, 0x8a, 0x27, 0xdf, 0x52, 0x4e, 0x54, 0x18,
+ 0x26, 0x07, 0xb0, 0x69, 0x72, 0x1b, 0x15, 0x1a, 0x31, 0x36, 0xe2, 0xb7,
+ 0x2a, 0xa2, 0x9e, 0xd4, 0x45, 0x8c, 0x79, 0xce, 0x85, 0xb1, 0xd1, 0x26,
+ 0xdc, 0x65, 0x88, 0xca, 0x69, 0x34, 0xe5, 0x2e, 0x7a, 0xbc, 0xd6, 0x4d,
+ 0x8c, 0x72, 0xf5, 0x6f, 0x54, 0x9b, 0x10, 0x8a, 0xe6, 0x85, 0x7b, 0x99,
+ 0x5d, 0x6f, 0x37, 0xf3, 0xe2, 0x8e, 0x64, 0x9d, 0x79, 0x21, 0x27, 0xcc,
+ 0xf8, 0x07, 0x8f, 0xba, 0x7d, 0xcd, 0x12, 0xbf, 0x0b, 0xee, 0x80, 0xf0,
+ 0xc9, 0xda, 0x85, 0xc3, 0xa9, 0x41, 0x58, 0x59, 0xb6, 0x2d, 0x5b, 0xd2,
+ 0xa5, 0xd9, 0x2a, 0xeb, 0x16, 0x69, 0x00, 0x6e, 0x13, 0x68, 0x45, 0xfe,
+ 0x06, 0xb1, 0x6b, 0x3d, 0x35, 0xa5, 0x8a, 0x1d, 0xaf, 0xfd, 0x64, 0x7d,
+ 0xb0, 0xde, 0xef, 0x38, 0x79, 0x36, 0xa9, 0xf6, 0xb8, 0x1c, 0xbb, 0xe8,
+ 0xb8, 0x24, 0xe0, 0x88, 0x8b, 0x5c, 0x5f, 0x1a, 0xf3, 0xa3, 0x37, 0xb6,
+ 0x0c, 0xc8, 0xe6, 0x91, 0xcd, 0xaf, 0x10, 0xc1, 0xc7, 0x27, 0xa9, 0x2d,
+ 0x9c, 0x7b, 0xfb, 0x80, 0x5c, 0xdc, 0x4e, 0xd5, 0xd1, 0xa1, 0x0d, 0x93,
+ 0xfd, 0xb9, 0x04, 0x75, 0xdd, 0xa5, 0x20, 0x3d, 0xd7, 0x05, 0xe4, 0x9c,
+ 0xf6, 0x6a, 0x17, 0x4e, 0x4d, 0x6a, 0xdc, 0x5a, 0x0f, 0xdd, 0x15, 0xd6,
+ 0x55, 0xc2, 0x87, 0x80, 0x78, 0x74, 0x0f, 0x92, 0xb1, 0xda, 0x09, 0xe0,
+ 0x2a, 0x77, 0x8b, 0x22, 0xf7, 0xc6, 0xdd, 0x75, 0x31, 0x15, 0xd7, 0x5d,
+ 0xab, 0x39, 0x2f, 0xf0, 0x26, 0x77, 0x70, 0x3b, 0x8b, 0xa6, 0xcd, 0x36,
+ 0x96, 0x5b, 0x7a, 0xbf, 0xcc, 0x60, 0xb7, 0xe5, 0x88, 0x3d, 0xd2, 0x8a,
+ 0xa9, 0xaf, 0x69, 0x96, 0x96, 0xd3, 0x7b, 0x13, 0x86, 0x06, 0xb7, 0xad,
+ 0xe6, 0xb0, 0xa2, 0x6c, 0x16, 0x21, 0x0a, 0x4b, 0xcb, 0x39, 0x3f, 0xa3,
+ 0xae, 0x42, 0x0b, 0x96, 0xad, 0xc5, 0x79, 0x2b, 0x1e, 0x66, 0xbe, 0x95,
+ 0x6f, 0x73, 0x56, 0xbd, 0x88, 0xd8, 0x48, 0x80, 0x6f, 0x53, 0x22, 0x1b,
+ 0x35, 0x41, 0x32, 0x68, 0x52, 0x22, 0x63, 0xae, 0xf3, 0x40, 0x5f, 0xa3,
+ 0xa3, 0x78, 0x4d, 0x37, 0x24, 0x29, 0x91, 0xcb, 0x74, 0xd5, 0x72, 0xe9,
+ 0x55, 0x66, 0x5e, 0xe1, 0xc7, 0x6e, 0xd7, 0xe6, 0x79, 0xec, 0x92, 0x40,
+ 0x57, 0xdc, 0xbd, 0x07, 0xb2, 0x79, 0xc4, 0x5c, 0xe7, 0x4b, 0xba, 0x80,
+ 0xeb, 0xe4, 0x65, 0x71, 0x79, 0x49, 0xa4, 0xfe, 0x45, 0x24, 0x81, 0xcb,
+ 0x23, 0x5b, 0x67, 0x88, 0xa0, 0x0f, 0x58, 0x7a, 0x33, 0xa8, 0x2c, 0x49,
+ 0xed, 0x94, 0x5c, 0xe5, 0xbc, 0x17, 0x89, 0x34, 0x37, 0xec, 0x10, 0x81,
+ 0x9a, 0x4f, 0x04, 0x17, 0x91, 0x78, 0xc5, 0x7d, 0xc8, 0x3d, 0x5d, 0xd5,
+ 0xb5, 0x79, 0x93, 0x74, 0x1a, 0x6d, 0xa1, 0xf8, 0x26, 0x5f, 0x2c, 0x78,
+ 0xb3, 0x10, 0xac, 0xeb, 0x54, 0x25, 0x6e, 0x6d, 0x94, 0xd1, 0x99, 0xc0,
+ 0x9e, 0x9a, 0x4f, 0xb9, 0x58, 0x92, 0x00, 0x60, 0x72, 0xe0, 0x28, 0xa3,
+ 0x93, 0xde, 0x6e, 0xce, 0x24, 0x7b, 0x1f, 0x97, 0xa5, 0x92, 0xd4, 0x84,
+ 0x63, 0xb0, 0xe6, 0xca, 0x40, 0x79, 0x9b, 0x7c, 0xa8, 0x87, 0x6a, 0x96,
+ 0x5d, 0x87, 0xdf, 0x5b, 0xb1, 0xdc, 0x81, 0x3e, 0x3f, 0xfa, 0xdf, 0x87,
+ 0x3e, 0x8a, 0xce, 0x85, 0xa9, 0xdd, 0x83, 0xda, 0xbb, 0x2e, 0x28, 0x62,
+ 0x2c, 0x07, 0xc9, 0x60, 0x1d, 0x03, 0x61, 0x4e, 0x6b, 0x97, 0x00, 0x5d,
+ 0x8d, 0x05, 0xbb, 0x9e, 0x25, 0xdc, 0x10, 0x71, 0xfc, 0x4c, 0x70, 0xac,
+ 0x47, 0x96, 0xd9, 0x16, 0x3b, 0xfc, 0x63, 0x03, 0x93, 0x24, 0x41, 0xe8,
+ 0x62, 0x7b, 0x39, 0xea, 0xa8, 0x96, 0xc8, 0x4f, 0x48, 0x34, 0xfc, 0x9d,
+ 0xec, 0x8f, 0x84, 0x32, 0x6d, 0x41, 0xfc, 0x94, 0x40, 0xbc, 0x98, 0x17,
+ 0xa8, 0xc1, 0x45, 0xc2, 0x8e, 0x3a, 0x98, 0xd9, 0x3f, 0xd0, 0x0c, 0x34,
+ 0xce, 0x17, 0xd7, 0x2c, 0x8d, 0xbf, 0x44, 0x74, 0x03, 0x5b, 0x9e, 0xe4,
+ 0x83, 0x2f, 0x3a, 0x6d, 0xe3, 0xe7, 0x7a, 0x2e, 0x2a, 0xbd, 0x49, 0xed,
+ 0x6d, 0xe5, 0x5f, 0xb9, 0xc5, 0x97, 0x5b, 0xbc, 0xa4, 0x46, 0xd4, 0x50,
+ 0xd3, 0x6d, 0x96, 0x43, 0x47, 0xd2, 0x5e, 0x16, 0xad, 0xde, 0x87, 0xa0,
+ 0x20, 0x06, 0xd4, 0xbe, 0x1d, 0x26, 0x67, 0x7c, 0x4f, 0x2e, 0x17, 0x1c,
+ 0xa2, 0x88, 0x0c, 0x15, 0x7c, 0x1e, 0x79, 0xbe, 0xaa, 0x3a, 0x74, 0xe0,
+ 0x22, 0x85, 0x23, 0xec, 0x6e, 0xde, 0x10, 0x8c, 0xf2, 0xf0, 0x3b, 0x92,
+ 0x55, 0xf7, 0xda, 0x86, 0x21, 0xf6, 0x45, 0x69, 0x88, 0x38, 0x31, 0xc7,
+ 0x79, 0x55, 0x4d, 0x11, 0x97, 0x3f, 0x29, 0xc6, 0xd5, 0x56, 0xba, 0x58,
+ 0x54, 0x5b, 0x36, 0xba, 0x46, 0x04, 0xbe, 0xa9, 0xc3, 0xe7, 0xe7, 0xc1,
+ 0xe4, 0xf8, 0xde, 0x15, 0x83, 0x95, 0x93, 0xc0, 0xa6, 0x70, 0xc1, 0xcd,
+ 0xd5, 0xee, 0x2a, 0x51, 0x35, 0x5f, 0xcf, 0x97, 0x17, 0xc7, 0xe7, 0x58,
+ 0xaf, 0xf6, 0xd5, 0xc9, 0x31, 0xe1, 0xb6, 0x3b, 0xdc, 0xb6, 0x35, 0x0d,
+ 0x0d, 0x4f, 0xb4, 0xa6, 0xf3, 0xf3, 0x03, 0x7c, 0x78, 0xbe, 0x64, 0x19,
+ 0x86, 0xba, 0x28, 0xef, 0x13, 0x33, 0x0f, 0xb7, 0x89, 0x9f, 0xa6, 0x9b,
+ 0x7c, 0xea, 0x7f, 0xb6, 0x10, 0x57, 0x79, 0x3d, 0xbc, 0xcc, 0x26, 0x45,
+ 0x99, 0x46, 0x36, 0xb4, 0x82, 0x33, 0x24, 0xb0, 0x3a, 0x63, 0x7a, 0x6a,
+ 0x8b, 0x04, 0xf3, 0x0f, 0xb4, 0x5e, 0x43, 0xfe, 0x1d, 0x4a, 0x9f, 0x2c,
+ 0x9a, 0x7d, 0xcc, 0xeb, 0xf5, 0xbb, 0xd7, 0x08, 0xd6, 0xa3, 0xd3, 0x50,
+ 0xfd, 0x96, 0x84, 0x4d, 0x42, 0x1a, 0x3c, 0x09, 0x93, 0x6e, 0xa9, 0xf0,
+ 0xcc, 0xac, 0x85, 0x89, 0x7f, 0xd2, 0x07, 0xef, 0xb5, 0x53, 0xd3, 0x48,
+ 0x0e, 0xbb, 0x2a, 0xe8, 0x3e, 0xbd, 0x9e, 0xb5, 0xd7, 0x53, 0xb4, 0x77,
+ 0x73, 0xb5, 0x69, 0xfe, 0x53, 0x52, 0x71, 0x60, 0xbf, 0x70, 0x84, 0xe5,
+ 0x3c, 0xe8, 0x80, 0x16, 0x83, 0x78, 0xc5, 0x5c, 0x25, 0xa1, 0x8e, 0xed,
+ 0x69, 0xcd, 0xdc, 0x82, 0xe0, 0x95, 0xdf, 0xc1, 0x84, 0x5e, 0x89, 0x61,
+ 0x72, 0x39, 0xf7, 0x79, 0x72, 0x62, 0xd0, 0x66, 0xd3, 0x75, 0xd7, 0xe8,
+ 0xb0, 0x44, 0xad, 0x5b, 0xbc, 0xb9, 0x54, 0x38, 0xaf, 0x03, 0x5e, 0x5e,
+ 0xe6, 0x76, 0x2f, 0x2b, 0x12, 0x69, 0xa8, 0x9f, 0x2f, 0xa2, 0xd0, 0x9f,
+ 0x8f, 0xf9, 0x6c, 0x39, 0x4b, 0xb0, 0x0f, 0x62, 0x34, 0xd7, 0x27, 0x4d,
+ 0xdb, 0xe0, 0x6b, 0x1a, 0xc1, 0x31, 0xe8, 0xb8, 0x57, 0x05, 0xac, 0x20,
+ 0xe6, 0x9b, 0x35, 0xc9, 0x50, 0xa6, 0x36, 0x69, 0x80, 0xd5, 0x8c, 0x43,
+ 0x23, 0x9a, 0x2c, 0x24, 0x59, 0x5c, 0xa7, 0x55, 0xe6, 0x23, 0x6a, 0x65,
+ 0xbd, 0xc3, 0xe0, 0xe8, 0x46, 0x8c, 0xb4, 0x65, 0x4e, 0x78, 0x86, 0x4b,
+ 0xc2, 0x4d, 0x5e, 0x4c, 0x9c, 0x33, 0xc5, 0x2e, 0xe7, 0x64, 0xc0, 0xcd,
+ 0xf1, 0x75, 0xa1, 0xdf, 0xb4, 0x35, 0xdb, 0x8f, 0x70, 0xda, 0x9c, 0xc3,
+ 0x7e, 0x69, 0xce, 0xbf, 0xcf, 0x86, 0x4f, 0x76, 0xd9, 0xab, 0x1b, 0x12,
+ 0xa9, 0x86, 0x92, 0x13, 0xd7, 0x19, 0xe7, 0x33, 0x17, 0x9f, 0xb7, 0x5a,
+ 0xaf, 0x81, 0x90, 0x37, 0x63, 0x39, 0x61, 0x96, 0x7e, 0xc4, 0x9a, 0xff,
+ 0xf6, 0x26, 0x81, 0x81, 0x88, 0x85, 0xa4, 0xc2, 0x95, 0x6d, 0x82, 0x6b,
+ 0xb8, 0xc1, 0x68, 0x71, 0xfe, 0x42, 0xf4, 0xda, 0x32, 0x10, 0x59, 0xbc,
+ 0x5a, 0x2b, 0x33, 0x42, 0xda, 0xec, 0xb2, 0x09, 0xd1, 0x56, 0x10, 0xb9,
+ 0x73, 0xa8, 0x41, 0xc2, 0x76, 0x25, 0x0e, 0x15, 0xe3, 0x13, 0x5f, 0xd0,
+ 0x07, 0xd7, 0x39, 0x8d, 0xbd, 0x1c, 0x5f, 0xdf, 0xb3, 0x72, 0xc3, 0xf6,
+ 0x5a, 0xf6, 0x69, 0x3d, 0x60, 0x10, 0x40, 0x1f, 0x6a, 0x43, 0xa5, 0xc1,
+ 0x27, 0x7c, 0x78, 0xe8, 0x31, 0x13, 0x13, 0x5a, 0xe3, 0x63, 0x91, 0x9b,
+ 0x0f, 0x6e, 0x36, 0xad, 0x32, 0x1c, 0xb1, 0xae, 0xd1, 0x0d, 0x8a, 0x40,
+ 0xe5, 0xc0, 0xed, 0xcc, 0x0a, 0x51, 0x5e, 0xb2, 0xc0, 0x2b, 0xe6, 0x3e,
+ 0xe9, 0x8a, 0x8d, 0xd6, 0xd2, 0x1b, 0xab, 0x61, 0xac, 0xae, 0xdd, 0xc7,
+ 0x34, 0xc2, 0x0a, 0xb1, 0xbe, 0x6e, 0x6b, 0x6f, 0xae, 0xba, 0x48, 0x05,
+ 0x29, 0xf4, 0x2b, 0xd3, 0xd5, 0x6c, 0x55, 0x72, 0xcb, 0x23, 0x12, 0xae,
+ 0xc3, 0xf2, 0x0d, 0x0d, 0x45, 0xf2, 0x4f, 0x99, 0x93, 0xd3, 0xfe, 0x5d,
+ 0xd6, 0x91, 0x4d, 0x38, 0xd8, 0xd2, 0xe6, 0x4e, 0x4f, 0x2f, 0x59, 0xbc,
+ 0x24, 0x1a, 0xa9, 0x93, 0xe3, 0x37, 0x7c, 0x35, 0x1f, 0x9c, 0xd1, 0xcf,
+ 0xdc, 0x3c, 0x9c, 0x2c, 0xb7, 0x23, 0x7f, 0x94, 0xcd, 0x27, 0x6f, 0xbf,
+ 0x3b, 0x4f, 0x36, 0x4e, 0xce, 0xb7, 0x9e, 0xbc, 0xd8, 0x8e, 0x15, 0xf9,
+ 0x0d, 0x4e, 0x72, 0xd5, 0xb8, 0x44, 0x04, 0x5e, 0x3c, 0xdd, 0x6e, 0x46,
+ 0xb5, 0x70, 0x5f, 0xbc, 0x92, 0x50, 0xc1, 0x3b, 0xb5, 0xef, 0xf3, 0x2d,
+ 0x4e, 0xd3, 0xdd, 0xf4, 0xc9, 0x41, 0x62, 0xd4, 0xd5, 0x99, 0x9e, 0x1e,
+ 0xbe, 0x35, 0xeb, 0xa2, 0x44, 0x5c, 0x24, 0x07, 0x34, 0x6a, 0x76, 0x8d,
+ 0xc4, 0x84, 0x75, 0x96, 0xdd, 0x9a, 0x89, 0xf2, 0x98, 0x2f, 0x43, 0x30,
+ 0x1c, 0xb6, 0x81, 0x9a, 0xdc, 0xb0, 0xc8, 0x58, 0x20, 0xf4, 0xef, 0xab,
+ 0x84, 0x2b, 0x17, 0x70, 0xc4, 0x7c, 0x46, 0x59, 0x18, 0x25, 0x40, 0xb2,
+ 0x37, 0x27, 0x70, 0xfd, 0x76, 0x27, 0xb0, 0x23, 0x8a, 0x65, 0xe7, 0xc5,
+ 0xf0, 0xb3, 0x4d, 0xb7, 0x96, 0x93, 0xbe, 0x05, 0x17, 0xbf, 0x7c, 0xc0,
+ 0x9f, 0x40, 0x5c, 0x44, 0xb9, 0x6d, 0x16, 0xa6, 0x6f, 0xe0, 0x3d, 0x58,
+ 0xfb, 0x11, 0x67, 0x6f, 0x8e, 0xb0, 0xc0, 0xdf, 0xd0, 0x16, 0xf0, 0x35,
+ 0x03, 0xdb, 0xb2, 0xf8, 0xa0, 0xd1, 0xa4, 0x1a, 0x19, 0x94, 0x26, 0xa3,
+ 0xb2, 0xb8, 0x63, 0x5b, 0x8d, 0x44, 0xba, 0x0b, 0x6d, 0xb2, 0x0d, 0x09,
+ 0x06, 0x9c, 0xe4, 0x3a, 0x8d, 0x1c, 0x3e, 0x34, 0x67, 0x8d, 0x5d, 0x4d,
+ 0xd9, 0xca, 0xfb, 0xf6, 0x58, 0x62, 0xbd, 0xf9, 0xf6, 0x5a, 0xa8, 0x3b,
+ 0x1f, 0xfd, 0x2c, 0x47, 0xc4, 0xe1, 0x59, 0x05, 0xac, 0x45, 0x36, 0xcc,
+ 0xab, 0x2e, 0xd6, 0x0b, 0x2b, 0xa0, 0x13, 0xc9, 0x17, 0x5d, 0x3e, 0x14,
+ 0xbd, 0x0f, 0xcd, 0xd8, 0x8d, 0xcd, 0x24, 0x5d, 0x97, 0xee, 0xb0, 0xfb,
+ 0x45, 0x9b, 0x72, 0x48, 0x60, 0x9b, 0xaa, 0xad, 0x6b, 0xeb, 0xe3, 0x80,
+ 0x64, 0xba, 0x01, 0x0f, 0x6e, 0x40, 0xcd, 0x8b, 0x1b, 0x98, 0x9d, 0xea,
+ 0x07, 0x74, 0x45, 0x33, 0xa1, 0x50, 0xf3, 0x83, 0x37, 0xbc, 0x15, 0xfc,
+ 0x48, 0xb4, 0x7d, 0xc1, 0x2e, 0xa9, 0xf6, 0x8a, 0x95, 0x83, 0xcd, 0x8c,
+ 0x3f, 0x15, 0x8b, 0xeb, 0xd0, 0xfe, 0x2a, 0xd3, 0x3b, 0x44, 0x9b, 0x4f,
+ 0xe1, 0xfa, 0xec, 0x70, 0x25, 0xf3, 0xcb, 0xac, 0x0f, 0xbb, 0x84, 0x02,
+ 0xe4, 0x03, 0xa6, 0x96, 0x7d, 0x27, 0x01, 0x8a, 0xb4, 0x80, 0x75, 0x5a,
+ 0xfb, 0xb0, 0xe2, 0xe4, 0x4b, 0xcd, 0xdb, 0x8b, 0x4d, 0x36, 0xa5, 0xba,
+ 0xb7, 0x17, 0x08, 0x15, 0x96, 0x50, 0xf5, 0x05, 0x69, 0x12, 0xec, 0x39,
+ 0x62, 0xc3, 0x7f, 0x79, 0x2f, 0xf1, 0xd2, 0x6a, 0x97, 0x37, 0x07, 0xe5,
+ 0x0a, 0xc3, 0xb5, 0x4c, 0x42, 0xde, 0x73, 0x6e, 0x01, 0x6e, 0x9f, 0x44,
+ 0xc8, 0x81, 0x7a, 0xd0, 0x79, 0x3c, 0x92, 0x0a, 0xc0, 0xa9, 0xc0, 0x62,
+ 0xe7, 0x51, 0xc7, 0x7c, 0xab, 0x39, 0x64, 0xc7, 0xa5, 0x30, 0xc0, 0x5b,
+ 0xd3, 0x6e, 0x07, 0x3a, 0x35, 0x76, 0x9f, 0x91, 0x50, 0xf9, 0x38, 0x74,
+ 0x3b, 0x81, 0x08, 0x89, 0x82, 0x10, 0x8d, 0x40, 0xf4, 0x62, 0xde, 0x88,
+ 0x6f, 0x1e, 0x44, 0xd6, 0x1a, 0x35, 0xfa, 0xf4, 0x03, 0x07, 0x5a, 0xce,
+ 0x97, 0x54, 0x98, 0x03, 0xe5, 0xec, 0xfd, 0xc4, 0xf6, 0xcb, 0x2b, 0xfe,
+ 0xc4, 0x8c, 0x98, 0x91, 0x81, 0x03, 0xe1, 0x3e, 0x2e, 0xf1, 0x09, 0xb6,
+ 0xb0, 0x7f, 0x1d, 0x88, 0x73, 0x0b, 0x12, 0xcd, 0x92, 0x05, 0x41, 0x35,
+ 0x92, 0xf5, 0x06, 0x93, 0x44, 0xfd, 0x84, 0x73, 0x5a, 0x17, 0x22, 0xa2,
+ 0x58, 0xdb, 0x9e, 0x4e, 0x5f, 0x4d, 0x49, 0xf7, 0xbf, 0xef, 0x25, 0x9a,
+ 0xa0, 0xa3, 0x61, 0xf4, 0x6c, 0x5d, 0x4e, 0x6d, 0x3f, 0xc7, 0xd7, 0xcb,
+ 0xf9, 0x8d, 0x49, 0x5a, 0xd3, 0xa2, 0xe0, 0xc0, 0x05, 0x0e, 0xe9, 0x6f,
+ 0x35, 0xd7, 0x0b, 0x3a, 0xfb, 0xd7, 0xb0, 0xed, 0xce, 0x55, 0x16, 0x5b,
+ 0x9c, 0x64, 0x87, 0xb8, 0xb5, 0x71, 0x57, 0xab, 0xe4, 0xc7, 0x26, 0x5f,
+ 0xf6, 0xcd, 0x8f, 0x5e, 0x07, 0x3e, 0x9d, 0x34, 0xe6, 0x02, 0xde, 0x8e,
+ 0x07, 0xeb, 0xa6, 0x6b, 0x50, 0x1c, 0x70, 0x6c, 0x38, 0x36, 0xe7, 0xb1,
+ 0x37, 0xbd, 0x3a, 0xdf, 0x51, 0xc7, 0x5d, 0xed, 0xb1, 0x23, 0xe0, 0xa6,
+ 0x1d, 0x26, 0x6f, 0xc3, 0xd4, 0xbb, 0x66, 0x9c, 0x85, 0xdb, 0xc9, 0x61,
+ 0x72, 0x4a, 0xeb, 0x35, 0x88, 0x5c, 0x69, 0x57, 0x41, 0x73, 0xa9, 0x1f,
+ 0xed, 0x24, 0xe9, 0x5d, 0x16, 0xc5, 0x28, 0x2d, 0xfd, 0xe2, 0x23, 0x1e,
+ 0x00, 0x94, 0x20, 0xe1, 0x27, 0xbc, 0x1e, 0x9d, 0xa7, 0x23, 0x49, 0xbe,
+ 0x94, 0x77, 0x87, 0x2a, 0x48, 0xb9, 0xcf, 0x99, 0x3f, 0x14, 0xd3, 0x89,
+ 0x5b, 0x8a, 0xb0, 0xd7, 0x8e, 0x4d, 0xe3, 0x4d, 0xed, 0xd3, 0x74, 0xca,
+ 0x32, 0xe7, 0x3c, 0x58, 0x3a, 0xf2, 0xcb, 0x72, 0x2e, 0x79, 0x6a, 0xf3,
+ 0xec, 0x4e, 0xdc, 0x98, 0x76, 0xb3, 0x70, 0x04, 0x0a, 0x9b, 0x67, 0x60,
+ 0x1a, 0xd0, 0x44, 0xa2, 0x28, 0x90, 0x08, 0x66, 0x3c, 0x49, 0xe5, 0x0c,
+ 0x58, 0x06, 0x6f, 0x26, 0x8d, 0xe8, 0x61, 0x36, 0x43, 0x07, 0xac, 0x9b,
+ 0x15, 0x80, 0x9f, 0x09, 0xcf, 0x08, 0x24, 0x8e, 0xd7, 0xe0, 0x89, 0xcb,
+ 0xd9, 0xc2, 0xa2, 0x58, 0x3a, 0xa5, 0x81, 0xef, 0x61, 0x5d, 0xd7, 0x04,
+ 0x35, 0x49, 0x98, 0x35, 0x47, 0xa0, 0xb1, 0xf4, 0x86, 0xcd, 0xad, 0xdb,
+ 0x80, 0xeb, 0xef, 0x61, 0x71, 0x7b, 0xba, 0x9c, 0x53, 0x5a, 0xfa, 0x20,
+ 0x77, 0x55, 0x3d, 0x73, 0x72, 0x4d, 0x6a, 0x37, 0x9d, 0xde, 0x11, 0xd6,
+ 0xa3, 0xc4, 0x1d, 0x9f, 0xc3, 0x76, 0xce, 0x97, 0x2b, 0xbd, 0x4e, 0x4d,
+ 0x0d, 0xd5, 0x49, 0x1e, 0x64, 0x6c, 0xda, 0x78, 0xc7, 0x4c, 0x24, 0x31,
+ 0xb1, 0x22, 0x1d, 0x07, 0x7b, 0x8d, 0x9b, 0x58, 0x55, 0x23, 0x07, 0x8e,
+ 0x32, 0x77, 0xe2, 0x4b, 0xe0, 0x2a, 0x53, 0x81, 0x74, 0x14, 0x3b, 0x5b,
+ 0xcc, 0x06, 0x2d, 0x33, 0xfe, 0x17, 0xd8, 0x51, 0x56, 0xb8, 0x12, 0x25,
+ 0xa3, 0x69, 0x24, 0x47, 0x55, 0xac, 0xcd, 0x51, 0xcc, 0x52, 0xe0, 0xa8,
+ 0x8c, 0x56, 0xb6, 0xa1, 0x01, 0x88, 0xd0, 0x49, 0x9d, 0x05, 0x56, 0x36,
+ 0xa7, 0x15, 0xab, 0x3b, 0x1d, 0x12, 0x95, 0x97, 0x9e, 0x22, 0xc9, 0x8a,
+ 0x67, 0xb6, 0xae, 0xab, 0xb5, 0xae, 0x2a, 0xec, 0x52, 0x3c, 0x10, 0xac,
+ 0x17, 0x83, 0x2f, 0x94, 0xbf, 0x69, 0x70, 0x93, 0xbf, 0x8c, 0xbb, 0xc5,
+ 0x29, 0x56, 0xc6, 0xfc, 0x65, 0x1e, 0xbd, 0xa9, 0x77, 0xde, 0x83, 0x92,
+ 0x98, 0x78, 0xfb, 0x98, 0x33, 0xab, 0xbf, 0x12, 0x66, 0xd6, 0x29, 0xf4,
+ 0x9a, 0x96, 0x23, 0x9a, 0xf4, 0x03, 0x89, 0x22, 0x22, 0xd2, 0x8f, 0xa4,
+ 0x78, 0x8e, 0x33, 0xe0, 0x78, 0x32, 0xa2, 0xc7, 0xaa, 0xc8, 0x6e, 0xc3,
+ 0x54, 0x97, 0x56, 0xf6, 0x3a, 0x98, 0xf4, 0x27, 0xf1, 0xe8, 0x30, 0xaa,
+ 0xa1, 0x93, 0x4d, 0x4b, 0x26, 0x7d, 0x92, 0xbc, 0x36, 0x5e, 0x85, 0x89,
+ 0x38, 0xb4, 0x07, 0x49, 0x95, 0x34, 0xa8, 0x87, 0x96, 0x78, 0xd3, 0x11,
+ 0xb3, 0xd8, 0xa7, 0xf9, 0x21, 0xc3, 0x09, 0xa7, 0xca, 0x31, 0x2c, 0xc9,
+ 0x1c, 0x56, 0x96, 0xe6, 0x78, 0x9a, 0x90, 0x0f, 0x8b, 0x85, 0x4c, 0x5d,
+ 0x93, 0x8e, 0x88, 0xb1, 0x31, 0xb4, 0x97, 0xca, 0x65, 0x8c, 0xcd, 0x33,
+ 0xc4, 0x89, 0xd3, 0x86, 0x7f, 0x9a, 0x69, 0x7f, 0x25, 0xdd, 0x00, 0x90,
+ 0xc3, 0x27, 0xfe, 0xc4, 0x32, 0x8f, 0x04, 0x94, 0x89, 0x4b, 0x48, 0xc2,
+ 0x3e, 0xb1, 0xd6, 0x69, 0xa5, 0x10, 0x2e, 0x23, 0x59, 0xa2, 0x07, 0x48,
+ 0x87, 0x79, 0xe4, 0x43, 0x74, 0x73, 0xa1, 0xae, 0x0b, 0xa3, 0x1a, 0x5d,
+ 0xeb, 0x29, 0x78, 0x99, 0x5e, 0x1e, 0x2c, 0x12, 0x5a, 0x38, 0xb0, 0x49,
+ 0xfa, 0x11, 0xdd, 0x30, 0xe3, 0x7e, 0x44, 0x40, 0x84, 0x40, 0xd8, 0x22,
+ 0xf5, 0xe4, 0x81, 0x04, 0xa0, 0xa7, 0xad, 0x6c, 0x90, 0xa6, 0x90, 0xf6,
+ 0x4b, 0xa6, 0xd5, 0x77, 0x34, 0xa4, 0xcc, 0x5d, 0x5c, 0x61, 0x3a, 0x3f,
+ 0x13, 0xe6, 0x3a, 0xae, 0x55, 0xc9, 0xe2, 0x63, 0x5a, 0x82, 0xc9, 0x48,
+ 0x12, 0x5e, 0xb8, 0xe9, 0xac, 0x64, 0xd1, 0xb2, 0xf2, 0xb2, 0x27, 0x6d,
+ 0x60, 0x33, 0x33, 0x67, 0xe7, 0x73, 0x1e, 0x7d, 0xa4, 0x72, 0xe3, 0x0c,
+ 0x1c, 0x7c, 0x7d, 0x04, 0x83, 0xe0, 0x34, 0xa7, 0x0b, 0xa2, 0x2f, 0xdd,
+ 0xc8, 0x74, 0x04, 0x34, 0xc7, 0x09, 0x35, 0x57, 0xf9, 0xdc, 0x54, 0xd1,
+ 0x30, 0x73, 0xd0, 0x79, 0x31, 0x99, 0x74, 0x2c, 0x25, 0xc2, 0xe5, 0x8d,
+ 0x82, 0x68, 0x53, 0x53, 0x41, 0x5c, 0x78, 0x5f, 0xea, 0x2d, 0xe0, 0xdd,
+ 0x6b, 0x87, 0xae, 0x35, 0x8f, 0x93, 0xb5, 0x1c, 0x71, 0x8c, 0xe0, 0xbe,
+ 0x88, 0xec, 0x8f, 0x9e, 0x6a, 0x05, 0x81, 0x28, 0xab, 0xf6, 0xd6, 0x22,
+ 0xa7, 0x28, 0xfa, 0xef, 0x86, 0x08, 0x13, 0x76, 0xe5, 0xa3, 0x8e, 0xd0,
+ 0x4b, 0x4b, 0x90, 0xb7, 0x09, 0x40, 0x6d, 0x13, 0xad, 0x2b, 0x5d, 0xd1,
+ 0x1c, 0x4f, 0xec, 0xdf, 0x35, 0x18, 0x8f, 0x8e, 0x38, 0xec, 0x09, 0xb0,
+ 0x6d, 0x69, 0x86, 0x92, 0x35, 0xe5, 0x42, 0x9a, 0xf1, 0x49, 0x1a, 0x45,
+ 0x24, 0xb9, 0x53, 0x4f, 0x57, 0xe2, 0x2b, 0xc0, 0xbc, 0x10, 0xf5, 0x6a,
+ 0x98, 0x18, 0x1d, 0xda, 0x34, 0x74, 0x53, 0xe1, 0x8e, 0xc5, 0xe0, 0x21,
+ 0x2e, 0x60, 0x19, 0xba, 0x9b, 0x43, 0xb0, 0x56, 0xb8, 0x7a, 0x42, 0x7e,
+ 0x9c, 0xdd, 0x5d, 0x09, 0x0a, 0xd5, 0xbf, 0xb4, 0x17, 0xef, 0xd5, 0xe3,
+ 0xab, 0xf7, 0x0b, 0x17, 0xef, 0x91, 0xd5, 0xbb, 0xb8, 0x96, 0x9c, 0x8e,
+ 0x0c, 0xa1, 0x88, 0xaf, 0x82, 0xd0, 0x38, 0xd8, 0x24, 0x11, 0x9c, 0xed,
+ 0x43, 0xe4, 0x9a, 0xbc, 0x26, 0x70, 0x44, 0xbe, 0xfa, 0x87, 0xed, 0x3a,
+ 0xa8, 0xd1, 0x46, 0xdf, 0xdd, 0x9c, 0x38, 0xa4, 0x68, 0xf0, 0x08, 0x18,
+ 0x75, 0x9b, 0x2d, 0x98, 0x24, 0xfc, 0x3a, 0xe7, 0x2a, 0x7d, 0x24, 0xf2,
+ 0xaf, 0x85, 0x94, 0x71, 0xf6, 0xb8, 0xbb, 0xee, 0xe6, 0x54, 0xfd, 0x36,
+ 0xe3, 0x5a, 0x34, 0xbf, 0x2f, 0xed, 0xaa, 0x7a, 0x74, 0x72, 0x8d, 0x48,
+ 0x3a, 0x04, 0x71, 0xaa, 0xf6, 0x0b, 0xe1, 0x2d, 0x74, 0xa0, 0x76, 0xf8,
+ 0x73, 0x8d, 0x93, 0xf9, 0x80, 0x78, 0x26, 0x47, 0xbb, 0xc5, 0x36, 0xfb,
+ 0xcd, 0x05, 0xe3, 0xdc, 0x6c, 0x34, 0x0d, 0x3b, 0xff, 0xea, 0xb5, 0xca,
+ 0x79, 0xa5, 0x6c, 0xfb, 0xd8, 0x2c, 0xd3, 0xb9, 0x7d, 0xff, 0xa7, 0x4f,
+ 0x11, 0x9e, 0x35, 0x8b, 0x9e, 0x97, 0x69, 0xaa, 0x37, 0xda, 0x13, 0xc5,
+ 0x15, 0x87, 0x20, 0xb1, 0xdf, 0xe1, 0xaf, 0x4b, 0xb8, 0xe9, 0xaf, 0x56,
+ 0x31, 0x01, 0xdc, 0xb8, 0xec, 0x76, 0x66, 0x8f, 0xea, 0x14, 0x6a, 0x35,
+ 0x35, 0x0d, 0x2a, 0xf7, 0xc6, 0x9a, 0x01, 0x82, 0x42, 0x95, 0x68, 0x85,
+ 0x12, 0x1f, 0x20, 0x56, 0x47, 0x9e, 0x2d, 0xca, 0x1c, 0x65, 0xc1, 0x94,
+ 0x3b, 0x28, 0x90, 0x6e, 0xaa, 0x6c, 0x9a, 0x5d, 0xa9, 0xbd, 0xf1, 0xf0,
+ 0xbb, 0xc3, 0xe3, 0x48, 0x82, 0xac, 0xe5, 0x73, 0xe7, 0x42, 0x0e, 0xcc,
+ 0x52, 0x86, 0x32, 0x03, 0xe3, 0x8f, 0xdc, 0x18, 0x8c, 0xf7, 0x21, 0x2d,
+ 0x76, 0x06, 0x25, 0xd3, 0xc3, 0x74, 0x3f, 0x65, 0xe6, 0x49, 0x2d, 0xd9,
+ 0xba, 0x3b, 0x11, 0xc4, 0xad, 0x6a, 0x28, 0x11, 0x55, 0xb8, 0x96, 0xbe,
+ 0x3e, 0x3f, 0xdf, 0xba, 0xc9, 0xca, 0x11, 0x83, 0x9a, 0xc5, 0x04, 0x05,
+ 0x65, 0x35, 0x79, 0x0d, 0xe5, 0x4f, 0xdc, 0x30, 0xbc, 0xcd, 0x7e, 0x26,
+ 0xd1, 0x1b, 0x8b, 0x62, 0x9a, 0x8f, 0xef, 0x93, 0xd7, 0x3a, 0xb2, 0x8a,
+ 0xb5, 0x73, 0xde, 0x74, 0xb8, 0x63, 0xd4, 0x16, 0x7e, 0xf2, 0xed, 0x60,
+ 0xff, 0x7c, 0xf0, 0xfa, 0xf0, 0xf8, 0xf0, 0xeb, 0xfd, 0x8b, 0x43, 0x97,
+ 0x6b, 0x82, 0x08, 0x9e, 0x15, 0x74, 0x61, 0xf4, 0xf0, 0xad, 0x8e, 0x54,
+ 0x0c, 0x8e, 0x1c, 0xe3, 0xcd, 0x28, 0x84, 0x37, 0x59, 0x6d, 0xc1, 0xb8,
+ 0xa2, 0xba, 0xcc, 0x52, 0x48, 0xb0, 0x51, 0x7c, 0xa9, 0x0f, 0x94, 0x9a,
+ 0xce, 0x74, 0xa8, 0xd1, 0x0c, 0xd2, 0xe9, 0x1d, 0xa3, 0xb2, 0xbc, 0x9f,
+ 0xb3, 0xb2, 0xa5, 0x10, 0x09, 0x2c, 0x84, 0x63, 0xf6, 0xc1, 0x96, 0x04,
+ 0xeb, 0xdf, 0xd8, 0x65, 0xc4, 0xb4, 0x75, 0xcb, 0x34, 0x12, 0x1f, 0xa9,
+ 0x49, 0x8e, 0xaf, 0xf1, 0x60, 0x2b, 0x74, 0xce, 0xe7, 0x13, 0x23, 0x44,
+ 0x52, 0xbf, 0x8b, 0x44, 0x35, 0x55, 0xfb, 0xaa, 0xf1, 0x75, 0x36, 0x73,
+ 0x71, 0xf6, 0x1c, 0xef, 0x41, 0x4f, 0x2b, 0x68, 0x0b, 0x9d, 0xb1, 0x3b,
+ 0x8e, 0x22, 0xc2, 0x61, 0x16, 0x0d, 0x0a, 0xf1, 0x8f, 0x1c, 0xf3, 0xd7,
+ 0x21, 0x22, 0xdd, 0xe5, 0xc8, 0x93, 0x97, 0x50, 0x1c, 0x44, 0x44, 0x82,
+ 0x48, 0x2c, 0xec, 0xb7, 0x3b, 0xd0, 0x57, 0x41, 0x77, 0xda, 0xaa, 0xe6,
+ 0x12, 0x79, 0x03, 0x62, 0xda, 0x35, 0x21, 0x5a, 0x72, 0xda, 0x6b, 0xb3,
+ 0xf8, 0xe2, 0x04, 0xb9, 0xbb, 0x81, 0x07, 0x3a, 0x74, 0xfe, 0xac, 0x38,
+ 0xcd, 0x00, 0x19, 0x08, 0x41, 0x84, 0xa0, 0x84, 0xfc, 0xb9, 0x84, 0x02,
+ 0x76, 0x3b, 0x18, 0x24, 0xa3, 0x25, 0xd6, 0xff, 0x3a, 0x55, 0x50, 0xc8,
+ 0xd4, 0x82, 0xc8, 0x4a, 0xc0, 0x23, 0xf0, 0x09, 0xe8, 0xcc, 0x11, 0x6e,
+ 0xee, 0x3a, 0xf2, 0x6e, 0x07, 0xd9, 0xa2, 0xac, 0x3b, 0xe2, 0x63, 0x25,
+ 0x42, 0xd4, 0x19, 0xa0, 0x27, 0x41, 0x96, 0x6e, 0x00, 0xa6, 0x70, 0x78,
+ 0x7a, 0x26, 0xc0, 0x9f, 0xc7, 0xfc, 0x8b, 0x46, 0xa2, 0xb4, 0x7b, 0x86,
+ 0x65, 0x42, 0x13, 0x54, 0xe0, 0xf2, 0x86, 0x5e, 0xed, 0x20, 0xa3, 0x2c,
+ 0x6c, 0x50, 0x22, 0x57, 0x14, 0x12, 0x49, 0x49, 0x1a, 0x33, 0x6a, 0x53,
+ 0xbb, 0x07, 0x23, 0xc3, 0x50, 0x78, 0x0c, 0x7d, 0x11, 0x8c, 0x30, 0x0a,
+ 0x09, 0xbf, 0x31, 0xef, 0xca, 0x09, 0x7f, 0x69, 0xca, 0xc4, 0x6a, 0x67,
+ 0xb3, 0x4f, 0x34, 0xe3, 0x26, 0xf9, 0xad, 0xa4, 0x04, 0x8c, 0x59, 0x4a,
+ 0xe3, 0x18, 0xfa, 0x79, 0x4a, 0x17, 0xa2, 0xbe, 0x21, 0x49, 0xb9, 0x4d,
+ 0xe8, 0xa2, 0xb1, 0x81, 0x78, 0xb0, 0x27, 0x05, 0x35, 0x03, 0x64, 0x24,
+ 0x4c, 0xda, 0x19, 0x7e, 0xfa, 0x02, 0x11, 0x9a, 0xde, 0x43, 0xd2, 0x41,
+ 0x56, 0x0d, 0xbb, 0x51, 0x23, 0x37, 0x80, 0x66, 0xaa, 0x59, 0xc8, 0x58,
+ 0x76, 0xaf, 0x79, 0xd0, 0x62, 0xfc, 0xbd, 0x54, 0x3f, 0x65, 0x3a, 0xcd,
+ 0xeb, 0x7b, 0xd1, 0x5b, 0x43, 0x13, 0xc8, 0x75, 0xda, 0x95, 0x46, 0x42,
+ 0x0b, 0xef, 0x70, 0x54, 0x30, 0x51, 0xdd, 0xb6, 0xd8, 0xd2, 0x0f, 0xda,
+ 0x08, 0x41, 0x56, 0x00, 0xa6, 0xf2, 0x91, 0x3d, 0x09, 0x39, 0x6b, 0xf9,
+ 0x3a, 0x14, 0x59, 0x1c, 0xc6, 0x2c, 0x51, 0x2a, 0x9f, 0x17, 0x5d, 0x54,
+ 0x25, 0x1c, 0x82, 0x86, 0x9a, 0x0a, 0x14, 0x43, 0x93, 0x04, 0xa3, 0xde,
+ 0x25, 0x2f, 0x9c, 0xf7, 0x10, 0xed, 0x83, 0xcc, 0x49, 0xa5, 0x13, 0xa0,
+ 0x44, 0x0e, 0x46, 0x10, 0x52, 0x1a, 0x65, 0xd7, 0xe9, 0x6d, 0xce, 0xb8,
+ 0x35, 0x21, 0x08, 0x53, 0x87, 0xf9, 0x87, 0xf6, 0x9f, 0x21, 0x27, 0x78,
+ 0x63, 0xf8, 0x00, 0xf3, 0xbb, 0x12, 0x41, 0x1d, 0x22, 0x30, 0x61, 0x37,
+ 0x60, 0x9d, 0x3f, 0xed, 0xab, 0xc7, 0x11, 0x11, 0x03, 0x51, 0x9c, 0x3e,
+ 0x22, 0xbe, 0x1d, 0x82, 0x8a, 0x3e, 0x99, 0x56, 0xb7, 0xdd, 0x27, 0xac,
+ 0xba, 0xfd, 0xe5, 0x27, 0x4c, 0x70, 0xbc, 0x98, 0x84, 0x0e, 0x4f, 0xcf,
+ 0xbf, 0x4b, 0x5c, 0x98, 0x57, 0xd7, 0xcd, 0x29, 0x87, 0xcb, 0xcf, 0x0b,
+ 0xa4, 0x16, 0x1c, 0xb0, 0x5f, 0x79, 0xc2, 0xdc, 0x01, 0xa3, 0xfe, 0xf5,
+ 0x54, 0x9d, 0xee, 0x9f, 0x7f, 0xd7, 0x3a, 0x4f, 0xde, 0x31, 0x9e, 0xd7,
+ 0x49, 0x97, 0x2b, 0x0b, 0xe8, 0x52, 0xa5, 0xc1, 0xa1, 0x72, 0x6b, 0x9d,
+ 0xa4, 0x56, 0xdd, 0x7e, 0x0a, 0xa9, 0xd1, 0x50, 0x22, 0x52, 0x8b, 0x96,
+ 0xf7, 0x21, 0x52, 0x0b, 0xf7, 0xa8, 0x83, 0xd4, 0xa8, 0xfd, 0x88, 0xd4,
+ 0x6c, 0x5d, 0xbb, 0x69, 0x6d, 0x15, 0xa9, 0x59, 0xbc, 0x6b, 0x26, 0x64,
+ 0x16, 0x52, 0x59, 0x4c, 0x61, 0x0d, 0xba, 0x99, 0x57, 0x03, 0x0f, 0xf8,
+ 0xf8, 0xd2, 0xfd, 0xfa, 0x45, 0x07, 0xd8, 0x4b, 0x88, 0xac, 0x21, 0x00,
+ 0x2c, 0xc5, 0xb2, 0xbe, 0x02, 0x39, 0xbc, 0x7e, 0x77, 0xee, 0x01, 0x36,
+ 0xea, 0xeb, 0x12, 0x38, 0x50, 0x41, 0x6b, 0xc3, 0x87, 0x8d, 0xcb, 0xa9,
+ 0xa1, 0x94, 0x0a, 0xa2, 0x2e, 0x77, 0x30, 0x08, 0x86, 0x95, 0x6c, 0x88,
+ 0xf0, 0xa2, 0xee, 0xd1, 0x00, 0xca, 0xd0, 0x45, 0x8a, 0x5f, 0x02, 0x8d,
+ 0x8c, 0x86, 0xa1, 0x88, 0xd0, 0x1c, 0xaa, 0x33, 0x65, 0x83, 0xa0, 0xa6,
+ 0x8f, 0xba, 0x44, 0xb6, 0x79, 0x0b, 0xdf, 0x32, 0xd9, 0xe8, 0x68, 0x6e,
+ 0x6e, 0x69, 0xd1, 0x9b, 0x0f, 0x9a, 0xc5, 0x9b, 0x40, 0x21, 0x5d, 0x68,
+ 0x10, 0xde, 0x75, 0xa5, 0xd9, 0xd7, 0x65, 0x47, 0xb0, 0x6d, 0x26, 0x79,
+ 0x78, 0x21, 0xce, 0x83, 0xd2, 0xba, 0x0b, 0x76, 0x07, 0xc8, 0xf5, 0x20,
+ 0xe5, 0xbe, 0x1c, 0xe6, 0x40, 0xd5, 0x61, 0x4f, 0x03, 0x39, 0x21, 0xaf,
+ 0x80, 0x8d, 0x77, 0x0f, 0x42, 0x8f, 0x60, 0xe7, 0x17, 0xb7, 0x4f, 0x07,
+ 0x3c, 0x55, 0xda, 0xab, 0xc5, 0x40, 0xe7, 0xdc, 0xb9, 0xf5, 0xc6, 0x39,
+ 0x46, 0xb9, 0xa4, 0x14, 0x87, 0xcf, 0xcb, 0xa5, 0x4b, 0xea, 0x12, 0x2f,
+ 0x34, 0x72, 0xdc, 0x43, 0x72, 0x88, 0x90, 0x74, 0x8a, 0x40, 0x55, 0x68,
+ 0xd0, 0x8d, 0x5e, 0x5f, 0x9c, 0xaa, 0x2d, 0x2e, 0x00, 0xa6, 0x0c, 0xe9,
+ 0x43, 0x56, 0x20, 0x2d, 0xaf, 0x96, 0x91, 0xab, 0x11, 0x16, 0x20, 0xef,
+ 0x23, 0xb3, 0x70, 0xf6, 0x30, 0xd7, 0xfe, 0xff, 0xec, 0x4d, 0xfc, 0x94,
+ 0x5d, 0x7c, 0xfe, 0x8f, 0xdf, 0xc5, 0xe7, 0xff, 0x43, 0x76, 0xf1, 0xf9,
+ 0xff, 0x47, 0x76, 0xd1, 0x70, 0x02, 0x82, 0x3d, 0xe9, 0xaf, 0xde, 0x4e,
+ 0x56, 0x87, 0x6b, 0x0d, 0xf5, 0xe5, 0xdb, 0x9b, 0xb7, 0xc0, 0x5a, 0x10,
+ 0x75, 0xbb, 0x23, 0x27, 0x5a, 0x6c, 0xdb, 0x48, 0xdd, 0xea, 0x86, 0x60,
+ 0x52, 0x5b, 0x82, 0x35, 0x7a, 0x74, 0x1a, 0xc0, 0x43, 0xf8, 0xdd, 0x31,
+ 0x90, 0x2f, 0x55, 0x91, 0x3b, 0xfd, 0xff, 0x15, 0x3b, 0x85, 0x89, 0x97,
+ 0x4b, 0x10, 0x7c, 0x05, 0xe9, 0x13, 0x8e, 0x63, 0xd9, 0x2f, 0x48, 0x05,
+ 0x23, 0x8b, 0x18, 0xa4, 0x4d, 0xda, 0x7b, 0xc9, 0xab, 0x3d, 0x90, 0xc7,
+ 0xbf, 0xe8, 0x4c, 0x04, 0x02, 0x8c, 0x97, 0x1f, 0x52, 0x37, 0x39, 0x38,
+ 0x8d, 0xca, 0x11, 0x84, 0xf9, 0xef, 0x43, 0x92, 0x08, 0xa1, 0x7a, 0x1e,
+ 0x23, 0x87, 0x5f, 0x43, 0x0d, 0xff, 0x3d, 0x72, 0xc8, 0xf8, 0xb2, 0x06,
+ 0x2e, 0x17, 0x3b, 0x77, 0xdf, 0x9f, 0x1d, 0xaf, 0xca, 0xb3, 0x12, 0xf7,
+ 0x29, 0xa7, 0xbc, 0x9e, 0x09, 0x8a, 0x57, 0x99, 0x9c, 0xa6, 0x57, 0xd9,
+ 0x7a, 0x88, 0xe8, 0xf6, 0x09, 0xf8, 0x0f, 0x11, 0x82, 0x02, 0x6b, 0xa2,
+ 0x3e, 0xda, 0x2f, 0x04, 0x4c, 0x80, 0x31, 0xc2, 0xc3, 0x25, 0x88, 0x2f,
+ 0xb3, 0x0b, 0x20, 0x4a, 0x44, 0xd5, 0x66, 0xa6, 0xab, 0xa5, 0xd4, 0xab,
+ 0xa7, 0x67, 0xfd, 0x4f, 0x1c, 0xfc, 0xbf, 0x6e, 0x03, 0x74, 0x53, 0x8e,
+ 0xe3, 0xa7, 0xf9, 0x11, 0x6f, 0x4e, 0x6d, 0xa6, 0x0c, 0x54, 0x7a, 0x10,
+ 0x5c, 0x3a, 0x07, 0xc0, 0xa6, 0xaf, 0x05, 0x06, 0xf2, 0xb2, 0x98, 0xb6,
+ 0x49, 0x53, 0x80, 0xe4, 0x88, 0x0b, 0x1c, 0xeb, 0xb0, 0xf6, 0xd4, 0xcf,
+ 0x2c, 0x7b, 0x69, 0x83, 0x52, 0xb1, 0x21, 0x14, 0x12, 0xd3, 0x29, 0x23,
+ 0xf6, 0xb7, 0x23, 0x12, 0x99, 0x7e, 0x5d, 0x7e, 0x3e, 0xdb, 0x81, 0x78,
+ 0x40, 0x90, 0x32, 0x72, 0xc0, 0xb7, 0xbb, 0x69, 0xfd, 0x86, 0xee, 0xd7,
+ 0x43, 0xb8, 0xa9, 0x39, 0xfe, 0xf0, 0x65, 0x10, 0x8f, 0xf7, 0xe3, 0x9e,
+ 0x19, 0x0f, 0x7e, 0xee, 0x4e, 0x2e, 0x88, 0xd3, 0x32, 0x9b, 0x61, 0x01,
+ 0x06, 0x02, 0x10, 0x06, 0xf9, 0x75, 0x26, 0x9b, 0x61, 0xb9, 0x0d, 0x7b,
+ 0x39, 0xb5, 0x0c, 0x36, 0x22, 0x00, 0x2d, 0x0f, 0xc2, 0x21, 0x89, 0x09,
+ 0xdc, 0x36, 0xe2, 0x17, 0xa0, 0xde, 0x07, 0x02, 0xb8, 0x0d, 0x15, 0x35,
+ 0xb2, 0xdf, 0x70, 0x50, 0x0f, 0x0e, 0x56, 0xd0, 0xaf, 0x09, 0x70, 0x74,
+ 0x60, 0x4e, 0xbf, 0x3d, 0x38, 0xff, 0xdd, 0xce, 0xae, 0x45, 0x32, 0x72,
+ 0x90, 0xb2, 0x7a, 0xf7, 0xcf, 0x81, 0x76, 0xd1, 0x26, 0x6f, 0xd6, 0x4d,
+ 0xa4, 0x4c, 0x07, 0xfc, 0x1d, 0x1c, 0x04, 0xe9, 0x72, 0xac, 0xfd, 0xcb,
+ 0x08, 0x7f, 0xc2, 0xf0, 0x24, 0x0d, 0xcd, 0x22, 0xc6, 0xb3, 0x4e, 0x1d,
+ 0x9e, 0x36, 0xc8, 0xd9, 0x90, 0x04, 0x0f, 0xc5, 0xad, 0x5b, 0x03, 0x47,
+ 0x86, 0x2e, 0xc5, 0x12, 0x21, 0x16, 0xd4, 0xb3, 0x04, 0x4d, 0xc5, 0x41,
+ 0x64, 0x82, 0x54, 0xdb, 0x85, 0x33, 0x63, 0x11, 0xcf, 0x00, 0x0b, 0x67,
+ 0x31, 0x79, 0x3d, 0x58, 0x92, 0xf5, 0xae, 0xad, 0x08, 0x33, 0xbd, 0x16,
+ 0xa5, 0x24, 0xc0, 0xdd, 0x64, 0xf7, 0x0e, 0xeb, 0x21, 0x71, 0x9f, 0x36,
+ 0x77, 0x95, 0x21, 0x33, 0x39, 0xba, 0x35, 0x32, 0x99, 0x13, 0x9b, 0xff,
+ 0x17, 0xf1, 0x69, 0x0a, 0x85, 0x89, 0x2a, 0xc4, 0x4d, 0x72, 0xd8, 0x87,
+ 0x47, 0xa0, 0x99, 0x01, 0x77, 0x5e, 0x0b, 0x73, 0x4c, 0xef, 0x3b, 0x1d,
+ 0xc7, 0xbe, 0x6c, 0x8d, 0x30, 0x60, 0x28, 0x57, 0x12, 0xa9, 0x87, 0x44,
+ 0x8b, 0x26, 0x66, 0x5a, 0x36, 0x0f, 0xcf, 0x47, 0x64, 0xe3, 0x9b, 0x87,
+ 0x89, 0x44, 0x6c, 0x75, 0xce, 0xc7, 0x37, 0x10, 0xe8, 0xd5, 0x5c, 0x14,
+ 0x4e, 0xcf, 0xc2, 0x56, 0x24, 0x54, 0xbd, 0x63, 0x17, 0x90, 0x42, 0xc2,
+ 0x36, 0x78, 0x26, 0x4b, 0xbe, 0x0d, 0xf3, 0xb9, 0x78, 0x1d, 0xe1, 0x1f,
+ 0x9d, 0xdf, 0xe6, 0x65, 0x31, 0x87, 0x8c, 0x72, 0x9b, 0x96, 0x39, 0xb4,
+ 0x43, 0x1a, 0xeb, 0x87, 0xd7, 0x47, 0x67, 0xc9, 0x06, 0x6d, 0xec, 0xe8,
+ 0x7e, 0x05, 0xa2, 0xe1, 0x56, 0x56, 0x8f, 0xb7, 0x16, 0x37, 0xf9, 0xd6,
+ 0xbc, 0xaa, 0x26, 0xa3, 0x4d, 0x87, 0x9b, 0x81, 0xee, 0x40, 0x87, 0x42,
+ 0xcb, 0x3b, 0x30, 0x0f, 0x2c, 0x39, 0xa1, 0x6b, 0x83, 0x16, 0x20, 0xda,
+ 0x85, 0x8a, 0x16, 0x7a, 0x36, 0xac, 0x8a, 0x4d, 0x2d, 0xfa, 0x73, 0x9b,
+ 0xe6, 0x53, 0x07, 0x11, 0x38, 0x97, 0xa6, 0x24, 0x40, 0x4b, 0x41, 0x0a,
+ 0xd8, 0x5f, 0x91, 0x4d, 0x56, 0x04, 0x2b, 0x59, 0xd0, 0x8e, 0x40, 0x76,
+ 0x4a, 0xa6, 0xbf, 0xc5, 0xdc, 0xd0, 0x72, 0x22, 0x67, 0xd9, 0x05, 0x90,
+ 0xf7, 0x19, 0xdf, 0x9e, 0x17, 0x45, 0x7c, 0x67, 0x6c, 0x87, 0xe8, 0x8c,
+ 0xce, 0x5b, 0x1f, 0x6e, 0xad, 0x27, 0x0e, 0xd1, 0x9f, 0x56, 0x19, 0xf5,
+ 0x29, 0x7c, 0x09, 0x05, 0x22, 0xb0, 0xcb, 0x65, 0xe5, 0xec, 0xa3, 0xa9,
+ 0xdb, 0xaf, 0x61, 0x77, 0xae, 0xa5, 0xdb, 0x4e, 0xf5, 0x63, 0x56, 0xc9,
+ 0xfa, 0xde, 0x3a, 0x8e, 0xd6, 0x1c, 0x88, 0xe2, 0x22, 0xe4, 0xe8, 0xa0,
+ 0xb0, 0x55, 0xeb, 0x3f, 0xad, 0x27, 0x49, 0x64, 0x1f, 0x95, 0xe3, 0x94,
+ 0x7b, 0xec, 0x69, 0x4e, 0x1f, 0xbd, 0x9a, 0xe7, 0x7f, 0x13, 0x58, 0x02,
+ 0x77, 0x88, 0x27, 0x19, 0xb2, 0x21, 0x10, 0xd2, 0x19, 0x0c, 0xa1, 0x13,
+ 0x0d, 0xc3, 0x0f, 0xe9, 0xa7, 0x78, 0x48, 0x56, 0x65, 0x21, 0xe5, 0xaf,
+ 0x69, 0x48, 0xe6, 0xa5, 0x95, 0x21, 0x74, 0x98, 0x2b, 0x9a, 0x03, 0x72,
+ 0x75, 0x1a, 0x82, 0x98, 0x82, 0x28, 0xaa, 0x39, 0x3f, 0x39, 0x57, 0x67,
+ 0xd1, 0xdb, 0x74, 0x9c, 0xd0, 0x1f, 0x3f, 0x40, 0xbe, 0xd8, 0xe4, 0x91,
+ 0x37, 0x51, 0xce, 0xec, 0x88, 0x09, 0x67, 0x14, 0x5e, 0xd8, 0x05, 0x74,
+ 0xd6, 0xb7, 0x03, 0xd7, 0x3c, 0x38, 0xc1, 0x35, 0x98, 0xe5, 0x60, 0x8e,
+ 0x23, 0xcd, 0xd9, 0x15, 0x13, 0x35, 0x4b, 0x95, 0x69, 0x14, 0x61, 0xe3,
+ 0xde, 0xdf, 0x72, 0xcc, 0x86, 0x19, 0x86, 0x8b, 0x7e, 0x86, 0x04, 0xca,
+ 0xbc, 0x18, 0xd6, 0x6e, 0xfa, 0x8a, 0xa6, 0xca, 0x98, 0x30, 0x82, 0x14,
+ 0x1b, 0x39, 0xed, 0x6b, 0xb1, 0x6f, 0x18, 0xdf, 0x77, 0x4e, 0xa4, 0x70,
+ 0xa0, 0x12, 0xf9, 0xec, 0x3b, 0xf3, 0x99, 0xcf, 0xff, 0x04, 0xe2, 0x07,
+ 0xed, 0xff, 0x2a, 0xd2, 0xff, 0xed, 0x22, 0xb2, 0x34, 0x97, 0xfa, 0x65,
+ 0x57, 0x9e, 0xfe, 0x79, 0x36, 0x35, 0xc4, 0x77, 0x4b, 0x89, 0x1b, 0x97,
+ 0xf7, 0x0b, 0xb6, 0x82, 0xc9, 0x5b, 0xba, 0x3e, 0x80, 0x09, 0x97, 0xec,
+ 0xb7, 0xb0, 0x2c, 0xc0, 0xb0, 0x23, 0xbd, 0xd3, 0xf7, 0xa8, 0xb9, 0x81,
+ 0xb0, 0x7d, 0x12, 0xf1, 0xd4, 0x10, 0xb6, 0xe4, 0x33, 0x4e, 0x85, 0x25,
+ 0xaa, 0x9c, 0x48, 0x12, 0x8e, 0xcb, 0xa6, 0x8a, 0x20, 0x2e, 0xb8, 0x9d,
+ 0x2a, 0x74, 0x7a, 0xf3, 0x31, 0xe1, 0xc4, 0x7c, 0x66, 0xb6, 0xf0, 0xba,
+ 0x6d, 0x06, 0x0a, 0x8d, 0x3e, 0x1f, 0xc1, 0x98, 0x9b, 0xf2, 0xe0, 0x98,
+ 0x25, 0x35, 0x54, 0x2e, 0xe7, 0xe8, 0xbc, 0xb9, 0x52, 0x8e, 0xbd, 0xb7,
+ 0xcf, 0xd9, 0xd9, 0xd1, 0xf9, 0x41, 0xc2, 0xe7, 0xeb, 0xe4, 0xdd, 0xf1,
+ 0x9f, 0x59, 0xe0, 0xae, 0x81, 0x65, 0xce, 0xd6, 0x3a, 0xee, 0xbf, 0xeb,
+ 0x62, 0xa8, 0xfa, 0x3e, 0x48, 0xbe, 0x83, 0x77, 0xc8, 0xcd, 0x3c, 0xb8,
+ 0xb3, 0x2d, 0xf6, 0x79, 0x6c, 0x4c, 0x2e, 0x70, 0xa2, 0x11, 0xc1, 0xe5,
+ 0x2c, 0x85, 0x70, 0x04, 0xdb, 0xd8, 0xc2, 0x8c, 0x96, 0x31, 0x9a, 0x16,
+ 0x87, 0x80, 0x84, 0x82, 0xbe, 0x68, 0x49, 0x6c, 0x35, 0xa4, 0xde, 0x69,
+ 0xa2, 0xad, 0x5c, 0x5c, 0x9a, 0xe8, 0x95, 0x38, 0x73, 0x57, 0xa4, 0x8f,
+ 0x40, 0x26, 0x74, 0xe0, 0x0d, 0x2a, 0x2c, 0xf0, 0xe1, 0xd3, 0xb3, 0xae,
+ 0x72, 0xfa, 0x21, 0x43, 0x59, 0x2e, 0xee, 0x93, 0xaf, 0x53, 0xe6, 0x07,
+ 0x30, 0xfe, 0xa5, 0xd9, 0x2c, 0xba, 0xa0, 0xab, 0x82, 0xfd, 0x8e, 0x6a,
+ 0x8c, 0xc3, 0xef, 0x8e, 0x9c, 0x81, 0x4c, 0x27, 0x51, 0x89, 0x09, 0x2f,
+ 0xe6, 0x84, 0xfd, 0xe9, 0x46, 0x3d, 0xa0, 0x39, 0x1a, 0x4a, 0x1c, 0x6b,
+ 0x63, 0x25, 0x41, 0x86, 0xad, 0xd4, 0xae, 0x81, 0x34, 0x21, 0x53, 0x6b,
+ 0x67, 0x76, 0x89, 0xd4, 0x82, 0x2c, 0x85, 0xe4, 0x25, 0xff, 0xbb, 0x62,
+ 0xda, 0x81, 0x2c, 0x0c, 0x67, 0x72, 0x43, 0x7a, 0xe0, 0x97, 0x35, 0x92,
+ 0x96, 0x73, 0x6a, 0x1a, 0x9c, 0x27, 0xb6, 0x06, 0x73, 0xd8, 0x34, 0x5d,
+ 0xc8, 0xfd, 0xe4, 0xf5, 0xe1, 0x19, 0xf8, 0xd2, 0xe1, 0xbb, 0xaf, 0xe1,
+ 0xc4, 0x09, 0x18, 0x3d, 0x37, 0x59, 0x09, 0x8f, 0x92, 0xba, 0x06, 0x26,
+ 0x3b, 0xb6, 0x9a, 0xe3, 0x8b, 0x9d, 0xed, 0x27, 0x10, 0x00, 0x27, 0xbf,
+ 0x69, 0xc2, 0x5a, 0x2a, 0x0a, 0xc4, 0xc1, 0x7e, 0x38, 0xbb, 0x5f, 0xa7,
+ 0x38, 0x84, 0x8b, 0x27, 0xd9, 0xf5, 0x05, 0x67, 0xf4, 0x11, 0x59, 0x75,
+ 0xb8, 0x88, 0x38, 0x8d, 0x28, 0x40, 0xbe, 0xe0, 0x43, 0xac, 0xf7, 0x6b,
+ 0xe2, 0x6b, 0xb3, 0x24, 0x34, 0xac, 0x46, 0xae, 0x91, 0x58, 0x2a, 0x56,
+ 0xdf, 0x3c, 0x1b, 0xd5, 0x66, 0xd2, 0xd0, 0x19, 0x5c, 0xe6, 0x13, 0xf3,
+ 0x15, 0x75, 0x4b, 0x34, 0xaf, 0xca, 0xc8, 0xb6, 0x2e, 0x57, 0x84, 0xc9,
+ 0x72, 0x86, 0x88, 0x84, 0x15, 0xef, 0xcb, 0xb5, 0xde, 0x58, 0x7a, 0xda,
+ 0x53, 0xd5, 0x49, 0x95, 0xca, 0x23, 0xcf, 0x39, 0xa2, 0xc1, 0x11, 0xed,
+ 0x11, 0xb4, 0x19, 0x6d, 0xaa, 0x87, 0xa7, 0x02, 0xb1, 0x54, 0xab, 0x65,
+ 0x50, 0x8d, 0xa6, 0x3f, 0x20, 0x95, 0xf7, 0xc3, 0xc1, 0xfe, 0x87, 0xaf,
+ 0xde, 0xbf, 0x7b, 0x7d, 0x7c, 0xd8, 0x6b, 0x53, 0xe4, 0xa5, 0x46, 0x46,
+ 0x54, 0x1c, 0x06, 0xa0, 0xa8, 0x19, 0x61, 0x82, 0x3c, 0xce, 0x38, 0xe0,
+ 0xbf, 0xe4, 0xb4, 0x33, 0xe7, 0x4e, 0xfd, 0x8a, 0xb7, 0xcd, 0x22, 0xcb,
+ 0xf9, 0x04, 0x70, 0x4c, 0xc1, 0xe4, 0x0d, 0x28, 0x47, 0xad, 0x6f, 0x36,
+ 0xbe, 0x4e, 0xe0, 0x28, 0x06, 0x10, 0x9a, 0x40, 0x07, 0xb7, 0x1c, 0x4f,
+ 0xc9, 0x4d, 0xf7, 0xe5, 0x80, 0x1a, 0xea, 0x3d, 0xa7, 0x5d, 0x60, 0xd5,
+ 0x53, 0x1a, 0x50, 0xc7, 0x76, 0x57, 0x8d, 0xbc, 0x02, 0x6e, 0x85, 0x28,
+ 0x79, 0xa0, 0x83, 0x1c, 0x97, 0x75, 0xaf, 0x6f, 0x82, 0x4b, 0x98, 0x7a,
+ 0x85, 0x0b, 0x3e, 0x4a, 0xe7, 0xe1, 0x74, 0xc9, 0x54, 0xe8, 0x7a, 0x98,
+ 0x7d, 0xcc, 0x20, 0x8f, 0xe8, 0x5b, 0x07, 0x2a, 0x19, 0x7c, 0x5f, 0x94,
+ 0xb0, 0x8f, 0xbe, 0xf6, 0x12, 0x82, 0x3c, 0x44, 0xda, 0x63, 0x1c, 0xbb,
+ 0xc8, 0x52, 0x40, 0x8a, 0xf2, 0x16, 0x28, 0xad, 0x78, 0xba, 0x7f, 0xf1,
+ 0x4d, 0xd7, 0x11, 0xee, 0x96, 0xd8, 0x14, 0xec, 0x85, 0x35, 0x05, 0x00,
+ 0xda, 0xaa, 0x62, 0xd4, 0x0f, 0xbf, 0x20, 0xaa, 0x6e, 0x33, 0x8c, 0x2e,
+ 0x7d, 0x22, 0xd4, 0x1f, 0x44, 0x54, 0x55, 0x59, 0xd5, 0xdf, 0x8d, 0x46,
+ 0xd8, 0xdd, 0xd9, 0xd1, 0x56, 0x4b, 0x93, 0x18, 0xe0, 0x82, 0x81, 0xd0,
+ 0x7f, 0x5b, 0x46, 0x04, 0x32, 0x6c, 0x31, 0x22, 0x2f, 0x93, 0xfd, 0xf7,
+ 0x59, 0x52, 0x90, 0x1d, 0x1b, 0x9f, 0x52, 0xe1, 0x53, 0x76, 0xfd, 0x81,
+ 0x37, 0xf9, 0x24, 0x18, 0x1e, 0x99, 0xab, 0x04, 0xe2, 0x6e, 0x03, 0x86,
+ 0x7b, 0x75, 0x89, 0x49, 0x31, 0x87, 0x9b, 0xa9, 0x90, 0xb8, 0xb7, 0x9e,
+ 0x6c, 0x64, 0xc3, 0x2b, 0x6a, 0x6f, 0x9d, 0xdb, 0xd9, 0xd9, 0xe3, 0x7f,
+ 0x77, 0xf1, 0xef, 0x93, 0xf5, 0xcd, 0xc8, 0xe2, 0x51, 0x81, 0x7d, 0xc5,
+ 0x59, 0x94, 0x88, 0xf6, 0x09, 0x6c, 0x18, 0x96, 0x01, 0x9f, 0xaf, 0x22,
+ 0x24, 0x15, 0xf1, 0xba, 0x90, 0x3d, 0xfc, 0x42, 0x80, 0x55, 0x22, 0x4d,
+ 0x65, 0xc4, 0x25, 0x54, 0x68, 0x6e, 0x63, 0x49, 0xa0, 0x0f, 0xf3, 0x26,
+ 0xc6, 0x1f, 0xca, 0xec, 0x3a, 0xad, 0x88, 0x47, 0x2c, 0xeb, 0x9c, 0xc3,
+ 0x00, 0x3a, 0x10, 0xc7, 0xa7, 0x9a, 0xda, 0x45, 0x33, 0xd6, 0x8e, 0x1d,
+ 0x6e, 0x8d, 0x6d, 0xad, 0x98, 0x1a, 0x59, 0xd4, 0xd1, 0x27, 0x06, 0x5a,
+ 0x59, 0xb4, 0x8b, 0x11, 0x9a, 0xe9, 0x8f, 0x1f, 0x0b, 0xeb, 0x82, 0xcd,
+ 0xd8, 0x94, 0x8a, 0xc0, 0x84, 0x24, 0xbb, 0xa4, 0x15, 0xcb, 0x05, 0xe7,
+ 0x41, 0x72, 0xd4, 0x64, 0xd4, 0x71, 0x8e, 0x87, 0xdc, 0x71, 0x1a, 0x67,
+ 0xe5, 0xfe, 0x06, 0x07, 0x71, 0x3a, 0x1d, 0x6a, 0x87, 0x35, 0x89, 0xef,
+ 0x53, 0xe2, 0x65, 0xc0, 0x5d, 0x05, 0x63, 0x45, 0x78, 0xbb, 0x4e, 0x56,
+ 0x92, 0xf5, 0x8c, 0xd8, 0x15, 0x21, 0xb8, 0x0b, 0xb6, 0xd5, 0xf1, 0xe9,
+ 0x5f, 0x7d, 0x72, 0x16, 0x39, 0x2d, 0xcf, 0x64, 0xb1, 0x1c, 0xb1, 0xb2,
+ 0xf5, 0x52, 0xfe, 0x4a, 0xe8, 0xcf, 0x69, 0x3e, 0x86, 0xfe, 0xb5, 0x71,
+ 0x8d, 0xe2, 0x43, 0x9b, 0x9f, 0x72, 0x82, 0x24, 0x2c, 0xa0, 0x95, 0xf6,
+ 0x6a, 0x8d, 0x89, 0x36, 0x27, 0x00, 0x34, 0x1b, 0x51, 0xb8, 0x82, 0xf6,
+ 0xa2, 0xf5, 0xe5, 0xe4, 0x38, 0x85, 0x17, 0x7d, 0xee, 0x4e, 0x50, 0x1a,
+ 0x28, 0x77, 0x62, 0x34, 0xec, 0x00, 0x8c, 0x74, 0x1b, 0xe3, 0x9c, 0x42,
+ 0xc1, 0x94, 0xf4, 0x66, 0x27, 0xe6, 0xc5, 0xc2, 0x96, 0x1d, 0x08, 0x98,
+ 0x1a, 0xef, 0x5b, 0x15, 0x2d, 0x03, 0x20, 0x14, 0x36, 0xf2, 0x3c, 0x7f,
+ 0xea, 0xe3, 0x61, 0x93, 0xea, 0x3a, 0xdd, 0x7d, 0xf6, 0xdc, 0x86, 0x9e,
+ 0x78, 0xb3, 0x02, 0x9f, 0xed, 0x9e, 0x7c, 0xbb, 0xb5, 0xd5, 0xeb, 0x40,
+ 0x79, 0xa5, 0x83, 0x9f, 0x89, 0x2f, 0x84, 0x9f, 0xfc, 0x53, 0xaf, 0x33,
+ 0xd7, 0x27, 0xc4, 0x2e, 0x4f, 0x81, 0x34, 0x5f, 0x94, 0xad, 0xea, 0xbf,
+ 0xc6, 0xd6, 0xdb, 0xb8, 0x13, 0xab, 0x25, 0x9c, 0xb0, 0x36, 0x9b, 0x94,
+ 0xb8, 0xc8, 0x11, 0xc0, 0x58, 0x93, 0xee, 0xbb, 0xdf, 0x58, 0xa3, 0xca,
+ 0x74, 0x89, 0xe8, 0x84, 0x79, 0x0f, 0x5d, 0x5b, 0x97, 0x16, 0x6a, 0x74,
+ 0x79, 0xb2, 0x96, 0x6b, 0x23, 0x81, 0xde, 0xc2, 0x1b, 0x97, 0x91, 0x9d,
+ 0xca, 0xd1, 0x86, 0x63, 0x8d, 0x75, 0xd1, 0x0c, 0xdb, 0x08, 0xae, 0xf9,
+ 0x51, 0x51, 0xd6, 0x2d, 0xe8, 0x89, 0x88, 0xd9, 0x21, 0x0c, 0x84, 0x97,
+ 0x02, 0xc1, 0xf9, 0xa5, 0x02, 0xb2, 0x99, 0xb5, 0xb6, 0x33, 0x46, 0x3b,
+ 0x74, 0xab, 0xbc, 0x18, 0x6e, 0xe3, 0x62, 0x73, 0x1c, 0x50, 0x40, 0x5f,
+ 0x04, 0xff, 0xe5, 0xfc, 0x5b, 0xc6, 0x9b, 0xd8, 0x0f, 0x8b, 0x00, 0x71,
+ 0x3e, 0x46, 0x1c, 0x7b, 0xa3, 0x77, 0x2d, 0xbf, 0x74, 0x57, 0x4c, 0x2f,
+ 0xa9, 0xa1, 0xad, 0x83, 0xfb, 0x14, 0x8c, 0x4d, 0xe9, 0xc6, 0x2a, 0x2d,
+ 0x84, 0x99, 0xfb, 0x4f, 0xa5, 0xef, 0x56, 0x73, 0xad, 0x91, 0xf4, 0xd1,
+ 0x74, 0x57, 0xcb, 0x27, 0x66, 0x28, 0x37, 0xb7, 0x52, 0x67, 0xdc, 0x83,
+ 0x53, 0xa1, 0x7f, 0xd3, 0x0b, 0x99, 0x15, 0xa8, 0xaa, 0x4e, 0xeb, 0x65,
+ 0xf5, 0xa8, 0xee, 0xe4, 0x04, 0x7d, 0xab, 0x33, 0x44, 0x2f, 0x39, 0xe0,
+ 0x2a, 0x85, 0x90, 0x5a, 0xa9, 0x3b, 0xb9, 0x2a, 0xc6, 0x90, 0xb8, 0x02,
+ 0x82, 0x3c, 0x97, 0x76, 0x0c, 0x41, 0x66, 0x23, 0xbd, 0x49, 0x69, 0x85,
+ 0x0e, 0xce, 0x4f, 0xb9, 0x87, 0x05, 0x07, 0xd3, 0x6c, 0xf2, 0xa9, 0x8a,
+ 0xc0, 0x22, 0xac, 0xae, 0xc7, 0xca, 0x24, 0x26, 0xbf, 0x3a, 0x56, 0xf1,
+ 0xa3, 0x85, 0xff, 0x22, 0xc7, 0x10, 0xee, 0x1c, 0x41, 0x49, 0xc2, 0x0d,
+ 0x1e, 0x75, 0xb4, 0xa0, 0x7b, 0x74, 0xb2, 0xe9, 0xf2, 0xf6, 0xfa, 0x76,
+ 0xc5, 0xb8, 0x44, 0xbe, 0x6a, 0x79, 0x75, 0xa5, 0xb1, 0x31, 0xea, 0x33,
+ 0xf7, 0xab, 0x11, 0xc9, 0xa1, 0xee, 0x80, 0x5f, 0xc3, 0x7b, 0xcd, 0xf7,
+ 0xb1, 0x01, 0x26, 0x80, 0xb7, 0xcd, 0x0b, 0xdf, 0x70, 0x2a, 0x86, 0x91,
+ 0xdc, 0x83, 0x15, 0xf6, 0x3b, 0x74, 0x2c, 0xec, 0x89, 0xc1, 0x4f, 0x5e,
+ 0x6a, 0xb9, 0xed, 0x0e, 0x27, 0x60, 0x5e, 0x99, 0x0d, 0xcc, 0x6a, 0x70,
+ 0xa1, 0xb8, 0x14, 0x6b, 0x1d, 0x3e, 0x35, 0xc2, 0x13, 0xb1, 0x9d, 0xa7,
+ 0x0e, 0xbe, 0xc8, 0x74, 0x6d, 0x94, 0xdb, 0xf2, 0x76, 0x3e, 0xdd, 0x69,
+ 0x3a, 0xbf, 0x2f, 0x49, 0x95, 0xcf, 0x06, 0xc8, 0xb6, 0x5b, 0x7b, 0x88,
+ 0xc0, 0x7c, 0xf4, 0x11, 0x6c, 0x53, 0xfc, 0x96, 0xe6, 0xe8, 0x69, 0x45,
+ 0x13, 0x2b, 0xe3, 0xe1, 0x8a, 0x76, 0xb6, 0x37, 0xea, 0x4d, 0xf0, 0x8e,
+ 0x04, 0x42, 0x73, 0xb0, 0x14, 0xa0, 0xc6, 0x58, 0xe3, 0xc1, 0x54, 0xcc,
+ 0xe7, 0x25, 0x39, 0x00, 0x9a, 0xa8, 0xad, 0x2c, 0x68, 0x35, 0xce, 0x81,
+ 0xc4, 0xef, 0x2b, 0xc3, 0x92, 0x13, 0x60, 0x23, 0x92, 0x8d, 0xee, 0x55,
+ 0xc9, 0x9b, 0x7c, 0x9e, 0x57, 0x5c, 0xe1, 0x99, 0x8b, 0x41, 0xa6, 0x57,
+ 0x59, 0xbc, 0x51, 0x44, 0xe3, 0x95, 0x98, 0x6f, 0xd2, 0x44, 0xe1, 0xf0,
+ 0xcb, 0x7c, 0x21, 0xee, 0x35, 0x4d, 0xc8, 0x52, 0x0f, 0x1b, 0x43, 0x54,
+ 0x05, 0xd3, 0xfc, 0xd5, 0x7b, 0x69, 0xec, 0x47, 0xcd, 0xc3, 0xab, 0xed,
+ 0xc3, 0x7c, 0xd1, 0x73, 0xe6, 0x01, 0x1b, 0x9e, 0x3f, 0x23, 0xd6, 0x06,
+ 0x4f, 0x1a, 0xc7, 0x14, 0x97, 0x20, 0x49, 0x98, 0xa0, 0x77, 0xb6, 0x87,
+ 0x2f, 0x50, 0x38, 0x9a, 0x3f, 0xde, 0xf4, 0xdb, 0xff, 0x00, 0x26, 0xc7,
+ 0xd3, 0xdd, 0x06, 0x2d, 0x5c, 0x22, 0x4c, 0x8d, 0xe8, 0xb3, 0xdb, 0xe1,
+ 0xfd, 0x86, 0x51, 0x12, 0x2b, 0x4e, 0xe0, 0xe0, 0x39, 0x6d, 0x70, 0x5d,
+ 0x37, 0xa9, 0x53, 0x29, 0xa7, 0x60, 0x93, 0x3d, 0x6c, 0x76, 0x81, 0x02,
+ 0x74, 0xc9, 0x2a, 0x88, 0xc5, 0x46, 0x1a, 0x2b, 0x34, 0x87, 0x7c, 0x73,
+ 0x28, 0x43, 0x08, 0x65, 0xd5, 0xd0, 0x3f, 0x54, 0x8f, 0xa7, 0xd3, 0x9a,
+ 0xd5, 0xe3, 0xe0, 0xcb, 0x49, 0xa6, 0x55, 0x6d, 0xdb, 0x77, 0x84, 0x14,
+ 0x9d, 0xd7, 0x48, 0x46, 0xea, 0xf3, 0x68, 0xae, 0xa1, 0x8f, 0x9a, 0x01,
+ 0x85, 0x0d, 0x4c, 0x15, 0x8e, 0xd9, 0x8d, 0xf0, 0x52, 0x30, 0xd3, 0x22,
+ 0x0d, 0x84, 0x3d, 0x11, 0xb7, 0x02, 0x7c, 0xea, 0xe0, 0xab, 0x34, 0xe0,
+ 0xd1, 0xa7, 0x74, 0x22, 0x8f, 0xfa, 0xed, 0xb1, 0x7b, 0x00, 0xbc, 0x16,
+ 0x51, 0xec, 0xed, 0xe6, 0x34, 0x76, 0x0e, 0x75, 0x8d, 0xc5, 0x6a, 0x66,
+ 0xa9, 0x95, 0x3c, 0x30, 0xf1, 0x0c, 0xb2, 0x1c, 0xbd, 0xa9, 0xb2, 0x99,
+ 0xe4, 0x1b, 0x08, 0xf9, 0x93, 0x1c, 0x34, 0x88, 0xf4, 0x23, 0xc3, 0x11,
+ 0x80, 0xf0, 0x20, 0x1b, 0x50, 0x0b, 0xb1, 0xa7, 0xb5, 0x16, 0x2e, 0xe5,
+ 0x51, 0x2a, 0x78, 0xe5, 0xee, 0xee, 0x8a, 0x40, 0x0d, 0x45, 0xc1, 0x55,
+ 0xaf, 0x0c, 0x2f, 0xc6, 0xa0, 0x4a, 0x2f, 0x33, 0xe3, 0xc0, 0x7c, 0x24,
+ 0xb9, 0x70, 0xc1, 0x98, 0x96, 0x50, 0x92, 0x17, 0xf1, 0xd9, 0x3c, 0xc6,
+ 0xa1, 0xaa, 0x96, 0x63, 0xd6, 0x55, 0xd8, 0x1c, 0xea, 0xd8, 0x22, 0xcb,
+ 0x75, 0x95, 0x9d, 0xe1, 0x29, 0x9d, 0x21, 0x0b, 0x4a, 0xe4, 0x72, 0x70,
+ 0x9a, 0x86, 0xcf, 0xda, 0x42, 0x47, 0x7c, 0x6b, 0x0b, 0xac, 0x17, 0x06,
+ 0xbd, 0x5b, 0x0e, 0x10, 0x21, 0xe6, 0xdf, 0x6a, 0xff, 0xe9, 0xf6, 0x0e,
+ 0x86, 0xfb, 0x74, 0xfb, 0xb3, 0xb0, 0x96, 0x87, 0xc3, 0x33, 0x51, 0xbc,
+ 0x7a, 0xcd, 0x9d, 0x79, 0x38, 0xb1, 0x79, 0xca, 0xb6, 0x65, 0xac, 0x6b,
+ 0x36, 0x5b, 0x4e, 0x21, 0x86, 0x29, 0xcc, 0xcb, 0x20, 0x9f, 0x0b, 0xcc,
+ 0x07, 0xa7, 0x4a, 0x62, 0x2f, 0x53, 0x38, 0x4e, 0x62, 0xb1, 0x3b, 0x31,
+ 0xd4, 0xb3, 0x55, 0xd8, 0x2f, 0x0a, 0xf7, 0x1c, 0xc4, 0x71, 0x02, 0xbf,
+ 0x06, 0xdc, 0x2b, 0x32, 0x7e, 0x79, 0xbd, 0xef, 0x40, 0xb1, 0x5e, 0x2e,
+ 0xd8, 0x10, 0xaa, 0x46, 0x39, 0xe2, 0x8b, 0x5b, 0x80, 0x75, 0xd1, 0xcc,
+ 0xa5, 0x31, 0x83, 0xb2, 0x5a, 0x59, 0xe9, 0xb3, 0x37, 0x07, 0xad, 0xe6,
+ 0x76, 0x9f, 0x7c, 0xfe, 0xb9, 0x0e, 0x22, 0xd3, 0x34, 0x0f, 0x5f, 0x17,
+ 0x80, 0xfd, 0x02, 0x92, 0x01, 0x2e, 0x4e, 0x4c, 0xae, 0x06, 0x8c, 0x54,
+ 0x52, 0x89, 0x7c, 0xee, 0x50, 0x5c, 0x7b, 0xba, 0xa6, 0x3d, 0x4d, 0xea,
+ 0x74, 0xc9, 0x6f, 0x69, 0xa2, 0xf5, 0x6a, 0xb5, 0xee, 0xa4, 0xe1, 0x87,
+ 0x1b, 0x88, 0xa8, 0x14, 0xe7, 0xfa, 0x32, 0x0a, 0xa4, 0xbf, 0x9a, 0xa3,
+ 0xc7, 0xbf, 0xb0, 0x1a, 0x7c, 0x95, 0xd5, 0x71, 0xa2, 0x5e, 0x80, 0x27,
+ 0xd1, 0x68, 0x7c, 0x25, 0x60, 0xa9, 0x47, 0xb1, 0xb6, 0x54, 0xc3, 0x97,
+ 0xa2, 0xe3, 0x1b, 0x2c, 0x61, 0x50, 0xb1, 0xf4, 0x4b, 0x90, 0xd1, 0x4b,
+ 0x75, 0xdc, 0x77, 0x02, 0x4b, 0x7f, 0xa9, 0x10, 0xb8, 0xaa, 0x29, 0x01,
+ 0x9b, 0xb5, 0xae, 0xd3, 0xf1, 0xb5, 0x67, 0xe6, 0x40, 0x2d, 0x81, 0x21,
+ 0x4f, 0x75, 0x33, 0xad, 0xb0, 0x13, 0x45, 0x6b, 0xe4, 0xae, 0xb8, 0xdc,
+ 0x4b, 0x43, 0xd6, 0xa5, 0x97, 0x80, 0xf3, 0x2d, 0x25, 0x5e, 0x78, 0x34,
+ 0x5d, 0x4b, 0x51, 0x75, 0x88, 0xb4, 0x22, 0xd1, 0xf8, 0x77, 0x83, 0x85,
+ 0x8a, 0x4e, 0xfe, 0xa1, 0xd5, 0x6e, 0xb5, 0xe2, 0x34, 0xb0, 0x8b, 0xf9,
+ 0x64, 0x1c, 0xb5, 0x15, 0xfb, 0x6b, 0xb3, 0xaf, 0xc7, 0x3e, 0xe9, 0xf1,
+ 0x43, 0xed, 0x93, 0xcf, 0x2f, 0xf5, 0x2c, 0xda, 0x21, 0xf4, 0xfd, 0x83,
+ 0x30, 0x65, 0x38, 0x0e, 0x84, 0x5a, 0x7c, 0xf1, 0xdc, 0xd5, 0x64, 0x05,
+ 0x0a, 0x2b, 0xbf, 0x09, 0x98, 0xd0, 0xbd, 0x4e, 0x93, 0xec, 0xe0, 0x8d,
+ 0x1b, 0xe9, 0xab, 0x2f, 0x1b, 0xad, 0xdd, 0xdd, 0x0d, 0x67, 0xf7, 0xf6,
+ 0x5d, 0x35, 0x1c, 0x17, 0xb3, 0x0e, 0x28, 0x32, 0x45, 0xeb, 0x17, 0x92,
+ 0xf2, 0x10, 0x2b, 0x61, 0xbd, 0x46, 0x5f, 0x6b, 0x99, 0xd1, 0xf2, 0xd2,
+ 0xca, 0x51, 0x6f, 0x97, 0x17, 0xda, 0x01, 0xa0, 0x5f, 0x21, 0x28, 0x9a,
+ 0x15, 0x95, 0x51, 0x41, 0x14, 0x67, 0xb4, 0xc4, 0x78, 0x11, 0x75, 0xb9,
+ 0x1c, 0xf3, 0x85, 0xf4, 0x9e, 0xdd, 0x44, 0xf5, 0x72, 0x2e, 0xa5, 0x6a,
+ 0x23, 0x27, 0xa6, 0xaf, 0xaf, 0xac, 0x8a, 0x0c, 0x8f, 0xd5, 0xe4, 0x17,
+ 0xef, 0x22, 0x4d, 0xd5, 0xcc, 0xba, 0xc8, 0x17, 0xa8, 0x67, 0x6c, 0x39,
+ 0xe7, 0x91, 0x35, 0xa3, 0x0a, 0x7c, 0xe2, 0xdc, 0x02, 0x4b, 0x2b, 0x55,
+ 0xfe, 0xb7, 0xcc, 0x04, 0x24, 0xcd, 0x0c, 0xd1, 0x0a, 0xe1, 0x2c, 0x62,
+ 0xc5, 0xf2, 0xe8, 0x9f, 0x5d, 0xa9, 0x5c, 0x41, 0xc2, 0xaf, 0x83, 0x00,
+ 0x74, 0x78, 0x68, 0x5a, 0x5c, 0xc9, 0x6c, 0x16, 0xa6, 0x44, 0xb4, 0x19,
+ 0x06, 0xc0, 0xf0, 0x7b, 0x7d, 0x49, 0x5c, 0x51, 0xa0, 0x05, 0x9f, 0x33,
+ 0xbf, 0x72, 0xc7, 0xd7, 0xef, 0xb2, 0xd1, 0xab, 0x2f, 0x39, 0xb4, 0xe5,
+ 0x23, 0xb0, 0x34, 0x05, 0x54, 0x9f, 0xc9, 0x7d, 0x8b, 0xff, 0x5c, 0x4f,
+ 0xd8, 0x58, 0xdc, 0xb1, 0xe1, 0x74, 0x4c, 0x56, 0xb5, 0x18, 0xc0, 0x05,
+ 0x05, 0xad, 0x5d, 0x16, 0xc5, 0xca, 0xc6, 0xac, 0xe8, 0x1d, 0x56, 0x22,
+ 0x48, 0x54, 0x90, 0xbc, 0x01, 0x4f, 0xfd, 0x42, 0xf1, 0x0a, 0x0c, 0x15,
+ 0x70, 0x80, 0xae, 0x34, 0x78, 0x18, 0x2d, 0xe5, 0xe2, 0xb6, 0x94, 0xd8,
+ 0x57, 0x5a, 0xb1, 0x98, 0x55, 0xa3, 0xd5, 0x0b, 0xc2, 0x4f, 0xbf, 0xfa,
+ 0x12, 0x30, 0x83, 0xfc, 0xeb, 0x9f, 0xdc, 0xdb, 0xfc, 0x0f, 0x1d, 0x1f,
+ 0x62, 0x42, 0x2b, 0x27, 0xc2, 0x8a, 0x97, 0x3d, 0xbf, 0x25, 0xb6, 0x40,
+ 0xb3, 0xee, 0xf4, 0xfa, 0x3d, 0xa6, 0xa9, 0xde, 0x9f, 0x7a, 0x88, 0xa8,
+ 0x30, 0xd7, 0x0d, 0x4a, 0x3d, 0x49, 0x7d, 0xcb, 0x22, 0x8a, 0x1a, 0xe6,
+ 0x24, 0x0b, 0x3c, 0x50, 0x61, 0xe0, 0x8f, 0x8d, 0xf9, 0xa7, 0x75, 0x37,
+ 0xea, 0x9f, 0xd6, 0xfd, 0xb8, 0x7f, 0x5a, 0xf7, 0x23, 0xff, 0x69, 0xfd,
+ 0x57, 0xec, 0x68, 0x4f, 0x9a, 0xf7, 0xad, 0x07, 0x8d, 0x07, 0x6d, 0xaf,
+ 0xf7, 0x56, 0x35, 0xed, 0x1d, 0xdd, 0xb9, 0x31, 0x01, 0xbf, 0x42, 0x7c,
+ 0xc4, 0x75, 0x15, 0xa4, 0x1c, 0xa5, 0xd4, 0xc9, 0x96, 0x79, 0xc3, 0xf8,
+ 0x1b, 0x45, 0x1f, 0x05, 0x4f, 0xf0, 0x9a, 0xb2, 0x20, 0x5e, 0x4d, 0xd9,
+ 0x6e, 0x1b, 0x60, 0x75, 0x5a, 0x27, 0x6e, 0xa5, 0x2d, 0x6e, 0x25, 0x0a,
+ 0x66, 0x72, 0xaf, 0x77, 0x42, 0x6c, 0x5e, 0x2e, 0x4b, 0x09, 0x9a, 0x13,
+ 0xd6, 0x2e, 0x20, 0x24, 0x06, 0x08, 0xac, 0x7d, 0xbd, 0xdd, 0x7f, 0xf7,
+ 0x7e, 0xff, 0xf8, 0xc1, 0xf8, 0xed, 0x30, 0xd0, 0xd2, 0x79, 0xfd, 0x60,
+ 0xa5, 0x08, 0x4d, 0x11, 0x9c, 0xc1, 0xc2, 0x92, 0xc6, 0x92, 0x58, 0xe8,
+ 0x8f, 0x2c, 0x78, 0xfc, 0xdc, 0x99, 0xeb, 0xf4, 0xbd, 0xca, 0xdb, 0x6f,
+ 0xc2, 0xba, 0x3f, 0x37, 0x92, 0x9e, 0xb3, 0x6e, 0xef, 0xf3, 0xeb, 0xeb,
+ 0xea, 0x34, 0x77, 0xb5, 0x7c, 0xbb, 0x4a, 0x46, 0xba, 0xeb, 0x89, 0x25,
+ 0x2c, 0xb3, 0x8e, 0xc3, 0xbc, 0xa5, 0xb8, 0xa4, 0x86, 0x4f, 0x27, 0x09,
+ 0xa4, 0x97, 0x97, 0x2b, 0x03, 0x00, 0xf6, 0x0f, 0x0e, 0x7c, 0x06, 0x5c,
+ 0x13, 0x4b, 0xa3, 0x11, 0x01, 0xfc, 0x8f, 0xb7, 0xe1, 0x60, 0xe1, 0xa6,
+ 0xa8, 0xbe, 0xcb, 0x59, 0x42, 0x83, 0xba, 0x90, 0x04, 0xd4, 0x97, 0x3a,
+ 0x9a, 0x2f, 0x3a, 0xd7, 0x91, 0x06, 0x10, 0x4a, 0xc3, 0x56, 0x85, 0x0d,
+ 0xf5, 0xe6, 0xce, 0xd5, 0xb9, 0x7d, 0xba, 0x0f, 0xf4, 0x65, 0xcd, 0xc6,
+ 0x54, 0xad, 0x26, 0xca, 0x16, 0xd0, 0xb8, 0x7a, 0x54, 0x37, 0xb1, 0xf9,
+ 0x1b, 0x82, 0x97, 0xd9, 0xff, 0x54, 0x76, 0x4c, 0x2e, 0x96, 0x33, 0x22,
+ 0x5f, 0x92, 0x8b, 0x26, 0xa4, 0x34, 0x3f, 0x1c, 0xd1, 0x69, 0xbb, 0xcb,
+ 0x0e, 0x48, 0x89, 0x32, 0x55, 0xb1, 0x35, 0xed, 0x0c, 0x5e, 0xed, 0x77,
+ 0x3b, 0x06, 0xd6, 0xcf, 0x8f, 0x2e, 0x0e, 0x69, 0x77, 0xde, 0x5f, 0x7c,
+ 0xb3, 0xae, 0x9a, 0x4f, 0x3b, 0xc1, 0x1c, 0xa8, 0x62, 0xa4, 0x8c, 0xd3,
+ 0xd2, 0x5b, 0xd2, 0x5c, 0x29, 0x2c, 0x37, 0x2e, 0x0c, 0xd1, 0x8a, 0xa1,
+ 0x6a, 0x6d, 0xf4, 0xb3, 0xe1, 0xb3, 0xcd, 0xd6, 0xc6, 0xac, 0xc6, 0x8a,
+ 0x6d, 0x57, 0x4f, 0x54, 0x9a, 0x56, 0xb0, 0x52, 0x0e, 0x75, 0xde, 0xf2,
+ 0xb5, 0x04, 0x44, 0xb4, 0x4f, 0x2d, 0x68, 0xa3, 0x03, 0x0d, 0xc3, 0x63,
+ 0x83, 0x38, 0xc3, 0x00, 0x10, 0x55, 0x1d, 0x9c, 0x9f, 0xca, 0x5c, 0x61,
+ 0x8d, 0x70, 0x97, 0x88, 0x16, 0xa7, 0x8b, 0x9b, 0xbb, 0x89, 0x01, 0xd4,
+ 0xb9, 0x66, 0x57, 0x58, 0xac, 0x29, 0x36, 0xf8, 0x9a, 0x9c, 0xe3, 0x13,
+ 0xfe, 0x3a, 0xf1, 0x55, 0x93, 0x59, 0x2e, 0x00, 0x4d, 0x01, 0x58, 0x6b,
+ 0x9b, 0x92, 0x55, 0x75, 0xfc, 0x51, 0x7e, 0x76, 0xf3, 0x00, 0x88, 0x07,
+ 0x5c, 0xdc, 0x15, 0xc2, 0x82, 0xbe, 0x81, 0xd1, 0x68, 0x22, 0x83, 0xaf,
+ 0x67, 0x05, 0x8d, 0x4a, 0xa2, 0x47, 0x78, 0x89, 0x63, 0xf4, 0xfb, 0x8d,
+ 0xf3, 0x4d, 0x57, 0x4f, 0x94, 0x25, 0x78, 0x6d, 0x8d, 0x13, 0x59, 0x5a,
+ 0x89, 0x2b, 0x01, 0x04, 0x8a, 0x22, 0xc8, 0x74, 0xc1, 0xe2, 0x05, 0x27,
+ 0x31, 0xbe, 0x68, 0xc1, 0xfd, 0xc6, 0x77, 0x93, 0xee, 0xdc, 0x7c, 0x11,
+ 0x80, 0x24, 0x0f, 0x8e, 0x31, 0xcf, 0xc4, 0x23, 0x72, 0xf0, 0xfd, 0xeb,
+ 0x56, 0xc5, 0x75, 0xcc, 0x0a, 0x84, 0x20, 0x38, 0x21, 0xf3, 0x55, 0x98,
+ 0x0d, 0x16, 0x05, 0x40, 0xb4, 0x24, 0xa5, 0x88, 0x26, 0x59, 0xb6, 0x70,
+ 0xa8, 0xc1, 0x28, 0x81, 0x25, 0xc5, 0xb7, 0xe8, 0xc8, 0xb1, 0x65, 0xeb,
+ 0x1e, 0xe8, 0x8e, 0xf7, 0x2b, 0x46, 0xa7, 0x6c, 0xa0, 0x51, 0x9c, 0x87,
+ 0x41, 0xfc, 0x49, 0x21, 0x4c, 0x76, 0x3e, 0x7b, 0xf2, 0x79, 0x52, 0x71,
+ 0x1e, 0x68, 0x1e, 0x2e, 0x99, 0xc0, 0x4c, 0xad, 0x46, 0xe3, 0x50, 0xf1,
+ 0xde, 0xdc, 0x6a, 0x9a, 0x9b, 0x4c, 0x5a, 0x7d, 0x71, 0x97, 0xe1, 0xe6,
+ 0xd2, 0x3c, 0xc9, 0x18, 0x9c, 0x81, 0x16, 0x51, 0x17, 0x4c, 0x05, 0x5c,
+ 0xac, 0x93, 0xd8, 0x8a, 0x86, 0x01, 0x65, 0x4e, 0x88, 0xe9, 0x70, 0x41,
+ 0x03, 0x62, 0x0f, 0x67, 0x87, 0x17, 0x67, 0xf4, 0xe3, 0xfc, 0xe2, 0xe4,
+ 0x6c, 0x05, 0x84, 0x4a, 0x3d, 0x06, 0xdb, 0xe3, 0x45, 0x33, 0x43, 0x9c,
+ 0x39, 0xb1, 0x02, 0x7e, 0x81, 0x88, 0x05, 0x61, 0x21, 0x55, 0x27, 0x42,
+ 0x66, 0x00, 0x94, 0x59, 0x35, 0xab, 0xa4, 0x5f, 0x12, 0x2f, 0x7f, 0x70,
+ 0x62, 0xb2, 0xe7, 0x0f, 0x53, 0x08, 0x26, 0xcc, 0xc4, 0xc8, 0x33, 0x76,
+ 0x4c, 0x1b, 0xa3, 0xd5, 0x12, 0xaa, 0xde, 0xf5, 0xab, 0x06, 0x97, 0x15,
+ 0x14, 0x22, 0x64, 0x25, 0xd5, 0x6a, 0x1b, 0x15, 0xc8, 0xd6, 0x2d, 0xbb,
+ 0x77, 0x9d, 0x63, 0x0c, 0x6e, 0x5c, 0x31, 0x82, 0x47, 0xe8, 0x37, 0xad,
+ 0x9c, 0xa5, 0x89, 0xaf, 0xcc, 0x62, 0x96, 0x89, 0x34, 0x2f, 0xae, 0x5c,
+ 0xe3, 0x3a, 0x72, 0x4f, 0x08, 0x7c, 0x54, 0xd2, 0x95, 0x5c, 0xee, 0xb0,
+ 0x37, 0x79, 0x97, 0x7b, 0x11, 0x82, 0x97, 0xec, 0x0b, 0x09, 0x38, 0xd3,
+ 0x1a, 0xa0, 0xa6, 0x3d, 0x1b, 0x55, 0xef, 0x61, 0x88, 0xe0, 0x67, 0xc3,
+ 0x9d, 0x36, 0x77, 0xe6, 0x4c, 0xeb, 0x6e, 0x0e, 0x83, 0xb8, 0x47, 0xcb,
+ 0xd7, 0x75, 0x05, 0xb2, 0x1c, 0x60, 0x5c, 0x58, 0x95, 0xe1, 0x54, 0x9f,
+ 0xea, 0xcc, 0x14, 0x43, 0x42, 0x2a, 0x67, 0x14, 0x38, 0x1a, 0xd7, 0xad,
+ 0x97, 0xe4, 0xe7, 0x65, 0x9b, 0xab, 0x36, 0x84, 0xa5, 0x98, 0x8f, 0x76,
+ 0x94, 0xad, 0x4a, 0x06, 0xa7, 0x5b, 0x41, 0x82, 0xb9, 0x42, 0xcb, 0x36,
+ 0x66, 0xbe, 0xd3, 0x2d, 0x80, 0xac, 0x02, 0x7b, 0x6b, 0x4b, 0x21, 0x30,
+ 0x30, 0x8b, 0x5c, 0x59, 0xaa, 0x2c, 0xd2, 0x8d, 0x0a, 0x41, 0xba, 0xa8,
+ 0xc2, 0x33, 0xcc, 0x7d, 0x31, 0x33, 0x5b, 0x44, 0x46, 0x1e, 0x61, 0x05,
+ 0x55, 0x6e, 0xa9, 0x49, 0x21, 0x31, 0xee, 0xbc, 0x08, 0x1d, 0x91, 0xbc,
+ 0x10, 0x5c, 0x11, 0xb5, 0x6c, 0x57, 0x8b, 0xb6, 0xa7, 0x16, 0x8b, 0x92,
+ 0x09, 0xbc, 0x9d, 0x5c, 0x8f, 0xa0, 0x88, 0x88, 0x06, 0x4e, 0xc3, 0x4d,
+ 0x14, 0x56, 0x07, 0x71, 0xdc, 0xf3, 0x88, 0x5a, 0x52, 0x12, 0x24, 0x69,
+ 0xdb, 0xd2, 0xe3, 0x65, 0xae, 0xb1, 0xf3, 0x03, 0x83, 0x92, 0xec, 0x75,
+ 0x2d, 0x2c, 0xd6, 0x4c, 0x0a, 0x37, 0x51, 0xae, 0x7d, 0xaf, 0x71, 0x19,
+ 0x18, 0xd0, 0xdb, 0x20, 0x5f, 0x3c, 0x9e, 0xc4, 0x6f, 0xf0, 0x01, 0x3c,
+ 0x2c, 0x9f, 0x16, 0xd7, 0xf0, 0x5e, 0x99, 0xd7, 0x29, 0x8f, 0xe1, 0x6f,
+ 0xaa, 0xc4, 0x5b, 0x4b, 0x15, 0x04, 0x8d, 0xc4, 0x2d, 0x1e, 0xb4, 0x9b,
+ 0x1e, 0xcc, 0xd6, 0xe8, 0x4d, 0x49, 0xd9, 0xc3, 0x42, 0xaf, 0x8c, 0xce,
+ 0x64, 0xe3, 0xb7, 0x6c, 0x46, 0x58, 0x09, 0x61, 0x10, 0x44, 0x13, 0xc0,
+ 0x36, 0x46, 0xe3, 0x75, 0x03, 0x8e, 0xed, 0x11, 0x8a, 0x0e, 0x24, 0x12,
+ 0x8d, 0x9d, 0x29, 0x2b, 0xd6, 0x1e, 0xf6, 0xd5, 0xa0, 0xe0, 0xa7, 0xc3,
+ 0xdd, 0xcd, 0x07, 0x73, 0x02, 0x59, 0x7e, 0x67, 0x68, 0x48, 0x49, 0x16,
+ 0x27, 0x55, 0x4b, 0x00, 0x3b, 0x04, 0xf2, 0xa1, 0x94, 0xad, 0xf5, 0x95,
+ 0x32, 0x31, 0x8b, 0x38, 0x78, 0x80, 0x57, 0xa8, 0xbd, 0x6f, 0x0c, 0x08,
+ 0xf8, 0xf8, 0x7e, 0x41, 0x08, 0x4e, 0x93, 0x53, 0xba, 0x63, 0xdc, 0x12,
+ 0x07, 0x48, 0x07, 0xf4, 0x0e, 0xd4, 0x0d, 0x1e, 0xc6, 0x66, 0xfb, 0x42,
+ 0x64, 0x6f, 0x28, 0x22, 0x22, 0xdf, 0x78, 0x0f, 0x02, 0x2b, 0x7f, 0x33,
+ 0xfa, 0x90, 0xbd, 0x18, 0x25, 0x0d, 0x03, 0x38, 0x4e, 0x52, 0xef, 0x15,
+ 0x87, 0x96, 0x4d, 0xe5, 0xc6, 0x4f, 0xd7, 0x3a, 0xef, 0x69, 0xac, 0xad,
+ 0xbf, 0x08, 0x38, 0x48, 0x9b, 0x4e, 0x66, 0x15, 0x96, 0x43, 0x5b, 0x2e,
+ 0x54, 0x0b, 0x9a, 0x14, 0x77, 0x73, 0x54, 0x08, 0x4a, 0x62, 0x6a, 0xc2,
+ 0xf0, 0xf9, 0xec, 0xb4, 0x3c, 0x7d, 0xbb, 0xdb, 0xc3, 0x8f, 0x6d, 0x76,
+ 0x5a, 0x55, 0xd3, 0xc1, 0x78, 0x3c, 0x7e, 0x80, 0xa3, 0x1e, 0x1c, 0x1c,
+ 0xd0, 0x07, 0x07, 0x40, 0xda, 0x61, 0x9c, 0x70, 0x8c, 0xf4, 0xe0, 0x9a,
+ 0x4d, 0x36, 0xd3, 0xcd, 0xe4, 0xfc, 0x7a, 0xc9, 0x98, 0x87, 0x34, 0x1a,
+ 0x50, 0x05, 0xfb, 0xcc, 0x63, 0xd7, 0x2f, 0x97, 0xbe, 0x2a, 0x55, 0xb7,
+ 0x6b, 0x6a, 0x30, 0x22, 0xc0, 0x01, 0xb4, 0xd3, 0xf2, 0x84, 0x8c, 0xae,
+ 0xa4, 0x87, 0xce, 0x74, 0xd6, 0xe5, 0x3c, 0xa8, 0x4d, 0xa8, 0x1a, 0xd6,
+ 0x3c, 0x9b, 0x23, 0x68, 0xde, 0xd5, 0x53, 0x40, 0x48, 0x53, 0x95, 0xbc,
+ 0xdb, 0xbf, 0x60, 0xe7, 0x5d, 0xad, 0x99, 0xb8, 0xdd, 0x29, 0x88, 0x0e,
+ 0xf1, 0x15, 0x66, 0xb0, 0x34, 0xa8, 0xdd, 0x63, 0x77, 0x00, 0x58, 0x51,
+ 0x5e, 0x19, 0x6b, 0x54, 0x5c, 0xc9, 0xae, 0xba, 0x04, 0xba, 0xa2, 0x03,
+ 0x77, 0x03, 0x49, 0x16, 0x1b, 0xff, 0xd9, 0x76, 0xbd, 0xee, 0x3c, 0x8f,
+ 0xef, 0xb7, 0xc6, 0xeb, 0x3f, 0x0a, 0x8a, 0xc4, 0x96, 0xf6, 0xfa, 0xf3,
+ 0xaf, 0xdf, 0xa6, 0x4c, 0xb9, 0x05, 0x3f, 0x26, 0xa4, 0x71, 0xd1, 0x91,
+ 0xda, 0x11, 0xb0, 0x5d, 0x57, 0x4d, 0x4a, 0x32, 0x27, 0x15, 0xbc, 0xb8,
+ 0xa2, 0xed, 0x9e, 0xa0, 0x88, 0x9e, 0x5c, 0x03, 0x2e, 0x9f, 0xf9, 0x2e,
+ 0x8d, 0xd8, 0x86, 0x71, 0x8a, 0x00, 0x81, 0xaa, 0x20, 0xe6, 0x22, 0x41,
+ 0xaf, 0xae, 0xf9, 0x32, 0x5b, 0x08, 0xf8, 0x67, 0xd8, 0xfc, 0x2a, 0x3d,
+ 0x2e, 0x94, 0xfa, 0x43, 0x80, 0x0d, 0x1b, 0x63, 0xd5, 0x6c, 0x05, 0x1d,
+ 0xa5, 0x79, 0xa7, 0x9d, 0x3c, 0xd5, 0x9e, 0x5b, 0x45, 0x83, 0xe3, 0x1d,
+ 0xda, 0xed, 0xdc, 0x21, 0xa1, 0xd2, 0xee, 0xfd, 0x38, 0xd3, 0x63, 0x6f,
+ 0xa7, 0x41, 0xc3, 0x56, 0x8c, 0xc6, 0xa6, 0xc5, 0x15, 0x67, 0xd7, 0x08,
+ 0x76, 0x15, 0x16, 0xc9, 0x6a, 0x66, 0xb5, 0xed, 0x13, 0x42, 0xc1, 0x5a,
+ 0x33, 0xbc, 0xe9, 0x08, 0x13, 0x59, 0x84, 0x79, 0x8a, 0xa3, 0x7b, 0x03,
+ 0xc4, 0x73, 0xe0, 0x2f, 0x5d, 0xb1, 0x33, 0x16, 0x9c, 0x37, 0xe6, 0x94,
+ 0x1c, 0x78, 0x70, 0xab, 0xa6, 0xfd, 0x37, 0x6f, 0x44, 0x87, 0x98, 0x8a,
+ 0xda, 0x59, 0x93, 0x99, 0xee, 0x6f, 0x9d, 0x61, 0xbc, 0x6a, 0xdb, 0x9b,
+ 0x7a, 0x65, 0x93, 0x5c, 0x41, 0x6c, 0xcc, 0x9b, 0x41, 0x54, 0x36, 0x8c,
+ 0x90, 0x62, 0x46, 0x52, 0x16, 0xe4, 0xd6, 0x40, 0x78, 0x2f, 0x97, 0xf5,
+ 0xb2, 0x74, 0x95, 0x67, 0x1a, 0x2c, 0x9e, 0xbd, 0x09, 0x9a, 0x09, 0x25,
+ 0x1e, 0x3d, 0xf9, 0x63, 0x65, 0xcd, 0x08, 0x35, 0x2b, 0x2b, 0x8e, 0x09,
+ 0x7c, 0x77, 0x21, 0x5e, 0xaf, 0xc7, 0xf0, 0xd7, 0x46, 0x2f, 0x3b, 0x13,
+ 0x9f, 0xd4, 0xd8, 0x9e, 0x96, 0xf4, 0x93, 0x19, 0x99, 0x5d, 0x4d, 0x53,
+ 0xce, 0x52, 0x63, 0x39, 0x69, 0x98, 0x1c, 0xab, 0x9d, 0xbe, 0xf7, 0x65,
+ 0x4f, 0xb8, 0x74, 0xef, 0x65, 0x2f, 0x59, 0x5d, 0xad, 0xa0, 0xea, 0xbb,
+ 0xf8, 0x96, 0x9e, 0x98, 0x9e, 0x7b, 0x36, 0x04, 0x15, 0xde, 0x65, 0x58,
+ 0x88, 0x03, 0x9d, 0x17, 0x0e, 0xaf, 0x9c, 0x25, 0xa2, 0x0e, 0x3d, 0xb6,
+ 0x09, 0x81, 0xb6, 0x90, 0x3c, 0x67, 0x76, 0x6b, 0x01, 0x59, 0x57, 0x5c,
+ 0x96, 0x97, 0xe2, 0xcb, 0xed, 0x55, 0x88, 0xd8, 0x92, 0x12, 0x82, 0x5d,
+ 0xa1, 0xa3, 0x96, 0xf5, 0x0a, 0x1d, 0x00, 0x23, 0xd2, 0xb1, 0x00, 0x38,
+ 0x60, 0x3c, 0x46, 0x6c, 0x1b, 0x84, 0x43, 0xfa, 0x96, 0xa4, 0x1a, 0x39,
+ 0xe9, 0x3c, 0x6f, 0x36, 0x1a, 0xbf, 0x6c, 0x07, 0xbd, 0x5f, 0x66, 0x29,
+ 0xef, 0x26, 0x62, 0x8f, 0xda, 0xb5, 0x25, 0x06, 0x57, 0x2c, 0x11, 0x5e,
+ 0x4d, 0x8b, 0x51, 0x71, 0x79, 0xf9, 0x80, 0x49, 0x52, 0xa0, 0x75, 0xd0,
+ 0x86, 0x90, 0xe8, 0x3a, 0xa7, 0x96, 0xf3, 0x7b, 0x23, 0x1e, 0x9f, 0x96,
+ 0x97, 0x1e, 0x8a, 0x65, 0x06, 0x80, 0xd1, 0x91, 0x14, 0x10, 0x0a, 0xcf,
+ 0x7d, 0x97, 0xff, 0x6e, 0x59, 0xb3, 0xd4, 0x9c, 0xc9, 0x99, 0x9a, 0xf0,
+ 0xe0, 0xe1, 0xa5, 0xab, 0xe4, 0x3f, 0xfe, 0xfe, 0xe3, 0xcf, 0x1d, 0xc9,
+ 0x66, 0xac, 0xe1, 0x68, 0x8e, 0x0f, 0x62, 0x8b, 0x05, 0xbb, 0xce, 0xe1,
+ 0x12, 0xfb, 0x2a, 0x7c, 0x2c, 0xe3, 0x65, 0xd3, 0xcb, 0x61, 0x90, 0x56,
+ 0x1c, 0x33, 0x38, 0x66, 0xe4, 0xd6, 0x21, 0x90, 0x9f, 0x8b, 0xda, 0x42,
+ 0x17, 0x18, 0xbb, 0x0f, 0xd8, 0xa5, 0xde, 0xf9, 0xe7, 0x70, 0xc1, 0x44,
+ 0x7b, 0x8f, 0x0f, 0x94, 0x83, 0x77, 0x74, 0xde, 0x60, 0xe5, 0xb3, 0xef,
+ 0xcf, 0x8e, 0x9c, 0x6e, 0x17, 0xec, 0xc4, 0xd7, 0xd8, 0x89, 0x68, 0xd9,
+ 0x1c, 0x40, 0x7a, 0xb3, 0xf0, 0x93, 0x87, 0x55, 0x45, 0xd1, 0x58, 0x61,
+ 0x3e, 0x8d, 0x7a, 0x12, 0x6c, 0xf7, 0x1a, 0x4c, 0xfa, 0x9d, 0x68, 0xfa,
+ 0xfd, 0xa8, 0xc2, 0x46, 0x19, 0x43, 0x2e, 0x07, 0xd0, 0x19, 0xb9, 0x0b,
+ 0xd9, 0x68, 0x35, 0xf7, 0xf5, 0xa1, 0xaf, 0xf8, 0x12, 0x38, 0xef, 0x0c,
+ 0x76, 0xd4, 0x57, 0x83, 0x01, 0x78, 0x2b, 0x93, 0xff, 0x5d, 0xce, 0xc9,
+ 0xc7, 0x86, 0x10, 0xde, 0xa9, 0x15, 0x5d, 0x78, 0x98, 0x71, 0x61, 0x5d,
+ 0x06, 0xce, 0xe9, 0x57, 0xf0, 0xd8, 0xd2, 0x07, 0x7b, 0xff, 0xd6, 0xf3,
+ 0x58, 0xc8, 0x1d, 0xe9, 0xb3, 0x0e, 0xfa, 0xa3, 0xa3, 0x00, 0xf9, 0xe0,
+ 0xa8, 0xef, 0x47, 0xea, 0x3b, 0xb4, 0x79, 0x8c, 0x3a, 0x6a, 0xb9, 0xac,
+ 0x1a, 0xc6, 0x37, 0x87, 0xfb, 0xaf, 0x6d, 0xb2, 0xff, 0x14, 0x40, 0x41,
+ 0x6f, 0x10, 0x1a, 0x65, 0x52, 0xb2, 0x66, 0x69, 0xba, 0x24, 0x36, 0xc5,
+ 0xee, 0x0e, 0x90, 0x08, 0x49, 0xdb, 0x1c, 0x88, 0xc7, 0x24, 0x1b, 0xab,
+ 0x8e, 0x6a, 0x7d, 0x5a, 0xa9, 0x3c, 0x06, 0x06, 0x3a, 0x33, 0xf6, 0xf1,
+ 0xe1, 0x15, 0x16, 0x17, 0xd0, 0x6f, 0x08, 0x8d, 0xf1, 0x52, 0x7e, 0xae,
+ 0xb8, 0x14, 0x0e, 0x81, 0x47, 0xaf, 0x8f, 0xd2, 0x5a, 0x2a, 0xde, 0xb0,
+ 0xf1, 0x5d, 0xa3, 0x19, 0xa8, 0x5c, 0x16, 0xf0, 0xda, 0x45, 0x7c, 0x9a,
+ 0x9c, 0x63, 0xb2, 0xc3, 0x9f, 0xb5, 0xc8, 0x8b, 0xb1, 0x14, 0x1f, 0xf6,
+ 0x8c, 0xfc, 0xc4, 0xa0, 0xd3, 0xaa, 0x13, 0xba, 0xd5, 0x9c, 0x4e, 0x41,
+ 0x91, 0x1a, 0x52, 0xcb, 0x18, 0x8f, 0x8b, 0x94, 0x6b, 0x92, 0x53, 0x6c,
+ 0xc0, 0xfc, 0xd8, 0x75, 0x1a, 0x94, 0xe0, 0x99, 0x4b, 0x1d, 0x9e, 0x08,
+ 0xe4, 0x24, 0xc4, 0x92, 0x73, 0x76, 0x0d, 0xc1, 0x81, 0x17, 0x85, 0xd0,
+ 0x6c, 0xaf, 0x7d, 0xf1, 0xfd, 0x73, 0x90, 0x66, 0x39, 0x37, 0x24, 0x8f,
+ 0x76, 0x48, 0x8b, 0xf4, 0x1e, 0x3a, 0x35, 0xda, 0x27, 0xce, 0xf5, 0x01,
+ 0x54, 0x95, 0x50, 0x0e, 0x8f, 0x77, 0x9d, 0xd7, 0x4e, 0x40, 0x7d, 0x81,
+ 0xda, 0xc1, 0x37, 0xc9, 0xf8, 0x26, 0x47, 0xb4, 0x75, 0xbd, 0x04, 0x8f,
+ 0x4f, 0xe7, 0xe1, 0x28, 0x1d, 0x7c, 0xdd, 0xa4, 0xc0, 0x4a, 0x77, 0x13,
+ 0x91, 0xc9, 0x94, 0x0c, 0x28, 0x66, 0xa3, 0x51, 0x5c, 0x12, 0x2b, 0x60,
+ 0x61, 0x7c, 0x1b, 0xf5, 0xa0, 0x05, 0x3d, 0x2f, 0x0e, 0xfb, 0x64, 0xa5,
+ 0x94, 0xde, 0x83, 0xe2, 0x05, 0x93, 0x18, 0x4d, 0xa0, 0x57, 0x66, 0x82,
+ 0xb7, 0xc7, 0x55, 0x39, 0x59, 0x56, 0x71, 0xf8, 0x65, 0x3c, 0x65, 0x5d,
+ 0x1e, 0xe2, 0xf7, 0x57, 0xf9, 0x6d, 0xa7, 0x9d, 0xd9, 0x06, 0x06, 0x2b,
+ 0xb5, 0x8d, 0xc2, 0x41, 0x85, 0x3b, 0x83, 0x9e, 0xa0, 0x4f, 0x26, 0x5c,
+ 0x5e, 0xc2, 0x6d, 0x5f, 0x8c, 0xc9, 0xc1, 0x57, 0x18, 0xbb, 0xf6, 0xe7,
+ 0x7b, 0x44, 0xf8, 0xc9, 0xfa, 0x37, 0x45, 0x55, 0xef, 0xad, 0x3b, 0x78,
+ 0xba, 0x2a, 0x53, 0xc9, 0xa2, 0x49, 0x39, 0x5a, 0x8f, 0x21, 0x8a, 0x22,
+ 0xc3, 0xdd, 0x2e, 0xe7, 0x8f, 0x2e, 0x16, 0x7d, 0xd8, 0x5c, 0x91, 0x8a,
+ 0x89, 0xe1, 0x10, 0x86, 0x18, 0xfa, 0x7d, 0x96, 0xeb, 0x10, 0x00, 0xa2,
+ 0x13, 0x47, 0x1c, 0xf0, 0x90, 0x7e, 0x18, 0x1c, 0xa0, 0xf3, 0xc1, 0x37,
+ 0x68, 0xef, 0x4f, 0xeb, 0x4e, 0xed, 0x6e, 0x7f, 0x45, 0x03, 0xef, 0x4e,
+ 0xbb, 0x0b, 0xa1, 0x9f, 0xab, 0x65, 0x69, 0x78, 0x1c, 0x30, 0xa7, 0xeb,
+ 0x28, 0x51, 0x73, 0x71, 0x32, 0xd9, 0x72, 0x9b, 0x2e, 0x9e, 0xbf, 0xae,
+ 0xc4, 0x70, 0x4d, 0x1a, 0x5d, 0x20, 0xb2, 0x70, 0x32, 0x28, 0x2e, 0x07,
+ 0xa8, 0x84, 0x3d, 0x4b, 0xcb, 0x1b, 0xf6, 0xb3, 0x04, 0xa7, 0x0e, 0xc1,
+ 0x9f, 0x48, 0x73, 0x9e, 0x4c, 0xba, 0xee, 0x6a, 0xcd, 0xcf, 0x2b, 0x9d,
+ 0xda, 0xaa, 0x83, 0xd1, 0xcd, 0xdc, 0x63, 0x55, 0xc7, 0x5e, 0x77, 0xf5,
+ 0x20, 0xb8, 0x76, 0xb4, 0x96, 0x83, 0x88, 0x4a, 0xe8, 0x22, 0x90, 0xb0,
+ 0x2f, 0xd7, 0x39, 0x26, 0x0d, 0x56, 0x3c, 0x13, 0x0b, 0x12, 0xac, 0x00,
+ 0xa4, 0xfa, 0xb3, 0x60, 0xca, 0xb5, 0x59, 0x1e, 0xae, 0xad, 0xb8, 0x6f,
+ 0xb5, 0xe6, 0x07, 0xd4, 0x91, 0x22, 0xb2, 0x37, 0x41, 0x8c, 0x56, 0xc1,
+ 0xce, 0x9e, 0x73, 0xec, 0x87, 0x8a, 0x9f, 0x9f, 0x0d, 0x9f, 0x7c, 0xc6,
+ 0xa5, 0x1e, 0x1d, 0x76, 0xa1, 0xd5, 0xa3, 0xf7, 0x4c, 0x13, 0x5b, 0x19,
+ 0xd0, 0x57, 0x9b, 0xaa, 0x50, 0xa4, 0x95, 0xd7, 0x63, 0xa2, 0x88, 0x2b,
+ 0xa8, 0x00, 0xd2, 0x51, 0xf3, 0x5e, 0xe3, 0x90, 0x22, 0xdf, 0xcb, 0xef,
+ 0xd4, 0xa7, 0x0f, 0x5a, 0x7a, 0xc3, 0x17, 0xd2, 0xe0, 0x1d, 0x31, 0xba,
+ 0xbd, 0xe4, 0xdf, 0x8b, 0x6c, 0x1d, 0xc5, 0x59, 0xf7, 0xb6, 0xb6, 0x76,
+ 0x5e, 0xec, 0x92, 0xc2, 0xf1, 0xf9, 0x70, 0x7b, 0xb8, 0xb3, 0x15, 0xa5,
+ 0x7b, 0xec, 0x9f, 0xbd, 0x3b, 0x7a, 0xf7, 0xf5, 0x9e, 0xab, 0x82, 0xa3,
+ 0xb0, 0xbe, 0x16, 0x0b, 0x16, 0xda, 0x52, 0x7d, 0xf9, 0x2b, 0x7e, 0x24,
+ 0xef, 0x42, 0x64, 0x75, 0xa0, 0x6a, 0x03, 0x61, 0x59, 0x62, 0xd1, 0x28,
+ 0x33, 0xb1, 0xd9, 0x88, 0xc8, 0xe6, 0x8a, 0x24, 0xf4, 0xa5, 0x3a, 0x95,
+ 0x95, 0x8f, 0xe3, 0x6a, 0x48, 0x9d, 0x48, 0x1d, 0x8c, 0xca, 0x14, 0xc0,
+ 0x32, 0x05, 0x29, 0x39, 0x53, 0xd4, 0x90, 0x2a, 0x42, 0xfa, 0x0a, 0xa0,
+ 0x91, 0x63, 0x43, 0x33, 0xec, 0x0c, 0xd7, 0x85, 0xc6, 0xb5, 0xcb, 0x4d,
+ 0xe6, 0x30, 0x68, 0xf9, 0x73, 0xa4, 0xc9, 0xf2, 0x4d, 0x9c, 0xe3, 0x2a,
+ 0xf5, 0x6b, 0xb2, 0x42, 0x7e, 0xf4, 0xd0, 0x51, 0x74, 0xbf, 0x8b, 0xa9,
+ 0x1b, 0x02, 0x8c, 0x7d, 0xea, 0x8b, 0x32, 0xb8, 0x35, 0x78, 0x04, 0x06,
+ 0x0c, 0x11, 0x44, 0xbc, 0xc6, 0x1d, 0x91, 0x05, 0x48, 0x3c, 0xf2, 0x07,
+ 0x79, 0x4b, 0xd4, 0xc1, 0x2e, 0x77, 0x1c, 0xbf, 0x62, 0xd7, 0x68, 0xa0,
+ 0x18, 0xf2, 0x14, 0x17, 0xcb, 0xd1, 0x6c, 0xf2, 0x2c, 0x79, 0x49, 0xff,
+ 0xc4, 0x79, 0x55, 0x07, 0xe6, 0xbd, 0x65, 0x03, 0x33, 0xb3, 0x31, 0x85,
+ 0xd3, 0x10, 0x71, 0x9f, 0x7f, 0x7d, 0xb2, 0x4b, 0x0d, 0x7f, 0x4c, 0xad,
+ 0x96, 0x69, 0x32, 0xa1, 0xd5, 0xab, 0xbb, 0xb3, 0x9b, 0x4d, 0x2f, 0x0a,
+ 0x6a, 0xcd, 0xf0, 0x82, 0xef, 0xec, 0x7e, 0x9e, 0x8c, 0xf2, 0x3a, 0x79,
+ 0xfb, 0xfa, 0x19, 0x69, 0x7e, 0xd9, 0xf8, 0xa6, 0x5a, 0xce, 0x8c, 0x49,
+ 0x68, 0xdd, 0x4b, 0x1e, 0x67, 0xaf, 0x7d, 0x57, 0xfb, 0x0c, 0xa1, 0x7e,
+ 0xc3, 0x56, 0x7b, 0x69, 0x36, 0xe5, 0xa0, 0x24, 0xac, 0x63, 0x66, 0xdc,
+ 0x92, 0xda, 0xb4, 0x3b, 0xac, 0x25, 0xb4, 0x06, 0xd4, 0x79, 0x25, 0x59,
+ 0x42, 0x2d, 0xeb, 0xec, 0x67, 0x4d, 0xcb, 0x93, 0x24, 0xc2, 0x19, 0xac,
+ 0xfc, 0x80, 0xe4, 0xef, 0xab, 0x28, 0xae, 0xda, 0xf4, 0xe9, 0x23, 0x3c,
+ 0xdb, 0x8a, 0x45, 0x3d, 0xc6, 0x1b, 0x01, 0x76, 0x97, 0x48, 0x86, 0xcc,
+ 0x22, 0xf3, 0xf1, 0x12, 0x15, 0x5e, 0x62, 0x19, 0xd2, 0xaa, 0x70, 0x1a,
+ 0x52, 0x5e, 0xb9, 0x94, 0xd2, 0xea, 0xfb, 0x0b, 0x0e, 0xa4, 0x4c, 0x76,
+ 0x86, 0x1f, 0xfb, 0x1a, 0x2d, 0x18, 0x96, 0xf0, 0x65, 0x61, 0xad, 0x88,
+ 0xee, 0x6b, 0x78, 0x17, 0x5a, 0xa3, 0xe1, 0xb6, 0x25, 0x84, 0x75, 0xca,
+ 0x5e, 0xb6, 0x52, 0x8e, 0xc5, 0x2e, 0xdd, 0xcf, 0x57, 0x29, 0x8a, 0xc0,
+ 0x07, 0xd4, 0x93, 0xf7, 0x81, 0x71, 0x0a, 0x31, 0x70, 0xd5, 0xc4, 0x55,
+ 0x48, 0x94, 0x99, 0xf3, 0x87, 0xc6, 0x0c, 0x55, 0x6c, 0x94, 0xe8, 0x6b,
+ 0xd1, 0x1e, 0x82, 0xaf, 0x23, 0x51, 0x00, 0xcd, 0x38, 0xc6, 0x0e, 0x2e,
+ 0x21, 0x4b, 0x30, 0x60, 0x39, 0xae, 0xcf, 0x8a, 0x40, 0xe6, 0xe5, 0xb6,
+ 0x20, 0xe8, 0x1c, 0x8d, 0xc6, 0x19, 0xb2, 0xc8, 0xdb, 0xb6, 0xc0, 0xf1,
+ 0xe1, 0x30, 0x98, 0xd5, 0x91, 0x49, 0xc4, 0x5d, 0x53, 0xe2, 0xda, 0xa4,
+ 0x5b, 0x6f, 0x8e, 0x8e, 0x0f, 0x37, 0x93, 0x37, 0x99, 0x25, 0x92, 0x85,
+ 0xd3, 0xe2, 0x3b, 0xe8, 0x5f, 0xe4, 0x13, 0xdb, 0x22, 0xd5, 0xe4, 0xbb,
+ 0x62, 0x2c, 0xd4, 0xe6, 0x08, 0x3d, 0x44, 0x76, 0x0d, 0x0c, 0x56, 0xd2,
+ 0xdb, 0x0b, 0xc4, 0xae, 0x5a, 0x7d, 0x5a, 0xd8, 0x0e, 0x83, 0xea, 0x64,
+ 0x1d, 0x49, 0x81, 0x41, 0xb4, 0xfd, 0x30, 0x28, 0xd1, 0x55, 0x84, 0x51,
+ 0x17, 0x3c, 0x76, 0x8d, 0xd1, 0x14, 0x37, 0x6b, 0x5e, 0x11, 0xeb, 0xb8,
+ 0xef, 0x3a, 0x0b, 0x70, 0x92, 0x22, 0xe8, 0x11, 0xb5, 0x10, 0x39, 0x40,
+ 0x67, 0x56, 0x4c, 0x7c, 0x16, 0x8e, 0xd4, 0x21, 0x9e, 0x4f, 0x1b, 0x35,
+ 0x10, 0x02, 0x24, 0xde, 0x2e, 0xdc, 0x96, 0x53, 0xc9, 0x01, 0xe1, 0x01,
+ 0x85, 0x61, 0x1f, 0x22, 0xea, 0x79, 0x45, 0xd8, 0xb5, 0x32, 0x74, 0x91,
+ 0x83, 0x5c, 0xa2, 0xbc, 0x83, 0x2e, 0x1c, 0xc0, 0xae, 0x90, 0x41, 0xe8,
+ 0x46, 0x2a, 0x84, 0xb3, 0x6b, 0xa8, 0xe9, 0xfe, 0xdc, 0x02, 0xbc, 0xa4,
+ 0x1a, 0x1b, 0xf2, 0xf2, 0xa3, 0xec, 0xbf, 0x8e, 0x10, 0x3c, 0xbd, 0x50,
+ 0x83, 0x99, 0x91, 0x3a, 0xb5, 0xbd, 0xb7, 0x63, 0x97, 0x29, 0xc7, 0xce,
+ 0xce, 0xb3, 0x1a, 0xb1, 0x67, 0x1c, 0x1a, 0xb7, 0xf5, 0xdb, 0x05, 0x41,
+ 0xfd, 0x85, 0x49, 0xf3, 0x2f, 0xcb, 0xf9, 0x0d, 0xd1, 0x56, 0xc5, 0x14,
+ 0xac, 0x95, 0xdd, 0xaa, 0xee, 0xd3, 0xf7, 0xbd, 0xf3, 0x7e, 0xb5, 0x4b,
+ 0x0b, 0x8e, 0xc3, 0x42, 0x75, 0x69, 0x50, 0x04, 0xa4, 0xff, 0x40, 0x0a,
+ 0x7d, 0x43, 0xb2, 0xe4, 0x5c, 0x0e, 0xa2, 0x9d, 0x31, 0xc7, 0xd7, 0xb0,
+ 0x2d, 0x63, 0x5d, 0x47, 0x64, 0x4d, 0xaf, 0xaf, 0xae, 0xd5, 0x3a, 0x4a,
+ 0x2b, 0x85, 0x46, 0x80, 0x95, 0xce, 0x29, 0x64, 0xea, 0xd5, 0x4a, 0xa5,
+ 0xa4, 0x04, 0xcb, 0x80, 0x89, 0x35, 0x2a, 0xc5, 0x23, 0x58, 0xd4, 0xe2,
+ 0xf5, 0x68, 0xdd, 0x96, 0x02, 0x5a, 0x91, 0x58, 0x09, 0xda, 0xca, 0x55,
+ 0x78, 0x70, 0x03, 0x4c, 0x5a, 0x83, 0x13, 0xf9, 0x82, 0x05, 0xc7, 0x5e,
+ 0x74, 0x2e, 0xc7, 0xd3, 0x42, 0xaa, 0xae, 0xdf, 0x85, 0x16, 0xd4, 0x7f,
+ 0x17, 0x59, 0x90, 0xef, 0x22, 0x3d, 0xe9, 0x83, 0x8e, 0x60, 0xbb, 0xb0,
+ 0xb2, 0x95, 0xe1, 0x0e, 0x20, 0xf1, 0x0b, 0x42, 0xe6, 0x49, 0xd0, 0x86,
+ 0x84, 0x7a, 0x3b, 0x68, 0x82, 0xee, 0x72, 0xaa, 0xca, 0xe0, 0x02, 0xfb,
+ 0x90, 0xe3, 0xd6, 0xaf, 0xe9, 0xd8, 0x16, 0x55, 0x2e, 0xfb, 0xe2, 0x23,
+ 0x21, 0x03, 0xef, 0x42, 0x1c, 0xec, 0x64, 0x70, 0x3c, 0x0e, 0xe1, 0xd0,
+ 0x85, 0x7f, 0x99, 0x5d, 0xa4, 0x0b, 0xee, 0x02, 0x96, 0xcf, 0x79, 0x11,
+ 0xa2, 0x9c, 0xd3, 0x55, 0xcf, 0x96, 0xa6, 0xdf, 0x13, 0x15, 0x92, 0x70,
+ 0x37, 0xe7, 0x9a, 0xa8, 0x1b, 0xf7, 0x59, 0xbd, 0xe9, 0xab, 0x78, 0x58,
+ 0x78, 0xe1, 0xaa, 0x72, 0x9f, 0x11, 0xf8, 0x08, 0x5b, 0x00, 0xf4, 0x25,
+ 0x81, 0x0a, 0xe7, 0xeb, 0xba, 0x04, 0x3e, 0x0f, 0xfb, 0xa9, 0xb4, 0x0c,
+ 0xcb, 0xaa, 0xe6, 0xc2, 0x4b, 0xe9, 0x46, 0x2e, 0xa5, 0xaa, 0x2b, 0xea,
+ 0x4e, 0xd3, 0xc4, 0x83, 0x7e, 0x83, 0x50, 0x64, 0x55, 0xba, 0x5d, 0xfa,
+ 0xb8, 0xa6, 0xab, 0x25, 0xc9, 0xba, 0xb5, 0xb6, 0xde, 0x96, 0xfd, 0x1b,
+ 0xf9, 0xcf, 0x12, 0x37, 0x1a, 0xc0, 0xc8, 0xef, 0xd3, 0xb1, 0x88, 0x1e,
+ 0x61, 0xaf, 0x84, 0xac, 0x64, 0x34, 0x1d, 0xb1, 0xdc, 0xcd, 0x88, 0xb8,
+ 0xcc, 0x7f, 0xd1, 0x4c, 0x27, 0x6d, 0xa2, 0x49, 0x28, 0x8c, 0x89, 0xec,
+ 0x78, 0xca, 0x59, 0x36, 0x71, 0x2e, 0x6a, 0x03, 0x14, 0x17, 0x19, 0x4b,
+ 0x9a, 0x29, 0x31, 0x9d, 0x36, 0x46, 0x15, 0x94, 0xb5, 0x5e, 0x39, 0x59,
+ 0x8e, 0x8f, 0x73, 0xb1, 0x00, 0x8d, 0x45, 0x8e, 0x63, 0x01, 0x02, 0x1d,
+ 0xcb, 0x99, 0x90, 0x61, 0x29, 0x03, 0x3e, 0x92, 0xc0, 0x17, 0x2f, 0x91,
+ 0x17, 0xa3, 0x2e, 0x96, 0xc4, 0x05, 0xe1, 0x4a, 0xfa, 0x18, 0x62, 0x6f,
+ 0xf7, 0xda, 0xb6, 0x14, 0xe1, 0xb7, 0x00, 0x37, 0xb9, 0x4e, 0x3f, 0x7e,
+ 0x1c, 0x56, 0xd9, 0x16, 0xdd, 0x77, 0xd5, 0x56, 0x55, 0x4d, 0x01, 0xa4,
+ 0x82, 0xf0, 0x76, 0x4f, 0x09, 0xdf, 0x4a, 0xe9, 0xcb, 0xf9, 0x65, 0x7e,
+ 0xc5, 0x51, 0xa2, 0xf8, 0xd9, 0x05, 0x1b, 0xe5, 0xf0, 0xa2, 0xe4, 0x06,
+ 0x0e, 0x9e, 0xf4, 0xfc, 0x12, 0xa8, 0xad, 0x1a, 0x2c, 0x27, 0x6c, 0x53,
+ 0xd1, 0x2e, 0xe2, 0x64, 0x2e, 0xf7, 0x32, 0xf2, 0x33, 0x35, 0xad, 0x64,
+ 0x9a, 0xf9, 0xdc, 0x27, 0xbb, 0xf5, 0xb1, 0x1a, 0xbe, 0x51, 0x13, 0xf4,
+ 0xdb, 0x1a, 0x4f, 0x99, 0xd7, 0x9c, 0xf7, 0xa6, 0x2f, 0x8b, 0xc5, 0xa1,
+ 0x61, 0x4f, 0x12, 0x86, 0x29, 0x6a, 0x30, 0x67, 0x9a, 0xd8, 0x1b, 0x9d,
+ 0x60, 0x9d, 0xc4, 0x00, 0xb8, 0xa4, 0x52, 0x38, 0x86, 0x68, 0xdf, 0x4e,
+ 0x16, 0x01, 0x3d, 0x5f, 0x67, 0x79, 0xe9, 0x5d, 0x38, 0x95, 0xb3, 0x70,
+ 0x78, 0xae, 0x14, 0x56, 0x52, 0x5e, 0xb5, 0x20, 0x1a, 0x71, 0x25, 0x05,
+ 0x95, 0x03, 0xf8, 0x65, 0xa6, 0x52, 0x9a, 0x18, 0xc9, 0x95, 0x24, 0xbf,
+ 0xb2, 0x4c, 0x22, 0x16, 0x12, 0x75, 0x83, 0xa2, 0xfc, 0x53, 0xd5, 0x99,
+ 0xe9, 0x74, 0xcc, 0x98, 0x34, 0x7a, 0x88, 0x05, 0x95, 0x6c, 0x0c, 0x99,
+ 0x22, 0x86, 0x66, 0xf6, 0x5c, 0x49, 0x76, 0xb6, 0x8b, 0x89, 0x78, 0xfb,
+ 0x96, 0x58, 0xe4, 0x04, 0xf8, 0x56, 0xa2, 0xd0, 0x49, 0xb4, 0x04, 0xa4,
+ 0x82, 0x62, 0x0a, 0x54, 0x45, 0x5f, 0x65, 0xb7, 0x29, 0xe3, 0x06, 0xb5,
+ 0x25, 0x12, 0x19, 0xb2, 0x47, 0x3e, 0xac, 0x9a, 0x00, 0xbc, 0x95, 0x37,
+ 0x7b, 0x57, 0x43, 0x8d, 0x4e, 0xca, 0xc2, 0xe0, 0xa4, 0xf6, 0x64, 0xdb,
+ 0xbe, 0x01, 0xb1, 0x4f, 0xb2, 0x67, 0xee, 0xae, 0x48, 0x74, 0x68, 0x82,
+ 0xbc, 0xc0, 0xe5, 0x5a, 0xa5, 0x2b, 0xe2, 0xd6, 0x9f, 0x38, 0x3a, 0x97,
+ 0xbe, 0x05, 0x51, 0x5c, 0xa1, 0x5a, 0x79, 0x9e, 0x75, 0xe5, 0xf7, 0xbc,
+ 0xdb, 0x32, 0x9e, 0x35, 0xfd, 0x7a, 0x1c, 0x80, 0xa3, 0x2e, 0xa0, 0x70,
+ 0x3f, 0x9b, 0xcf, 0x29, 0xed, 0x44, 0x68, 0x79, 0x7a, 0xe7, 0x3a, 0x74,
+ 0x53, 0xc9, 0x0c, 0x60, 0x6c, 0x66, 0xfd, 0x40, 0x77, 0x22, 0xb1, 0x94,
+ 0x81, 0x46, 0x79, 0xc3, 0x76, 0x73, 0x82, 0x3d, 0xe9, 0xef, 0x26, 0xf0,
+ 0x5c, 0x83, 0x09, 0xda, 0x4b, 0x7e, 0xfa, 0xa9, 0x9f, 0x30, 0xe8, 0xe5,
+ 0x4f, 0xa4, 0x1d, 0xfc, 0xc4, 0xd6, 0xb8, 0x9f, 0x4a, 0x0d, 0x10, 0xf9,
+ 0xe9, 0x96, 0xba, 0xdc, 0x5f, 0x95, 0x3b, 0x90, 0x04, 0xb5, 0xf7, 0xa4,
+ 0xfa, 0xa0, 0x58, 0x0f, 0xb4, 0x98, 0x2a, 0x2b, 0x6f, 0x02, 0x8d, 0xe2,
+ 0x30, 0x52, 0xbb, 0x8a, 0x85, 0xd0, 0xc6, 0x2c, 0x67, 0x73, 0xc9, 0x70,
+ 0x51, 0x4e, 0x03, 0x3e, 0x00, 0x66, 0xd1, 0xfb, 0x5d, 0xcf, 0xef, 0x4d,
+ 0x50, 0x9c, 0x55, 0x75, 0x61, 0x7e, 0x30, 0xb2, 0x87, 0x08, 0x23, 0xa8,
+ 0x11, 0x79, 0x2c, 0xf0, 0x9b, 0x38, 0xdc, 0xd0, 0x01, 0x4e, 0xd8, 0x20,
+ 0x76, 0x87, 0x32, 0xca, 0x08, 0xeb, 0x95, 0x0d, 0x66, 0x5b, 0xde, 0xe2,
+ 0xfa, 0x1e, 0x42, 0x58, 0x24, 0x00, 0xcf, 0x9d, 0x41, 0x3f, 0xe0, 0x83,
+ 0x31, 0x67, 0xf7, 0xa8, 0xb9, 0x5e, 0x92, 0x60, 0x9f, 0x69, 0xc8, 0x73,
+ 0x69, 0x2c, 0xbd, 0x41, 0x2f, 0xb0, 0x59, 0x1b, 0x2c, 0x58, 0x67, 0xdd,
+ 0x6e, 0x9f, 0xa4, 0x25, 0x75, 0xbb, 0x3b, 0x33, 0x4c, 0xcc, 0xc9, 0x2a,
+ 0xa9, 0x92, 0x52, 0x00, 0xc6, 0x63, 0xf8, 0xa6, 0xf0, 0xed, 0xc4, 0xc3,
+ 0xef, 0x77, 0x58, 0xd2, 0xad, 0xb6, 0x88, 0xbd, 0x9b, 0xd7, 0xc1, 0x55,
+ 0x3b, 0x60, 0x7f, 0x9a, 0x2f, 0xd4, 0x02, 0xe2, 0x60, 0xd3, 0x24, 0xee,
+ 0xd4, 0x8a, 0x93, 0xd0, 0xef, 0x3b, 0xb8, 0xb4, 0xcf, 0x36, 0xe5, 0x61,
+ 0xa0, 0x94, 0x1f, 0x17, 0x13, 0xb8, 0x9b, 0x0b, 0x97, 0x4d, 0xce, 0x8b,
+ 0xbe, 0x14, 0x6d, 0x33, 0xed, 0x23, 0xc8, 0xde, 0xea, 0xf0, 0xba, 0x46,
+ 0x8a, 0x08, 0x8f, 0xe9, 0x55, 0xb2, 0xbe, 0xf2, 0x1a, 0x5c, 0xef, 0x44,
+ 0x6e, 0x31, 0xf9, 0x9f, 0x53, 0x80, 0x6f, 0x14, 0xda, 0x59, 0xe5, 0xe3,
+ 0x0d, 0xbb, 0xce, 0xff, 0x6a, 0x57, 0xf8, 0xa6, 0xda, 0x5f, 0xc4, 0xf4,
+ 0xb8, 0x02, 0x12, 0xd8, 0x96, 0x56, 0x59, 0x27, 0x56, 0x07, 0x1a, 0x6b,
+ 0x0e, 0x47, 0xcc, 0x25, 0xa7, 0xfd, 0x37, 0x23, 0x81, 0x56, 0x33, 0x5e,
+ 0x36, 0xdb, 0x71, 0x8f, 0x6a, 0xed, 0xb4, 0xcc, 0x1e, 0x67, 0x24, 0x83,
+ 0x59, 0x4b, 0xb3, 0x70, 0x58, 0x6a, 0x63, 0x58, 0xd2, 0x68, 0x61, 0x76,
+ 0x36, 0x55, 0x6a, 0x2b, 0x73, 0xd1, 0x9b, 0x2f, 0x73, 0xb5, 0xe4, 0xaf,
+ 0x5f, 0x17, 0x82, 0x95, 0xb6, 0xbe, 0x97, 0x1c, 0xd5, 0xe6, 0xa0, 0xd3,
+ 0x39, 0xba, 0x10, 0x93, 0x76, 0xa4, 0x1a, 0x83, 0xd1, 0x7d, 0x73, 0xf2,
+ 0xf6, 0xd0, 0xc5, 0x15, 0x8b, 0x96, 0xcf, 0x9f, 0x74, 0xe2, 0x65, 0x0e,
+ 0x11, 0x14, 0x62, 0x09, 0xe4, 0xfd, 0xb8, 0x4e, 0x1f, 0x56, 0x87, 0x94,
+ 0xf9, 0xc5, 0xdd, 0x32, 0x9f, 0x6c, 0x20, 0xc9, 0xff, 0xfd, 0x3c, 0xff,
+ 0x38, 0x10, 0x33, 0x06, 0xb0, 0x64, 0x2b, 0xcb, 0x72, 0xb7, 0x04, 0x79,
+ 0x51, 0xf5, 0x8b, 0x59, 0x07, 0xe0, 0x95, 0x55, 0x6d, 0x0c, 0x01, 0x5f,
+ 0x91, 0x0b, 0x93, 0xcf, 0xc5, 0x25, 0x25, 0x4d, 0x6e, 0x32, 0x03, 0x20,
+ 0x16, 0x0a, 0xb0, 0x3a, 0xec, 0x7b, 0x47, 0x8c, 0x74, 0xb0, 0xdf, 0xdc,
+ 0xdc, 0xfe, 0xe9, 0xe9, 0xeb, 0xfd, 0x8b, 0x7d, 0x37, 0x37, 0x41, 0x22,
+ 0x62, 0xa6, 0x02, 0xdd, 0x94, 0x05, 0x37, 0xc5, 0xbc, 0xe9, 0xfd, 0x9e,
+ 0x13, 0x68, 0xda, 0x77, 0xfd, 0xe9, 0xd9, 0x09, 0x5b, 0x18, 0x7e, 0xff,
+ 0xd3, 0x7e, 0x80, 0x2c, 0xc1, 0x25, 0xa3, 0xe3, 0xa8, 0xe5, 0xdd, 0xcd,
+ 0x84, 0xc7, 0x67, 0x68, 0x7a, 0x7d, 0x17, 0x69, 0x21, 0x09, 0xf5, 0xc9,
+ 0x07, 0xde, 0xd3, 0x72, 0xec, 0x84, 0x27, 0x31, 0xde, 0xc9, 0x76, 0xf6,
+ 0xe3, 0x88, 0xcb, 0x60, 0x22, 0x85, 0x67, 0x62, 0x86, 0x95, 0x67, 0x6b,
+ 0x35, 0x25, 0x89, 0x9f, 0x84, 0xd6, 0x1a, 0xac, 0x83, 0x8d, 0x6d, 0x4c,
+ 0x5f, 0x13, 0x5e, 0xa8, 0x36, 0x22, 0xac, 0xdb, 0x1f, 0xdb, 0x20, 0x01,
+ 0x30, 0x00, 0xc3, 0x15, 0x16, 0x20, 0x11, 0xb5, 0x85, 0x54, 0xd6, 0x1c,
+ 0xda, 0x68, 0x55, 0x9d, 0x8a, 0xce, 0x8e, 0x78, 0x84, 0x88, 0xce, 0x6d,
+ 0x0e, 0xc3, 0xd8, 0x74, 0x3f, 0x18, 0x0c, 0xcc, 0xb0, 0x2f, 0xd3, 0xa6,
+ 0x0f, 0xa2, 0x87, 0x6a, 0xab, 0x1f, 0x68, 0x7c, 0xbe, 0x9b, 0x4d, 0x84,
+ 0xfc, 0xa1, 0x2d, 0xcb, 0x2b, 0xe6, 0x84, 0x3e, 0x85, 0xca, 0xea, 0x48,
+ 0x05, 0x8d, 0xcd, 0x8d, 0xe6, 0x10, 0xa1, 0x47, 0xab, 0x25, 0x1b, 0x6c,
+ 0xf8, 0xaf, 0xad, 0x9d, 0xe1, 0xf6, 0x7a, 0x3c, 0x7a, 0x84, 0x63, 0xc2,
+ 0x28, 0x66, 0x28, 0xf9, 0x52, 0xf8, 0xa0, 0x78, 0x7c, 0x80, 0xc2, 0xc0,
+ 0x48, 0x22, 0x5d, 0x50, 0x07, 0x9d, 0x63, 0x19, 0x9c, 0x44, 0xc6, 0x4b,
+ 0x71, 0xcc, 0x78, 0x8e, 0x38, 0x2f, 0x90, 0x69, 0x9d, 0xb2, 0x36, 0x04,
+ 0x43, 0xcc, 0x7a, 0xf7, 0x02, 0xcf, 0x27, 0xe2, 0x59, 0x6e, 0xad, 0xf3,
+ 0xaf, 0x4a, 0xed, 0x73, 0xfb, 0x1f, 0x00, 0x7d, 0xae, 0xe4, 0x76, 0x0d,
+ 0xcb, 0xfb, 0x4d, 0x46, 0x82, 0xe0, 0x14, 0x99, 0x6c, 0x6c, 0x47, 0x7b,
+ 0x49, 0xba, 0x54, 0x31, 0x9f, 0xc4, 0x45, 0x6f, 0x1a, 0xbe, 0x80, 0x8a,
+ 0x63, 0x12, 0x85, 0x35, 0xe0, 0xad, 0x24, 0x8c, 0xd1, 0xf7, 0x18, 0xde,
+ 0x65, 0xc6, 0x51, 0xb5, 0x49, 0x3e, 0x89, 0xf2, 0xfa, 0x5b, 0x80, 0x54,
+ 0x6e, 0x10, 0xac, 0x7c, 0x8f, 0x32, 0x27, 0xf2, 0x4b, 0xeb, 0x26, 0x1c,
+ 0x02, 0xa6, 0x8b, 0x54, 0xf3, 0x65, 0x24, 0x2f, 0xb4, 0xdf, 0x1f, 0x32,
+ 0x97, 0x6d, 0xc0, 0xb6, 0x88, 0x51, 0x87, 0x9f, 0x28, 0x9c, 0xc9, 0x0f,
+ 0x15, 0xa9, 0x71, 0xa6, 0x22, 0x23, 0xe6, 0xa5, 0xe0, 0xf1, 0xca, 0x14,
+ 0x2f, 0x0e, 0x4e, 0x3f, 0x7c, 0x7b, 0x78, 0x78, 0x7a, 0xf4, 0xfa, 0xf8,
+ 0x50, 0xef, 0x19, 0xf7, 0xd1, 0xbb, 0x8b, 0xef, 0x8e, 0x0d, 0xa2, 0xd7,
+ 0xd6, 0x27, 0x32, 0x83, 0x71, 0xd4, 0x17, 0x9a, 0x3b, 0xce, 0xe7, 0xcb,
+ 0x8f, 0x7d, 0x00, 0x0c, 0x11, 0x31, 0xef, 0x1f, 0xfd, 0xd0, 0x4f, 0xbe,
+ 0x39, 0x1d, 0xbc, 0xff, 0x21, 0x82, 0x0e, 0x69, 0xc4, 0x59, 0xb7, 0x05,
+ 0x4b, 0x17, 0x75, 0x8d, 0x42, 0x6a, 0x7e, 0xee, 0xa6, 0xff, 0x76, 0xd4,
+ 0x16, 0xff, 0x47, 0x9b, 0x02, 0xa3, 0xe6, 0x96, 0xf3, 0xa0, 0x6a, 0x43,
+ 0x20, 0xc5, 0xeb, 0xd5, 0x0b, 0x72, 0x78, 0xbe, 0x9d, 0x28, 0x75, 0x35,
+ 0x09, 0xf0, 0x3e, 0x79, 0x49, 0xff, 0x74, 0x61, 0xe9, 0x6d, 0x9d, 0x9f,
+ 0x7f, 0xb3, 0x99, 0x9c, 0x06, 0xd5, 0x17, 0x9c, 0xad, 0x65, 0x68, 0x31,
+ 0x96, 0x6c, 0xa6, 0xa1, 0xc6, 0x03, 0xab, 0x4d, 0xc9, 0x70, 0xd9, 0xb1,
+ 0x9f, 0x5c, 0x5b, 0xb0, 0x3b, 0xdc, 0x94, 0x3f, 0x91, 0x2c, 0x91, 0xb0,
+ 0x45, 0xbd, 0x81, 0xfd, 0x37, 0x81, 0x84, 0x45, 0x60, 0x6c, 0x4b, 0x46,
+ 0xb8, 0xe3, 0x93, 0x30, 0x3f, 0x0d, 0x3b, 0x4c, 0x47, 0x74, 0x92, 0x4f,
+ 0x24, 0xcd, 0x87, 0x35, 0x06, 0x91, 0x14, 0x92, 0xa4, 0xf7, 0x5f, 0x5b,
+ 0xc3, 0xaa, 0xba, 0xde, 0xca, 0x27, 0x1f, 0xca, 0x2a, 0xed, 0xb5, 0x2f,
+ 0xe7, 0xe0, 0xeb, 0x09, 0x7f, 0x9d, 0xf4, 0x86, 0xee, 0x51, 0xfd, 0x9d,
+ 0x3f, 0xff, 0x2d, 0xc1, 0xc9, 0x68, 0x6d, 0x1e, 0x05, 0x77, 0x8e, 0x76,
+ 0x82, 0x1f, 0x1d, 0x3a, 0x31, 0x5c, 0x5d, 0x07, 0xdc, 0x08, 0xb6, 0x41,
+ 0x36, 0x97, 0xb7, 0x26, 0xda, 0x0d, 0x60, 0xda, 0x25, 0x2d, 0x50, 0x7b,
+ 0x3a, 0xb7, 0xaf, 0x0f, 0xcf, 0xfa, 0x82, 0xf9, 0x1c, 0xe2, 0x3d, 0x7b,
+ 0x74, 0x36, 0xc5, 0x79, 0x5e, 0xa5, 0x9e, 0xf6, 0xff, 0x89, 0x38, 0xcf,
+ 0x37, 0xe5, 0x28, 0x79, 0x39, 0xa5, 0x17, 0xa7, 0xdd, 0x39, 0xbf, 0x52,
+ 0x84, 0xd7, 0x57, 0x12, 0x6e, 0xc1, 0xe1, 0x28, 0x7e, 0xb0, 0x48, 0xa8,
+ 0x68, 0x46, 0xf4, 0xd2, 0x2e, 0xc5, 0xb4, 0x86, 0x4d, 0x8c, 0xdf, 0x88,
+ 0x12, 0x24, 0x7b, 0x08, 0x46, 0x66, 0x2a, 0x61, 0xcc, 0x1f, 0xfe, 0x09,
+ 0xbe, 0xaf, 0x15, 0x98, 0x7b, 0xfd, 0x58, 0xf9, 0xee, 0xe9, 0xaa, 0xf7,
+ 0x68, 0xe3, 0xa4, 0x35, 0x3e, 0x42, 0x02, 0xd1, 0x2c, 0xe3, 0xd0, 0x4a,
+ 0x0f, 0x95, 0x6a, 0x1b, 0x61, 0x2c, 0x52, 0x15, 0x81, 0x6d, 0xb9, 0xe6,
+ 0xda, 0xf1, 0x6f, 0xdd, 0xc6, 0xb8, 0x55, 0xb5, 0xa5, 0x52, 0x87, 0xcb,
+ 0x1b, 0xd6, 0x94, 0xb2, 0x82, 0xd1, 0x4f, 0x8d, 0x04, 0x86, 0x2b, 0x00,
+ 0xba, 0x78, 0xa0, 0xc8, 0xa9, 0x64, 0x61, 0x84, 0x5d, 0xf1, 0x1c, 0x50,
+ 0x3b, 0xf8, 0x8e, 0xd5, 0x40, 0xf3, 0xb2, 0x09, 0x58, 0x3a, 0xea, 0xd4,
+ 0x80, 0x3a, 0xbb, 0x8e, 0xb5, 0xab, 0x4e, 0x95, 0xd7, 0xbf, 0x21, 0xe9,
+ 0x4c, 0x51, 0xcc, 0x29, 0xaf, 0xea, 0x01, 0xbb, 0xad, 0xba, 0x23, 0xd1,
+ 0xa1, 0x34, 0x69, 0x1e, 0x89, 0xf9, 0xcd, 0x82, 0x6a, 0x0a, 0xc2, 0xc2,
+ 0xa4, 0x64, 0x25, 0xa2, 0xed, 0x2a, 0x05, 0x15, 0x19, 0x74, 0x55, 0xcb,
+ 0xba, 0xcd, 0xb3, 0x3b, 0xef, 0xd9, 0x6d, 0xe0, 0x36, 0xa9, 0x2f, 0x17,
+ 0xcb, 0x02, 0x66, 0x26, 0x75, 0x93, 0xb9, 0xb8, 0x43, 0x17, 0xa4, 0xd6,
+ 0x2c, 0x1d, 0x5f, 0x93, 0xf8, 0x38, 0x40, 0xcc, 0x6e, 0xd2, 0x44, 0xb4,
+ 0x61, 0x63, 0x42, 0x6b, 0xa0, 0x9c, 0x62, 0xa9, 0x91, 0x80, 0x9d, 0x25,
+ 0x9c, 0xfd, 0x83, 0x3c, 0x44, 0x17, 0x77, 0x28, 0xc4, 0xe8, 0x12, 0xa7,
+ 0xa1, 0xa4, 0x16, 0xa5, 0x83, 0x1d, 0x97, 0x6c, 0x77, 0x5e, 0xd4, 0x0e,
+ 0xc7, 0x59, 0xa2, 0xb0, 0xe2, 0x0d, 0x8b, 0x96, 0xc2, 0x35, 0xa5, 0xc9,
+ 0xbb, 0xe3, 0x73, 0x9f, 0x33, 0x54, 0x6b, 0x8d, 0x2e, 0xa9, 0x63, 0xb1,
+ 0xca, 0xf1, 0x11, 0x06, 0xca, 0x1d, 0x1f, 0x9d, 0x5f, 0x74, 0x9a, 0x04,
+ 0xf6, 0x48, 0xad, 0x9e, 0x65, 0x01, 0x4e, 0x42, 0xa5, 0xb5, 0xdf, 0x10,
+ 0x96, 0x29, 0x9e, 0x6c, 0xb3, 0x00, 0xb2, 0xe6, 0xe4, 0x32, 0xc6, 0xe2,
+ 0x25, 0xe6, 0x21, 0xfe, 0x49, 0xec, 0xa8, 0x1a, 0x8a, 0x64, 0x21, 0x8e,
+ 0xd5, 0x72, 0x34, 0x08, 0x92, 0xb9, 0x85, 0x21, 0x00, 0x11, 0x29, 0x1f,
+ 0xb3, 0x72, 0x7f, 0x13, 0xc7, 0x70, 0x6c, 0x9c, 0x9e, 0x9c, 0x3e, 0x31,
+ 0x72, 0xb2, 0xcc, 0xfb, 0x86, 0x9b, 0x73, 0x9c, 0xb0, 0x94, 0xa6, 0x20,
+ 0x64, 0xfc, 0x74, 0x83, 0xb8, 0xba, 0x0a, 0xe8, 0xf2, 0x3a, 0xf2, 0x42,
+ 0xb4, 0xd6, 0x51, 0x1d, 0x15, 0xcd, 0xc8, 0x42, 0x4e, 0x03, 0x0e, 0x72,
+ 0x98, 0x3b, 0xf0, 0x53, 0x2c, 0xc6, 0xc0, 0x91, 0xa2, 0xa6, 0x31, 0x80,
+ 0x0e, 0x85, 0x0c, 0xfd, 0xc9, 0x0d, 0x46, 0x4d, 0xa7, 0x2d, 0xca, 0xdf,
+ 0x21, 0xa9, 0x9d, 0xa4, 0x4d, 0x49, 0xc5, 0xaf, 0x9a, 0xb9, 0xf8, 0x92,
+ 0x51, 0x82, 0x0a, 0x74, 0xec, 0x4a, 0x06, 0x40, 0xf0, 0x8a, 0x9d, 0x14,
+ 0x7b, 0x45, 0x23, 0x5c, 0x66, 0xf0, 0x83, 0x38, 0xcd, 0x24, 0xb6, 0xd4,
+ 0x83, 0x3d, 0xf4, 0x9b, 0xa1, 0x48, 0x1d, 0xa5, 0x95, 0x82, 0xc2, 0xb8,
+ 0x92, 0xb6, 0x46, 0x3a, 0x37, 0x09, 0x92, 0x6e, 0xed, 0x74, 0xad, 0xd4,
+ 0x13, 0xa5, 0xd3, 0x66, 0x37, 0x14, 0xfd, 0xd2, 0x61, 0x9e, 0xc2, 0x5e,
+ 0xf5, 0x88, 0xf5, 0xcc, 0x73, 0x1a, 0x8b, 0x02, 0xd5, 0x5e, 0x72, 0xe8,
+ 0xa5, 0x7a, 0xa9, 0x04, 0xb5, 0x39, 0xaf, 0x7b, 0x00, 0x86, 0x03, 0x3c,
+ 0x62, 0xc2, 0x6b, 0xd2, 0x75, 0x94, 0x6f, 0xb2, 0x30, 0x64, 0xb6, 0x29,
+ 0x37, 0xee, 0xee, 0x34, 0xe0, 0x15, 0x1a, 0xf5, 0xe7, 0x3a, 0x23, 0x12,
+ 0x50, 0xa1, 0x6c, 0x33, 0x71, 0xc6, 0x64, 0x5d, 0x76, 0x89, 0xfc, 0x08,
+ 0xe0, 0x3a, 0xb5, 0x37, 0x24, 0x64, 0x5c, 0x71, 0x86, 0x44, 0x9b, 0x28,
+ 0x24, 0x93, 0x04, 0x50, 0xc6, 0x06, 0xf0, 0x55, 0x27, 0xae, 0xf4, 0xdd,
+ 0x86, 0x62, 0xf5, 0xfa, 0x88, 0xc6, 0x76, 0xf9, 0xb9, 0x2e, 0xe4, 0x11,
+ 0xba, 0x5d, 0x9e, 0xfc, 0xf0, 0x43, 0xd2, 0x84, 0xb5, 0xdb, 0x5c, 0x15,
+ 0x14, 0x0f, 0x05, 0x9d, 0x6e, 0xdc, 0x2e, 0x9e, 0x60, 0x34, 0xa0, 0xc4,
+ 0xc5, 0xde, 0x61, 0x28, 0xef, 0x90, 0x4c, 0x74, 0xa7, 0xaf, 0x32, 0x6c,
+ 0x85, 0x50, 0x4e, 0x18, 0x9d, 0x12, 0x5f, 0xc6, 0x3e, 0xcc, 0xa3, 0xef,
+ 0x82, 0xba, 0xc4, 0x1b, 0x8e, 0xa8, 0x99, 0x70, 0xa9, 0x2a, 0x77, 0x9d,
+ 0x90, 0x10, 0x70, 0x37, 0x1f, 0x76, 0x55, 0x0c, 0x8c, 0x21, 0xf7, 0x24,
+ 0xf8, 0x1f, 0x33, 0x92, 0xc2, 0x89, 0xc0, 0x61, 0x65, 0x8b, 0xe0, 0x98,
+ 0x66, 0x28, 0x52, 0x82, 0xaf, 0x7c, 0x1e, 0xc5, 0x35, 0x88, 0x07, 0x02,
+ 0x01, 0x0c, 0x52, 0x64, 0x23, 0x75, 0x01, 0x63, 0x49, 0x0d, 0x2f, 0x9e,
+ 0x39, 0x2a, 0xc3, 0xdd, 0x92, 0x88, 0xb5, 0xb8, 0xc4, 0x0f, 0xca, 0xfa,
+ 0x05, 0x16, 0x53, 0xc4, 0x32, 0x68, 0x3a, 0x8f, 0x90, 0xfe, 0x1f, 0x0d,
+ 0x23, 0x46, 0xd2, 0xf4, 0x14, 0xb2, 0x4a, 0x48, 0x2f, 0x86, 0x77, 0x2d,
+ 0xe6, 0x83, 0xba, 0x5c, 0x62, 0x85, 0x78, 0x43, 0x18, 0x1f, 0x81, 0x1d,
+ 0x00, 0x06, 0xe6, 0xc4, 0x02, 0xa5, 0xc5, 0x6d, 0xa0, 0x26, 0x95, 0x84,
+ 0xa4, 0xcf, 0x80, 0x5a, 0x13, 0xf9, 0xa5, 0x7d, 0x30, 0xa0, 0x24, 0x1b,
+ 0x72, 0x72, 0x61, 0xc3, 0xf3, 0x39, 0x18, 0xcc, 0xd2, 0x8f, 0x03, 0x3c,
+ 0x56, 0x45, 0xe5, 0x51, 0x22, 0x5b, 0xa7, 0xb4, 0x50, 0x85, 0x0b, 0x66,
+ 0x5a, 0xad, 0xcb, 0x79, 0xd0, 0x40, 0x55, 0xa6, 0x20, 0xbe, 0x1b, 0xbe,
+ 0x3e, 0xbc, 0x68, 0x1f, 0x2d, 0x20, 0x50, 0xa8, 0x89, 0x00, 0x99, 0x06,
+ 0xf4, 0xf7, 0xe9, 0xfb, 0x8b, 0x4d, 0x5f, 0x1a, 0x4f, 0xa8, 0xb4, 0x11,
+ 0xd0, 0xa7, 0x11, 0xf0, 0x31, 0xbe, 0xa6, 0x44, 0xf7, 0x2b, 0x83, 0x05,
+ 0x86, 0xa6, 0x3b, 0x10, 0x5c, 0xcc, 0xf3, 0xc9, 0xf6, 0x4e, 0x9f, 0xfe,
+ 0xd9, 0x85, 0xb5, 0xed, 0xc9, 0xf6, 0x13, 0xe7, 0x41, 0xb0, 0xa7, 0x22,
+ 0x27, 0x02, 0x87, 0x54, 0xa1, 0x32, 0x6c, 0xe0, 0x88, 0x48, 0x9e, 0x7c,
+ 0xfc, 0x88, 0xaf, 0x9a, 0xd1, 0x70, 0x03, 0x17, 0xd7, 0xbc, 0xca, 0x63,
+ 0x62, 0x03, 0xf7, 0x2b, 0x0e, 0xb3, 0xd9, 0x72, 0x2e, 0xe1, 0x3e, 0xc0,
+ 0x7b, 0xe5, 0x0c, 0x82, 0xe1, 0x2a, 0x54, 0xaf, 0xba, 0x9d, 0xd4, 0x1d,
+ 0xc2, 0x7a, 0x11, 0xad, 0xf0, 0xe4, 0x5d, 0x2f, 0x96, 0x8e, 0x10, 0x33,
+ 0x46, 0x3c, 0x26, 0x01, 0xa2, 0x60, 0x1c, 0xdb, 0x1f, 0xc3, 0xfb, 0xba,
+ 0x41, 0x12, 0xc4, 0x2e, 0x95, 0x19, 0xa9, 0xea, 0xbf, 0x02, 0xd6, 0x6f,
+ 0x8f, 0x63, 0x70, 0xe9, 0x50, 0x60, 0x85, 0xed, 0xd7, 0x5d, 0x89, 0xef,
+ 0x95, 0x3f, 0x9e, 0x84, 0xaa, 0x85, 0x95, 0x58, 0xed, 0x2c, 0x2f, 0xb4,
+ 0x2f, 0x45, 0x3f, 0x43, 0xd6, 0xc5, 0xc7, 0x8f, 0x8b, 0x2e, 0x72, 0xa6,
+ 0x10, 0x4b, 0xd0, 0x9a, 0x6a, 0xae, 0xa5, 0xe7, 0xd5, 0xdb, 0x89, 0xdf,
+ 0x3b, 0xca, 0x78, 0x21, 0x9a, 0x06, 0x28, 0x88, 0x56, 0xda, 0x75, 0x20,
+ 0x13, 0x3c, 0x48, 0xd4, 0x3d, 0x8e, 0x7d, 0x36, 0x77, 0xae, 0x46, 0xb5,
+ 0x8a, 0xfa, 0xd7, 0x8d, 0x8c, 0x63, 0x4e, 0x53, 0xd2, 0x0b, 0xa6, 0x82,
+ 0xe4, 0xe4, 0xe2, 0xf0, 0x4b, 0x1b, 0x96, 0xc4, 0x6f, 0xfb, 0xe0, 0x2b,
+ 0x7e, 0xef, 0x5f, 0xfe, 0x9b, 0x22, 0xb7, 0x3a, 0x5a, 0xc5, 0x1f, 0xd0,
+ 0x11, 0x17, 0xd3, 0x10, 0xc7, 0x1f, 0x4c, 0xe7, 0x05, 0xb7, 0x18, 0xc0,
+ 0x3c, 0xf0, 0x92, 0x24, 0x8e, 0x6c, 0xb2, 0xd2, 0x59, 0x0f, 0x29, 0x93,
+ 0xf8, 0x42, 0x3e, 0x5b, 0xce, 0x7c, 0x02, 0x27, 0x57, 0x63, 0xaa, 0x33,
+ 0x5f, 0x6d, 0x3e, 0x2c, 0xa7, 0x31, 0xe8, 0xa0, 0x11, 0xe0, 0x0d, 0xfa,
+ 0xc4, 0x70, 0xe8, 0x86, 0x00, 0x9c, 0x33, 0x48, 0x13, 0x0d, 0xde, 0xd3,
+ 0x25, 0x50, 0x31, 0x89, 0x9b, 0x47, 0xec, 0x52, 0x1a, 0xc9, 0xc1, 0x5c,
+ 0x80, 0x4f, 0xf1, 0x05, 0x53, 0x41, 0x87, 0xec, 0x4d, 0x44, 0x3c, 0xc6,
+ 0x26, 0xb8, 0x71, 0xf2, 0x29, 0xd1, 0x71, 0x49, 0x16, 0x09, 0x5d, 0x08,
+ 0x51, 0xbc, 0xca, 0x88, 0x9a, 0xb8, 0xcb, 0x27, 0xf5, 0x35, 0x90, 0x3d,
+ 0x71, 0x45, 0x32, 0xf0, 0x0c, 0xc7, 0x4a, 0xab, 0xc0, 0x91, 0xc7, 0xf9,
+ 0x59, 0xa3, 0xee, 0xaa, 0x35, 0xb2, 0x47, 0x58, 0xd3, 0x44, 0xd0, 0x70,
+ 0x38, 0x39, 0x00, 0xdb, 0x80, 0xb8, 0xce, 0x2d, 0x31, 0x11, 0x39, 0xbc,
+ 0x07, 0x92, 0xf8, 0x96, 0x97, 0x0c, 0x11, 0x1a, 0x4b, 0x8f, 0x96, 0x51,
+ 0x35, 0x74, 0x87, 0x02, 0x26, 0x98, 0xde, 0x8d, 0xa4, 0x32, 0x7e, 0xab,
+ 0x1a, 0xa9, 0x80, 0x94, 0x81, 0x07, 0x48, 0x3e, 0x0f, 0xf1, 0xab, 0x9b,
+ 0x7c, 0x1a, 0xd9, 0x24, 0xd0, 0x3d, 0xe9, 0xcf, 0x33, 0xbc, 0xfe, 0xb6,
+ 0xa7, 0x51, 0x2a, 0x0c, 0xa1, 0x97, 0x69, 0xd0, 0x69, 0x5f, 0x21, 0x3f,
+ 0x7b, 0x57, 0xd2, 0xc5, 0xd7, 0x3d, 0x17, 0xcb, 0x12, 0x5d, 0x76, 0x3e,
+ 0x52, 0xd5, 0x6c, 0xe9, 0xd5, 0x5e, 0xb2, 0xbb, 0xbd, 0xfd, 0x2d, 0xb1,
+ 0xd8, 0x19, 0x36, 0x65, 0xe7, 0xeb, 0xee, 0xba, 0x3e, 0x4a, 0xc6, 0xa5,
+ 0x94, 0x26, 0x90, 0xd3, 0x94, 0xde, 0xc2, 0xe8, 0xad, 0x0b, 0x87, 0x29,
+ 0x71, 0x74, 0x98, 0x87, 0xeb, 0xee, 0xdc, 0x38, 0x97, 0x9e, 0xcc, 0xf6,
+ 0xd0, 0x36, 0x1a, 0xc7, 0x0c, 0xb9, 0x2a, 0xbc, 0xf3, 0xd7, 0xf4, 0x5b,
+ 0x16, 0x10, 0x05, 0x3a, 0xe9, 0xc0, 0xba, 0x20, 0xb9, 0x83, 0xf1, 0x0e,
+ 0x97, 0x25, 0x97, 0x31, 0x47, 0x24, 0x28, 0xe0, 0xc2, 0x60, 0xa4, 0x35,
+ 0xf7, 0xd2, 0xbc, 0x10, 0x00, 0x1a, 0x17, 0xc6, 0x2e, 0xb3, 0xe1, 0xc9,
+ 0x74, 0x25, 0xd8, 0x31, 0x09, 0xcb, 0x25, 0x6f, 0xc1, 0xd2, 0x83, 0x3f,
+ 0x33, 0x87, 0xc4, 0x10, 0xe4, 0x18, 0x3a, 0x07, 0xa8, 0xa4, 0x01, 0x7a,
+ 0x61, 0xad, 0x3d, 0x59, 0xa6, 0x4b, 0xad, 0x37, 0xc1, 0x4a, 0x27, 0x6c,
+ 0xaa, 0x98, 0x23, 0x63, 0x50, 0xc3, 0x54, 0xce, 0x57, 0x19, 0x03, 0x84,
+ 0xa1, 0x5d, 0xd8, 0x7f, 0xa7, 0xfc, 0xc0, 0x94, 0x15, 0xea, 0x22, 0x4a,
+ 0x99, 0x9a, 0x2e, 0x60, 0x58, 0x76, 0x97, 0x51, 0x30, 0x24, 0x4e, 0x04,
+ 0x1f, 0xa3, 0x92, 0x0f, 0xa7, 0x14, 0xfd, 0x86, 0x46, 0x26, 0x20, 0x21,
+ 0x0a, 0xe0, 0xca, 0x4b, 0x22, 0xdf, 0x2f, 0x7e, 0xe4, 0xc2, 0xde, 0x3f,
+ 0x77, 0x94, 0x30, 0x4f, 0x35, 0xa7, 0x8e, 0xcf, 0x92, 0xe5, 0xad, 0x95,
+ 0xbe, 0xc0, 0x1e, 0xda, 0x91, 0xc4, 0x6f, 0x2b, 0x24, 0xee, 0x4b, 0x13,
+ 0x76, 0x86, 0x04, 0x9b, 0x39, 0x7f, 0xa3, 0xda, 0x1c, 0x86, 0xc0, 0x8a,
+ 0x0a, 0x62, 0x6e, 0xad, 0xc0, 0x17, 0x3d, 0x17, 0xe6, 0x24, 0x59, 0x14,
+ 0x6d, 0x66, 0xc4, 0xb1, 0x8f, 0xe3, 0xcc, 0x07, 0x5b, 0xa1, 0x15, 0x9b,
+ 0xef, 0x68, 0x59, 0xdd, 0x33, 0x90, 0x94, 0x78, 0x31, 0x90, 0xe3, 0x60,
+ 0x18, 0xd8, 0x8c, 0xc4, 0xcf, 0xc3, 0x8f, 0xc3, 0xd3, 0x18, 0xeb, 0x48,
+ 0xa2, 0x91, 0xeb, 0x82, 0x2e, 0xfa, 0xb4, 0x2c, 0x49, 0x54, 0xd3, 0xad,
+ 0xd6, 0x6c, 0x46, 0x1a, 0x3c, 0x2b, 0x3f, 0x30, 0x08, 0x39, 0xc7, 0x04,
+ 0xb5, 0xbd, 0x5c, 0x74, 0xc4, 0x93, 0x71, 0x7e, 0x73, 0x04, 0x2e, 0xd7,
+ 0x00, 0x0f, 0x30, 0xf5, 0xc3, 0xc4, 0xcd, 0x07, 0x35, 0xa0, 0x63, 0x58,
+ 0x21, 0x5a, 0xc9, 0x21, 0x0a, 0xbb, 0x20, 0x15, 0x3b, 0x20, 0x5b, 0x9a,
+ 0xf3, 0xa3, 0x3b, 0x5f, 0x3d, 0xf9, 0xa3, 0x87, 0x4b, 0x94, 0x82, 0x86,
+ 0x3e, 0x3f, 0x44, 0x71, 0xbb, 0x38, 0x9e, 0x82, 0x35, 0x45, 0x2f, 0x90,
+ 0x17, 0xc3, 0x2e, 0x90, 0x76, 0x7e, 0xa6, 0x10, 0xa5, 0x52, 0xac, 0x09,
+ 0x75, 0x59, 0x4c, 0x96, 0x63, 0x98, 0x58, 0x38, 0x72, 0x2e, 0xaf, 0xef,
+ 0x93, 0x91, 0xa0, 0xb7, 0x19, 0x84, 0x00, 0x37, 0xed, 0xe4, 0xe1, 0x56,
+ 0x73, 0x6a, 0x70, 0x4f, 0xe5, 0x29, 0x87, 0x0a, 0x8c, 0x3b, 0x06, 0x28,
+ 0xe1, 0x99, 0x0a, 0x1a, 0x65, 0xa4, 0x8f, 0xa0, 0xca, 0x62, 0x37, 0xaa,
+ 0xba, 0x38, 0x41, 0x59, 0x21, 0xf8, 0x58, 0xbb, 0xd8, 0x09, 0x2e, 0x18,
+ 0x4a, 0xc4, 0x0b, 0x49, 0xf5, 0x2b, 0x0e, 0xd7, 0x6d, 0x35, 0x18, 0x62,
+ 0x85, 0xcf, 0xfa, 0x2a, 0xa0, 0x3f, 0xe8, 0xc7, 0x7a, 0xeb, 0x6e, 0x6a,
+ 0xf8, 0xad, 0x72, 0x38, 0xb3, 0xf0, 0xa4, 0x2c, 0x2c, 0x52, 0xd2, 0xa6,
+ 0x86, 0x2b, 0x72, 0x77, 0x5d, 0x4c, 0x43, 0x21, 0x25, 0x0e, 0x90, 0xe0,
+ 0xa2, 0x01, 0xde, 0x0a, 0x19, 0x24, 0x46, 0x30, 0x60, 0x14, 0x0f, 0xd4,
+ 0x4a, 0x96, 0x8d, 0x50, 0xef, 0xe5, 0x2f, 0xc5, 0x48, 0xf5, 0x3b, 0x2e,
+ 0x3a, 0x70, 0xd5, 0x95, 0x6a, 0x28, 0xe1, 0x00, 0xd7, 0x5c, 0x16, 0x9e,
+ 0xf8, 0xbb, 0x04, 0x96, 0xf0, 0x78, 0xe6, 0x59, 0xcd, 0xfc, 0x06, 0xf1,
+ 0xe4, 0xb0, 0xf5, 0x24, 0x57, 0xc8, 0xd8, 0x45, 0x84, 0x30, 0x43, 0x25,
+ 0x10, 0xcf, 0x6b, 0x35, 0xf7, 0xd9, 0xf0, 0xc9, 0x2e, 0x27, 0x82, 0x85,
+ 0xcc, 0x28, 0x1d, 0xb3, 0xbe, 0x55, 0x25, 0x96, 0x27, 0x83, 0xfc, 0x41,
+ 0xe5, 0xe6, 0xb5, 0x60, 0x73, 0x2c, 0x95, 0x47, 0x0d, 0x62, 0x77, 0xad,
+ 0xaa, 0x1c, 0x19, 0x23, 0x0c, 0x56, 0xf0, 0x6e, 0x53, 0x7b, 0xcb, 0x32,
+ 0x1d, 0xdf, 0x1b, 0xc8, 0xb2, 0x8f, 0x14, 0xe3, 0x26, 0xf8, 0x15, 0x1a,
+ 0x18, 0x9e, 0x8e, 0x6a, 0x07, 0xcc, 0xdd, 0x20, 0x98, 0x6b, 0xe7, 0x00,
+ 0x8b, 0x68, 0x67, 0xc4, 0x59, 0xa5, 0xaa, 0x81, 0xb5, 0xb6, 0x42, 0xef,
+ 0xfa, 0x87, 0xb2, 0xdc, 0xab, 0x7c, 0x3e, 0x30, 0x79, 0xfe, 0xa5, 0xfe,
+ 0xf2, 0xc5, 0x03, 0xa1, 0x47, 0x78, 0xc3, 0x69, 0x00, 0xca, 0x57, 0xf5,
+ 0x6e, 0x36, 0xeb, 0x53, 0x83, 0x6e, 0x57, 0x6a, 0x30, 0x76, 0x09, 0x6a,
+ 0x93, 0xae, 0x4d, 0xe8, 0xe7, 0x16, 0x23, 0x24, 0xb5, 0xde, 0xc7, 0xc5,
+ 0xd4, 0x39, 0x3e, 0xc6, 0x9d, 0x91, 0xf2, 0x95, 0xc6, 0x29, 0x69, 0x25,
+ 0x6b, 0x2c, 0x88, 0x8e, 0xaa, 0x35, 0x9c, 0x64, 0xbf, 0x06, 0xe2, 0x3d,
+ 0x84, 0xf5, 0xd8, 0x24, 0x7d, 0xf4, 0x76, 0xff, 0xb4, 0x0f, 0xdb, 0xa0,
+ 0x94, 0xb8, 0x78, 0xcb, 0x56, 0x4e, 0x05, 0xb8, 0x6e, 0xcc, 0x5d, 0xdc,
+ 0x68, 0x02, 0x40, 0x17, 0x14, 0x54, 0x6d, 0xcb, 0x6d, 0x23, 0x17, 0xe2,
+ 0xd8, 0x5a, 0x3a, 0xad, 0x11, 0xcc, 0xc6, 0x3e, 0xc6, 0x39, 0xdc, 0x7d,
+ 0xf2, 0xf9, 0xd3, 0x3e, 0x7e, 0x7b, 0xb6, 0xfd, 0x42, 0xb4, 0xa5, 0xa3,
+ 0xc3, 0x8b, 0x37, 0x6d, 0x8d, 0xa3, 0x24, 0x5d, 0x4d, 0xfe, 0x1d, 0x64,
+ 0x69, 0x79, 0x9d, 0x96, 0x35, 0xc7, 0x4d, 0x0d, 0xaa, 0x59, 0xbd, 0x18,
+ 0x6c, 0x6f, 0x0f, 0x6b, 0x62, 0x28, 0x21, 0x6f, 0x7f, 0xf2, 0x74, 0xb8,
+ 0xbd, 0xf9, 0x5b, 0x12, 0x10, 0x9b, 0xe8, 0x06, 0xbc, 0xc2, 0xc9, 0x4b,
+ 0xcd, 0x01, 0x89, 0xbd, 0x69, 0x6f, 0xd9, 0xc8, 0x7f, 0xee, 0x02, 0xc6,
+ 0x14, 0x7d, 0x52, 0x1f, 0x0f, 0x72, 0x16, 0x7c, 0xc6, 0x5d, 0x48, 0x02,
+ 0x1d, 0x17, 0x76, 0xc4, 0x6a, 0x1d, 0x28, 0xd8, 0x86, 0x55, 0xb3, 0x92,
+ 0x52, 0xbf, 0xa9, 0xd6, 0x33, 0xa8, 0x7d, 0xfd, 0x94, 0xce, 0x54, 0xf6,
+ 0x4a, 0x33, 0x16, 0xcb, 0x8c, 0x31, 0xa0, 0xe4, 0x12, 0xd2, 0x78, 0x0a,
+ 0xcd, 0x99, 0x7f, 0x08, 0xff, 0x6f, 0xf7, 0x59, 0xb3, 0x34, 0x0d, 0xd6,
+ 0x04, 0x8c, 0xef, 0x57, 0xae, 0x89, 0xbf, 0xf7, 0x44, 0xa0, 0x84, 0xcd,
+ 0xda, 0x65, 0xf0, 0xc5, 0xc8, 0x17, 0x95, 0x81, 0xc3, 0x3f, 0x3c, 0xcc,
+ 0xed, 0xf6, 0x30, 0x3f, 0xa2, 0xfa, 0x2d, 0x6c, 0xc4, 0x2f, 0x21, 0xbe,
+ 0x7f, 0xa2, 0xe6, 0x87, 0x37, 0x36, 0x4c, 0x8b, 0xd9, 0xf4, 0x20, 0xf4,
+ 0x82, 0x9e, 0x24, 0x9a, 0x1d, 0x1b, 0x54, 0x56, 0xc5, 0x1c, 0x7a, 0x63,
+ 0x5f, 0xde, 0x4c, 0x7a, 0x03, 0x59, 0x82, 0x4d, 0xf7, 0x9b, 0x78, 0x3f,
+ 0x5d, 0x42, 0x30, 0x5c, 0xd7, 0x28, 0xb5, 0x93, 0xce, 0x9b, 0xc8, 0x71,
+ 0xa8, 0x24, 0x02, 0x93, 0x64, 0xf6, 0x11, 0xe1, 0x7f, 0xa4, 0xd3, 0x3f,
+ 0x7f, 0x12, 0x9b, 0xc0, 0x4f, 0x2e, 0x0e, 0xf7, 0x54, 0x11, 0xf1, 0x99,
+ 0x57, 0x66, 0xa9, 0x92, 0x80, 0x3d, 0x4e, 0xbe, 0x67, 0x98, 0x1a, 0xc6,
+ 0xb2, 0x0d, 0x66, 0xd7, 0xef, 0x00, 0xf0, 0x43, 0x8e, 0x20, 0x17, 0x18,
+ 0x14, 0x17, 0x48, 0x1d, 0x05, 0x37, 0x58, 0x38, 0x03, 0xb2, 0x72, 0xf3,
+ 0xcb, 0xc0, 0xb6, 0xd0, 0x55, 0x40, 0x07, 0xd3, 0x96, 0x1a, 0x5e, 0x8c,
+ 0xa7, 0x26, 0x14, 0x1a, 0x2d, 0x96, 0x50, 0x08, 0x24, 0x75, 0xcb, 0xc9,
+ 0x2d, 0xe8, 0x76, 0x2c, 0xa3, 0xc8, 0x0c, 0xa8, 0xdd, 0xec, 0xb3, 0x41,
+ 0xf6, 0xdb, 0x85, 0xa1, 0x88, 0x5d, 0xb6, 0xb2, 0x53, 0x41, 0xbc, 0xe5,
+ 0x78, 0x51, 0xff, 0x5a, 0xe2, 0xed, 0x7b, 0x5c, 0x6c, 0x91, 0xc4, 0x24,
+ 0x4c, 0x0f, 0x1e, 0x22, 0x29, 0x5f, 0xde, 0x61, 0x45, 0x6c, 0xd4, 0x29,
+ 0x02, 0xb9, 0xdb, 0xe0, 0x2c, 0x24, 0x77, 0x9c, 0x2f, 0xf2, 0x00, 0x35,
+ 0xd7, 0xdd, 0x0f, 0x69, 0x8c, 0x11, 0xc0, 0x5e, 0x11, 0xb4, 0xe1, 0x8e,
+ 0x53, 0xe1, 0x81, 0x06, 0xa4, 0xf1, 0x62, 0xf8, 0xc0, 0xd1, 0x08, 0x07,
+ 0x16, 0x8e, 0x0c, 0xf5, 0x73, 0x1c, 0xab, 0x69, 0x54, 0xc7, 0x4a, 0x36,
+ 0xbe, 0x3b, 0x7b, 0xf3, 0x67, 0xb3, 0xf7, 0x6c, 0xf6, 0x3b, 0x8d, 0xe9,
+ 0xad, 0x29, 0x34, 0x02, 0xfa, 0x55, 0xa2, 0x68, 0x2c, 0x9d, 0xff, 0xa3,
+ 0x83, 0xd8, 0x26, 0x05, 0xe2, 0x8d, 0x36, 0xb8, 0x7e, 0x0b, 0xd7, 0x7c,
+ 0x53, 0xb1, 0xff, 0xc9, 0xf0, 0x19, 0x5c, 0x51, 0x6f, 0x0e, 0x9e, 0x3d,
+ 0xd9, 0xdd, 0xd9, 0x1c, 0xc6, 0xb7, 0xc1, 0xda, 0x27, 0xad, 0xbf, 0xdb,
+ 0xb2, 0xec, 0xe3, 0x82, 0x09, 0x66, 0xe3, 0xf0, 0x87, 0xd3, 0x77, 0xcd,
+ 0xf9, 0xc9, 0x8c, 0x22, 0xb1, 0x6e, 0xd5, 0x0c, 0xbd, 0x21, 0xb1, 0xd1,
+ 0xbe, 0x25, 0x11, 0xe2, 0xe0, 0xc4, 0xd8, 0x20, 0xeb, 0x6f, 0xca, 0x9c,
+ 0xcf, 0xc0, 0x3a, 0x2f, 0xc8, 0xfa, 0x31, 0x09, 0xaf, 0xa4, 0x98, 0x9c,
+ 0x30, 0x3a, 0x58, 0xb6, 0xde, 0x82, 0xf3, 0x6a, 0xce, 0xae, 0x61, 0xc0,
+ 0x86, 0x3a, 0xd9, 0xa1, 0x48, 0x7a, 0x96, 0xa6, 0x6a, 0x24, 0x5c, 0xff,
+ 0xa6, 0x0c, 0xb0, 0x0e, 0xe4, 0xec, 0xb7, 0x8a, 0x10, 0xa2, 0x61, 0x19,
+ 0xa4, 0xf0, 0x44, 0x70, 0x41, 0xce, 0x6d, 0xe3, 0x3c, 0x11, 0xab, 0xd0,
+ 0x57, 0x11, 0xc2, 0x93, 0x35, 0x6b, 0x22, 0xc5, 0x75, 0x80, 0x2d, 0xcc,
+ 0x26, 0x18, 0x4e, 0x85, 0xcc, 0x28, 0x12, 0x2a, 0xaa, 0x65, 0x39, 0x59,
+ 0xce, 0x68, 0x05, 0xbe, 0xba, 0xb7, 0xb0, 0x23, 0xbd, 0xb0, 0xa1, 0xb2,
+ 0xc7, 0x39, 0x0d, 0x19, 0x4c, 0x5f, 0xcf, 0xb6, 0x1b, 0xad, 0x0d, 0xb1,
+ 0x08, 0x2d, 0xe3, 0xea, 0x60, 0xc7, 0x55, 0x4f, 0xe5, 0x84, 0x43, 0xb1,
+ 0x0e, 0xb6, 0x6d, 0x6e, 0x7c, 0x71, 0xff, 0x96, 0x52, 0x45, 0x56, 0xa7,
+ 0x2c, 0xf7, 0x3f, 0x9e, 0xa4, 0xdf, 0x30, 0x83, 0x8b, 0xa3, 0x9e, 0xc9,
+ 0x55, 0x2b, 0xd1, 0xba, 0x3c, 0x4b, 0x46, 0x92, 0x8a, 0x68, 0xeb, 0xad,
+ 0xf6, 0x22, 0x3c, 0x78, 0x03, 0x0c, 0xd2, 0x02, 0x28, 0x44, 0xfa, 0x7b,
+ 0x9a, 0x6c, 0xb0, 0x44, 0x96, 0x3c, 0xfb, 0xfc, 0xd9, 0xd3, 0x4d, 0x55,
+ 0xf9, 0x5d, 0x7c, 0xce, 0x66, 0x97, 0xf3, 0x0d, 0xeb, 0xb6, 0xac, 0x1c,
+ 0x9e, 0xf7, 0x2c, 0x47, 0x45, 0x31, 0xd0, 0xba, 0xba, 0xf1, 0xa4, 0x30,
+ 0x13, 0x94, 0x71, 0x98, 0x94, 0x2c, 0x06, 0xb7, 0xdd, 0x1c, 0x75, 0x26,
+ 0xe5, 0xc8, 0x92, 0x0d, 0x1c, 0x8e, 0xa0, 0xb2, 0x4b, 0xe2, 0xb2, 0xd1,
+ 0x71, 0x55, 0xc9, 0xd5, 0xe0, 0xf2, 0x2d, 0xd8, 0x86, 0x71, 0x54, 0x77,
+ 0x9a, 0xbe, 0xc5, 0xc5, 0x14, 0x56, 0x2b, 0x46, 0x65, 0xde, 0x22, 0xb8,
+ 0x8b, 0xc4, 0x19, 0x00, 0x83, 0xbf, 0xde, 0x75, 0x5d, 0xe0, 0x96, 0x24,
+ 0xbd, 0xc2, 0xdc, 0xc7, 0x77, 0x67, 0x73, 0x1d, 0x05, 0x40, 0x8c, 0xb7,
+ 0xdf, 0xde, 0xd7, 0x70, 0x1e, 0x5f, 0x1d, 0x38, 0xb6, 0xb6, 0xcd, 0xb2,
+ 0x99, 0x81, 0x4a, 0xcb, 0xad, 0x5e, 0x94, 0xbe, 0x42, 0x91, 0xd8, 0x73,
+ 0xe4, 0x82, 0x46, 0x0c, 0xe3, 0x2a, 0x64, 0x0e, 0x53, 0x47, 0x52, 0x83,
+ 0x30, 0x68, 0x8c, 0x6c, 0x45, 0xa1, 0x0f, 0x47, 0x6c, 0x61, 0x72, 0xb1,
+ 0xba, 0xa1, 0x10, 0xd2, 0x6a, 0xbf, 0x3b, 0xa2, 0x8c, 0xab, 0xf4, 0x48,
+ 0xa7, 0xad, 0x75, 0x58, 0x31, 0x78, 0x29, 0xd4, 0x83, 0x9c, 0x70, 0xe8,
+ 0x36, 0x83, 0x38, 0x5b, 0x25, 0xd9, 0xc0, 0x78, 0xb7, 0xb6, 0x36, 0x1f,
+ 0x1d, 0xb3, 0x3e, 0xf8, 0xd8, 0x18, 0x4f, 0x45, 0xd9, 0x98, 0x87, 0x25,
+ 0x43, 0xfc, 0x10, 0xb8, 0x4b, 0xde, 0x2f, 0x01, 0x1b, 0x96, 0xa0, 0x46,
+ 0xb1, 0xbf, 0xb3, 0xd0, 0x92, 0x90, 0x1c, 0xd4, 0x81, 0x89, 0x04, 0x70,
+ 0xde, 0x54, 0xe7, 0xd7, 0x9c, 0xba, 0x0a, 0xaf, 0x92, 0xac, 0xae, 0x5c,
+ 0x41, 0xb3, 0x35, 0x38, 0x94, 0x31, 0x2a, 0x36, 0x37, 0x0f, 0xf2, 0x4c,
+ 0x38, 0x36, 0x27, 0x98, 0x9f, 0x9c, 0x2a, 0xef, 0x54, 0x96, 0x33, 0x68,
+ 0x4a, 0x82, 0x38, 0x9f, 0x63, 0x56, 0xec, 0x9e, 0x6e, 0x55, 0x50, 0x1e,
+ 0x46, 0x58, 0x60, 0xf2, 0x24, 0x1f, 0x1f, 0xf3, 0x48, 0xe7, 0xf3, 0x0e,
+ 0xa9, 0xd5, 0xbb, 0x0e, 0xd1, 0x20, 0xe9, 0xf8, 0x37, 0x7e, 0xce, 0x82,
+ 0xe9, 0x67, 0xc9, 0x6a, 0x01, 0x5e, 0x40, 0x85, 0xe1, 0x76, 0xe3, 0x2a,
+ 0x38, 0xea, 0xc6, 0x8a, 0x59, 0x71, 0x3d, 0x7c, 0xda, 0x58, 0xcc, 0xbe,
+ 0x9c, 0x50, 0x84, 0xda, 0x77, 0x09, 0xc1, 0xa8, 0xa1, 0xf0, 0xa0, 0xd8,
+ 0x0f, 0x7c, 0x1c, 0x1a, 0x58, 0xb3, 0xbe, 0xb7, 0x5c, 0x16, 0x23, 0xb7,
+ 0xd0, 0x1a, 0x90, 0x36, 0x0c, 0x6e, 0xd0, 0x39, 0x5b, 0x99, 0xe6, 0x59,
+ 0x5d, 0x8e, 0x23, 0xc3, 0x92, 0x73, 0x86, 0x57, 0x63, 0x35, 0x7d, 0x0f,
+ 0xf1, 0x20, 0x75, 0xfd, 0x41, 0x7f, 0x61, 0x16, 0xad, 0x89, 0x10, 0x9b,
+ 0xe6, 0xa7, 0xd2, 0xa0, 0xa0, 0x8e, 0x98, 0xf7, 0x5e, 0xe5, 0x82, 0xf4,
+ 0x35, 0x48, 0x8a, 0x79, 0xa4, 0x68, 0xcc, 0x82, 0x1a, 0x36, 0x9f, 0x24,
+ 0xde, 0x5f, 0xee, 0xa0, 0xef, 0xef, 0x17, 0x51, 0xf4, 0xab, 0xe4, 0xb9,
+ 0x83, 0x44, 0xb8, 0x0d, 0x80, 0x30, 0x48, 0xf2, 0x87, 0x8f, 0x5b, 0x80,
+ 0x6e, 0xc0, 0x42, 0x70, 0xe8, 0xb7, 0xd5, 0x1a, 0x73, 0x1d, 0xa3, 0x8b,
+ 0x6c, 0x08, 0x6c, 0xb8, 0xc1, 0x3c, 0x37, 0x9e, 0x6d, 0x26, 0x97, 0xf5,
+ 0x62, 0x63, 0x67, 0x53, 0x60, 0x91, 0xb5, 0x84, 0x4d, 0xe1, 0xf7, 0x36,
+ 0x56, 0x12, 0x10, 0xd7, 0x75, 0xe0, 0xba, 0x85, 0xf3, 0x96, 0x61, 0xeb,
+ 0x11, 0x3f, 0x7e, 0xa9, 0xe7, 0x40, 0x16, 0xcc, 0xd5, 0xde, 0x80, 0xeb,
+ 0xab, 0x4b, 0xaa, 0x84, 0x25, 0x78, 0xc1, 0x89, 0x0e, 0x95, 0x54, 0x3c,
+ 0xdc, 0xf0, 0x75, 0x12, 0xe4, 0x6e, 0x48, 0xb2, 0x5c, 0x42, 0x34, 0x8a,
+ 0x72, 0x3a, 0x19, 0xf0, 0xd5, 0x71, 0x55, 0x16, 0xcb, 0xc5, 0xa0, 0xec,
+ 0xc0, 0x42, 0xd2, 0xeb, 0xe3, 0x02, 0x4e, 0x96, 0x38, 0xed, 0x26, 0x59,
+ 0xe7, 0x8c, 0x9c, 0x75, 0x77, 0xb7, 0x87, 0x79, 0x3f, 0x2b, 0x12, 0x67,
+ 0x64, 0x37, 0xe3, 0x82, 0xcb, 0x9c, 0x58, 0x98, 0x8f, 0xed, 0x80, 0x4b,
+ 0x89, 0x08, 0xe4, 0x78, 0x30, 0xd0, 0x9a, 0xb2, 0x73, 0xe2, 0x1d, 0x1a,
+ 0xe6, 0x00, 0x6b, 0x36, 0x71, 0x1b, 0xa5, 0xb2, 0xc8, 0x36, 0x29, 0x66,
+ 0x4c, 0x93, 0x03, 0x00, 0x91, 0x5c, 0xa8, 0xac, 0x89, 0x18, 0x3e, 0x09,
+ 0xea, 0x10, 0x99, 0x99, 0x99, 0xba, 0x10, 0x80, 0x84, 0xff, 0x75, 0x38,
+ 0x4f, 0x7b, 0xb3, 0x7b, 0xbe, 0xc4, 0x7a, 0x0d, 0xaa, 0x4b, 0x7a, 0x15,
+ 0xdb, 0x02, 0xeb, 0x9e, 0x2d, 0x6f, 0x2b, 0x9f, 0x2c, 0xae, 0xc9, 0xb1,
+ 0xa2, 0x6f, 0xa1, 0x6a, 0xe9, 0xc2, 0xb7, 0x2e, 0x8d, 0xfb, 0xd3, 0xf7,
+ 0xae, 0x2f, 0x31, 0xef, 0xa3, 0x25, 0x47, 0x9a, 0xb4, 0x9a, 0x7e, 0x2d,
+ 0xac, 0x5a, 0x24, 0x02, 0x79, 0x42, 0x4b, 0x22, 0x7a, 0x80, 0x17, 0x86,
+ 0xfe, 0xc9, 0xd2, 0x59, 0x58, 0x58, 0x94, 0x8d, 0xaa, 0x6c, 0xca, 0x6e,
+ 0x6f, 0xfb, 0x12, 0x64, 0x5d, 0x85, 0x87, 0xa1, 0x15, 0x96, 0x28, 0x7d,
+ 0x20, 0xf6, 0x44, 0x1a, 0xd7, 0xd6, 0x3b, 0x21, 0x42, 0xd1, 0x80, 0x03,
+ 0x9a, 0x50, 0xa5, 0x57, 0xae, 0x1d, 0xb5, 0xaa, 0x6a, 0x23, 0xae, 0xea,
+ 0x01, 0xad, 0xc7, 0xf8, 0x7a, 0x39, 0xbf, 0xa1, 0x21, 0xc4, 0x11, 0xcf,
+ 0xe6, 0xdf, 0xc8, 0x51, 0x79, 0x46, 0x4a, 0x8a, 0x1b, 0x9a, 0x84, 0xbc,
+ 0xce, 0x70, 0x65, 0xb7, 0xc8, 0x5e, 0xd5, 0x6a, 0x32, 0x0f, 0x45, 0xaa,
+ 0x89, 0x59, 0x57, 0x16, 0x50, 0x46, 0xe5, 0x16, 0xf0, 0xe1, 0x0c, 0x48,
+ 0xab, 0x4d, 0x22, 0xb1, 0x50, 0x57, 0x41, 0x28, 0x84, 0xb0, 0x28, 0x03,
+ 0x82, 0xe1, 0x7b, 0x46, 0x8d, 0x9c, 0x5d, 0xc5, 0x7a, 0xe1, 0x17, 0xd7,
+ 0x6d, 0x65, 0x32, 0x0d, 0x21, 0x24, 0x3b, 0x46, 0xa2, 0x2c, 0x78, 0xd0,
+ 0xc1, 0x4b, 0x2e, 0x9a, 0xe2, 0xb6, 0x27, 0x45, 0x7b, 0xa9, 0xdf, 0x40,
+ 0x10, 0x86, 0xff, 0xd1, 0x72, 0x07, 0x3a, 0x78, 0x89, 0x54, 0x00, 0xda,
+ 0x20, 0xed, 0xa2, 0x98, 0x2e, 0x6b, 0xc9, 0x79, 0x66, 0x8b, 0x18, 0xa7,
+ 0x92, 0x6c, 0xda, 0x81, 0x92, 0x03, 0xe8, 0x22, 0x22, 0x84, 0x8f, 0x75,
+ 0x22, 0x73, 0x21, 0xe0, 0xdb, 0x59, 0x7b, 0x25, 0x20, 0x4b, 0xb5, 0x76,
+ 0x96, 0xfd, 0xf5, 0x9a, 0x10, 0x3e, 0xc7, 0x2a, 0x2c, 0xd2, 0x25, 0x8d,
+ 0xc1, 0xc6, 0xc6, 0x23, 0xd3, 0x23, 0x1a, 0x0b, 0x12, 0x98, 0x7f, 0x21,
+ 0x18, 0xf8, 0x1a, 0x5b, 0xae, 0xb4, 0x84, 0x29, 0x1b, 0x0f, 0xc6, 0x47,
+ 0x3c, 0x10, 0x0e, 0xd8, 0xb1, 0xd6, 0x56, 0x2b, 0x43, 0xe0, 0x89, 0x55,
+ 0xda, 0xd7, 0x61, 0xb1, 0x98, 0x2e, 0x01, 0xad, 0x32, 0xa2, 0xd9, 0x92,
+ 0x7d, 0x0c, 0x91, 0x99, 0x99, 0xf6, 0x65, 0xba, 0x14, 0x88, 0x76, 0xf6,
+ 0x57, 0xab, 0xab, 0x8c, 0x84, 0xf3, 0x74, 0xc4, 0xbb, 0x33, 0xba, 0x77,
+ 0xd3, 0xb4, 0xfc, 0x7a, 0x24, 0xc2, 0x9b, 0x36, 0x1d, 0x93, 0x87, 0x3d,
+ 0xd6, 0xea, 0xe7, 0x3b, 0x63, 0xac, 0x11, 0x65, 0x88, 0x13, 0x24, 0x84,
+ 0x03, 0xb9, 0x51, 0x7e, 0xa2, 0x4c, 0x76, 0xd9, 0x61, 0x2e, 0x75, 0x83,
+ 0x31, 0x49, 0x9d, 0xcd, 0x01, 0xa9, 0x14, 0x84, 0x51, 0xc8, 0x15, 0x5d,
+ 0x06, 0xcb, 0x89, 0x29, 0x9a, 0x29, 0x58, 0x74, 0x6e, 0x0a, 0x60, 0xa0,
+ 0xaf, 0x00, 0x3c, 0xd5, 0x2a, 0xaf, 0xef, 0xec, 0xb1, 0x64, 0xe3, 0xfc,
+ 0xf4, 0xdd, 0xe1, 0xd7, 0x27, 0x9b, 0x8f, 0x79, 0x15, 0x14, 0x50, 0x12,
+ 0x11, 0x28, 0x38, 0x54, 0x38, 0xde, 0x1d, 0xed, 0xc0, 0xe5, 0x04, 0x80,
+ 0xbf, 0xd0, 0x8e, 0xdc, 0x15, 0x6f, 0xd7, 0x97, 0x44, 0x54, 0x39, 0xaf,
+ 0x82, 0x2a, 0xe8, 0x86, 0xff, 0xa9, 0xb1, 0xfe, 0x69, 0x57, 0xa4, 0xff,
+ 0xd7, 0xe7, 0xe7, 0x83, 0xfd, 0xd3, 0x23, 0x54, 0xe4, 0x3a, 0xa7, 0x9f,
+ 0x2b, 0x60, 0xcb, 0xbb, 0x02, 0xfb, 0xc5, 0x32, 0xce, 0xd1, 0x82, 0xcd,
+ 0xd8, 0xfe, 0x20, 0x9c, 0x1f, 0xcd, 0xb7, 0xaf, 0xdb, 0xd3, 0xa3, 0x2d,
+ 0x74, 0x05, 0x9f, 0x06, 0x56, 0xa2, 0x3b, 0x9c, 0x2f, 0xae, 0x1b, 0x23,
+ 0xd8, 0x8a, 0x48, 0xd7, 0x00, 0x81, 0x1a, 0x03, 0x49, 0x49, 0xf4, 0x24,
+ 0x5d, 0x77, 0xb0, 0x34, 0x1c, 0xc7, 0x6e, 0x04, 0x23, 0x36, 0xa5, 0x73,
+ 0x32, 0x9a, 0x41, 0xf3, 0xb7, 0x4c, 0xf7, 0x30, 0xcd, 0x0a, 0xd8, 0x25,
+ 0x43, 0x93, 0x93, 0x60, 0xa5, 0x91, 0x2d, 0x6d, 0xbb, 0x5e, 0x6f, 0x40,
+ 0xcc, 0x6b, 0xaf, 0x27, 0xa9, 0x1a, 0xd9, 0x9c, 0xab, 0x32, 0x27, 0x76,
+ 0xd6, 0x92, 0xc0, 0x54, 0xd6, 0xb8, 0xb1, 0x1d, 0xd0, 0xce, 0x60, 0xd9,
+ 0x3d, 0x3a, 0x3a, 0xa2, 0x2c, 0x5e, 0x89, 0x23, 0x50, 0xa5, 0xc6, 0x7f,
+ 0x0a, 0x2a, 0x71, 0x78, 0x24, 0x82, 0xbc, 0xb6, 0x87, 0xae, 0x79, 0xe5,
+ 0x33, 0x3e, 0x07, 0x4e, 0x3d, 0x1a, 0x4e, 0xda, 0xbc, 0x38, 0x38, 0x0d,
+ 0x22, 0x00, 0xfa, 0xb1, 0xc1, 0x63, 0x74, 0xef, 0xd3, 0xc3, 0x91, 0x97,
+ 0x3b, 0x77, 0xad, 0xcf, 0x86, 0xab, 0xcb, 0x4b, 0xd6, 0x41, 0x9d, 0xa9,
+ 0xae, 0x7b, 0xaf, 0x71, 0xf1, 0xb9, 0x12, 0xac, 0xab, 0xaf, 0x3e, 0x3f,
+ 0x83, 0xe0, 0xf6, 0x73, 0x1f, 0xb6, 0x96, 0x46, 0x61, 0xa4, 0xf2, 0x49,
+ 0x67, 0x92, 0x96, 0xad, 0x90, 0x55, 0xa2, 0xd1, 0x35, 0x62, 0x08, 0x20,
+ 0x83, 0xeb, 0x3a, 0x7a, 0x4d, 0xa3, 0x61, 0x41, 0x8c, 0x74, 0xcf, 0xc0,
+ 0x5c, 0x16, 0x0b, 0x90, 0xde, 0x1e, 0x0e, 0xce, 0x8d, 0x1a, 0xef, 0xde,
+ 0x68, 0xc9, 0x6d, 0x64, 0xc3, 0x60, 0x55, 0xb4, 0x20, 0xb2, 0x62, 0xc5,
+ 0x75, 0xa3, 0xfc, 0xb2, 0xa5, 0xbf, 0x94, 0x80, 0xc3, 0xe4, 0x7a, 0x59,
+ 0x0a, 0x9a, 0x81, 0x62, 0x11, 0x29, 0xce, 0x79, 0x99, 0xf1, 0x98, 0x9b,
+ 0x03, 0x8e, 0x2a, 0x21, 0x8a, 0x3e, 0x4e, 0xc7, 0x7e, 0xa6, 0xf9, 0x07,
+ 0xa3, 0xb2, 0xb8, 0xa1, 0xd3, 0xca, 0xaf, 0x41, 0x66, 0xe6, 0xd5, 0x17,
+ 0x19, 0xce, 0xd4, 0x4a, 0xba, 0x51, 0x26, 0xce, 0x25, 0xda, 0x11, 0x7c,
+ 0x8a, 0xca, 0x0f, 0x1a, 0xde, 0xe0, 0x85, 0x21, 0x01, 0xe5, 0x47, 0x22,
+ 0x9f, 0xc1, 0xb8, 0x42, 0xfc, 0xe6, 0x62, 0xe9, 0x3e, 0x8e, 0x30, 0x76,
+ 0x6e, 0x6b, 0x31, 0x85, 0x7f, 0x1e, 0x0d, 0x39, 0xb2, 0x08, 0x69, 0xa8,
+ 0x63, 0xcb, 0x1b, 0xc4, 0x24, 0x5c, 0xff, 0x25, 0x51, 0x95, 0x70, 0x73,
+ 0x36, 0xca, 0xb5, 0xcd, 0xc2, 0xa8, 0x49, 0x32, 0x08, 0xd0, 0x72, 0xc4,
+ 0x4a, 0x0d, 0x55, 0x84, 0x43, 0x52, 0x24, 0x82, 0x63, 0xe2, 0x0b, 0x29,
+ 0x29, 0x5a, 0x2c, 0x54, 0xec, 0x58, 0xcc, 0x60, 0xb1, 0xcc, 0x5d, 0xda,
+ 0xe2, 0x6a, 0x02, 0x9f, 0xe0, 0xed, 0x01, 0x4e, 0x1a, 0xb2, 0xca, 0xd5,
+ 0x83, 0xf2, 0x87, 0x10, 0x89, 0x44, 0x7a, 0x8a, 0x54, 0x0a, 0x29, 0x2e,
+ 0xe0, 0x42, 0x64, 0x24, 0x77, 0xd0, 0x65, 0xfc, 0x32, 0xec, 0x74, 0xc8,
+ 0x33, 0x04, 0xc8, 0x36, 0x39, 0xe4, 0x78, 0x97, 0x0e, 0x3d, 0xc7, 0xf2,
+ 0x43, 0x31, 0xc7, 0x5c, 0x21, 0x38, 0xc5, 0x1b, 0xa1, 0x4a, 0x63, 0x6a,
+ 0x8e, 0x06, 0x8b, 0x7c, 0x71, 0xa5, 0x77, 0x3b, 0x04, 0x48, 0x1e, 0x91,
+ 0x9a, 0xf3, 0xad, 0x92, 0x88, 0x7d, 0xe4, 0xea, 0x0a, 0xbc, 0xf1, 0x41,
+ 0xde, 0x7d, 0x31, 0x1e, 0x89, 0x3e, 0xd6, 0x21, 0x40, 0x62, 0x34, 0x89,
+ 0x7f, 0xa8, 0x1f, 0xfc, 0xbe, 0xf7, 0xf9, 0xb6, 0x85, 0xf9, 0xb2, 0xbd,
+ 0x2e, 0x7c, 0x06, 0xa8, 0x8d, 0x1d, 0x6a, 0x04, 0x40, 0x03, 0x8b, 0xda,
+ 0x3d, 0xda, 0xae, 0x06, 0xf2, 0x62, 0xf8, 0x74, 0xb3, 0x41, 0x2f, 0xf5,
+ 0x74, 0xe6, 0x40, 0x35, 0x4d, 0x30, 0x49, 0xde, 0x5d, 0x1c, 0xbf, 0x4d,
+ 0x22, 0x7b, 0x80, 0xf8, 0x10, 0xf1, 0x5d, 0xf3, 0xab, 0xc8, 0xce, 0x89,
+ 0x38, 0x6c, 0x0e, 0x23, 0x27, 0xf1, 0x31, 0xbf, 0x9a, 0x4b, 0xe5, 0x85,
+ 0xb7, 0xf9, 0xb8, 0x2c, 0xaa, 0xe2, 0x52, 0x3c, 0x99, 0x76, 0xc1, 0xd0,
+ 0x17, 0x47, 0x47, 0xe7, 0xc9, 0x5d, 0x36, 0xb2, 0x3c, 0xab, 0x28, 0xaa,
+ 0x50, 0x52, 0x17, 0x41, 0x82, 0x8b, 0x32, 0xcf, 0x6a, 0x16, 0x34, 0xcc,
+ 0xa4, 0xc7, 0xb9, 0xd7, 0xfc, 0x52, 0x36, 0xc8, 0xe6, 0xa4, 0x70, 0x66,
+ 0x50, 0xdf, 0xb8, 0xcc, 0xc3, 0x14, 0x5c, 0x69, 0x91, 0x15, 0x1d, 0x46,
+ 0x5d, 0x19, 0x80, 0xb1, 0x14, 0x59, 0x1b, 0xdc, 0x15, 0xa3, 0xb4, 0x72,
+ 0xb8, 0x53, 0x79, 0xc9, 0x14, 0xc7, 0xc2, 0x86, 0x5a, 0x62, 0x6e, 0x72,
+ 0x24, 0xf8, 0x47, 0x89, 0xef, 0x5a, 0x03, 0xd4, 0xb1, 0x43, 0x33, 0x48,
+ 0xcc, 0x27, 0x45, 0x09, 0x0f, 0x49, 0x80, 0x65, 0xcd, 0xb5, 0x14, 0x96,
+ 0x88, 0xfb, 0xe4, 0xe1, 0xdd, 0x77, 0x48, 0xec, 0xd7, 0x85, 0x84, 0x5d,
+ 0x62, 0x99, 0x99, 0x2b, 0x49, 0x4a, 0x20, 0xe2, 0xb3, 0x14, 0x97, 0x56,
+ 0x8b, 0x4e, 0x19, 0x2b, 0x79, 0x4c, 0xc2, 0xb3, 0xfd, 0xf0, 0x89, 0x49,
+ 0x6a, 0x68, 0x7f, 0x9d, 0x5f, 0xad, 0xa8, 0x4f, 0x20, 0x5a, 0x54, 0x5b,
+ 0xcc, 0xe4, 0x11, 0x29, 0xbf, 0x2c, 0x55, 0xb8, 0x6c, 0x17, 0xc2, 0xe9,
+ 0x00, 0x02, 0x69, 0x48, 0x96, 0x44, 0x6d, 0x0f, 0xd6, 0x3a, 0x7e, 0x58,
+ 0xa4, 0xc4, 0x05, 0xa2, 0x69, 0xa3, 0x5a, 0x6a, 0x89, 0x04, 0xc7, 0xc8,
+ 0x30, 0x1a, 0xe7, 0x87, 0x4a, 0x9c, 0x3a, 0x94, 0x38, 0x13, 0x20, 0x79,
+ 0x36, 0xc3, 0x7f, 0x46, 0x55, 0x3f, 0x7f, 0xd8, 0x0a, 0x16, 0x22, 0xd5,
+ 0x28, 0xd0, 0x99, 0x08, 0xf0, 0xbd, 0x20, 0x2a, 0xa9, 0xd9, 0xa0, 0xd0,
+ 0x87, 0xc2, 0xec, 0xbb, 0xaa, 0x9e, 0x14, 0x8c, 0x6a, 0xab, 0x8a, 0x00,
+ 0x5f, 0xe1, 0x72, 0x7b, 0xff, 0xc7, 0xdf, 0xe3, 0x54, 0xa4, 0x1f, 0x7f,
+ 0x16, 0x49, 0x5a, 0xb0, 0x33, 0x3c, 0x90, 0x84, 0x91, 0x4e, 0xe5, 0xeb,
+ 0xae, 0xf0, 0x26, 0x31, 0x48, 0x94, 0x01, 0x66, 0xe3, 0x0a, 0x6f, 0x5b,
+ 0x28, 0xc4, 0x7b, 0xa8, 0x57, 0xaf, 0x8e, 0xcd, 0xf8, 0x3e, 0x70, 0x86,
+ 0xd3, 0xc0, 0x88, 0xe6, 0x21, 0xbc, 0x15, 0x43, 0x7a, 0xb2, 0x0a, 0x05,
+ 0xde, 0x90, 0x66, 0x9a, 0x15, 0x7f, 0x80, 0xf1, 0x21, 0x3e, 0x1f, 0x8c,
+ 0x9f, 0x6f, 0x96, 0x63, 0xa9, 0xa5, 0x19, 0x23, 0xa9, 0xca, 0xde, 0xaa,
+ 0x6b, 0xe3, 0x3f, 0x68, 0x2f, 0xfa, 0xf5, 0x5d, 0xf1, 0xf7, 0x21, 0xc7,
+ 0x33, 0x82, 0xf1, 0x0e, 0x0a, 0x29, 0x74, 0xfe, 0xe1, 0x77, 0x3b, 0x1c,
+ 0x3d, 0xb4, 0x1e, 0x17, 0x30, 0xc7, 0x0a, 0xd8, 0x16, 0x3b, 0x00, 0x9e,
+ 0x15, 0xc0, 0xad, 0xcd, 0xee, 0xb8, 0x97, 0x3e, 0x5f, 0x01, 0x7f, 0x1f,
+ 0xf2, 0xbf, 0x3f, 0xee, 0x0c, 0x9e, 0xfd, 0xec, 0x7a, 0xfd, 0xdd, 0xce,
+ 0x87, 0xdf, 0xed, 0xae, 0x77, 0x45, 0x87, 0x59, 0x4e, 0x60, 0x33, 0x98,
+ 0xaf, 0x42, 0x09, 0x59, 0x8d, 0x9e, 0x55, 0x6d, 0xd3, 0x57, 0xad, 0x40,
+ 0x59, 0x9c, 0x38, 0xe3, 0x83, 0xad, 0x50, 0x8f, 0x00, 0xd1, 0x87, 0x95,
+ 0x94, 0x03, 0xad, 0x45, 0x0b, 0x0b, 0x6b, 0xe4, 0xd6, 0x58, 0x60, 0xb6,
+ 0x61, 0xce, 0x8c, 0x30, 0x9d, 0x01, 0x8f, 0x30, 0xb9, 0xa7, 0x7b, 0x4e,
+ 0x40, 0x56, 0x87, 0x2e, 0x72, 0xc6, 0xa4, 0x47, 0x25, 0x5c, 0x85, 0xe7,
+ 0xda, 0x70, 0x37, 0x3e, 0x83, 0xc9, 0x6d, 0x76, 0x59, 0x26, 0xbc, 0x49,
+ 0xc8, 0xd3, 0xbc, 0x96, 0xbd, 0xc5, 0xe1, 0x15, 0x62, 0xf7, 0x07, 0xa8,
+ 0x0d, 0x74, 0xfa, 0xc8, 0xf1, 0x49, 0x43, 0xbf, 0x94, 0x94, 0x8c, 0x42,
+ 0xc2, 0x44, 0x00, 0xff, 0x8d, 0xaf, 0xee, 0x32, 0x48, 0xaf, 0xed, 0x7b,
+ 0x67, 0xe3, 0xc4, 0xe9, 0x3a, 0x78, 0x2c, 0x2c, 0x31, 0x10, 0xbe, 0x1e,
+ 0x78, 0xc2, 0xb3, 0xc4, 0xea, 0xd2, 0x8f, 0x97, 0x75, 0x8c, 0x41, 0x32,
+ 0xdc, 0xec, 0x4a, 0x0f, 0x08, 0xdb, 0x32, 0xbc, 0x33, 0x8d, 0xe3, 0x4e,
+ 0x2a, 0x29, 0x67, 0x24, 0xfa, 0xa0, 0xc0, 0xac, 0x32, 0x2f, 0x92, 0x80,
+ 0xd3, 0x58, 0x36, 0x71, 0xf5, 0x8a, 0xfb, 0x0e, 0xde, 0x39, 0x9b, 0x56,
+ 0x31, 0x6d, 0x1c, 0xb0, 0x9b, 0x87, 0x61, 0xec, 0x6a, 0x24, 0x8d, 0xf7,
+ 0xc3, 0xea, 0xb5, 0x2e, 0x27, 0x31, 0xbd, 0xf5, 0xfe, 0x1b, 0x3b, 0xa3,
+ 0x1a, 0x20, 0xbf, 0xd2, 0x02, 0xde, 0xb4, 0x50, 0x38, 0xac, 0xe7, 0xd4,
+ 0x95, 0x12, 0xf3, 0x29, 0x85, 0x41, 0xf2, 0x7b, 0x57, 0x1e, 0x2b, 0x2a,
+ 0x4c, 0x80, 0x3d, 0x49, 0xca, 0x57, 0x6b, 0x04, 0x81, 0x0f, 0x45, 0xa1,
+ 0x67, 0xf8, 0x59, 0xc1, 0x22, 0xeb, 0xf2, 0x26, 0x3a, 0x6e, 0x13, 0xa3,
+ 0xe5, 0x5e, 0x4e, 0xd3, 0xab, 0x7f, 0xe9, 0x04, 0xa8, 0x55, 0xc0, 0x28,
+ 0xe6, 0x44, 0x80, 0xa6, 0x95, 0xe8, 0xdc, 0x79, 0x16, 0x7a, 0x3e, 0x14,
+ 0xbb, 0x84, 0xe6, 0x9d, 0x4b, 0x1d, 0x98, 0xdf, 0xef, 0x6e, 0xc7, 0xac,
+ 0x58, 0x13, 0xe9, 0x80, 0xdf, 0x66, 0x95, 0xa0, 0x98, 0x9e, 0x2a, 0x23,
+ 0x28, 0x91, 0x28, 0x7d, 0xc9, 0x89, 0x0c, 0x09, 0x43, 0x74, 0x96, 0x06,
+ 0xc0, 0xbe, 0x58, 0x05, 0x50, 0xdb, 0x19, 0x77, 0xfa, 0x6b, 0x19, 0xcb,
+ 0xa3, 0x9c, 0x85, 0x6e, 0x2f, 0xbe, 0xf0, 0x77, 0x07, 0xa3, 0x8c, 0x6e,
+ 0x9e, 0xf6, 0x1c, 0x37, 0x7c, 0x54, 0x69, 0x3f, 0x69, 0x86, 0x4f, 0x71,
+ 0x67, 0x5f, 0xe1, 0x9d, 0xe4, 0x02, 0x3a, 0x1d, 0xd3, 0xf6, 0x09, 0x57,
+ 0x95, 0x4f, 0x76, 0x87, 0xdb, 0x2a, 0xf8, 0x3d, 0x98, 0xf9, 0x2a, 0xee,
+ 0x9a, 0x46, 0x1b, 0xbe, 0x1e, 0x29, 0xcb, 0xeb, 0x7f, 0x59, 0xce, 0x9b,
+ 0x80, 0xfc, 0x5d, 0x1e, 0x2e, 0x55, 0xc3, 0x4c, 0xca, 0xd7, 0x02, 0x08,
+ 0x8d, 0x00, 0xa5, 0xf0, 0x94, 0x2b, 0x5c, 0x5f, 0xc9, 0xf6, 0x9f, 0x48,
+ 0xca, 0x40, 0x83, 0xab, 0xaa, 0x77, 0x44, 0x83, 0x55, 0x70, 0x10, 0xb3,
+ 0xdf, 0x94, 0x99, 0xfa, 0xc8, 0x44, 0x7e, 0x73, 0x35, 0xc1, 0x70, 0x5f,
+ 0x9f, 0xbd, 0x39, 0x68, 0x35, 0xf7, 0xfc, 0xb3, 0x67, 0xdb, 0xbf, 0x65,
+ 0x28, 0x4a, 0xa3, 0x9a, 0xc8, 0xc3, 0xd5, 0x9a, 0x7e, 0x55, 0xb9, 0xa6,
+ 0xee, 0x6a, 0x4d, 0x56, 0x82, 0xe4, 0x97, 0x95, 0x6a, 0x52, 0xaf, 0x68,
+ 0x57, 0xc4, 0x6c, 0x98, 0xa1, 0xe8, 0x43, 0x7d, 0xc2, 0x4a, 0x54, 0xac,
+ 0x36, 0xe5, 0x95, 0xc6, 0xf3, 0xb3, 0x00, 0xcb, 0xc1, 0x5e, 0xcb, 0x79,
+ 0x87, 0x7b, 0x55, 0x6c, 0xe0, 0x7c, 0x03, 0x58, 0x05, 0xef, 0x83, 0x93,
+ 0x77, 0xef, 0x0e, 0x0f, 0x2e, 0x7c, 0xe5, 0x91, 0x3b, 0xab, 0x6e, 0x27,
+ 0xec, 0x4e, 0x8a, 0x4f, 0x89, 0x4a, 0xdd, 0x5d, 0xad, 0x49, 0x62, 0x58,
+ 0x2d, 0x35, 0x5b, 0x47, 0x80, 0x7c, 0x0b, 0x89, 0xcf, 0x0d, 0x80, 0x2b,
+ 0x2c, 0x6c, 0x5f, 0x18, 0x55, 0x87, 0x0a, 0xda, 0x5d, 0xa4, 0xc7, 0xa7,
+ 0xbc, 0x83, 0x7f, 0x46, 0x05, 0x7a, 0x34, 0x3d, 0x2b, 0x28, 0xd1, 0x23,
+ 0x08, 0xe8, 0xff, 0x1f, 0x2b, 0xd2, 0xf3, 0x8d, 0xab, 0xb6, 0xd2, 0x86,
+ 0xc1, 0xed, 0xaa, 0x43, 0xa3, 0x0a, 0x5d, 0x10, 0xd3, 0xb0, 0xaa, 0x16,
+ 0x8d, 0xcf, 0xc5, 0xe3, 0x88, 0xda, 0xca, 0xbb, 0xbe, 0x03, 0x54, 0x92,
+ 0x55, 0x85, 0x77, 0x56, 0xe1, 0xc2, 0x05, 0x00, 0x70, 0xc2, 0xbc, 0xa5,
+ 0xd0, 0xd9, 0x2f, 0x2f, 0xce, 0xb2, 0x3a, 0x7a, 0x82, 0xab, 0x0b, 0x39,
+ 0x01, 0x6d, 0xb0, 0xe8, 0x1b, 0x47, 0xa8, 0x39, 0xed, 0x6a, 0xda, 0x65,
+ 0x41, 0xd7, 0xf2, 0x7f, 0x4a, 0xc2, 0xc6, 0x7a, 0x36, 0x06, 0x1f, 0xdd,
+ 0xbb, 0x5d, 0x58, 0x0c, 0x88, 0x46, 0x89, 0xc2, 0x62, 0xe6, 0x03, 0x6b,
+ 0x0a, 0x1a, 0xbd, 0x4d, 0x50, 0x61, 0xe1, 0xe5, 0xb4, 0x60, 0x20, 0xbc,
+ 0x3b, 0xa5, 0xd8, 0xc4, 0x0d, 0x0c, 0xfe, 0xe3, 0x7d, 0x64, 0xec, 0x51,
+ 0x98, 0x7a, 0x22, 0xb3, 0x19, 0x5d, 0xe1, 0x53, 0x4b, 0xee, 0xce, 0x6b,
+ 0xad, 0x7a, 0x8b, 0x12, 0x1a, 0x38, 0xd3, 0x2e, 0x0d, 0x48, 0x43, 0xbc,
+ 0xa8, 0x97, 0x41, 0xe4, 0x95, 0x9d, 0x72, 0x56, 0x6a, 0x59, 0xa4, 0x92,
+ 0xd1, 0x04, 0x10, 0x75, 0x77, 0x34, 0x30, 0x6e, 0x73, 0xb3, 0x18, 0x7b,
+ 0xf0, 0xf9, 0xe8, 0x71, 0x3c, 0xab, 0x53, 0x6f, 0x5d, 0xec, 0xbb, 0xaa,
+ 0xd1, 0x82, 0x2c, 0xa0, 0x59, 0x5f, 0x6a, 0xde, 0x36, 0x4e, 0xa0, 0xf2,
+ 0x21, 0xab, 0xad, 0xdd, 0x1a, 0x99, 0x9c, 0x7c, 0x03, 0x56, 0xd1, 0xb5,
+ 0xb2, 0xa5, 0xaa, 0x8b, 0x80, 0xd1, 0x37, 0x0b, 0xbe, 0xaf, 0x8c, 0x7d,
+ 0x06, 0x60, 0xd1, 0x99, 0xd8, 0x55, 0xb4, 0xb0, 0xb9, 0x5a, 0xd4, 0xb5,
+ 0xb8, 0x6f, 0x51, 0x6e, 0x21, 0xd6, 0x6f, 0x8e, 0xc4, 0xe8, 0x02, 0x36,
+ 0x23, 0x29, 0xad, 0xd4, 0x01, 0xd3, 0x0d, 0x53, 0x3d, 0xdf, 0x6d, 0x72,
+ 0xc2, 0xa8, 0x71, 0x87, 0x1f, 0xa3, 0xc6, 0x8d, 0x99, 0x0f, 0xb5, 0x81,
+ 0xb1, 0xd1, 0x57, 0x13, 0x66, 0xbf, 0x7e, 0xdb, 0x7e, 0x83, 0x5a, 0x03,
+ 0x63, 0x03, 0x23, 0x10, 0x18, 0x55, 0x57, 0x0c, 0x41, 0x03, 0x06, 0x41,
+ 0x35, 0xb6, 0x8e, 0x80, 0x5a, 0x5e, 0x85, 0x88, 0x31, 0x9e, 0x72, 0x30,
+ 0x6f, 0xaf, 0x0a, 0xa5, 0x00, 0x8d, 0x7e, 0x86, 0x97, 0x85, 0x16, 0xca,
+ 0x92, 0x84, 0x1b, 0x35, 0x99, 0xd3, 0xea, 0xa6, 0x5a, 0x8d, 0x30, 0xe4,
+ 0xa3, 0x39, 0xe6, 0x61, 0xe5, 0x10, 0x6b, 0x51, 0xfc, 0x73, 0x79, 0xdd,
+ 0x1a, 0x27, 0xef, 0x55, 0xb3, 0x39, 0xb7, 0x45, 0x11, 0x4e, 0x58, 0xa4,
+ 0x95, 0xba, 0x32, 0x22, 0x91, 0xb6, 0x2a, 0x5f, 0x0f, 0xe9, 0xc4, 0xac,
+ 0x73, 0x85, 0x91, 0xf5, 0x66, 0xf2, 0x91, 0x66, 0xeb, 0xd9, 0xdb, 0xb4,
+ 0x12, 0xc1, 0x80, 0x63, 0x89, 0xd0, 0xae, 0x07, 0xb5, 0x0d, 0xf1, 0x7e,
+ 0x6d, 0x70, 0xd8, 0x11, 0xf8, 0x6f, 0x8c, 0x4b, 0xe8, 0x9a, 0x5a, 0x3d,
+ 0xaa, 0x75, 0xab, 0x1a, 0xb6, 0xb3, 0x3d, 0xdc, 0x59, 0x0f, 0xb1, 0x93,
+ 0x11, 0x58, 0xc1, 0xb1, 0x10, 0x61, 0x3b, 0x1d, 0x77, 0x61, 0x97, 0xd5,
+ 0x37, 0xec, 0x60, 0x76, 0x3f, 0x0c, 0xc2, 0x53, 0xa2, 0x2e, 0x34, 0x84,
+ 0xa5, 0xdd, 0xf2, 0x20, 0xd0, 0x46, 0x40, 0x6a, 0x0b, 0x0e, 0xe5, 0x71,
+ 0x28, 0x16, 0xc1, 0x2a, 0x59, 0x7e, 0x0d, 0x9d, 0x63, 0x8e, 0x37, 0xba,
+ 0xef, 0x84, 0xb2, 0x0a, 0xf2, 0x27, 0x1a, 0xb5, 0xd5, 0x9d, 0x2f, 0xeb,
+ 0x37, 0xc6, 0x74, 0x7c, 0xed, 0xfc, 0x1f, 0xce, 0xcb, 0x76, 0x7a, 0x72,
+ 0x76, 0xa1, 0xa0, 0x36, 0xc2, 0x15, 0xd2, 0xea, 0x76, 0xd8, 0x78, 0x30,
+ 0xe0, 0xc2, 0x1d, 0x66, 0x3d, 0x61, 0xc3, 0x87, 0xa7, 0xd4, 0x4a, 0x1b,
+ 0xfe, 0xc8, 0x35, 0xef, 0xd0, 0x35, 0x06, 0x03, 0x35, 0xda, 0x0f, 0xb2,
+ 0x45, 0x0c, 0xfb, 0x86, 0x46, 0x38, 0x41, 0x38, 0x83, 0x8b, 0x92, 0x5f,
+ 0xfd, 0xe3, 0x1f, 0x1f, 0x29, 0x8a, 0xb7, 0xf3, 0x62, 0xf8, 0xcc, 0x9b,
+ 0xb0, 0x04, 0x3c, 0x20, 0x59, 0xdf, 0xfb, 0x11, 0xe9, 0x32, 0x3f, 0x0f,
+ 0x7e, 0xa4, 0x3f, 0x7f, 0x5e, 0x77, 0x5c, 0x94, 0x63, 0xc8, 0x3a, 0x6a,
+ 0x1b, 0x49, 0xaa, 0x95, 0x65, 0x75, 0xe0, 0x69, 0x17, 0x6d, 0x0d, 0xb9,
+ 0x8c, 0x1d, 0x8e, 0x38, 0xb3, 0x92, 0x7a, 0x2d, 0x34, 0x2f, 0xd6, 0xae,
+ 0xc8, 0xee, 0xcd, 0xf9, 0xf8, 0x10, 0x8a, 0x5c, 0xda, 0x88, 0x7f, 0xb3,
+ 0x6f, 0x45, 0x71, 0x14, 0x65, 0x81, 0x25, 0x01, 0xcd, 0xd3, 0x17, 0x3e,
+ 0x1e, 0x95, 0x1c, 0x37, 0xfb, 0x89, 0xb2, 0x79, 0x49, 0x16, 0x25, 0x41,
+ 0x8a, 0xeb, 0x60, 0x4a, 0x68, 0x83, 0x08, 0x4d, 0x99, 0x0b, 0x3b, 0x72,
+ 0x99, 0x99, 0x9d, 0x41, 0x74, 0xd5, 0x0d, 0xcf, 0x58, 0xf3, 0xa3, 0x03,
+ 0x20, 0x37, 0x8c, 0xd1, 0x92, 0x89, 0x47, 0x01, 0xa6, 0x7d, 0x43, 0x45,
+ 0xe0, 0x32, 0x6d, 0x2f, 0x17, 0xd7, 0x25, 0x35, 0xff, 0x00, 0xb2, 0x27,
+ 0x3d, 0x25, 0xcf, 0x38, 0x42, 0x5f, 0x78, 0x88, 0xc9, 0xdf, 0x52, 0x83,
+ 0x49, 0xeb, 0xeb, 0x01, 0xb4, 0xe5, 0xb6, 0x58, 0xd5, 0x86, 0x90, 0xb9,
+ 0x4e, 0x51, 0xde, 0xc4, 0xc3, 0xf8, 0xd3, 0x9a, 0x6c, 0x0d, 0x87, 0x5b,
+ 0x2c, 0x6d, 0x6e, 0xd1, 0x0f, 0x5f, 0xd6, 0x01, 0xd6, 0x94, 0x36, 0x7c,
+ 0x33, 0x6b, 0xf0, 0xdc, 0x19, 0x52, 0xe8, 0xb5, 0x08, 0xaa, 0x17, 0xbd,
+ 0xab, 0xbf, 0x2e, 0x11, 0x6a, 0x5e, 0xb2, 0xf0, 0x21, 0x40, 0x35, 0xb3,
+ 0x46, 0xc9, 0xe7, 0xa8, 0x70, 0x9d, 0x84, 0x9e, 0x55, 0x9a, 0x4b, 0x5e,
+ 0x5f, 0x37, 0x56, 0x84, 0x33, 0x1a, 0xe0, 0x9d, 0xe4, 0x49, 0xe4, 0xb5,
+ 0x81, 0x7b, 0x00, 0x21, 0x28, 0xad, 0x1f, 0x8c, 0x88, 0x7d, 0xba, 0xdb,
+ 0x4c, 0x14, 0x51, 0xb0, 0x9a, 0x15, 0x85, 0x85, 0x70, 0x7f, 0xda, 0x2a,
+ 0x95, 0x80, 0x13, 0xac, 0x91, 0xa7, 0x99, 0xec, 0x3e, 0xdf, 0x79, 0xbe,
+ 0x45, 0x9c, 0xf9, 0xc9, 0x70, 0x37, 0x04, 0xac, 0x27, 0xb6, 0x45, 0x9b,
+ 0xd4, 0x3e, 0x01, 0x00, 0x34, 0xf2, 0xe2, 0x30, 0xdf, 0x2a, 0x45, 0x58,
+ 0x14, 0x5a, 0x75, 0x26, 0x9f, 0xf7, 0x91, 0x32, 0x44, 0x91, 0x4b, 0xd7,
+ 0x88, 0xd2, 0x6c, 0x4c, 0xef, 0x67, 0x21, 0x91, 0x47, 0xa3, 0xce, 0x96,
+ 0xa5, 0x54, 0x7c, 0x1f, 0xe5, 0x24, 0x4d, 0xd5, 0xc5, 0x52, 0x81, 0xf8,
+ 0xd8, 0x85, 0xe4, 0x6a, 0x35, 0x71, 0xb2, 0x4d, 0xd1, 0x59, 0xc6, 0x14,
+ 0x78, 0x36, 0xae, 0x6e, 0x87, 0x0b, 0x39, 0x09, 0xc2, 0x06, 0x90, 0x19,
+ 0x92, 0x4b, 0xcd, 0x09, 0x54, 0xb0, 0x61, 0x49, 0x67, 0x7c, 0xdf, 0x3e,
+ 0x9f, 0xdf, 0xd0, 0x39, 0xbe, 0x65, 0x35, 0x28, 0xb5, 0x5b, 0x5f, 0x72,
+ 0xf7, 0xc5, 0xed, 0x9c, 0xca, 0x62, 0x78, 0xd0, 0x64, 0xfd, 0x40, 0x32,
+ 0x0f, 0xba, 0x0a, 0xb5, 0x36, 0x92, 0x60, 0x86, 0xed, 0x60, 0x1b, 0x81,
+ 0x56, 0x61, 0xd4, 0x61, 0x4e, 0x48, 0x17, 0xf7, 0xaa, 0x04, 0xee, 0x80,
+ 0xb9, 0x3e, 0x94, 0xaa, 0xf3, 0x50, 0xb1, 0x41, 0x05, 0x2e, 0xfa, 0x1f,
+ 0x48, 0x16, 0xbb, 0xff, 0x3f, 0x59, 0xfc, 0x13, 0xc9, 0xe2, 0x45, 0x17,
+ 0x59, 0x3c, 0xf9, 0x1f, 0x48, 0x16, 0x4f, 0xfe, 0x7f, 0xb2, 0xf8, 0xe7,
+ 0x91, 0xc5, 0xee, 0xf3, 0xd6, 0x25, 0xc2, 0x3a, 0x3a, 0x49, 0x01, 0xa6,
+ 0xaa, 0x7f, 0xd1, 0x71, 0xd9, 0x56, 0xb6, 0x74, 0x2e, 0x7f, 0x46, 0xbc,
+ 0x4b, 0x92, 0x1b, 0x16, 0xaa, 0xf9, 0xaa, 0x04, 0x55, 0x1e, 0x97, 0x30,
+ 0xb6, 0xf2, 0x30, 0xba, 0x69, 0x3a, 0x1d, 0x26, 0xa7, 0xee, 0x35, 0xa4,
+ 0x8c, 0x71, 0xf6, 0x34, 0x22, 0x57, 0xa6, 0xd9, 0x25, 0xb6, 0x00, 0xe2,
+ 0x5d, 0x1f, 0x5f, 0x42, 0x12, 0x65, 0x4b, 0x5c, 0x14, 0xf7, 0x8f, 0x60,
+ 0x17, 0x09, 0x26, 0x41, 0x2b, 0xac, 0xd4, 0xa7, 0x3e, 0x3b, 0xc8, 0x52,
+ 0x52, 0x7b, 0x74, 0xa9, 0xf7, 0xfa, 0x49, 0x58, 0xf4, 0x89, 0x53, 0x19,
+ 0xe3, 0xf2, 0x53, 0x1f, 0xc5, 0x51, 0xfa, 0xb7, 0xac, 0x2c, 0x12, 0x83,
+ 0x49, 0x50, 0x68, 0x3b, 0xd4, 0x69, 0x33, 0x39, 0xca, 0x7f, 0xc8, 0xfd,
+ 0x46, 0x9a, 0xdb, 0x1f, 0x51, 0xbe, 0x52, 0xd0, 0x0c, 0x19, 0x35, 0xc5,
+ 0x65, 0x2b, 0xcd, 0x59, 0x30, 0xcd, 0xcd, 0x90, 0xe9, 0x57, 0xce, 0xd4,
+ 0x0c, 0x64, 0x44, 0x44, 0xe7, 0x80, 0xad, 0xa1, 0x6c, 0x8c, 0x09, 0xa3,
+ 0x91, 0x9c, 0xfe, 0x7e, 0x29, 0x78, 0x4e, 0x32, 0x1c, 0x57, 0x9d, 0x65,
+ 0xd8, 0xa1, 0xfb, 0xbc, 0xce, 0xd8, 0x5d, 0x10, 0x0e, 0xa8, 0x0f, 0x53,
+ 0xc4, 0xad, 0x5a, 0x53, 0x5c, 0xd8, 0xa1, 0x0f, 0x1e, 0xf2, 0x43, 0x8c,
+ 0x87, 0xd4, 0x1c, 0x73, 0xdd, 0x11, 0x81, 0xf8, 0xca, 0x2d, 0x83, 0x39,
+ 0xd7, 0xc3, 0xc5, 0xd8, 0x40, 0x76, 0x93, 0xb9, 0x1a, 0xd1, 0xe5, 0xa7,
+ 0x2c, 0x03, 0xcc, 0x50, 0x30, 0x84, 0x54, 0xcb, 0xd1, 0x5f, 0x54, 0xcb,
+ 0xa6, 0x21, 0xa7, 0x00, 0x03, 0x6c, 0x94, 0x1d, 0x95, 0x22, 0x3c, 0xcb,
+ 0x91, 0x7a, 0xc6, 0xe2, 0xe6, 0xe8, 0x43, 0x78, 0x41, 0x5d, 0x21, 0x20,
+ 0xa5, 0x33, 0x0d, 0xa2, 0xe2, 0x31, 0x45, 0x93, 0x0a, 0x22, 0x81, 0xa2,
+ 0x7d, 0xb7, 0xf3, 0xc4, 0xba, 0x57, 0xa5, 0xa5, 0x6e, 0xc2, 0xcd, 0x72,
+ 0xab, 0xa9, 0xc2, 0xbe, 0xc5, 0x3c, 0xf1, 0xe3, 0x2b, 0xdb, 0x22, 0x72,
+ 0xed, 0xb3, 0x67, 0xba, 0xea, 0xff, 0x91, 0x7f, 0x74, 0x2b, 0xa1, 0x0d,
+ 0x2c, 0x69, 0x0b, 0x90, 0xe4, 0xc7, 0x71, 0x36, 0xf0, 0xfa, 0xaa, 0x0e,
+ 0x5e, 0xf1, 0xb7, 0xd2, 0xc3, 0xc3, 0x6d, 0xc3, 0xf7, 0xfc, 0x0b, 0x3a,
+ 0x78, 0x3f, 0x17, 0x14, 0x82, 0x90, 0x43, 0x2c, 0x14, 0xd7, 0x88, 0xd9,
+ 0xdd, 0x5d, 0x5a, 0xce, 0x25, 0xbe, 0x11, 0xac, 0x4e, 0x4d, 0x66, 0x9c,
+ 0x51, 0xb6, 0x80, 0xe1, 0x2b, 0x82, 0x0e, 0xbe, 0x64, 0xe3, 0x1f, 0x2c,
+ 0x80, 0xc5, 0xdc, 0xb2, 0x47, 0x15, 0xa6, 0xd4, 0x62, 0x01, 0x17, 0x45,
+ 0x6d, 0x3e, 0xd0, 0x64, 0xc2, 0x4a, 0x5a, 0x89, 0xfb, 0xa1, 0x03, 0xdf,
+ 0xde, 0x36, 0xc2, 0x17, 0x74, 0xe3, 0x96, 0x61, 0xd6, 0x5a, 0x2e, 0x50,
+ 0x41, 0x43, 0xe1, 0x53, 0x44, 0xed, 0x49, 0xfd, 0xee, 0x49, 0xd7, 0xed,
+ 0xa8, 0x21, 0x04, 0xb5, 0xe0, 0xc2, 0x73, 0x70, 0xab, 0xb7, 0x45, 0x0e,
+ 0x34, 0x61, 0xe4, 0xc3, 0x0e, 0x7f, 0x5d, 0xd9, 0x90, 0x7e, 0x50, 0x0d,
+ 0x30, 0xad, 0xc2, 0xd4, 0x94, 0x38, 0x64, 0xcf, 0x9b, 0x32, 0x52, 0xc1,
+ 0x53, 0x20, 0x2a, 0x9e, 0xa7, 0xb5, 0x1d, 0x31, 0xbf, 0x0d, 0x18, 0xa6,
+ 0xd4, 0xbe, 0x61, 0x7d, 0x65, 0x9c, 0xc5, 0x51, 0x50, 0xbe, 0x40, 0xc4,
+ 0x63, 0xe8, 0x1c, 0xbb, 0xd1, 0x7d, 0x22, 0xf9, 0xeb, 0x8f, 0xde, 0x2a,
+ 0x21, 0xe2, 0xa2, 0xb1, 0x80, 0x6c, 0x12, 0x52, 0x8b, 0x47, 0xf8, 0xb4,
+ 0xab, 0x51, 0xd0, 0x87, 0x56, 0x50, 0xf2, 0x25, 0xea, 0xf8, 0xde, 0x85,
+ 0x7c, 0xb5, 0x64, 0x6b, 0xab, 0xe2, 0xe6, 0x74, 0x70, 0xa8, 0x47, 0xa6,
+ 0xf2, 0xf1, 0x7e, 0x90, 0xce, 0xef, 0xd9, 0x6f, 0xf9, 0xc0, 0xb5, 0xc8,
+ 0x8c, 0x9c, 0xed, 0x48, 0x8c, 0xda, 0x92, 0x4b, 0xb9, 0xa0, 0x56, 0xb4,
+ 0xb8, 0x85, 0xcf, 0x29, 0x68, 0xf5, 0x6c, 0x19, 0x19, 0x54, 0xf1, 0x24,
+ 0x6d, 0x93, 0xb9, 0x2c, 0x3c, 0xc4, 0xa0, 0x3a, 0xd4, 0xac, 0x2a, 0x27,
+ 0xf2, 0xe6, 0x14, 0x42, 0x0d, 0xc0, 0x0e, 0xf0, 0xa5, 0x75, 0x7b, 0x2f,
+ 0xb6, 0x5c, 0xfa, 0x67, 0xc9, 0x85, 0xb6, 0x06, 0xc4, 0xeb, 0x16, 0x2d,
+ 0x0c, 0xb5, 0x27, 0x5d, 0x53, 0x46, 0xd5, 0xdd, 0x47, 0xe4, 0x00, 0xee,
+ 0x7f, 0x25, 0xe6, 0x57, 0x30, 0x53, 0x9b, 0xd9, 0x2a, 0x5f, 0x94, 0xcc,
+ 0x52, 0x27, 0xf9, 0x5e, 0x52, 0x8c, 0xd0, 0x22, 0x50, 0x75, 0x99, 0xcd,
+ 0x98, 0xb7, 0x51, 0x7b, 0x12, 0x44, 0xe9, 0x68, 0xc2, 0x30, 0xa8, 0x1b,
+ 0x06, 0xb2, 0x3c, 0xe9, 0x4e, 0x84, 0x71, 0xdf, 0xee, 0x5d, 0xe9, 0x28,
+ 0x31, 0x00, 0xbe, 0x8d, 0x8e, 0x78, 0x60, 0x79, 0x33, 0x15, 0x44, 0xd6,
+ 0x68, 0x82, 0x48, 0xbb, 0x47, 0xc9, 0x1a, 0x03, 0x97, 0xa8, 0xbc, 0xce,
+ 0x35, 0xfa, 0xd5, 0x8b, 0x24, 0xfd, 0x77, 0xac, 0x92, 0x76, 0xd6, 0x89,
+ 0x2c, 0xac, 0xcb, 0xd4, 0x74, 0x36, 0x46, 0x39, 0x22, 0x9f, 0x36, 0x29,
+ 0x9f, 0xa2, 0xe2, 0x73, 0x54, 0x22, 0x80, 0xa3, 0xbb, 0x8e, 0x2a, 0x62,
+ 0xe1, 0x84, 0x1f, 0x9c, 0xa2, 0x1b, 0x50, 0x63, 0x96, 0x6d, 0x21, 0xbc,
+ 0x39, 0x16, 0x37, 0x14, 0x05, 0x1e, 0x0f, 0x67, 0xfc, 0xb0, 0xd6, 0xec,
+ 0xa2, 0x19, 0x3f, 0x71, 0xfa, 0x1d, 0xf1, 0xb4, 0xc9, 0x7f, 0x73, 0x4f,
+ 0x11, 0xb9, 0xdb, 0xd8, 0x51, 0xf4, 0xd2, 0x98, 0xca, 0x83, 0x7e, 0x63,
+ 0x9b, 0x06, 0xab, 0x23, 0xf9, 0x58, 0x83, 0x61, 0x5e, 0xea, 0x5f, 0x5d,
+ 0x35, 0xd6, 0xc3, 0x2b, 0x28, 0x6d, 0xd4, 0xea, 0xd1, 0x18, 0x1d, 0x61,
+ 0x45, 0xda, 0x82, 0x05, 0x5b, 0xf8, 0x54, 0xa4, 0xc8, 0x2f, 0x24, 0xfb,
+ 0xd0, 0x75, 0x69, 0x78, 0x80, 0xd5, 0x0e, 0x92, 0x4b, 0xb4, 0x3d, 0x19,
+ 0x71, 0xe7, 0x3c, 0xda, 0xc2, 0x40, 0x31, 0xbe, 0x99, 0x28, 0x8c, 0x2d,
+ 0x02, 0xfd, 0xf8, 0xef, 0x2d, 0xdf, 0x48, 0x2b, 0x4a, 0xfa, 0xe9, 0x93,
+ 0x06, 0xa0, 0x98, 0x76, 0xb0, 0x33, 0xdc, 0xc6, 0x25, 0xf5, 0xf1, 0x1e,
+ 0x61, 0x7e, 0x7b, 0x7c, 0xdd, 0xff, 0xdc, 0x5e, 0xa3, 0xf7, 0x7a, 0x3b,
+ 0x79, 0x6f, 0x12, 0x08, 0x80, 0xdf, 0xd5, 0xdd, 0x73, 0xb5, 0x59, 0x43,
+ 0xd8, 0x4d, 0x57, 0x9c, 0x65, 0x75, 0x1d, 0x1c, 0x20, 0x9e, 0x58, 0x19,
+ 0x1c, 0x46, 0x1f, 0xc0, 0xfb, 0x3b, 0xdb, 0x9f, 0x6f, 0x77, 0x83, 0xce,
+ 0x42, 0xf4, 0xb2, 0x70, 0xab, 0x71, 0x16, 0x54, 0x64, 0xcd, 0x7d, 0x39,
+ 0xae, 0xc0, 0x89, 0xab, 0x1b, 0xcb, 0x3e, 0xdc, 0xae, 0x0b, 0x13, 0x1e,
+ 0xdd, 0x5c, 0x7d, 0x1d, 0xea, 0x16, 0x70, 0xd0, 0x78, 0xe6, 0xfb, 0x74,
+ 0x4e, 0x47, 0xe7, 0xd9, 0xec, 0x48, 0xe6, 0xf7, 0x51, 0x1e, 0x8d, 0xb5,
+ 0x31, 0x9d, 0xc7, 0xb9, 0x0f, 0x42, 0x66, 0xac, 0x0f, 0xee, 0x34, 0x36,
+ 0x65, 0x39, 0x7a, 0xa0, 0xd4, 0xd4, 0x37, 0xc4, 0x60, 0x4e, 0x25, 0x5e,
+ 0x5a, 0x8a, 0x11, 0x7d, 0x62, 0xa1, 0x29, 0xbc, 0x12, 0x55, 0x23, 0x5b,
+ 0x55, 0x65, 0xea, 0x37, 0xf6, 0xd9, 0x6c, 0xec, 0xc3, 0x3c, 0xfd, 0xd9,
+ 0xf0, 0xc9, 0x0b, 0xc6, 0x37, 0x90, 0x6a, 0xd1, 0xc1, 0xda, 0x13, 0x47,
+ 0x29, 0x18, 0x91, 0x4f, 0xd0, 0x00, 0x34, 0x40, 0x50, 0x56, 0x7f, 0xd5,
+ 0x3c, 0xbc, 0xde, 0xb6, 0x68, 0xd5, 0x7e, 0x42, 0xc5, 0x0a, 0xf8, 0x38,
+ 0x9b, 0xb9, 0x71, 0x3c, 0x8b, 0x2b, 0x76, 0xf5, 0x0e, 0xe2, 0x74, 0x22,
+ 0xf1, 0x19, 0xa8, 0x15, 0x63, 0x32, 0x6c, 0xe7, 0xc2, 0x68, 0xc0, 0x3a,
+ 0xf7, 0x60, 0x45, 0xe2, 0x83, 0x20, 0xef, 0x08, 0xe3, 0x7a, 0xe4, 0x0d,
+ 0x07, 0x23, 0x54, 0xa5, 0xe5, 0xf2, 0x9d, 0x86, 0xe5, 0xc0, 0x15, 0xe9,
+ 0x16, 0xf7, 0x80, 0xbe, 0xcd, 0x47, 0x55, 0x75, 0xbd, 0x4b, 0xf4, 0xb0,
+ 0x3b, 0xfc, 0x9c, 0x15, 0x6f, 0x71, 0xa3, 0xac, 0x00, 0xbd, 0x53, 0xa8,
+ 0x96, 0x56, 0x6b, 0x27, 0x8b, 0x6c, 0x7e, 0x7e, 0x7e, 0x1c, 0x22, 0x41,
+ 0xfc, 0xd5, 0x76, 0xd0, 0x2a, 0x2a, 0xfb, 0xe8, 0x6e, 0x5f, 0x69, 0xb8,
+ 0x08, 0x74, 0x3f, 0x2d, 0x73, 0x6d, 0xd1, 0x93, 0x52, 0xa8, 0x31, 0xba,
+ 0xc0, 0x82, 0x92, 0xa6, 0x61, 0x38, 0x08, 0xca, 0x7f, 0x6b, 0x54, 0x98,
+ 0xd6, 0x46, 0x40, 0xc8, 0x59, 0x58, 0xe8, 0x36, 0x46, 0xf2, 0x6d, 0x41,
+ 0x2f, 0x34, 0xeb, 0xa0, 0x6a, 0xb0, 0x65, 0x96, 0x96, 0x24, 0xfe, 0xc3,
+ 0x47, 0xe1, 0x27, 0xf7, 0xbf, 0xb8, 0x59, 0x54, 0x39, 0xf6, 0xb5, 0x4e,
+ 0x3a, 0xdc, 0xfe, 0x5b, 0xe7, 0xf0, 0xfd, 0x9f, 0x6b, 0x61, 0x93, 0xb4,
+ 0x1c, 0xe5, 0x75, 0x99, 0x6a, 0x15, 0x26, 0xad, 0x0c, 0x13, 0xc4, 0x24,
+ 0x30, 0x06, 0x01, 0xb2, 0x60, 0xf8, 0xb5, 0x4e, 0x4f, 0x38, 0x71, 0xd6,
+ 0xff, 0x85, 0x5e, 0xb5, 0x01, 0x11, 0xb2, 0x11, 0x0b, 0xf3, 0xd5, 0xe1,
+ 0x9b, 0x93, 0xb3, 0xc3, 0x26, 0x02, 0x9e, 0x54, 0xa0, 0x40, 0x58, 0x4b,
+ 0x7b, 0x74, 0x7f, 0x41, 0x72, 0xa6, 0xc3, 0xed, 0xb1, 0x4a, 0x16, 0xa7,
+ 0xdf, 0xbf, 0x0e, 0x7c, 0x8f, 0x56, 0xaf, 0x28, 0x40, 0x56, 0x53, 0x72,
+ 0x8a, 0x52, 0x93, 0x89, 0x18, 0x37, 0x3d, 0xfc, 0xb9, 0x1b, 0x9e, 0x80,
+ 0x4e, 0x23, 0x34, 0x4a, 0x3a, 0x4b, 0x25, 0x31, 0xac, 0xaa, 0xd8, 0x92,
+ 0xe6, 0x9a, 0x8d, 0x82, 0x12, 0x32, 0x86, 0x34, 0x87, 0xbb, 0x47, 0x6f,
+ 0x60, 0x8e, 0x7a, 0xe6, 0x40, 0xe8, 0x61, 0xe2, 0x3a, 0xf1, 0xbd, 0x20,
+ 0x30, 0x5e, 0xa2, 0xc1, 0xd0, 0x4b, 0x97, 0xed, 0x91, 0x83, 0x49, 0xe5,
+ 0x62, 0x15, 0x5e, 0x1d, 0x45, 0xbe, 0xf6, 0x93, 0xbf, 0x48, 0xdd, 0xeb,
+ 0x4b, 0xc1, 0xe7, 0xf6, 0xeb, 0xd8, 0x21, 0x45, 0x51, 0xb7, 0x1b, 0x15,
+ 0xb1, 0x70, 0x3f, 0x52, 0xb7, 0x6c, 0x3a, 0xe0, 0xde, 0x1f, 0x7b, 0x89,
+ 0x5a, 0x8d, 0x70, 0x1b, 0x49, 0xaa, 0xe7, 0x8a, 0xb4, 0x5d, 0x44, 0x21,
+ 0x0b, 0xf0, 0xc8, 0xe6, 0x63, 0x01, 0x7c, 0x36, 0x6b, 0xab, 0x3e, 0xd1,
+ 0x1d, 0x32, 0x61, 0xf5, 0x69, 0xcd, 0x3f, 0x69, 0x05, 0x57, 0xf5, 0x26,
+ 0xb0, 0x46, 0xfa, 0x01, 0x38, 0x3a, 0x22, 0x78, 0x22, 0xae, 0x14, 0x86,
+ 0x6e, 0xa1, 0x34, 0x89, 0x16, 0x9a, 0xfb, 0xb3, 0x65, 0xf8, 0x02, 0x26,
+ 0xaf, 0xba, 0x9f, 0xd7, 0x08, 0x24, 0x11, 0x0f, 0x5e, 0x51, 0x22, 0xf4,
+ 0x26, 0x26, 0x63, 0x4f, 0xb7, 0x15, 0x4c, 0xdc, 0x2f, 0x9e, 0xbd, 0xe0,
+ 0x63, 0x87, 0xf8, 0x34, 0x45, 0xe1, 0xd0, 0xbc, 0x25, 0x14, 0xd9, 0xd0,
+ 0x11, 0x9b, 0xc5, 0x38, 0x82, 0x94, 0xd2, 0xed, 0x37, 0x6b, 0xe8, 0x28,
+ 0x63, 0x48, 0x0f, 0x90, 0xe8, 0x79, 0xd0, 0xd4, 0x70, 0xa5, 0xbe, 0xbf,
+ 0x2a, 0xca, 0x0b, 0x37, 0x8b, 0x16, 0xd2, 0xa2, 0x5d, 0x48, 0x6f, 0x34,
+ 0xf3, 0x52, 0xcf, 0x83, 0xb4, 0xdb, 0xd8, 0xfd, 0x55, 0xa3, 0x53, 0x72,
+ 0xe0, 0x90, 0x61, 0x22, 0x4c, 0x76, 0x1a, 0x6f, 0xfc, 0x61, 0xd3, 0xa1,
+ 0xa5, 0x69, 0x21, 0x0a, 0xc6, 0x41, 0x5e, 0x66, 0x0d, 0x8c, 0xc7, 0x55,
+ 0xcd, 0x5d, 0x82, 0x61, 0xd1, 0xea, 0xb5, 0x13, 0x73, 0xc5, 0x61, 0x5a,
+ 0x17, 0x0b, 0x16, 0x66, 0x84, 0xcf, 0xea, 0xde, 0xc7, 0x7e, 0x7f, 0x9e,
+ 0x03, 0x72, 0xc0, 0x46, 0x52, 0x0f, 0xc3, 0xe4, 0x05, 0x12, 0x86, 0xe7,
+ 0x88, 0xe5, 0x52, 0x5a, 0xd4, 0x3b, 0x12, 0xd1, 0x2c, 0x34, 0x57, 0xb6,
+ 0x2d, 0x77, 0xb0, 0x26, 0xe1, 0x83, 0xc1, 0x69, 0xd4, 0x3b, 0xa2, 0x55,
+ 0xc4, 0x14, 0xa7, 0x59, 0x19, 0x9e, 0xe3, 0x66, 0x6f, 0x62, 0x84, 0x0a,
+ 0x16, 0x2a, 0x2a, 0x03, 0xe5, 0x45, 0xdb, 0x5c, 0xd6, 0x8f, 0x34, 0x81,
+ 0x41, 0x55, 0xdf, 0x8b, 0xc1, 0x29, 0x9b, 0x31, 0xec, 0x11, 0x6a, 0xd7,
+ 0x23, 0xac, 0x51, 0xeb, 0xb5, 0x21, 0x15, 0x32, 0x22, 0x60, 0x4e, 0x8d,
+ 0x04, 0xcc, 0xc7, 0x1b, 0xe7, 0xf9, 0x50, 0x33, 0xae, 0x54, 0x20, 0xbb,
+ 0x44, 0x66, 0xa4, 0x83, 0x68, 0x93, 0xd5, 0xf9, 0xab, 0x71, 0xd9, 0x4e,
+ 0x8a, 0x8b, 0x21, 0xb6, 0xae, 0xaf, 0xca, 0x85, 0x60, 0xe4, 0x74, 0x01,
+ 0xf8, 0x04, 0x82, 0xa4, 0x3c, 0x69, 0xbc, 0x02, 0x85, 0x62, 0xa1, 0x91,
+ 0xe0, 0xd5, 0xa3, 0xd7, 0x0d, 0x58, 0x35, 0x49, 0xb2, 0xa0, 0x9d, 0xee,
+ 0x6e, 0xce, 0x27, 0x19, 0x48, 0xec, 0x9d, 0xbf, 0x4f, 0x5c, 0x6b, 0x5e,
+ 0x6e, 0x1e, 0xdd, 0xfb, 0x6f, 0xba, 0x9b, 0xd3, 0x36, 0xc4, 0xe9, 0x23,
+ 0x2d, 0x58, 0xb3, 0xa0, 0x15, 0x03, 0xa3, 0x66, 0x6a, 0x60, 0x3c, 0x51,
+ 0xeb, 0x24, 0x0e, 0x9d, 0xbd, 0x9e, 0x15, 0x13, 0x09, 0xeb, 0x7a, 0x6c,
+ 0x2d, 0xf8, 0x41, 0x5b, 0x0b, 0x35, 0xa3, 0x57, 0xe1, 0xbc, 0xd0, 0x08,
+ 0x51, 0x29, 0x53, 0x9e, 0xf2, 0x81, 0xee, 0xe6, 0xfc, 0x44, 0xa5, 0x5c,
+ 0x29, 0x37, 0x8f, 0x97, 0xc3, 0x29, 0xcc, 0x93, 0x62, 0x5c, 0x07, 0x33,
+ 0xe0, 0x07, 0xba, 0x9b, 0xb3, 0x10, 0x92, 0x68, 0x66, 0x6c, 0x52, 0x45,
+ 0xe0, 0xf9, 0x63, 0x33, 0xe3, 0x07, 0xa3, 0x5d, 0xa6, 0x0f, 0x85, 0x87,
+ 0xb7, 0xb6, 0x58, 0x36, 0x67, 0x45, 0x84, 0x53, 0x63, 0x83, 0x6d, 0x87,
+ 0x31, 0x86, 0xae, 0x0d, 0xd6, 0x38, 0xfa, 0x98, 0x91, 0x7b, 0xc4, 0x41,
+ 0x59, 0x1d, 0xf7, 0xe0, 0xca, 0x0d, 0xd6, 0x3e, 0xa2, 0x55, 0x98, 0xce,
+ 0xb5, 0xf0, 0xcd, 0x07, 0x81, 0x74, 0x61, 0x78, 0xd9, 0xfa, 0xc3, 0xc3,
+ 0x0b, 0x32, 0x9d, 0x5b, 0x35, 0x3e, 0x20, 0x87, 0x39, 0x5e, 0xa1, 0x19,
+ 0x53, 0x69, 0xb3, 0x4e, 0x9f, 0xa2, 0xc1, 0xad, 0x20, 0x7b, 0xdf, 0x5f,
+ 0xe2, 0xeb, 0x9e, 0xd1, 0x35, 0x9a, 0x0b, 0x9c, 0xbc, 0xe3, 0x31, 0xc1,
+ 0x18, 0xbb, 0xca, 0x63, 0x05, 0x39, 0x9d, 0xd1, 0x14, 0x67, 0x37, 0x6c,
+ 0x43, 0x75, 0xa2, 0xc1, 0x87, 0xd5, 0x11, 0x71, 0x20, 0x34, 0x3c, 0x6d,
+ 0xbb, 0x2d, 0x53, 0x32, 0x37, 0xa7, 0x4f, 0xac, 0xf1, 0xc7, 0xf9, 0x01,
+ 0x3a, 0x6e, 0x76, 0xe9, 0xce, 0x64, 0x7b, 0x7c, 0x8b, 0xbb, 0x89, 0x75,
+ 0xce, 0xbf, 0x5a, 0xd7, 0x61, 0x51, 0x7a, 0x07, 0xc9, 0xc3, 0xa2, 0xab,
+ 0x34, 0x76, 0x69, 0xc9, 0x47, 0x2b, 0x96, 0xa2, 0x3b, 0x23, 0x28, 0xea,
+ 0xbc, 0x84, 0x39, 0xc3, 0x8a, 0x1f, 0xc9, 0x76, 0xac, 0x5e, 0x1c, 0x7d,
+ 0xda, 0x0f, 0x51, 0xf8, 0x7b, 0x08, 0x4b, 0xe9, 0xd7, 0xc8, 0x8e, 0xc3,
+ 0x03, 0x0c, 0x4f, 0xbb, 0x6d, 0xb3, 0xbc, 0x49, 0xc6, 0xa5, 0x40, 0x85,
+ 0x16, 0x90, 0x35, 0xf6, 0xf8, 0xc9, 0x92, 0x91, 0xaf, 0x5c, 0xe3, 0x72,
+ 0xf6, 0xc8, 0x21, 0xa7, 0x07, 0xfc, 0xac, 0x38, 0x66, 0x3c, 0x98, 0x55,
+ 0x74, 0x2e, 0x65, 0xae, 0x8b, 0x15, 0x2b, 0xbf, 0x6a, 0x04, 0x0d, 0x2a,
+ 0x5c, 0x3d, 0x12, 0x7d, 0xb2, 0x73, 0x38, 0x7e, 0x71, 0xd9, 0xe1, 0x76,
+ 0xef, 0x47, 0xd6, 0xdd, 0x9c, 0x0e, 0xd7, 0xbf, 0xa5, 0xcb, 0xd3, 0x77,
+ 0x38, 0x49, 0x6a, 0x3a, 0x61, 0xad, 0x39, 0xa6, 0x0d, 0x3b, 0xe0, 0xbf,
+ 0x88, 0x41, 0xb0, 0xb6, 0x36, 0x0d, 0x0e, 0xe1, 0xa0, 0x44, 0x52, 0x19,
+ 0x8c, 0x60, 0x2f, 0xf1, 0xa3, 0x33, 0x7b, 0x66, 0xcb, 0x34, 0xac, 0x2d,
+ 0x86, 0xa5, 0xe4, 0x10, 0x6b, 0xf8, 0xb7, 0x99, 0x9b, 0x30, 0xc8, 0xb8,
+ 0x46, 0x18, 0x6e, 0x70, 0xcc, 0xaa, 0x24, 0x4b, 0xa0, 0x54, 0x1f, 0xa7,
+ 0xeb, 0x46, 0x97, 0x3a, 0x2d, 0xcd, 0xa6, 0xe5, 0x01, 0xa6, 0x62, 0xd8,
+ 0xdc, 0xda, 0x19, 0xee, 0xf4, 0x93, 0xa6, 0x4e, 0x66, 0xc2, 0x75, 0x51,
+ 0xba, 0x6c, 0x48, 0xee, 0xba, 0x6d, 0x67, 0x38, 0xe3, 0x8e, 0x2b, 0x93,
+ 0x33, 0x3d, 0x29, 0x20, 0x10, 0xc1, 0x0b, 0xf2, 0x8c, 0x15, 0x1e, 0x2d,
+ 0xe0, 0xf6, 0xe0, 0xe9, 0x8b, 0x17, 0x8d, 0x2b, 0x2d, 0xd4, 0x9c, 0x9f,
+ 0x6d, 0x6f, 0x0b, 0x80, 0x7a, 0xfb, 0x35, 0xfa, 0x62, 0xf0, 0x02, 0x2f,
+ 0x36, 0x5f, 0x93, 0xe2, 0x1d, 0xab, 0xdf, 0x1b, 0xf0, 0x37, 0x1d, 0xdd,
+ 0xc1, 0x9e, 0xb2, 0xf2, 0xad, 0x17, 0xdc, 0x5d, 0xc7, 0x5b, 0x78, 0x58,
+ 0x96, 0xb1, 0xb8, 0xbc, 0xe4, 0x70, 0x3b, 0x7e, 0x12, 0x9c, 0x9f, 0x44,
+ 0xc1, 0xbb, 0xb4, 0x9c, 0xc4, 0xd3, 0xdd, 0xee, 0x0f, 0x76, 0x56, 0x4d,
+ 0x17, 0x36, 0x01, 0x1e, 0x09, 0xf6, 0x93, 0x35, 0x28, 0x12, 0x9e, 0x37,
+ 0xbe, 0xd9, 0xec, 0x9a, 0xfd, 0x67, 0xdb, 0xdb, 0xfd, 0xe7, 0xfc, 0xf3,
+ 0xc5, 0x8b, 0x95, 0x9e, 0x54, 0xdf, 0xc7, 0x13, 0x9b, 0x5a, 0x63, 0xb4,
+ 0xd4, 0x4e, 0x47, 0xeb, 0x3b, 0xd4, 0xea, 0xce, 0x8b, 0x17, 0x7d, 0xee,
+ 0xe5, 0xd9, 0x27, 0xb5, 0x5e, 0xdf, 0x15, 0xde, 0xb2, 0xc5, 0xaf, 0x7b,
+ 0x7a, 0xac, 0xba, 0x67, 0xc0, 0x4a, 0xc1, 0x2b, 0x80, 0xcb, 0x07, 0xf6,
+ 0x1e, 0x9f, 0xe5, 0x11, 0x06, 0xe3, 0x23, 0xaa, 0x65, 0x01, 0x3c, 0x10,
+ 0x28, 0x9a, 0xac, 0xb5, 0xc4, 0x40, 0x05, 0x48, 0x0e, 0x32, 0x1f, 0x54,
+ 0x94, 0x8f, 0x29, 0xb9, 0xb8, 0x93, 0xfc, 0x2a, 0xaf, 0x3d, 0x7e, 0x48,
+ 0x95, 0x6c, 0x10, 0x11, 0x6d, 0xc2, 0xa4, 0x20, 0x90, 0xe8, 0xea, 0x9a,
+ 0xef, 0x21, 0x04, 0x58, 0x90, 0x0d, 0x7b, 0xac, 0x62, 0xf4, 0xa2, 0xd8,
+ 0x8d, 0x6c, 0x3a, 0x71, 0xc9, 0x97, 0xf2, 0xf8, 0x00, 0x0f, 0xea, 0x21,
+ 0x84, 0x7a, 0x28, 0x58, 0x9a, 0x29, 0x02, 0x8a, 0xa4, 0x6b, 0xed, 0x3b,
+ 0x1a, 0xbd, 0xc4, 0x52, 0x88, 0x95, 0xde, 0x12, 0xe1, 0x24, 0xe8, 0xd7,
+ 0xaf, 0x43, 0xaf, 0x6a, 0x23, 0xac, 0x72, 0x5d, 0x23, 0xde, 0x83, 0x28,
+ 0x92, 0x49, 0x2c, 0xbe, 0x93, 0xcc, 0x4a, 0xa0, 0x35, 0x0a, 0xdf, 0xf6,
+ 0x2a, 0xb5, 0xf7, 0x2c, 0xcb, 0xd5, 0xb5, 0x47, 0x34, 0x5d, 0x00, 0x4e,
+ 0x78, 0x56, 0x82, 0xef, 0x52, 0x4b, 0x07, 0x43, 0x1a, 0xa8, 0xf1, 0x0b,
+ 0x57, 0xdb, 0x58, 0xd3, 0xaf, 0x90, 0xf0, 0x19, 0x19, 0xd2, 0xd8, 0x1a,
+ 0x60, 0xf5, 0xea, 0xd4, 0x9b, 0x6f, 0xf5, 0x6d, 0xd3, 0xda, 0xa7, 0xc1,
+ 0x59, 0xb0, 0x38, 0xed, 0xb7, 0x54, 0x1f, 0x94, 0x25, 0x88, 0xab, 0x0d,
+ 0xf5, 0x82, 0xb2, 0xe2, 0x57, 0x59, 0x1d, 0x54, 0xe6, 0x31, 0x68, 0x82,
+ 0x38, 0x8e, 0x42, 0x31, 0xfd, 0xc1, 0xd4, 0x64, 0x8b, 0x7c, 0x75, 0x3d,
+ 0x67, 0xa9, 0x10, 0x93, 0xba, 0xdc, 0xba, 0x0a, 0xb3, 0xa9, 0x7b, 0x1b,
+ 0xc5, 0xdd, 0xf2, 0x56, 0xeb, 0x2e, 0x13, 0x31, 0x07, 0xa1, 0x3e, 0x20,
+ 0xd2, 0xc0, 0xf0, 0x60, 0x75, 0xb1, 0x0a, 0x09, 0x5b, 0xd9, 0x1c, 0x76,
+ 0x18, 0x09, 0x50, 0x1e, 0x06, 0xbb, 0xe5, 0x4c, 0x73, 0xd9, 0xc7, 0x1a,
+ 0xb5, 0xec, 0x30, 0x72, 0xbb, 0xe6, 0xce, 0x8f, 0xfe, 0xf7, 0xe1, 0x6f,
+ 0x98, 0xc7, 0x79, 0x16, 0xa4, 0x36, 0xf3, 0x6b, 0x5d, 0x99, 0x5b, 0x01,
+ 0x68, 0x7b, 0xab, 0x3e, 0x6e, 0xb0, 0x7d, 0x20, 0x2e, 0xa4, 0xd2, 0xeb,
+ 0x6a, 0x76, 0x55, 0x0f, 0xa2, 0x85, 0x9d, 0x2d, 0x82, 0x20, 0x7a, 0x73,
+ 0xab, 0x8a, 0x2d, 0xd9, 0x23, 0x05, 0x8b, 0x19, 0x36, 0xf5, 0xc1, 0x50,
+ 0x5a, 0xa6, 0xb8, 0x2d, 0xa4, 0xfb, 0x5c, 0x7d, 0xa1, 0x09, 0xae, 0xec,
+ 0x8c, 0x74, 0x78, 0x5e, 0x00, 0xee, 0x2b, 0x34, 0xfe, 0xf3, 0x0d, 0x4f,
+ 0xba, 0x2e, 0x1e, 0xef, 0xc4, 0xd2, 0x10, 0xe8, 0xac, 0x30, 0x01, 0xd9,
+ 0x09, 0x59, 0x32, 0xc3, 0x69, 0x66, 0x30, 0x3f, 0x70, 0x2d, 0x86, 0x35,
+ 0xcc, 0x3a, 0x92, 0x98, 0x2a, 0x12, 0x24, 0x80, 0x0c, 0xca, 0x68, 0x6c,
+ 0xd2, 0x79, 0x02, 0x58, 0x4e, 0x83, 0xc5, 0x11, 0x84, 0xcf, 0x2a, 0xa8,
+ 0x0d, 0xad, 0x66, 0x3b, 0x79, 0xb8, 0x6d, 0x7e, 0x04, 0x58, 0x0d, 0xac,
+ 0x16, 0x0c, 0x6a, 0xe2, 0x93, 0x40, 0xaa, 0xb8, 0x60, 0x52, 0x76, 0x35,
+ 0x19, 0xa8, 0x30, 0xd6, 0x3c, 0xee, 0xbc, 0x0a, 0x77, 0x2e, 0x2a, 0x33,
+ 0xd8, 0xdd, 0x3c, 0x08, 0x16, 0x4a, 0xa7, 0x6a, 0x0e, 0x61, 0x40, 0x43,
+ 0xb8, 0x51, 0x5c, 0x2a, 0x3b, 0x4c, 0x73, 0xf3, 0x98, 0x97, 0xb1, 0x55,
+ 0x12, 0xd0, 0x46, 0xae, 0x2e, 0x09, 0x52, 0xd6, 0x91, 0x54, 0x29, 0x41,
+ 0x9d, 0x76, 0x78, 0x1d, 0x9c, 0xe2, 0x0c, 0x8e, 0x03, 0x60, 0xe7, 0xb4,
+ 0x8f, 0x06, 0xf5, 0x5b, 0xf3, 0xd2, 0xf5, 0x69, 0x25, 0xee, 0xa2, 0x22,
+ 0x9d, 0x8d, 0x80, 0x82, 0x20, 0x2b, 0x9f, 0xe3, 0x98, 0x1e, 0x8a, 0x80,
+ 0xb9, 0x16, 0x89, 0xa5, 0xe1, 0xb0, 0x17, 0xef, 0x02, 0xaf, 0x29, 0x4f,
+ 0xda, 0x61, 0x21, 0x54, 0xdd, 0x16, 0xe0, 0x49, 0x96, 0x1a, 0xae, 0x0c,
+ 0xed, 0x29, 0x51, 0x6a, 0x8c, 0x0c, 0x70, 0x97, 0x95, 0x99, 0xc7, 0x58,
+ 0x46, 0xb8, 0x20, 0x9d, 0xbe, 0x61, 0x72, 0x5e, 0xd0, 0xf3, 0x1d, 0x45,
+ 0xd4, 0x2c, 0x29, 0xaa, 0x81, 0xbb, 0x8a, 0xf1, 0xf8, 0x2a, 0xe7, 0x9c,
+ 0x40, 0x20, 0x86, 0xe5, 0xe6, 0x7c, 0x3b, 0xa0, 0xda, 0x60, 0x01, 0xa6,
+ 0x81, 0x0b, 0x62, 0x21, 0xaf, 0xa0, 0xa4, 0xef, 0xc2, 0x88, 0xc9, 0x2c,
+ 0x67, 0x7d, 0x50, 0x24, 0x03, 0x14, 0x8d, 0x00, 0x8a, 0x5c, 0xd0, 0xdc,
+ 0x43, 0xd9, 0x9e, 0x3b, 0x2f, 0x9a, 0x41, 0x9d, 0x5c, 0xc7, 0x6f, 0x4a,
+ 0x42, 0xe8, 0x4b, 0x76, 0x6b, 0xc2, 0xab, 0xb9, 0xb7, 0x22, 0x31, 0xf0,
+ 0xd4, 0xa1, 0x22, 0x8e, 0x69, 0x08, 0x9c, 0xcc, 0xa2, 0x09, 0x50, 0x32,
+ 0x47, 0x3f, 0x49, 0xc9, 0xca, 0x12, 0x5a, 0x11, 0x9e, 0xbc, 0x48, 0xf3,
+ 0x28, 0xc1, 0x25, 0x40, 0xb1, 0xb5, 0xa9, 0xb1, 0x04, 0xea, 0xca, 0x98,
+ 0x6b, 0xd5, 0x6e, 0x89, 0x05, 0xde, 0xa8, 0x36, 0x0d, 0xae, 0x77, 0x85,
+ 0x3e, 0xd0, 0x48, 0xb2, 0xd3, 0xca, 0x13, 0xb0, 0x61, 0xb8, 0x3a, 0xa6,
+ 0x73, 0x4b, 0xd8, 0xd0, 0x29, 0x4f, 0x82, 0x4a, 0x27, 0x51, 0x00, 0x99,
+ 0xd5, 0x69, 0x1a, 0x0a, 0x5c, 0x06, 0x9f, 0x7f, 0x3e, 0x58, 0xd4, 0x7f,
+ 0x21, 0x59, 0xcc, 0x5b, 0x59, 0x3d, 0xde, 0x12, 0xbc, 0x34, 0x90, 0xf8,
+ 0x1c, 0x18, 0xb2, 0x4e, 0xeb, 0x68, 0xe7, 0x1a, 0xc5, 0x8e, 0x23, 0x31,
+ 0x6b, 0x04, 0x25, 0x1c, 0x83, 0x24, 0x3f, 0x70, 0x54, 0xf3, 0x0d, 0x77,
+ 0x18, 0x7e, 0x2f, 0x0d, 0x7b, 0x2c, 0x58, 0x74, 0xe7, 0x44, 0x35, 0x4c,
+ 0xb2, 0xc6, 0x3d, 0xc1, 0xaf, 0xf8, 0xb2, 0xa1, 0x1d, 0xd4, 0x3b, 0xcf,
+ 0x82, 0x5b, 0xc7, 0xc5, 0x3a, 0x36, 0x11, 0x47, 0x1d, 0x2e, 0x66, 0xb0,
+ 0xf1, 0x5d, 0x26, 0x7d, 0x3e, 0x3d, 0x18, 0x81, 0x04, 0x2e, 0x1a, 0xe6,
+ 0x07, 0xa0, 0x97, 0x1e, 0x41, 0x15, 0x35, 0x54, 0x06, 0x0d, 0x6f, 0xf3,
+ 0xa0, 0x15, 0x6c, 0xcd, 0x9e, 0xe8, 0x27, 0x2e, 0xeb, 0xaf, 0x23, 0xf2,
+ 0x4f, 0x37, 0xf7, 0xe1, 0xe8, 0xad, 0x9d, 0xe1, 0x93, 0xe6, 0x19, 0x60,
+ 0x4d, 0xb3, 0xab, 0x82, 0x0a, 0x04, 0x40, 0x70, 0x42, 0x14, 0x7d, 0x41,
+ 0x70, 0x9e, 0x24, 0xaa, 0xb1, 0xe5, 0x22, 0xb3, 0x38, 0x2d, 0x44, 0x7c,
+ 0x08, 0x46, 0x0e, 0x73, 0x1b, 0x2d, 0x35, 0x13, 0x23, 0x7c, 0x06, 0x7e,
+ 0x29, 0x16, 0x27, 0xad, 0x94, 0x53, 0xa9, 0xe1, 0xae, 0x5e, 0xd7, 0x92,
+ 0x39, 0xab, 0x45, 0x9a, 0x78, 0x19, 0x1f, 0x95, 0xe5, 0x62, 0x18, 0xd7,
+ 0x77, 0x71, 0x01, 0x7b, 0xfa, 0x2e, 0x75, 0xbf, 0x1d, 0x66, 0xd4, 0x42,
+ 0xb2, 0xd3, 0x50, 0xea, 0xca, 0x8a, 0x33, 0x5a, 0xb4, 0x53, 0xc4, 0x13,
+ 0xc1, 0x4a, 0xb9, 0xb6, 0xc6, 0x85, 0x9b, 0xb2, 0xce, 0x59, 0xd3, 0xdb,
+ 0x04, 0x32, 0x6f, 0x8f, 0x17, 0x45, 0x0a, 0xf8, 0xf5, 0xcd, 0xc7, 0xf0,
+ 0xf4, 0xe3, 0xc7, 0x78, 0x27, 0x44, 0xdc, 0x05, 0x00, 0x2a, 0xf3, 0x08,
+ 0x75, 0xf9, 0x3f, 0xfb, 0xf8, 0xb1, 0xf9, 0xe5, 0x03, 0x65, 0xd7, 0x59,
+ 0x76, 0x40, 0x7d, 0xb9, 0xba, 0xd0, 0x95, 0x4a, 0x83, 0x55, 0x34, 0xac,
+ 0x6d, 0x05, 0x23, 0xbd, 0x4b, 0x25, 0x7c, 0x38, 0xf6, 0x31, 0x41, 0xab,
+ 0x14, 0x8e, 0x54, 0x5f, 0x67, 0xfe, 0x9a, 0x60, 0x84, 0xb7, 0x6b, 0x3a,
+ 0x95, 0x52, 0x19, 0x4d, 0x89, 0xde, 0x55, 0x62, 0x5f, 0x6a, 0x22, 0x64,
+ 0x3b, 0x2e, 0x27, 0x95, 0x6a, 0xb3, 0x28, 0xfe, 0xb0, 0x9c, 0xd7, 0x39,
+ 0xb2, 0xb3, 0x50, 0x71, 0x93, 0x5e, 0xdf, 0xa1, 0xf5, 0xcf, 0xe7, 0x4b,
+ 0xd6, 0xd5, 0x64, 0xb5, 0xd1, 0xa1, 0x2b, 0xfe, 0xd6, 0xb5, 0xec, 0xd3,
+ 0xf4, 0x3e, 0x71, 0x11, 0x1a, 0x56, 0x8c, 0x21, 0x40, 0x1b, 0xc2, 0xb8,
+ 0x04, 0xda, 0xd3, 0xb2, 0x29, 0xb1, 0x16, 0x03, 0xbc, 0xda, 0x71, 0x98,
+ 0xdd, 0x1d, 0xa4, 0xe2, 0x7b, 0xf6, 0x91, 0x16, 0x5b, 0x62, 0x5d, 0x25,
+ 0x1f, 0x9a, 0x14, 0x48, 0xbe, 0x65, 0xae, 0x8a, 0x92, 0x36, 0x74, 0xa6,
+ 0x52, 0x87, 0x44, 0xed, 0x46, 0xe1, 0x1f, 0xd2, 0x95, 0x2b, 0xc5, 0x29,
+ 0x11, 0xd4, 0xa8, 0xc1, 0x23, 0x5e, 0xc7, 0xa2, 0x56, 0x39, 0xd5, 0xca,
+ 0x07, 0x61, 0x75, 0x6d, 0xd4, 0x0f, 0x5d, 0x45, 0xbb, 0xe1, 0x31, 0xfc,
+ 0xc7, 0x67, 0x05, 0x06, 0x6b, 0xf4, 0x40, 0x01, 0x51, 0x13, 0x80, 0xab,
+ 0x69, 0x96, 0x2d, 0x34, 0x3e, 0x66, 0x86, 0x1a, 0xd3, 0x7a, 0x0e, 0xed,
+ 0x18, 0x8a, 0x08, 0xa0, 0x54, 0xa8, 0xe1, 0x5b, 0xab, 0x0e, 0xb8, 0xde,
+ 0xde, 0xec, 0xd1, 0xf2, 0xe8, 0x12, 0x69, 0x12, 0xb0, 0x12, 0x3d, 0x57,
+ 0x1b, 0x79, 0x1d, 0x8a, 0x33, 0xdd, 0x27, 0xd2, 0x6d, 0x99, 0xae, 0xb2,
+ 0x6e, 0x9b, 0x23, 0x19, 0x5d, 0xeb, 0xcd, 0x61, 0x43, 0x4a, 0x8a, 0x61,
+ 0x52, 0x44, 0x53, 0x82, 0x3c, 0x08, 0xf3, 0xe3, 0x15, 0x04, 0x1f, 0x65,
+ 0x7f, 0x88, 0xaa, 0x96, 0xc2, 0xcd, 0x88, 0x48, 0x08, 0xea, 0xf6, 0xca,
+ 0x12, 0x46, 0xac, 0x16, 0x99, 0x0f, 0x2d, 0x35, 0xc2, 0x94, 0x7f, 0x1b,
+ 0xb9, 0xa7, 0x36, 0x1e, 0xfb, 0xd0, 0x53, 0x40, 0x8c, 0xa3, 0xf1, 0xcf,
+ 0x22, 0x88, 0x47, 0x8b, 0xca, 0x8a, 0x89, 0x52, 0xb6, 0x99, 0x1f, 0xd4,
+ 0xf8, 0x2c, 0x0e, 0x0c, 0xe6, 0x09, 0x79, 0x87, 0xbb, 0xb0, 0x1d, 0xb7,
+ 0xe7, 0xaa, 0x42, 0x45, 0xe6, 0x35, 0xe5, 0x2b, 0x36, 0x2a, 0x60, 0x48,
+ 0xa5, 0x3c, 0x0d, 0x86, 0x78, 0xd9, 0x60, 0x90, 0x42, 0x1d, 0xda, 0x26,
+ 0x7f, 0x3c, 0x2d, 0x38, 0x54, 0xbd, 0x72, 0xe5, 0x65, 0xca, 0x08, 0x94,
+ 0x09, 0xe5, 0x32, 0x84, 0xdd, 0x4c, 0x3a, 0x2a, 0xe4, 0xbd, 0x2b, 0x18,
+ 0x20, 0xc1, 0xd5, 0xc0, 0x71, 0xed, 0xe8, 0x9b, 0x11, 0x97, 0xb6, 0x76,
+ 0xb4, 0xb2, 0x56, 0xbf, 0x09, 0xe4, 0xa3, 0x83, 0x06, 0xf4, 0x85, 0x60,
+ 0x91, 0x5e, 0x1b, 0x9c, 0x3d, 0xdf, 0x71, 0x1d, 0x25, 0x6f, 0xe5, 0x72,
+ 0x63, 0x87, 0x28, 0xa2, 0x29, 0x78, 0x3e, 0x1d, 0xe5, 0xfc, 0xb0, 0x03,
+ 0xd4, 0x48, 0x5e, 0x4c, 0x10, 0x87, 0x21, 0x1c, 0x25, 0x2a, 0x36, 0x2d,
+ 0x39, 0xd0, 0x3a, 0x9a, 0x5e, 0xe5, 0xaa, 0x99, 0xf1, 0xeb, 0x52, 0x66,
+ 0x08, 0xa5, 0x82, 0x83, 0x5a, 0xc1, 0xc3, 0x44, 0x0b, 0x9f, 0xd5, 0x71,
+ 0xe9, 0x64, 0x8f, 0x0b, 0x04, 0xda, 0xd5, 0x9c, 0x60, 0xab, 0x45, 0xeb,
+ 0x18, 0xed, 0x3f, 0x91, 0x49, 0x55, 0xa8, 0x8e, 0x9e, 0x4f, 0xe3, 0x94,
+ 0x93, 0x73, 0x7c, 0x28, 0xba, 0xd8, 0x5f, 0x97, 0x39, 0x4a, 0xb9, 0x01,
+ 0x13, 0xe3, 0x75, 0xc1, 0xfb, 0x5f, 0x69, 0xf0, 0xfa, 0x15, 0x24, 0x31,
+ 0x0d, 0x4f, 0x2a, 0x95, 0xab, 0x50, 0xf7, 0x91, 0x0a, 0xcb, 0x30, 0xda,
+ 0x43, 0x2b, 0x6c, 0x83, 0x92, 0x06, 0x33, 0xba, 0xa4, 0x86, 0x0e, 0x9a,
+ 0x9f, 0x18, 0x42, 0x47, 0xd5, 0x0a, 0x85, 0x0c, 0xaa, 0x6e, 0x62, 0x09,
+ 0xb4, 0xdf, 0x48, 0xa0, 0x40, 0x30, 0x80, 0x3a, 0x37, 0x6a, 0x4e, 0xc9,
+ 0x21, 0xcd, 0x6f, 0x4b, 0x30, 0xfc, 0xe8, 0x8e, 0x9c, 0x2a, 0x9c, 0x84,
+ 0x8b, 0xcd, 0x6f, 0x93, 0x4d, 0x23, 0x32, 0xb5, 0x4a, 0xab, 0xe9, 0x20,
+ 0x6f, 0x13, 0xbe, 0xe0, 0xd3, 0xba, 0xd0, 0x1f, 0x2f, 0x42, 0x20, 0xa3,
+ 0xef, 0x7c, 0x9f, 0x34, 0xe9, 0x18, 0xb4, 0xf6, 0x21, 0x76, 0xf3, 0x64,
+ 0xa7, 0xa9, 0x0a, 0xfd, 0xe3, 0x42, 0x61, 0xcd, 0x5c, 0xc7, 0xe7, 0x50,
+ 0x50, 0xe6, 0x58, 0xd5, 0xef, 0xc6, 0xa4, 0x0f, 0x83, 0x5d, 0x1b, 0x91,
+ 0xcc, 0xf1, 0x98, 0x2c, 0x94, 0x35, 0xd1, 0x60, 0x56, 0x48, 0xc9, 0x5d,
+ 0xc1, 0xae, 0x5b, 0x62, 0xd8, 0xfb, 0x94, 0xe8, 0xd6, 0x73, 0x10, 0x20,
+ 0x11, 0xd3, 0x00, 0xa4, 0xb3, 0xca, 0x68, 0xa4, 0x40, 0x11, 0x95, 0x1c,
+ 0x6d, 0x5f, 0x1b, 0x89, 0xa9, 0x50, 0x72, 0x0b, 0x4c, 0x4c, 0x04, 0x60,
+ 0xbb, 0x60, 0xf7, 0xe7, 0x75, 0x47, 0x25, 0xa7, 0x46, 0x80, 0x7c, 0x55,
+ 0x4d, 0x25, 0xf4, 0xac, 0x9f, 0x28, 0x74, 0x9c, 0x56, 0x27, 0x16, 0x04,
+ 0xb9, 0x8b, 0xf2, 0xde, 0x82, 0x4c, 0x19, 0x64, 0xe0, 0xe2, 0xf8, 0x3c,
+ 0x44, 0xd0, 0x50, 0xa3, 0x49, 0xcc, 0x6f, 0x39, 0xdb, 0x54, 0x34, 0x06,
+ 0x18, 0x6f, 0x51, 0x15, 0x3d, 0x7c, 0xc3, 0xd5, 0x45, 0x17, 0x0b, 0xb5,
+ 0x55, 0x20, 0x52, 0x13, 0x62, 0xfb, 0x1c, 0x4a, 0xc7, 0xc3, 0x10, 0x54,
+ 0x53, 0x00, 0x33, 0x68, 0xf0, 0x03, 0x03, 0xf2, 0x60, 0xd6, 0x88, 0xe9,
+ 0x10, 0x27, 0xff, 0xab, 0x48, 0x40, 0xa2, 0xf8, 0x0c, 0x22, 0xdb, 0x4f,
+ 0x9d, 0x30, 0x3a, 0xf1, 0x14, 0xf6, 0xe7, 0x6c, 0x3e, 0x2e, 0xef, 0x1b,
+ 0xe0, 0xb7, 0x93, 0x4f, 0x28, 0xdb, 0x19, 0xd2, 0x1f, 0xe3, 0x2c, 0x33,
+ 0x23, 0xe6, 0xe2, 0x02, 0x5a, 0xc9, 0x95, 0x3e, 0x71, 0x03, 0x0c, 0xe8,
+ 0x1f, 0x37, 0xec, 0x0e, 0x76, 0xbf, 0xdd, 0x1c, 0xd7, 0x7e, 0x31, 0xa9,
+ 0x41, 0x28, 0x0d, 0x7a, 0x98, 0xb0, 0x04, 0xa7, 0x42, 0xba, 0x82, 0xf7,
+ 0xa3, 0x4c, 0x5d, 0x76, 0xe2, 0x23, 0x6a, 0x6f, 0xf2, 0x12, 0xa6, 0x62,
+ 0xcd, 0x96, 0x6d, 0xed, 0x36, 0x96, 0xa7, 0x23, 0xf4, 0xd0, 0x90, 0x03,
+ 0xc3, 0xdd, 0xa7, 0x9d, 0x54, 0x10, 0x77, 0xdb, 0xfc, 0x40, 0xf1, 0x5d,
+ 0xbd, 0xff, 0x17, 0xc2, 0x7d, 0x6a, 0x35, 0x10, 0x7d, 0xea, 0xb6, 0xbb,
+ 0x8d, 0xfe, 0xe4, 0xfa, 0xc2, 0x2b, 0x76, 0xc3, 0x6f, 0x87, 0xee, 0x07,
+ 0xac, 0x86, 0x9e, 0x64, 0x40, 0x20, 0xc9, 0x46, 0xba, 0x5a, 0x0c, 0x7a,
+ 0x36, 0x7c, 0x06, 0x25, 0x8c, 0xf7, 0x25, 0x44, 0x90, 0xe7, 0x4d, 0x91,
+ 0x3d, 0x79, 0x60, 0x4b, 0x62, 0xfc, 0xf3, 0xf4, 0x91, 0x2d, 0x01, 0x0b,
+ 0x63, 0x54, 0xc7, 0x28, 0x49, 0x45, 0xcc, 0xa8, 0xe1, 0x04, 0xeb, 0x46,
+ 0x8a, 0x03, 0xdf, 0x9e, 0x28, 0xb8, 0x94, 0x22, 0x6b, 0x08, 0xd9, 0xcd,
+ 0xf4, 0x5d, 0x5e, 0x73, 0xa4, 0xf1, 0x34, 0xbd, 0xeb, 0xc2, 0x62, 0xc7,
+ 0x51, 0x96, 0xda, 0x93, 0xb4, 0xda, 0x61, 0xf8, 0x77, 0xe5, 0xe9, 0xf7,
+ 0xab, 0xc3, 0xfd, 0xf3, 0x8b, 0x61, 0xfb, 0xa2, 0x8d, 0xb2, 0xd8, 0x78,
+ 0xfb, 0x3c, 0xfa, 0x2a, 0xdb, 0x52, 0xb9, 0xb8, 0x75, 0xe9, 0x30, 0x30,
+ 0x31, 0x38, 0x19, 0x5b, 0xe5, 0x76, 0x03, 0xa0, 0x4b, 0x1d, 0x58, 0x64,
+ 0x90, 0x8b, 0xe1, 0x3e, 0x1e, 0xe5, 0x53, 0x4c, 0x81, 0x06, 0x46, 0x37,
+ 0xce, 0xac, 0x52, 0x01, 0xbe, 0xe2, 0xea, 0x6d, 0xc5, 0x94, 0x4d, 0x41,
+ 0x1d, 0x55, 0x09, 0xa2, 0xa2, 0xbf, 0xfb, 0x67, 0xef, 0x8e, 0xde, 0x7d,
+ 0xbd, 0xd7, 0x90, 0x14, 0xa6, 0x45, 0x51, 0x65, 0x1a, 0xf1, 0x20, 0x05,
+ 0x11, 0x64, 0xb9, 0x24, 0x2d, 0xd9, 0xa1, 0xe5, 0x74, 0x88, 0x2e, 0x8c,
+ 0x53, 0x2a, 0x7e, 0x96, 0xea, 0x46, 0x0c, 0x92, 0x5a, 0x26, 0x0a, 0x58,
+ 0x20, 0x0f, 0x57, 0xeb, 0xe6, 0x4d, 0x86, 0x85, 0xb0, 0x03, 0x1f, 0x75,
+ 0xe3, 0xfb, 0x7c, 0x2e, 0x75, 0x26, 0x1a, 0x86, 0x98, 0xe6, 0x3e, 0x9b,
+ 0x3a, 0x39, 0x26, 0xc6, 0x2a, 0x29, 0xb3, 0x4c, 0x6e, 0xb7, 0xc5, 0x0a,
+ 0xc8, 0x71, 0x54, 0xf2, 0x63, 0x61, 0xe3, 0x97, 0xaf, 0x41, 0x5c, 0xce,
+ 0x23, 0xa8, 0xd6, 0xf2, 0x4b, 0xd6, 0xe0, 0x69, 0xab, 0x54, 0x2e, 0xdf,
+ 0x8b, 0xd5, 0x53, 0x31, 0x73, 0x7e, 0x72, 0xf6, 0xc6, 0xf9, 0xc9, 0xc1,
+ 0xb7, 0xe7, 0x4f, 0x83, 0xdc, 0x8d, 0xba, 0x65, 0xb2, 0xd3, 0x42, 0xda,
+ 0x78, 0x23, 0xce, 0x10, 0x7f, 0x24, 0x71, 0xa3, 0x29, 0x67, 0x3e, 0x0b,
+ 0xad, 0xe1, 0x1d, 0xac, 0xa5, 0x59, 0x91, 0x89, 0x4d, 0x9c, 0x79, 0xb1,
+ 0x74, 0xe5, 0x40, 0x02, 0xec, 0xbd, 0xbe, 0x2b, 0x1a, 0x73, 0xdf, 0x51,
+ 0x6f, 0xd5, 0x8a, 0x35, 0x05, 0xe5, 0x99, 0xa2, 0x78, 0x4b, 0x60, 0x03,
+ 0xc1, 0x4c, 0xf6, 0x59, 0xbf, 0x2d, 0xe8, 0x12, 0xb7, 0x24, 0xc9, 0x7f,
+ 0xba, 0xe4, 0xbe, 0x05, 0x44, 0xc8, 0x20, 0x98, 0x5c, 0xf8, 0x6f, 0x87,
+ 0x44, 0x52, 0x3d, 0x75, 0x19, 0x21, 0x2c, 0x46, 0xf8, 0xc1, 0xea, 0xf6,
+ 0xa6, 0xfa, 0xd4, 0xde, 0xd6, 0x96, 0x37, 0x64, 0x4a, 0xb8, 0xea, 0xf0,
+ 0xb7, 0xd3, 0x07, 0xa5, 0xcf, 0xf4, 0x57, 0x11, 0x45, 0xfa, 0x69, 0x54,
+ 0xb1, 0xc2, 0xb9, 0xfb, 0xc9, 0x54, 0xf1, 0xf9, 0xaa, 0x0b, 0xc7, 0xdd,
+ 0xd7, 0xbf, 0x80, 0x2e, 0x44, 0xab, 0xfc, 0x9f, 0x44, 0x15, 0x69, 0xf2,
+ 0x69, 0x74, 0x91, 0xb6, 0x09, 0xa3, 0x03, 0x8e, 0xe1, 0xb7, 0x84, 0xc8,
+ 0xc5, 0x28, 0x9e, 0x0d, 0x5c, 0xa9, 0x8f, 0x5f, 0x41, 0x31, 0xcf, 0x74,
+ 0xa6, 0x1b, 0x70, 0x00, 0xa8, 0xdf, 0xdb, 0xe0, 0x23, 0xcd, 0x0b, 0xb3,
+ 0xa2, 0xe2, 0x88, 0x48, 0x65, 0x9b, 0x76, 0x21, 0xae, 0xe6, 0x41, 0x1d,
+ 0xd4, 0x15, 0x05, 0xc8, 0xff, 0x72, 0x5a, 0xfb, 0x7f, 0x05, 0x07, 0x7a,
+ 0xe6, 0x0b, 0xb5, 0x7c, 0x0a, 0xc9, 0x3d, 0xbb, 0x76, 0x24, 0xd7, 0x55,
+ 0xbe, 0xd8, 0x78, 0xd3, 0x6f, 0x9c, 0x01, 0x16, 0xc9, 0x96, 0xb6, 0xea,
+ 0x2c, 0x5d, 0xde, 0x95, 0xc5, 0xfc, 0x0a, 0x81, 0x31, 0x61, 0x35, 0x10,
+ 0xb6, 0xd1, 0x08, 0x74, 0x6c, 0x04, 0x1c, 0xae, 0x74, 0xec, 0x50, 0x0c,
+ 0x02, 0xbf, 0x81, 0xe0, 0xe7, 0xd1, 0x08, 0xa2, 0x3b, 0xf3, 0xd9, 0xa3,
+ 0xc4, 0xde, 0xf0, 0x44, 0x71, 0xc7, 0x4a, 0xef, 0x46, 0xdc, 0x03, 0x29,
+ 0x58, 0x63, 0x34, 0xee, 0xfc, 0x53, 0x1d, 0x51, 0xaa, 0x08, 0x03, 0x98,
+ 0x3e, 0x7e, 0xd7, 0x86, 0x74, 0xee, 0xd8, 0x68, 0x12, 0x61, 0xf2, 0x3d,
+ 0x94, 0x24, 0xf9, 0xff, 0x16, 0x1e, 0xfa, 0xec, 0xd3, 0xc8, 0xf9, 0x9f,
+ 0x71, 0xb3, 0xfe, 0x0f, 0x22, 0xde, 0xae, 0x6d, 0xde, 0x50, 0xf4, 0x44,
+ 0x51, 0x90, 0xe5, 0x62, 0xd9, 0x14, 0x8c, 0x27, 0xa7, 0xc8, 0x60, 0x15,
+ 0x8f, 0x4e, 0xbf, 0x7b, 0xde, 0x67, 0xaf, 0xd6, 0x79, 0x5c, 0x29, 0xe4,
+ 0xf8, 0xf5, 0xfe, 0x69, 0xc7, 0xcd, 0x70, 0x55, 0x55, 0xe9, 0x22, 0x37,
+ 0x73, 0xcd, 0x23, 0xd6, 0x23, 0x6f, 0x1e, 0x8f, 0x8c, 0x44, 0xba, 0x5d,
+ 0xa6, 0xa3, 0xb2, 0xab, 0x71, 0x3c, 0x73, 0xf6, 0x9c, 0xcb, 0xbf, 0x4e,
+ 0x62, 0x75, 0xf7, 0x31, 0x63, 0x54, 0x5e, 0x3f, 0x92, 0x60, 0xad, 0x64,
+ 0xd4, 0x4a, 0xab, 0xee, 0x9e, 0x98, 0xd8, 0x97, 0xda, 0x0e, 0xb1, 0x95,
+ 0xa9, 0xd5, 0xbe, 0xf5, 0x87, 0x1a, 0xef, 0x48, 0x09, 0xf3, 0x7d, 0x6d,
+ 0x31, 0x28, 0xa8, 0xbe, 0xa8, 0x66, 0x2f, 0xa8, 0x76, 0xd1, 0x97, 0x97,
+ 0x00, 0x0c, 0xaf, 0xa2, 0xcc, 0xd2, 0x3b, 0x14, 0x73, 0x70, 0x49, 0xc9,
+ 0x03, 0x2d, 0x64, 0xab, 0xbb, 0x2e, 0x15, 0xb8, 0x34, 0x23, 0x76, 0x3e,
+ 0xce, 0x17, 0xe9, 0x54, 0xf3, 0x84, 0x93, 0x87, 0x4a, 0xc1, 0xb5, 0x2b,
+ 0x69, 0x35, 0x27, 0x34, 0xcf, 0xda, 0x99, 0xa0, 0xfb, 0x4c, 0xfe, 0x01,
+ 0x00, 0xba, 0xd5, 0xc7, 0x0c, 0xd2, 0xe0, 0x15, 0x8c, 0x4a, 0x6d, 0x15,
+ 0xc8, 0x06, 0x61, 0x96, 0x87, 0x07, 0xe2, 0x34, 0x37, 0x36, 0x14, 0x71,
+ 0x46, 0xda, 0xce, 0x8b, 0xe7, 0x3b, 0x49, 0x95, 0xde, 0x03, 0x98, 0xa8,
+ 0xd2, 0x97, 0x9f, 0x0e, 0x9f, 0x6c, 0x3d, 0x1d, 0x3e, 0x4d, 0x7c, 0x9d,
+ 0x6c, 0xf8, 0x1e, 0xb5, 0x79, 0x62, 0x9d, 0x11, 0x20, 0x8d, 0x85, 0x7a,
+ 0xbd, 0x3b, 0x3c, 0x60, 0x69, 0xc4, 0xd2, 0xc6, 0x5b, 0x4a, 0xae, 0x21,
+ 0xa2, 0xd1, 0xc2, 0x59, 0xa5, 0xb7, 0x2e, 0xc5, 0xbc, 0x63, 0x39, 0x8c,
+ 0x34, 0x91, 0xf3, 0x31, 0x77, 0x03, 0x61, 0x5e, 0x29, 0x54, 0xaa, 0xeb,
+ 0xd2, 0x89, 0xbe, 0x13, 0x2e, 0x49, 0x88, 0x1b, 0xf0, 0x70, 0x71, 0xb3,
+ 0xaa, 0x26, 0x4d, 0xbd, 0xec, 0x8e, 0x0f, 0x3b, 0x53, 0x33, 0xb4, 0x84,
+ 0xda, 0xdc, 0x71, 0xe9, 0x98, 0x4a, 0x8b, 0xce, 0xf0, 0x3b, 0x96, 0x92,
+ 0xd1, 0xc8, 0xd2, 0xb1, 0xb8, 0xa7, 0x61, 0x5c, 0xb8, 0xb7, 0x91, 0x1f,
+ 0xa3, 0xe5, 0xca, 0x50, 0xeb, 0xbc, 0x37, 0xe8, 0xd9, 0x35, 0x65, 0x51,
+ 0x53, 0xdc, 0x59, 0x2d, 0xb6, 0xf2, 0x76, 0x89, 0x9b, 0x7f, 0xb8, 0xdc,
+ 0x5a, 0xf3, 0x6d, 0x40, 0xaa, 0xfc, 0x3c, 0xab, 0xb5, 0x7a, 0x6e, 0xf2,
+ 0xf2, 0xe4, 0xf4, 0xe2, 0xd5, 0x6d, 0x3a, 0x8d, 0xa2, 0x7b, 0x18, 0xe1,
+ 0xd5, 0x2a, 0x0d, 0x3b, 0x3b, 0x3e, 0xbf, 0x19, 0xa4, 0xdb, 0x9d, 0xbb,
+ 0xac, 0x33, 0x7b, 0xb2, 0x0b, 0xd1, 0xec, 0xe2, 0xe2, 0xcf, 0xa7, 0x87,
+ 0xaf, 0x5e, 0xb2, 0x17, 0xe0, 0x0b, 0x76, 0xc5, 0x54, 0x0d, 0xa7, 0x00,
+ 0x17, 0xb4, 0x8f, 0x6f, 0xc6, 0x1f, 0x5e, 0x1f, 0x9d, 0x9f, 0x1e, 0x9f,
+ 0x1c, 0xbc, 0x7a, 0xf9, 0x03, 0x5b, 0x1b, 0x68, 0xf5, 0xee, 0x83, 0x77,
+ 0xdd, 0x67, 0x2e, 0x81, 0x26, 0xae, 0xe5, 0x79, 0xf8, 0xfd, 0x87, 0xc3,
+ 0x77, 0xdf, 0xbd, 0x7a, 0x79, 0x9b, 0x96, 0x7d, 0x9e, 0x9f, 0xbc, 0xcd,
+ 0x88, 0x4a, 0x1d, 0x55, 0xde, 0x83, 0x35, 0xba, 0x40, 0x71, 0xd7, 0x05,
+ 0xc7, 0x92, 0x3e, 0x10, 0x50, 0x08, 0x2e, 0xeb, 0xab, 0x67, 0x36, 0xa9,
+ 0x23, 0x08, 0x5e, 0xd4, 0x95, 0x73, 0xe1, 0x90, 0xef, 0xcf, 0x8e, 0xbb,
+ 0x2a, 0x3d, 0xd7, 0x41, 0x81, 0x19, 0x5f, 0x5e, 0x48, 0xed, 0x63, 0xbe,
+ 0x61, 0xd4, 0xf2, 0x39, 0x70, 0xe9, 0x92, 0x0a, 0x72, 0xfc, 0x60, 0xf4,
+ 0xa4, 0xf0, 0x2e, 0x1f, 0x99, 0xed, 0x2a, 0xdb, 0x4a, 0xf8, 0x14, 0x4d,
+ 0x21, 0x07, 0x5c, 0xc8, 0x96, 0xc5, 0x24, 0x4d, 0x63, 0xb3, 0x5f, 0x90,
+ 0x04, 0x84, 0xb0, 0x0b, 0x48, 0x35, 0x1c, 0xfc, 0x83, 0xf9, 0x1d, 0x08,
+ 0xf0, 0xba, 0xe4, 0x3c, 0x35, 0x67, 0xa1, 0x18, 0x7a, 0x2b, 0x6b, 0x53,
+ 0x70, 0x6d, 0x86, 0x1b, 0x37, 0xae, 0x52, 0xe8, 0xb7, 0x99, 0x4e, 0x63,
+ 0xc9, 0x8e, 0x41, 0x5d, 0xa4, 0x8e, 0x84, 0xcb, 0x06, 0x10, 0xb3, 0xfa,
+ 0xa0, 0x59, 0xa4, 0xe4, 0x6c, 0x50, 0x4e, 0xe8, 0x75, 0x41, 0xe8, 0xb2,
+ 0xb1, 0x1e, 0xec, 0x3f, 0xf6, 0x62, 0xb3, 0x4f, 0x62, 0xe8, 0xce, 0x9c,
+ 0x1d, 0xb6, 0xc2, 0x55, 0x39, 0xd8, 0x38, 0xdf, 0x74, 0x09, 0xb4, 0xdc,
+ 0xe2, 0xe9, 0xfb, 0x8b, 0x20, 0x77, 0x3a, 0x8a, 0x53, 0x8c, 0x0e, 0x61,
+ 0x5b, 0x50, 0xf6, 0x0b, 0xb5, 0x3e, 0x58, 0x6f, 0xd7, 0xc9, 0x32, 0x6f,
+ 0x07, 0x71, 0x86, 0x7c, 0x1e, 0xc2, 0x61, 0xa4, 0x9d, 0xb5, 0x9e, 0x24,
+ 0x79, 0x30, 0xd9, 0xd7, 0x00, 0xb4, 0x8c, 0x8b, 0x39, 0xb5, 0xfa, 0x18,
+ 0xae, 0xb3, 0xad, 0xd9, 0x79, 0x52, 0xd5, 0xe5, 0xba, 0x19, 0xa5, 0x89,
+ 0xde, 0x6b, 0x56, 0xba, 0x97, 0xe2, 0xc3, 0x62, 0x0a, 0x3c, 0xd4, 0xd6,
+ 0xd0, 0xe0, 0x5a, 0x19, 0x11, 0xe5, 0x75, 0x94, 0x84, 0x02, 0xa7, 0x46,
+ 0x1d, 0x87, 0x29, 0x32, 0x9c, 0x19, 0xee, 0x00, 0xd1, 0x7e, 0x06, 0xd0,
+ 0xaf, 0x6e, 0x46, 0x73, 0x26, 0x4b, 0x9b, 0x10, 0xe6, 0xbb, 0xf0, 0xd2,
+ 0x64, 0x13, 0x3b, 0x16, 0xf5, 0xcf, 0x2d, 0x01, 0x99, 0x59, 0xe1, 0xe0,
+ 0xc2, 0xc7, 0x6b, 0x72, 0xb8, 0x65, 0x67, 0xe8, 0x1d, 0xaa, 0x85, 0x0e,
+ 0x2e, 0x22, 0x28, 0x46, 0x7e, 0x81, 0x83, 0x15, 0x83, 0xe4, 0x08, 0xc4,
+ 0x06, 0xf3, 0xdc, 0x85, 0x92, 0x34, 0x87, 0x0b, 0x42, 0xc5, 0x50, 0x43,
+ 0xa7, 0xd9, 0x25, 0xb4, 0x22, 0x53, 0xbe, 0x4a, 0xd6, 0xaf, 0xa6, 0xc5,
+ 0x68, 0x44, 0x93, 0x5a, 0x77, 0x85, 0x85, 0x2e, 0x88, 0x6d, 0x5e, 0x41,
+ 0xe8, 0xed, 0x1b, 0x50, 0xa7, 0x3f, 0xac, 0x28, 0xc8, 0x87, 0xbe, 0x56,
+ 0x65, 0x7b, 0xf3, 0xee, 0xaa, 0x7b, 0x4b, 0x77, 0x15, 0xd5, 0xf2, 0xee,
+ 0x83, 0x52, 0xbe, 0x12, 0x83, 0x27, 0x78, 0xd5, 0xd6, 0x7f, 0x14, 0xc0,
+ 0xcd, 0xd9, 0xc9, 0x3e, 0x8f, 0x58, 0x99, 0x0f, 0x58, 0x8e, 0x16, 0x4a,
+ 0xcb, 0x3b, 0x32, 0x87, 0x79, 0xc2, 0x34, 0x81, 0xf5, 0xff, 0xe0, 0x51,
+ 0xec, 0xf4, 0xf9, 0xdf, 0xdd, 0xbf, 0xaf, 0x5b, 0x39, 0x3c, 0x2e, 0x40,
+ 0x2a, 0x83, 0xaf, 0xb9, 0x02, 0x59, 0x65, 0x35, 0xf8, 0x3a, 0x4a, 0xee,
+ 0xb1, 0xc3, 0x78, 0x65, 0xeb, 0xf9, 0xec, 0xea, 0xc7, 0x9d, 0xc1, 0xce,
+ 0xf6, 0xf6, 0xf6, 0xcf, 0xc3, 0x05, 0x2f, 0xdd, 0x25, 0x9a, 0xa7, 0x7f,
+ 0x87, 0x8b, 0x7c, 0xcc, 0xce, 0x0c, 0xda, 0xcc, 0x3c, 0xe5, 0xa6, 0xb7,
+ 0xa4, 0xbf, 0xad, 0xe0, 0xe6, 0xaf, 0xc7, 0x8b, 0xc1, 0xbc, 0xe8, 0x0a,
+ 0x8e, 0xba, 0x58, 0x96, 0xf3, 0x24, 0x28, 0x26, 0xfd, 0xe1, 0xdd, 0xc9,
+ 0xeb, 0xc3, 0xe3, 0xfd, 0x3f, 0x5b, 0x74, 0xb5, 0x43, 0xe2, 0xe0, 0x91,
+ 0x7c, 0xc8, 0xd2, 0xea, 0xfe, 0x43, 0x95, 0xd5, 0xf4, 0xe5, 0xc6, 0x93,
+ 0x4d, 0x8e, 0x3d, 0x6c, 0xef, 0x30, 0xbb, 0x3a, 0xe1, 0xeb, 0x53, 0x64,
+ 0x0e, 0x8d, 0x55, 0xf3, 0xb7, 0x77, 0x4b, 0x46, 0xd9, 0x69, 0x86, 0x3c,
+ 0xd7, 0xec, 0x13, 0x1a, 0x4d, 0x6f, 0xaa, 0xfc, 0x6f, 0x74, 0xef, 0x30,
+ 0xac, 0x69, 0x1c, 0xc9, 0x7e, 0xa1, 0x98, 0x1c, 0x75, 0xc2, 0xbf, 0x25,
+ 0x5f, 0x1d, 0x7f, 0xcb, 0x79, 0x04, 0x4e, 0xa7, 0x99, 0x09, 0x08, 0x44,
+ 0xf2, 0xc5, 0xb3, 0x9d, 0xdd, 0x4d, 0x57, 0x1f, 0x49, 0xd2, 0x9b, 0xf8,
+ 0x70, 0x46, 0x01, 0x15, 0x7f, 0xcb, 0x82, 0x42, 0x35, 0xc2, 0x95, 0xbd,
+ 0x97, 0x15, 0x51, 0x4d, 0x76, 0xcd, 0x01, 0x6f, 0x13, 0x51, 0x00, 0x35,
+ 0x10, 0x4e, 0x39, 0xf5, 0x28, 0xc2, 0x09, 0xbb, 0xf0, 0x79, 0x66, 0xc3,
+ 0xa0, 0xf6, 0x74, 0x42, 0xc3, 0xd1, 0x8c, 0xa5, 0x6e, 0xd9, 0xe4, 0x1f,
+ 0x2d, 0xeb, 0x3c, 0xea, 0xad, 0xa3, 0xd5, 0x9e, 0x56, 0x1c, 0x1f, 0xc0,
+ 0xf2, 0x47, 0xf2, 0xd2, 0x7e, 0xfb, 0x22, 0x8e, 0xa9, 0x4c, 0xe0, 0x6a,
+ 0x6c, 0xe3, 0x75, 0x41, 0x6c, 0x49, 0xf8, 0xf6, 0xe3, 0x60, 0x56, 0x5f,
+ 0x36, 0xaf, 0x91, 0x7e, 0x12, 0x07, 0xfe, 0x06, 0x95, 0x44, 0xd7, 0xcf,
+ 0xcf, 0x4e, 0xd7, 0xfb, 0xea, 0xc4, 0xa4, 0x3e, 0x06, 0xf4, 0x37, 0x8d,
+ 0x18, 0xd0, 0xc9, 0xcf, 0xb6, 0x9f, 0x3d, 0x55, 0xfb, 0x1e, 0x06, 0x8a,
+ 0x64, 0xe6, 0xd8, 0x1f, 0x82, 0xef, 0x5c, 0xed, 0x77, 0x80, 0xa9, 0xf8,
+ 0xcc, 0x4d, 0xa2, 0xbc, 0xe6, 0x24, 0xc5, 0x62, 0x22, 0x75, 0x59, 0x1f,
+ 0x8a, 0x87, 0xd1, 0x3d, 0x03, 0x4f, 0xc1, 0x20, 0x87, 0x51, 0xbc, 0xec,
+ 0xd3, 0xd6, 0x42, 0xba, 0x31, 0xbc, 0xb4, 0xdf, 0xba, 0x16, 0xd2, 0x97,
+ 0xa9, 0xc7, 0xa4, 0x41, 0x61, 0x06, 0x6a, 0xc6, 0x8b, 0xdc, 0x8d, 0xb2,
+ 0xb7, 0xd2, 0x9b, 0x62, 0xd5, 0x2a, 0x82, 0x39, 0x0e, 0xcd, 0x49, 0xac,
+ 0xd8, 0x54, 0x7e, 0xf1, 0x84, 0x2d, 0x2b, 0xd4, 0x4a, 0x3d, 0x7c, 0x38,
+ 0x1c, 0xb8, 0x3d, 0x3d, 0xb4, 0xf0, 0x92, 0xff, 0xed, 0x9c, 0x16, 0x7f,
+ 0xe1, 0x95, 0xce, 0xdf, 0x76, 0x5a, 0x32, 0xaf, 0xd6, 0xaa, 0xbb, 0xc9,
+ 0x45, 0xaa, 0x73, 0xfd, 0xf8, 0xde, 0xdd, 0xee, 0x0c, 0xb7, 0x3b, 0x1d,
+ 0xbd, 0x6f, 0xb8, 0x22, 0x67, 0x13, 0xc0, 0x8e, 0xa7, 0x63, 0xb8, 0xd7,
+ 0xec, 0xab, 0x05, 0x83, 0x70, 0x3a, 0x98, 0xa1, 0xf2, 0xad, 0xc0, 0x58,
+ 0xe4, 0x97, 0x1d, 0x74, 0x46, 0xa3, 0xe4, 0xd4, 0xd3, 0xe8, 0x64, 0xd2,
+ 0xa0, 0x76, 0x7e, 0xdd, 0xa0, 0x76, 0x7e, 0xd3, 0x41, 0xed, 0xfe, 0xba,
+ 0x41, 0xed, 0xfe, 0x56, 0x83, 0x2a, 0x07, 0x96, 0x8e, 0xd3, 0x0d, 0xcf,
+ 0x7e, 0xa6, 0x81, 0x7b, 0x0c, 0x98, 0x35, 0x63, 0x30, 0x53, 0x66, 0xa7,
+ 0x17, 0xca, 0xd1, 0x07, 0x87, 0xfa, 0xae, 0x0f, 0x9e, 0x12, 0x99, 0x21,
+ 0x8e, 0x99, 0xf6, 0xd5, 0x51, 0x2c, 0xdc, 0xb4, 0x6a, 0xd6, 0x50, 0x16,
+ 0x97, 0xf5, 0x72, 0x6e, 0xdd, 0xf8, 0x98, 0x31, 0x08, 0x75, 0xd1, 0x3c,
+ 0xc7, 0x59, 0xae, 0xe0, 0xd1, 0x8f, 0xc5, 0xe6, 0x3f, 0x6f, 0x4e, 0x98,
+ 0xc1, 0x98, 0x3a, 0x75, 0x32, 0x2b, 0x58, 0xce, 0xf1, 0x0d, 0xb8, 0xc6,
+ 0xf8, 0xc9, 0xc9, 0x72, 0xb6, 0x30, 0x90, 0x14, 0xae, 0x88, 0x22, 0xb1,
+ 0xdd, 0x62, 0x59, 0xa4, 0xbb, 0xf9, 0xaa, 0xc0, 0x9f, 0x3c, 0xce, 0x7e,
+ 0x64, 0xd8, 0xe1, 0x0a, 0x6f, 0xb8, 0xf3, 0x32, 0x01, 0x16, 0xe6, 0x84,
+ 0x8e, 0x7c, 0x2e, 0xa5, 0x1a, 0xa5, 0xc0, 0x75, 0x11, 0xe0, 0x31, 0xaa,
+ 0x0c, 0x2b, 0x32, 0xf8, 0xfb, 0x28, 0x9c, 0x80, 0x45, 0x66, 0x8e, 0xcd,
+ 0xe1, 0x30, 0x3e, 0xd5, 0x58, 0x38, 0xbd, 0x32, 0x2c, 0x78, 0x6b, 0x45,
+ 0xe1, 0x56, 0xd8, 0x01, 0xba, 0x7d, 0x2f, 0xa1, 0x75, 0x1a, 0x31, 0x44,
+ 0x83, 0xdb, 0xbe, 0x94, 0xbd, 0x1e, 0x15, 0x55, 0x26, 0xe9, 0x40, 0x58,
+ 0x8a, 0xc8, 0x66, 0x54, 0x8d, 0xf3, 0xfc, 0xb7, 0x74, 0x92, 0x49, 0xaf,
+ 0xe8, 0xe6, 0xe1, 0x0d, 0xe3, 0x48, 0x68, 0x6c, 0x99, 0xee, 0x59, 0x63,
+ 0xd3, 0xdc, 0x9e, 0xf1, 0x96, 0xb9, 0x1d, 0xfb, 0x3f, 0x67, 0xc3, 0xe8,
+ 0xff, 0xb9, 0xb8, 0x3b, 0xa7, 0xa0, 0xe6, 0xd3, 0x14, 0xb6, 0x24, 0x5d,
+ 0x1a, 0x01, 0xf2, 0x9e, 0x66, 0x29, 0x63, 0x1d, 0x98, 0x09, 0xfb, 0x3a,
+ 0xfb, 0x28, 0xca, 0x7f, 0x7c, 0xd9, 0x43, 0xb2, 0xe0, 0x08, 0x3b, 0x39,
+ 0x5b, 0xfb, 0xe7, 0x07, 0x47, 0x47, 0x0d, 0x23, 0x22, 0x2f, 0x9b, 0x24,
+ 0xf5, 0x20, 0x22, 0x2f, 0xa9, 0x38, 0xbf, 0xc9, 0xab, 0x57, 0x5d, 0x90,
+ 0x78, 0x02, 0x0a, 0xcc, 0x05, 0xea, 0xd3, 0x2a, 0xb7, 0xec, 0xec, 0x54,
+ 0x02, 0xd6, 0x96, 0x73, 0xb6, 0x0e, 0x70, 0x56, 0xcb, 0xf5, 0x92, 0x64,
+ 0xdd, 0xea, 0x1f, 0x4d, 0x90, 0xc3, 0xdf, 0x9a, 0xf4, 0x3a, 0xb2, 0x5e,
+ 0x4f, 0x4b, 0x4d, 0xcc, 0x45, 0xf4, 0x3d, 0xf2, 0x17, 0x24, 0x73, 0x95,
+ 0x61, 0x99, 0x58, 0x09, 0x14, 0x0a, 0xa4, 0x41, 0xda, 0x78, 0x51, 0xe3,
+ 0xd2, 0x49, 0xc8, 0x91, 0x65, 0x04, 0x66, 0xa8, 0xaa, 0xc5, 0xa5, 0x77,
+ 0x5a, 0x5c, 0x7a, 0x39, 0xcf, 0x3f, 0xc2, 0x06, 0x4a, 0xc2, 0xc2, 0x4b,
+ 0xce, 0x3c, 0x5d, 0x51, 0x4e, 0xf5, 0xc0, 0x6a, 0xfd, 0x39, 0xe4, 0x4c,
+ 0x5a, 0x04, 0xd4, 0x53, 0x93, 0x62, 0x65, 0x89, 0xb4, 0xd1, 0x0f, 0x2d,
+ 0x01, 0x60, 0xd8, 0x1d, 0xf6, 0xc7, 0x79, 0x56, 0xb3, 0x07, 0xa3, 0xa9,
+ 0x70, 0x3c, 0x6d, 0x8a, 0xc0, 0xcb, 0xbe, 0x95, 0xae, 0x85, 0x6c, 0xb3,
+ 0xb7, 0x52, 0x76, 0x0b, 0x12, 0x67, 0x83, 0xba, 0xb5, 0x9c, 0x5a, 0x67,
+ 0x12, 0x48, 0x58, 0xa6, 0x5a, 0x94, 0x7a, 0x2f, 0xf5, 0x74, 0x05, 0x05,
+ 0x0d, 0x93, 0x13, 0x47, 0x31, 0x83, 0x79, 0x1f, 0x91, 0xae, 0x75, 0x39,
+ 0xd6, 0xc0, 0x49, 0xfc, 0x3e, 0xb0, 0x3c, 0xec, 0x2e, 0x26, 0x85, 0xc2,
+ 0x5a, 0x6c, 0x8d, 0xbe, 0x6f, 0x54, 0x6f, 0x73, 0xa3, 0xeb, 0x1b, 0xe0,
+ 0xb4, 0x40, 0xbf, 0x2d, 0x48, 0x57, 0xe1, 0xca, 0x65, 0x90, 0xb5, 0xd3,
+ 0x48, 0x6d, 0x93, 0x49, 0x74, 0x43, 0xa7, 0x86, 0xb5, 0x82, 0x25, 0x87,
+ 0x51, 0x1f, 0x57, 0xf4, 0xc2, 0xc5, 0x34, 0xaf, 0xb9, 0xbc, 0xa8, 0x2b,
+ 0x03, 0xcd, 0x49, 0x00, 0xe3, 0x62, 0x4a, 0xfc, 0x26, 0xf2, 0x3c, 0xe4,
+ 0xae, 0xbe, 0x21, 0x1b, 0x81, 0x67, 0x8b, 0x82, 0x34, 0x62, 0x45, 0xa1,
+ 0x17, 0x7b, 0x1c, 0xde, 0x33, 0xdd, 0xbb, 0x51, 0xa5, 0x38, 0x06, 0x65,
+ 0x6e, 0xa8, 0x95, 0x48, 0x1e, 0xb4, 0xcd, 0x18, 0xa7, 0xb4, 0xa2, 0x88,
+ 0x0c, 0xec, 0x4e, 0xa5, 0xd2, 0x5b, 0x3e, 0xf9, 0x96, 0x68, 0x3c, 0x2b,
+ 0x0b, 0x3a, 0x0d, 0xdf, 0x3d, 0x33, 0x3c, 0x86, 0xef, 0xf3, 0xf9, 0x84,
+ 0x59, 0xcc, 0x28, 0x95, 0xc3, 0x87, 0xbd, 0xf4, 0xb5, 0x5d, 0x3b, 0x79,
+ 0xae, 0x30, 0x45, 0x7b, 0x53, 0x69, 0x55, 0xac, 0x77, 0xf3, 0xf6, 0xb6,
+ 0xb0, 0x61, 0x87, 0xc6, 0xc8, 0x33, 0x8b, 0x11, 0x2d, 0x1d, 0x64, 0xb0,
+ 0x55, 0x6d, 0xf4, 0x68, 0x8b, 0xac, 0x55, 0x15, 0x23, 0x14, 0x56, 0xa1,
+ 0x51, 0xba, 0x91, 0x5f, 0xe4, 0x7c, 0x22, 0xac, 0xd4, 0x78, 0xfb, 0x78,
+ 0x22, 0x34, 0x5e, 0x8a, 0x42, 0x06, 0x28, 0x91, 0x2d, 0x79, 0x9c, 0x6b,
+ 0x80, 0x55, 0xd7, 0x9c, 0x9b, 0xc0, 0x66, 0x2f, 0xd8, 0xff, 0xd6, 0xba,
+ 0xe3, 0x9e, 0x0d, 0x57, 0xb9, 0xdf, 0x3a, 0x09, 0x11, 0x54, 0x8a, 0x91,
+ 0xa6, 0xc5, 0x3d, 0xac, 0x2c, 0x3f, 0x1d, 0xd4, 0x10, 0x00, 0x07, 0xc7,
+ 0xd2, 0xf5, 0x35, 0x32, 0xb5, 0x54, 0xdf, 0x81, 0x59, 0x04, 0x65, 0x5d,
+ 0xe3, 0x8b, 0x81, 0x13, 0x50, 0x2a, 0x98, 0x8b, 0x61, 0x45, 0x95, 0x5a,
+ 0x93, 0x97, 0xbe, 0xd6, 0x44, 0x4c, 0xd7, 0xcd, 0x92, 0x87, 0xe1, 0x86,
+ 0x31, 0x19, 0x4a, 0x56, 0x5f, 0xf2, 0xba, 0xb8, 0x9b, 0x0f, 0x8e, 0x39,
+ 0x36, 0x39, 0x39, 0x2e, 0xae, 0x58, 0x6b, 0x7d, 0x07, 0x52, 0x8c, 0x76,
+ 0xed, 0xfd, 0xe9, 0xbb, 0x64, 0xe3, 0x3d, 0xcf, 0xe9, 0xd4, 0xf9, 0xcc,
+ 0xf8, 0xd1, 0x4d, 0x2d, 0x6b, 0x4d, 0xec, 0x31, 0xa8, 0x7c, 0xd1, 0x4f,
+ 0x0e, 0x7f, 0xd8, 0x7f, 0x7b, 0x7a, 0x7c, 0xf8, 0xd3, 0x0a, 0xa5, 0x96,
+ 0x3f, 0xfe, 0xd2, 0x86, 0x4e, 0x97, 0xbf, 0x15, 0x15, 0xa2, 0x4b, 0x7b,
+ 0x7a, 0xbf, 0x8a, 0x17, 0xc8, 0xf1, 0x31, 0x12, 0x3c, 0x3f, 0x3f, 0x3d,
+ 0x1a, 0x28, 0x36, 0x85, 0xf0, 0x01, 0x85, 0x0a, 0x94, 0x03, 0x6c, 0xf9,
+ 0x98, 0xdf, 0xc6, 0xf1, 0xd8, 0xee, 0x3c, 0xf4, 0x3d, 0x34, 0x78, 0x5f,
+ 0xc0, 0xb4, 0x69, 0x0a, 0xdd, 0x70, 0xec, 0xb5, 0x61, 0x5e, 0x8c, 0x23,
+ 0x8b, 0x50, 0x1d, 0x16, 0x9c, 0xab, 0xb2, 0x69, 0xa6, 0x88, 0xbc, 0x2b,
+ 0xb8, 0xa8, 0x40, 0xf8, 0x60, 0x17, 0xe1, 0xa7, 0x68, 0x8f, 0xce, 0xfc,
+ 0x16, 0x23, 0xc7, 0xf5, 0xd4, 0xa7, 0x2f, 0x14, 0x22, 0xdc, 0xa3, 0x5d,
+ 0x38, 0x6e, 0x8f, 0x44, 0x99, 0x65, 0xb2, 0xb7, 0xfe, 0x1b, 0xca, 0x7a,
+ 0xef, 0x5d, 0x98, 0xc1, 0x2f, 0xb9, 0x4e, 0x3e, 0xf1, 0x3e, 0xd1, 0xaa,
+ 0xb8, 0x0f, 0x5f, 0x27, 0xbf, 0x9c, 0x2c, 0xf4, 0x7e, 0x50, 0xc2, 0x10,
+ 0xca, 0x98, 0x10, 0xcb, 0x11, 0xea, 0x6f, 0xbb, 0x93, 0x7c, 0x1a, 0x06,
+ 0xdf, 0x20, 0xdd, 0x10, 0xee, 0x62, 0x57, 0x71, 0xa9, 0xeb, 0xe1, 0xde,
+ 0x47, 0x7a, 0xf9, 0x27, 0x51, 0x02, 0x08, 0x21, 0xf4, 0x57, 0xe9, 0xbe,
+ 0xc7, 0x51, 0x84, 0x9f, 0x4a, 0x07, 0xef, 0x7f, 0x5b, 0x3a, 0x18, 0xf0,
+ 0x6c, 0x5f, 0xbe, 0x3f, 0x3b, 0x5e, 0xb9, 0xe5, 0xa9, 0x5a, 0xa1, 0x99,
+ 0xb9, 0x5f, 0x66, 0xf5, 0xf8, 0xba, 0x99, 0xa4, 0xc8, 0xa5, 0xaa, 0x8a,
+ 0x8a, 0x63, 0x78, 0x99, 0x2b, 0xdf, 0x3b, 0x38, 0x99, 0x28, 0xe5, 0x56,
+ 0x05, 0x6f, 0x6d, 0x96, 0x9a, 0x64, 0x48, 0x00, 0x04, 0xb7, 0x07, 0xf0,
+ 0xc7, 0x0f, 0x4a, 0xac, 0x0a, 0xd1, 0x29, 0xf8, 0xce, 0x0d, 0x88, 0x5a,
+ 0x85, 0x4f, 0x65, 0x36, 0xe9, 0x2a, 0xb3, 0x8a, 0x85, 0xbf, 0x13, 0x0c,
+ 0x07, 0xf3, 0x61, 0x04, 0x15, 0xf1, 0xe4, 0xf6, 0x5d, 0xd2, 0xe3, 0xa0,
+ 0xe0, 0x63, 0xa1, 0xba, 0x82, 0xe6, 0xa9, 0x34, 0x70, 0x25, 0xba, 0x3c,
+ 0x59, 0xea, 0x49, 0x75, 0xc2, 0x71, 0x43, 0x7a, 0x6e, 0xbd, 0xf0, 0x55,
+ 0x26, 0x65, 0xa6, 0x4c, 0x58, 0xdd, 0xaa, 0xd3, 0xe9, 0x8d, 0x00, 0x0f,
+ 0x90, 0x32, 0x50, 0x2a, 0xa0, 0x82, 0xa1, 0xcd, 0x69, 0x0a, 0x14, 0x31,
+ 0x6a, 0x06, 0x2f, 0xee, 0xc4, 0x93, 0x1e, 0x2d, 0xaf, 0xae, 0xbc, 0x7e,
+ 0x5c, 0x65, 0x99, 0x94, 0x6a, 0x26, 0xe9, 0xb7, 0x57, 0x25, 0xa2, 0x79,
+ 0xd1, 0xca, 0xad, 0x2f, 0xe7, 0x13, 0x05, 0x5e, 0xbe, 0x2e, 0x8a, 0xc9,
+ 0xfa, 0x30, 0xd9, 0x87, 0x98, 0x1c, 0x43, 0xc2, 0x94, 0xde, 0xd2, 0xd1,
+ 0xfb, 0xa2, 0xa7, 0x49, 0xe3, 0xeb, 0x5a, 0xed, 0x9d, 0x75, 0xb8, 0x75,
+ 0xd1, 0xa1, 0x18, 0x54, 0x90, 0x4f, 0x0a, 0x5d, 0x87, 0xbd, 0x97, 0xbd,
+ 0xa4, 0x13, 0x95, 0xc0, 0x5e, 0xd3, 0xf7, 0xd4, 0x84, 0x20, 0x10, 0x75,
+ 0x63, 0xe7, 0x83, 0xa4, 0x7d, 0xb8, 0xce, 0x49, 0xe0, 0x55, 0x97, 0x14,
+ 0x43, 0x3c, 0x48, 0x14, 0x48, 0x5b, 0x18, 0x43, 0xdd, 0x2f, 0x91, 0xee,
+ 0x5b, 0x03, 0xfd, 0x83, 0x0d, 0xd4, 0xea, 0x6d, 0x01, 0x54, 0xf2, 0xb2,
+ 0x48, 0x3c, 0x86, 0x5c, 0x8c, 0xf1, 0xc7, 0x23, 0x88, 0x9d, 0xd0, 0xf0,
+ 0xf9, 0x8a, 0xc1, 0x8e, 0x13, 0xa0, 0xc0, 0x1a, 0xc4, 0x40, 0x0c, 0x0a,
+ 0x96, 0xfc, 0x77, 0xad, 0xc9, 0x6e, 0xb2, 0x92, 0xd0, 0x0b, 0x6d, 0x7a,
+ 0x1e, 0x43, 0xef, 0x9b, 0xb8, 0xe5, 0xd4, 0x36, 0x5f, 0x6a, 0x07, 0x50,
+ 0x4a, 0x25, 0xe7, 0x57, 0x16, 0x00, 0x40, 0xbc, 0xec, 0x28, 0x1b, 0xa4,
+ 0x4c, 0xd1, 0xdc, 0xae, 0x41, 0x69, 0xd1, 0x5a, 0x32, 0xdc, 0x25, 0x03,
+ 0x86, 0xd5, 0x63, 0x3c, 0x98, 0xcd, 0xa5, 0xc0, 0xba, 0xba, 0x33, 0xfa,
+ 0x31, 0x9c, 0xb9, 0x20, 0x61, 0x58, 0x16, 0xba, 0x53, 0x9e, 0x9a, 0xca,
+ 0xbf, 0x05, 0x4a, 0xfc, 0x5a, 0xfd, 0xb1, 0xd1, 0x58, 0xa8, 0x3f, 0x76,
+ 0xf8, 0x54, 0xc3, 0x0c, 0xca, 0x26, 0x4e, 0x31, 0x92, 0x26, 0x03, 0x5e,
+ 0x75, 0xc7, 0x0f, 0x22, 0xd4, 0x83, 0x8f, 0x68, 0xf2, 0x52, 0x64, 0x95,
+ 0xd5, 0x09, 0xe1, 0x16, 0x72, 0x10, 0x18, 0x14, 0x12, 0x2c, 0x1d, 0x72,
+ 0x1a, 0x0d, 0x1e, 0x9c, 0xcd, 0x5f, 0xd3, 0x8c, 0x1d, 0x68, 0x70, 0x9b,
+ 0x44, 0xf6, 0x5d, 0xb6, 0xe8, 0xb1, 0xac, 0x2e, 0x6d, 0xa8, 0x7c, 0x57,
+ 0x97, 0xce, 0xe5, 0xc7, 0x5c, 0x49, 0x91, 0x88, 0x12, 0x0d, 0x1a, 0xa1,
+ 0x8b, 0xe4, 0x23, 0x67, 0x7b, 0x72, 0x85, 0xb9, 0xae, 0x92, 0x20, 0xe0,
+ 0x5e, 0x01, 0xfb, 0xb2, 0xa0, 0x86, 0xaa, 0xd1, 0x53, 0x24, 0xa3, 0x92,
+ 0x68, 0x9a, 0x46, 0xa0, 0xfb, 0x35, 0x38, 0xfe, 0xba, 0x8c, 0x68, 0x1d,
+ 0x20, 0xd6, 0xe6, 0x84, 0x84, 0xf1, 0x43, 0x51, 0x58, 0xd2, 0x89, 0xc2,
+ 0xdc, 0x4a, 0xdb, 0x06, 0x3d, 0xb8, 0xd6, 0x85, 0xfd, 0x2a, 0x63, 0x5c,
+ 0xff, 0xd2, 0x0c, 0x29, 0xeb, 0xe6, 0x33, 0x6d, 0xc8, 0x46, 0xae, 0x4d,
+ 0x6d, 0xb2, 0xc3, 0xb9, 0x24, 0x5e, 0x61, 0x00, 0x90, 0xf0, 0xae, 0x51,
+ 0x93, 0x83, 0xf5, 0x4e, 0x95, 0xcd, 0x2d, 0x40, 0xa2, 0xd5, 0x9b, 0x9a,
+ 0x47, 0xcb, 0xba, 0x70, 0xa0, 0xe0, 0xa8, 0xf3, 0x56, 0xe7, 0xf5, 0x32,
+ 0xf6, 0xd7, 0x28, 0xda, 0x69, 0x92, 0xc0, 0x19, 0x07, 0x26, 0xce, 0x9b,
+ 0xe1, 0x3d, 0x66, 0x38, 0x4b, 0x6c, 0x25, 0xaa, 0x11, 0x0b, 0x2a, 0x96,
+ 0x27, 0x86, 0x77, 0x06, 0x98, 0x77, 0x54, 0xc5, 0x99, 0x7a, 0xf4, 0xa3,
+ 0x6b, 0xfa, 0x6b, 0xe8, 0xed, 0xdf, 0xff, 0x87, 0x7d, 0x09, 0xfc, 0xd4,
+ 0xbf, 0xdb, 0x4a, 0x99, 0x7b, 0xbc, 0xbd, 0xc0, 0xca, 0xdf, 0x92, 0xdf,
+ 0x63, 0x55, 0x80, 0xff, 0x2e, 0x4b, 0x23, 0x95, 0x86, 0xa9, 0xc1, 0xdf,
+ 0x0f, 0x9d, 0x53, 0x5c, 0x1b, 0x49, 0x93, 0x79, 0x76, 0x07, 0xb6, 0x17,
+ 0xf1, 0x30, 0x39, 0xc6, 0x3f, 0xcd, 0xb9, 0x2c, 0xe5, 0x38, 0xa5, 0xe3,
+ 0xc8, 0xee, 0x4c, 0x81, 0x36, 0x91, 0x5d, 0xfc, 0xa9, 0x54, 0xb6, 0x59,
+ 0xa7, 0x23, 0xc1, 0xaf, 0xd6, 0xcf, 0x63, 0xdb, 0x17, 0x47, 0x9c, 0xec,
+ 0x61, 0x37, 0x7e, 0x3f, 0x10, 0x70, 0x5c, 0xa5, 0x75, 0xc5, 0xba, 0xb6,
+ 0xcf, 0x64, 0x63, 0xee, 0xf2, 0xf9, 0x93, 0xdd, 0x41, 0x20, 0xe9, 0xf4,
+ 0x3b, 0x83, 0xf6, 0xc4, 0x8a, 0x5b, 0x8c, 0xc7, 0x70, 0xba, 0xb1, 0xc5,
+ 0x1d, 0x76, 0xe9, 0xdf, 0x2b, 0x0a, 0x92, 0x64, 0xd3, 0x2f, 0x21, 0xdd,
+ 0x05, 0x05, 0x2e, 0x57, 0x3a, 0xba, 0x1e, 0x21, 0x1e, 0x0f, 0x52, 0xd6,
+ 0x15, 0xd5, 0xc4, 0x87, 0x94, 0x06, 0xfa, 0x01, 0x9e, 0x35, 0x79, 0xf5,
+ 0x40, 0x3e, 0x1a, 0x5c, 0xf0, 0x47, 0x16, 0xc0, 0xa6, 0xb9, 0xea, 0xd9,
+ 0xc4, 0x87, 0xb6, 0x72, 0x46, 0xfc, 0xe5, 0xc3, 0xf5, 0xf2, 0x44, 0xfb,
+ 0xe3, 0x28, 0x59, 0x3a, 0xdc, 0xd1, 0x38, 0xed, 0x28, 0x7d, 0x90, 0x6a,
+ 0x6e, 0xf9, 0x6d, 0xf6, 0x70, 0x6b, 0x62, 0xc7, 0x98, 0x92, 0x5c, 0x93,
+ 0x1a, 0x26, 0x9b, 0x58, 0x15, 0x02, 0xcf, 0xaf, 0xc4, 0xbc, 0x09, 0xb4,
+ 0xca, 0xf0, 0xb1, 0xe6, 0xc4, 0xae, 0x89, 0x9b, 0x2c, 0xa8, 0x2c, 0x4a,
+ 0x57, 0x9c, 0x81, 0xb4, 0xd4, 0xc5, 0x14, 0x94, 0x2b, 0xed, 0x3e, 0x32,
+ 0xd7, 0x42, 0x2c, 0xc0, 0x01, 0xb7, 0xc0, 0xca, 0x35, 0xe1, 0xb7, 0xc0,
+ 0xf7, 0x3b, 0x0d, 0x99, 0x49, 0xe7, 0xde, 0x26, 0x47, 0xc0, 0x07, 0x28,
+ 0x24, 0xd4, 0x09, 0xc3, 0x03, 0xa4, 0xf5, 0xc8, 0x60, 0x76, 0x5d, 0x4f,
+ 0x0f, 0x37, 0xe7, 0x46, 0x21, 0xd7, 0xf4, 0x20, 0x10, 0xd2, 0x86, 0xed,
+ 0x2c, 0xbb, 0x9d, 0x28, 0xe0, 0xf8, 0xb2, 0x5e, 0x7c, 0x00, 0x70, 0xed,
+ 0x07, 0x00, 0xce, 0x5d, 0x04, 0x56, 0x08, 0x7c, 0x80, 0xf5, 0x12, 0x68,
+ 0x40, 0xd2, 0xd9, 0x73, 0x2d, 0xed, 0x35, 0x2d, 0x44, 0x0c, 0x8b, 0x22,
+ 0x29, 0xe3, 0x95, 0x6b, 0xd5, 0xdf, 0x30, 0xa7, 0x51, 0x2b, 0x95, 0xec,
+ 0x69, 0x34, 0x30, 0x0e, 0xd0, 0xf8, 0x00, 0x24, 0x1e, 0x47, 0x21, 0x74,
+ 0x83, 0x64, 0x25, 0x97, 0x40, 0x68, 0x41, 0xf5, 0x08, 0xae, 0x23, 0xf2,
+ 0x8a, 0x97, 0x73, 0x0b, 0x0c, 0x79, 0x78, 0x60, 0xd0, 0x13, 0xac, 0x62,
+ 0x2b, 0x93, 0xbe, 0x45, 0x4e, 0x41, 0x7b, 0xa2, 0x81, 0xb2, 0xb4, 0x6e,
+ 0x71, 0x05, 0xb4, 0x55, 0x8f, 0xcc, 0x13, 0xc9, 0x28, 0xbb, 0x82, 0x0b,
+ 0x3d, 0xcd, 0x53, 0x0f, 0x9d, 0x29, 0x33, 0xc0, 0x31, 0xc1, 0x7c, 0x61,
+ 0x32, 0xba, 0x2e, 0xee, 0x1e, 0x3d, 0x5c, 0x12, 0x10, 0xc3, 0x57, 0xf9,
+ 0x70, 0xc5, 0xca, 0x88, 0x25, 0x56, 0xcf, 0x8e, 0x5f, 0x1a, 0x59, 0x12,
+ 0x95, 0xe9, 0xda, 0x8b, 0xd2, 0x15, 0x3c, 0x97, 0xac, 0x40, 0x41, 0x4a,
+ 0x36, 0x1c, 0x5e, 0xaf, 0x14, 0x54, 0x72, 0x07, 0x41, 0xf4, 0x52, 0x2b,
+ 0xa3, 0xf4, 0x58, 0x73, 0xe0, 0x2e, 0x11, 0x46, 0x45, 0xbc, 0xe1, 0x88,
+ 0x09, 0xfc, 0x90, 0x2f, 0x42, 0x96, 0x70, 0x74, 0x1a, 0x60, 0x9e, 0x39,
+ 0x0f, 0x9f, 0x44, 0x0f, 0x32, 0x55, 0x1a, 0x13, 0xe3, 0x53, 0xf4, 0xd8,
+ 0x38, 0xc6, 0x88, 0x82, 0x10, 0x34, 0x93, 0x20, 0xc7, 0x7a, 0x60, 0x82,
+ 0x87, 0x1a, 0x95, 0x8e, 0x4e, 0x6f, 0x9f, 0x76, 0x98, 0x90, 0x5a, 0xff,
+ 0xd1, 0x53, 0xcf, 0x9b, 0x87, 0xeb, 0x45, 0x47, 0x32, 0x92, 0x4c, 0x49,
+ 0x20, 0xe5, 0x6c, 0x4a, 0x3a, 0xf8, 0x30, 0x51, 0x24, 0x98, 0x44, 0x73,
+ 0x9c, 0x0f, 0x8f, 0x21, 0x98, 0xc4, 0xa3, 0x23, 0xa1, 0x9e, 0x8c, 0x64,
+ 0xb8, 0x80, 0xf1, 0x3b, 0xd7, 0x31, 0xdd, 0xb5, 0x89, 0xfb, 0x02, 0xa0,
+ 0x29, 0x06, 0x08, 0x8b, 0x81, 0x24, 0xdd, 0x52, 0x62, 0xd2, 0x21, 0x34,
+ 0x3e, 0x0a, 0x42, 0xc2, 0x63, 0x30, 0x38, 0x8d, 0xca, 0x8d, 0x01, 0xdb,
+ 0x1a, 0x7c, 0xac, 0x84, 0x9b, 0xa1, 0xa6, 0x8a, 0xe2, 0x33, 0x7d, 0xca,
+ 0x89, 0x5e, 0x45, 0x68, 0xf1, 0x38, 0xac, 0xb3, 0x0f, 0x42, 0xc6, 0x30,
+ 0x9d, 0x1a, 0xd4, 0x97, 0x83, 0x91, 0x49, 0x75, 0x35, 0xcc, 0xf8, 0x39,
+ 0x38, 0x16, 0x8b, 0x40, 0x31, 0x7d, 0x64, 0x2d, 0x38, 0x7e, 0xd0, 0x4d,
+ 0x47, 0x73, 0x66, 0xec, 0xca, 0x56, 0xe0, 0x12, 0xc6, 0xa0, 0x00, 0xab,
+ 0x18, 0x73, 0x02, 0xce, 0xc3, 0xcd, 0x01, 0x80, 0xd1, 0x35, 0xe8, 0x32,
+ 0x0a, 0x80, 0x54, 0x23, 0xea, 0x1a, 0xdd, 0x86, 0x0f, 0xa0, 0x86, 0x74,
+ 0x32, 0xaa, 0x8e, 0x25, 0x61, 0x06, 0xed, 0x0e, 0xdf, 0x45, 0x18, 0x11,
+ 0x4c, 0x67, 0xd0, 0x8e, 0xe0, 0x7f, 0x9f, 0x50, 0x3b, 0x4f, 0x5b, 0x51,
+ 0xb6, 0xce, 0xd3, 0x63, 0x73, 0xe8, 0x24, 0x71, 0x9d, 0x83, 0x9d, 0xb6,
+ 0x70, 0x0e, 0xff, 0xe4, 0xc3, 0xc6, 0x31, 0x6b, 0x1f, 0x0c, 0xef, 0x57,
+ 0x46, 0x22, 0xa0, 0x63, 0x1e, 0xa7, 0x4b, 0x22, 0xcd, 0xe4, 0xe2, 0x62,
+ 0x52, 0xb7, 0xa7, 0x3b, 0x22, 0xc4, 0xd0, 0x9a, 0x99, 0x16, 0x1e, 0x6a,
+ 0xcd, 0x9c, 0xac, 0xae, 0x29, 0x28, 0xee, 0x8f, 0x90, 0x2b, 0xd7, 0x6e,
+ 0xe9, 0xec, 0xd1, 0x4e, 0x82, 0xae, 0xa4, 0x74, 0xf9, 0xc0, 0x0c, 0x02,
+ 0x35, 0xe6, 0xe1, 0x1e, 0xc3, 0x73, 0xd6, 0xdd, 0xb5, 0x46, 0xae, 0x26,
+ 0x9f, 0xb6, 0x74, 0x2b, 0x83, 0x6d, 0x49, 0x92, 0xcf, 0x26, 0x7e, 0x1f,
+ 0xb8, 0xad, 0x94, 0x0d, 0x86, 0x01, 0x18, 0xb3, 0x3c, 0x13, 0x48, 0x99,
+ 0x24, 0x2c, 0x56, 0xcb, 0x52, 0x20, 0xe1, 0x1e, 0xbf, 0xa3, 0x4d, 0x97,
+ 0x76, 0xed, 0x71, 0x44, 0x21, 0x8f, 0x6e, 0xc1, 0xe8, 0x98, 0x00, 0xeb,
+ 0x5a, 0x31, 0x2a, 0x37, 0x45, 0x2c, 0xae, 0x0d, 0xcb, 0x62, 0x76, 0xff,
+ 0x41, 0xa3, 0x92, 0xd6, 0x3e, 0x65, 0x4c, 0xd5, 0xf4, 0x03, 0x0d, 0x21,
+ 0xbf, 0xbc, 0xa7, 0x6d, 0xaf, 0x48, 0x0e, 0x7f, 0x5c, 0x5a, 0x97, 0xe7,
+ 0x8c, 0xe6, 0x18, 0x16, 0x81, 0xc6, 0x5c, 0x36, 0x00, 0x17, 0x12, 0x34,
+ 0x99, 0xaf, 0xac, 0x0c, 0xd2, 0x80, 0x60, 0x70, 0x32, 0x9c, 0x53, 0x47,
+ 0x86, 0x0c, 0x0c, 0x09, 0x33, 0x17, 0xf7, 0x60, 0x6d, 0x75, 0x64, 0xef,
+ 0x24, 0x6d, 0xd3, 0x6b, 0x15, 0x78, 0xe5, 0x86, 0x0f, 0x80, 0xc9, 0xba,
+ 0xfe, 0x49, 0x51, 0x49, 0x17, 0x0b, 0x3d, 0xe2, 0x8f, 0xcf, 0x5d, 0xb0,
+ 0xbc, 0x24, 0x7d, 0xa9, 0x40, 0x91, 0x2f, 0xa0, 0x63, 0xd6, 0x45, 0x71,
+ 0x63, 0x96, 0x06, 0xf1, 0x13, 0xb2, 0xd9, 0xee, 0xe1, 0xe6, 0x04, 0x8d,
+ 0x51, 0x1e, 0x67, 0x3c, 0x97, 0xf3, 0xf3, 0x6f, 0x18, 0xa8, 0xd5, 0xf1,
+ 0x9b, 0x2d, 0xef, 0xfb, 0x13, 0x59, 0xfa, 0xb1, 0x4b, 0xd0, 0x95, 0x84,
+ 0xc5, 0x3a, 0x38, 0x63, 0xcf, 0xa7, 0x2e, 0x43, 0x53, 0xac, 0xfc, 0x8d,
+ 0x26, 0x7a, 0x71, 0x70, 0xea, 0x26, 0x28, 0x42, 0x65, 0xa0, 0x24, 0x60,
+ 0xec, 0x1b, 0x8f, 0xd1, 0xb9, 0x4a, 0xa4, 0xcd, 0x39, 0x76, 0xce, 0x88,
+ 0xd5, 0x21, 0x36, 0x39, 0x2e, 0x17, 0xff, 0x0f, 0x6c, 0x2c, 0xe2, 0x1c,
+ 0x58, 0x90, 0x97, 0x5c, 0x62, 0x98, 0x70, 0x1f, 0x1f, 0x32, 0x97, 0x02,
+ 0xeb, 0x2e, 0x8d, 0xd7, 0xa5, 0x36, 0xcb, 0xa0, 0xe1, 0xb6, 0xee, 0x18,
+ 0xb6, 0xab, 0x9f, 0xf9, 0x8b, 0xc6, 0x2c, 0xa9, 0x41, 0x86, 0x13, 0xc8,
+ 0x43, 0x96, 0x7a, 0x86, 0x86, 0x6c, 0x4a, 0x37, 0x38, 0xe9, 0x7f, 0x9f,
+ 0xa4, 0x85, 0x8b, 0x41, 0x58, 0x90, 0xbd, 0x19, 0x07, 0xc1, 0xb5, 0xea,
+ 0x4b, 0xd5, 0x91, 0x1c, 0xcf, 0x71, 0x87, 0x8f, 0xb2, 0x89, 0x54, 0x93,
+ 0xbd, 0x50, 0xd3, 0xd5, 0x9b, 0xa6, 0xc6, 0xa6, 0x66, 0xa2, 0x06, 0xc9,
+ 0x78, 0xc9, 0x41, 0x4c, 0x1d, 0x59, 0x79, 0x91, 0x6a, 0x3a, 0x2e, 0xa6,
+ 0xe2, 0x93, 0xb9, 0x05, 0xba, 0x72, 0xf7, 0x5e, 0x78, 0xc9, 0xab, 0x9b,
+ 0x40, 0xf2, 0x5a, 0xd7, 0x59, 0x01, 0x5a, 0xed, 0xf9, 0x47, 0xd9, 0x14,
+ 0xb1, 0xb8, 0x85, 0x5b, 0x1e, 0x21, 0x12, 0x21, 0xd3, 0xbe, 0x3b, 0x1b,
+ 0x7d, 0x64, 0x20, 0x7f, 0x1a, 0x29, 0x08, 0x54, 0xac, 0x43, 0xf3, 0x34,
+ 0x08, 0x50, 0xad, 0xf5, 0x85, 0x34, 0x36, 0xfe, 0x52, 0x51, 0xc7, 0xef,
+ 0xa2, 0x6c, 0xe5, 0xa4, 0xc3, 0x35, 0xc2, 0x6c, 0xa3, 0xb9, 0x08, 0x3e,
+ 0xb8, 0xcb, 0x5d, 0x32, 0x49, 0xf6, 0x31, 0x8b, 0x2b, 0xbe, 0x74, 0xb1,
+ 0x78, 0x0d, 0x67, 0x42, 0x84, 0x8b, 0xcb, 0x0d, 0x09, 0xd6, 0x2b, 0x04,
+ 0x32, 0x7c, 0x54, 0x8a, 0xed, 0x12, 0xec, 0x31, 0x56, 0x8c, 0xfc, 0xd3,
+ 0x8f, 0xcf, 0x6f, 0xc3, 0xe2, 0x24, 0xc6, 0x06, 0x55, 0x49, 0xe2, 0xc3,
+ 0x33, 0xca, 0x3e, 0x55, 0xa9, 0x02, 0xba, 0x5a, 0xf3, 0x18, 0xb5, 0x19,
+ 0x84, 0xee, 0x7c, 0x07, 0x10, 0x6e, 0x87, 0x64, 0xa0, 0x3b, 0xd0, 0x08,
+ 0x62, 0x61, 0x1c, 0xed, 0x6c, 0x62, 0x28, 0x53, 0x53, 0x3e, 0x3e, 0x75,
+ 0xf6, 0x29, 0x37, 0x0d, 0xdf, 0xff, 0xdd, 0x67, 0x46, 0x65, 0xc5, 0x86,
+ 0xfc, 0x16, 0xaf, 0xb3, 0x65, 0xe4, 0x69, 0x64, 0x25, 0x3c, 0x80, 0x9f,
+ 0x42, 0x46, 0x6c, 0xc2, 0xc8, 0xb4, 0xc8, 0x1a, 0xe6, 0xe3, 0x70, 0x4a,
+ 0xc5, 0xff, 0x61, 0xf1, 0xe9, 0xb3, 0xfc, 0x51, 0x55, 0x2d, 0x57, 0xa0,
+ 0x65, 0x70, 0xe7, 0x65, 0xa7, 0xc5, 0x15, 0x69, 0x35, 0x66, 0xc4, 0x94,
+ 0x09, 0xb1, 0x4a, 0xe6, 0x4d, 0x4e, 0xec, 0x22, 0xce, 0xa4, 0x8c, 0x8e,
+ 0xcf, 0x66, 0x81, 0x76, 0xc1, 0xc2, 0xcb, 0x23, 0x23, 0x50, 0xbb, 0xa4,
+ 0xf9, 0xde, 0x7a, 0x40, 0x54, 0x61, 0xcb, 0xa4, 0x79, 0x1d, 0x44, 0x05,
+ 0x76, 0x59, 0xa4, 0x7b, 0x0f, 0x37, 0xa7, 0x8e, 0xba, 0xdf, 0xd0, 0x7f,
+ 0x1e, 0xc0, 0x35, 0xbc, 0xfc, 0xd1, 0xf2, 0x6c, 0xf7, 0xb6, 0xb6, 0x7e,
+ 0xfe, 0xb1, 0x11, 0x50, 0xf1, 0xe5, 0xcf, 0xbf, 0xbc, 0xf2, 0xb8, 0xc0,
+ 0x13, 0x75, 0x59, 0xbc, 0xa5, 0x3f, 0x75, 0x42, 0x45, 0x6e, 0x22, 0x0d,
+ 0x0b, 0x0b, 0x06, 0xe3, 0x0a, 0xdc, 0x76, 0xc4, 0x35, 0x38, 0x37, 0x7f,
+ 0x13, 0x03, 0xff, 0xa3, 0x2f, 0xd2, 0x59, 0x49, 0xc9, 0x7a, 0x87, 0xef,
+ 0xd4, 0x0f, 0x20, 0x7d, 0xfa, 0x9d, 0x80, 0x16, 0xdc, 0x25, 0x87, 0x15,
+ 0x7a, 0x18, 0x16, 0xf8, 0x8b, 0x44, 0x7f, 0x0a, 0x26, 0x39, 0x16, 0xa0,
+ 0x11, 0x17, 0x75, 0xff, 0x10, 0x88, 0xff, 0xbb, 0xc2, 0xa3, 0x5f, 0x04,
+ 0x08, 0x22, 0x9a, 0xb6, 0x26, 0x5e, 0x0e, 0x86, 0x3f, 0x65, 0x2d, 0xda,
+ 0xa5, 0x2c, 0x45, 0xe0, 0xce, 0x5c, 0x29, 0x0f, 0x8e, 0x1b, 0x57, 0x39,
+ 0x5d, 0xf0, 0x62, 0x75, 0x55, 0xb5, 0x79, 0xc5, 0x13, 0xf4, 0x56, 0xca,
+ 0x7c, 0xde, 0x15, 0x4b, 0x2a, 0x30, 0x20, 0x5d, 0xd8, 0xb2, 0x41, 0x85,
+ 0xf8, 0x15, 0xd8, 0x27, 0x66, 0x55, 0x0a, 0xb7, 0x52, 0x13, 0xcd, 0xa3,
+ 0xa8, 0x6f, 0x01, 0x47, 0x11, 0x46, 0xb9, 0x1a, 0x0b, 0x25, 0x72, 0xcb,
+ 0x66, 0x1f, 0x73, 0xc1, 0x88, 0x0e, 0xe3, 0x51, 0x02, 0x6f, 0x89, 0x5a,
+ 0x96, 0xaa, 0xac, 0xee, 0x8a, 0xe9, 0x53, 0xe8, 0x17, 0x4b, 0xd3, 0x3d,
+ 0xd2, 0xf8, 0xb6, 0xde, 0xca, 0x8c, 0x6c, 0x6e, 0x08, 0xdd, 0x45, 0xc1,
+ 0x9a, 0x82, 0xbb, 0xe2, 0xb0, 0x50, 0x24, 0x21, 0xfd, 0x23, 0x52, 0xd6,
+ 0xd6, 0x91, 0x95, 0x6a, 0x63, 0xee, 0x4a, 0x2d, 0x60, 0x07, 0x9c, 0x0b,
+ 0x86, 0x08, 0x64, 0x1d, 0x0d, 0x09, 0xe3, 0x4c, 0x5f, 0xc4, 0xae, 0xce,
+ 0xfd, 0x96, 0xde, 0x5b, 0x56, 0x5c, 0xc7, 0x9d, 0x42, 0x22, 0x91, 0x58,
+ 0x38, 0x40, 0x5b, 0xc4, 0xec, 0x18, 0x6a, 0x54, 0xd9, 0x3d, 0x37, 0xe0,
+ 0x4b, 0x2c, 0xa8, 0xba, 0x49, 0x5f, 0xb3, 0x4b, 0xd7, 0x88, 0xa3, 0xf3,
+ 0xf8, 0x10, 0x21, 0x07, 0x43, 0x14, 0x57, 0xbf, 0xd6, 0x09, 0x77, 0x2e,
+ 0x29, 0xcf, 0x0b, 0x81, 0x58, 0xcc, 0x12, 0x43, 0x1a, 0x23, 0x18, 0x5e,
+ 0xba, 0x65, 0xaa, 0x97, 0x24, 0xf2, 0x4c, 0x83, 0xc0, 0xe2, 0x2c, 0xf1,
+ 0x00, 0x36, 0xc2, 0x90, 0x34, 0x61, 0x69, 0xb0, 0x30, 0x1e, 0xd4, 0x9e,
+ 0xec, 0xbd, 0x36, 0xb2, 0xc2, 0x79, 0xf6, 0x5e, 0xa3, 0xf9, 0x82, 0x18,
+ 0xae, 0x46, 0x84, 0xb9, 0x2f, 0xc0, 0x17, 0xd3, 0x2a, 0xef, 0xc1, 0x5a,
+ 0x6c, 0x99, 0x93, 0xea, 0x34, 0x3e, 0xc4, 0x43, 0x67, 0xdd, 0x84, 0x35,
+ 0xe1, 0xee, 0x70, 0xf3, 0x05, 0x55, 0x74, 0x3b, 0x8b, 0x72, 0x41, 0x6f,
+ 0x45, 0x7d, 0x97, 0x2f, 0x7d, 0x76, 0xec, 0xef, 0x9f, 0x6e, 0x33, 0x73,
+ 0xb1, 0x46, 0xd2, 0x30, 0x76, 0xea, 0xf7, 0x4f, 0xd2, 0x07, 0x18, 0x26,
+ 0x34, 0xa9, 0x88, 0x5d, 0x4a, 0xb5, 0xa7, 0x74, 0xac, 0xe5, 0x8a, 0xee,
+ 0xd2, 0x7b, 0x03, 0xef, 0x96, 0xd7, 0x22, 0xf8, 0xd7, 0xae, 0xc3, 0xd4,
+ 0x0f, 0x93, 0x19, 0xea, 0x90, 0x99, 0x28, 0xe7, 0xdd, 0x50, 0x46, 0xb5,
+ 0xd9, 0x11, 0xd4, 0x82, 0x11, 0x70, 0x85, 0x61, 0x38, 0x95, 0x78, 0x53,
+ 0xfe, 0xb8, 0x3a, 0xc2, 0xf9, 0x1f, 0x77, 0x75, 0xfd, 0x20, 0x71, 0x4d,
+ 0xc2, 0x95, 0x57, 0x56, 0x95, 0x97, 0x38, 0xf7, 0x73, 0x97, 0x4d, 0xed,
+ 0x8a, 0xc7, 0xd8, 0x9b, 0x9a, 0x1c, 0x17, 0xe6, 0x9f, 0x72, 0x5b, 0xcb,
+ 0x39, 0x1b, 0x27, 0x3a, 0xd0, 0xc5, 0x13, 0x4f, 0xb9, 0x38, 0xb1, 0x2e,
+ 0x6b, 0xea, 0xa2, 0x71, 0xfb, 0xb5, 0x9a, 0xef, 0x66, 0xe8, 0x98, 0x7a,
+ 0x10, 0x5a, 0x0f, 0x43, 0xa6, 0xbc, 0xe0, 0xcb, 0xc6, 0x28, 0x1e, 0x91,
+ 0x95, 0xce, 0x70, 0xb9, 0x92, 0xf1, 0x75, 0xf3, 0xf5, 0xe1, 0x05, 0xa7,
+ 0x70, 0x9e, 0x21, 0x69, 0xde, 0x0d, 0x10, 0x75, 0xd6, 0xf4, 0x9c, 0xa7,
+ 0xae, 0x46, 0x91, 0x4b, 0x18, 0x9e, 0x33, 0x06, 0x0a, 0xc9, 0x59, 0xf3,
+ 0xce, 0x30, 0x47, 0xba, 0x5c, 0x0e, 0x68, 0x35, 0x18, 0x8d, 0xc0, 0xc7,
+ 0x26, 0x85, 0x16, 0x3f, 0xaf, 0xf2, 0x30, 0x2e, 0x81, 0x08, 0xaf, 0xaf,
+ 0x0f, 0x8f, 0x0f, 0x2f, 0x0e, 0xbb, 0x30, 0x5e, 0xca, 0x6c, 0x8a, 0x1b,
+ 0xac, 0xce, 0xc6, 0xd7, 0x73, 0xa2, 0xfb, 0x2b, 0xde, 0x12, 0x24, 0x7b,
+ 0x7f, 0x9f, 0x8d, 0x5e, 0xef, 0x7f, 0xc7, 0x85, 0x05, 0xf9, 0xdc, 0x9c,
+ 0x9e, 0x9d, 0x9c, 0xbe, 0x39, 0x7a, 0xf7, 0xba, 0x9f, 0x1c, 0x9c, 0x9c,
+ 0xfe, 0xb9, 0x9f, 0xbc, 0x3d, 0xf9, 0xee, 0xb0, 0x83, 0xf2, 0x38, 0x16,
+ 0xad, 0x23, 0x06, 0x4a, 0xcb, 0xec, 0xf0, 0x71, 0x95, 0x80, 0xec, 0x79,
+ 0x66, 0x40, 0xf5, 0xe6, 0x47, 0x65, 0xb6, 0x8c, 0x52, 0x3a, 0xea, 0x87,
+ 0xa2, 0xa5, 0xa3, 0x33, 0xf0, 0xcd, 0xe1, 0xfe, 0xeb, 0xf6, 0xb0, 0x4f,
+ 0x4f, 0xce, 0x2f, 0xd0, 0x19, 0xcf, 0xcf, 0x4d, 0x9a, 0x59, 0x38, 0x31,
+ 0x4c, 0x36, 0x79, 0xb3, 0xbe, 0x79, 0x93, 0x05, 0xe0, 0xa9, 0x74, 0x0c,
+ 0x60, 0x30, 0x9b, 0xac, 0x2c, 0x4a, 0x8e, 0x68, 0x08, 0x17, 0x77, 0xf7,
+ 0xd0, 0x6d, 0xc8, 0x0e, 0x6f, 0x2b, 0xcf, 0xa0, 0xe9, 0x70, 0x70, 0x32,
+ 0x00, 0x59, 0xd6, 0x61, 0x55, 0xe5, 0x5a, 0xb5, 0x03, 0x3b, 0xb3, 0xd6,
+ 0xe9, 0x47, 0x11, 0x3d, 0xc8, 0xa1, 0x0e, 0x41, 0x5c, 0x92, 0x48, 0x88,
+ 0x54, 0xa3, 0xd9, 0x46, 0x19, 0x07, 0xdc, 0x54, 0xa8, 0x2f, 0x15, 0xc4,
+ 0x72, 0x77, 0xb3, 0x78, 0x8b, 0x87, 0x44, 0xb4, 0x13, 0x84, 0x35, 0x36,
+ 0x47, 0xf2, 0xfa, 0xf9, 0x0e, 0x35, 0xe6, 0x7f, 0xf0, 0x83, 0x2c, 0x6c,
+ 0xd2, 0x85, 0x56, 0x01, 0xa1, 0x62, 0x79, 0x49, 0xa4, 0x99, 0x49, 0xe0,
+ 0x88, 0x6c, 0x55, 0xe1, 0x43, 0x1a, 0x8f, 0xf8, 0x98, 0x5f, 0xe3, 0x80,
+ 0xac, 0x8e, 0xa1, 0xb0, 0x0c, 0x57, 0xe1, 0xed, 0x48, 0x1e, 0xc8, 0xb4,
+ 0xba, 0x16, 0x75, 0xdf, 0xae, 0x43, 0xa4, 0x8a, 0xbd, 0x6c, 0x65, 0x77,
+ 0xce, 0x84, 0x4e, 0x33, 0x58, 0x07, 0x8c, 0x68, 0x70, 0xcc, 0xa3, 0x71,
+ 0x45, 0x94, 0x11, 0x3b, 0x05, 0xa8, 0x0f, 0x62, 0x17, 0x73, 0xa9, 0xb8,
+ 0xd7, 0x51, 0xb9, 0x6d, 0x20, 0x0a, 0x47, 0x65, 0x45, 0x3b, 0xb4, 0x30,
+ 0x8e, 0xc4, 0xbe, 0x29, 0xfc, 0x50, 0x8b, 0x5f, 0xa4, 0xe3, 0x31, 0xed,
+ 0x6f, 0x47, 0xa2, 0x4d, 0xe1, 0x0f, 0xf6, 0x93, 0xed, 0x56, 0x19, 0x9b,
+ 0x2a, 0x19, 0x48, 0xd5, 0x68, 0xc9, 0xfc, 0x8a, 0xd3, 0x1c, 0xdf, 0xac,
+ 0xe0, 0x85, 0x61, 0x91, 0x40, 0x5d, 0xfb, 0x80, 0x2b, 0x1d, 0x1f, 0xd1,
+ 0x09, 0xe0, 0x91, 0x47, 0xc9, 0x0e, 0x08, 0xfb, 0x43, 0xbd, 0xe8, 0x9c,
+ 0x0f, 0x05, 0xd6, 0x9b, 0xda, 0x8a, 0x3b, 0x66, 0x6c, 0xed, 0xce, 0x9e,
+ 0xf9, 0x8b, 0xc7, 0xba, 0x8e, 0x6c, 0x87, 0x67, 0x87, 0x17, 0x67, 0xad,
+ 0x50, 0x88, 0xe7, 0x1d, 0x06, 0xd0, 0x0d, 0xc6, 0xf2, 0xee, 0xec, 0x95,
+ 0xbf, 0x58, 0xd5, 0x2b, 0xd8, 0x01, 0xf7, 0xfb, 0x50, 0xc6, 0xf6, 0x93,
+ 0x2e, 0x1c, 0xee, 0x0d, 0x41, 0x0d, 0xef, 0xe8, 0x8f, 0xbf, 0x78, 0x60,
+ 0x96, 0xdf, 0x1c, 0x1e, 0x9f, 0xc6, 0xb3, 0xfc, 0xee, 0xec, 0xcd, 0x9f,
+ 0x87, 0x0f, 0xe4, 0xe2, 0xfe, 0xe3, 0x63, 0xa9, 0x3f, 0xa6, 0x75, 0xdd,
+ 0x09, 0xc0, 0x5f, 0xa5, 0x30, 0x75, 0x5a, 0x6d, 0x06, 0x06, 0xfe, 0x90,
+ 0x32, 0x8b, 0x75, 0x84, 0xcc, 0xad, 0xc1, 0x04, 0x88, 0x8b, 0xa8, 0x8b,
+ 0x48, 0xc8, 0x32, 0x79, 0xd4, 0xea, 0xd5, 0xd3, 0x2d, 0x24, 0x65, 0x1e,
+ 0xe8, 0x33, 0x57, 0xb3, 0x12, 0xdf, 0xf1, 0x58, 0xf2, 0x11, 0x97, 0x31,
+ 0x1a, 0x06, 0x98, 0x07, 0x1d, 0xa2, 0x3e, 0xcb, 0x6d, 0x8c, 0x5e, 0xc8,
+ 0xbd, 0x39, 0x59, 0xef, 0xe3, 0xe4, 0x6a, 0x58, 0x94, 0x39, 0x1b, 0x35,
+ 0xb5, 0xb8, 0xa4, 0x34, 0x96, 0xa0, 0x34, 0x33, 0x1f, 0x6b, 0x3e, 0x42,
+ 0x5d, 0xcd, 0x59, 0x9c, 0x95, 0x00, 0x2e, 0x24, 0x71, 0xd3, 0x33, 0x98,
+ 0x44, 0xf8, 0x3b, 0xd7, 0xaa, 0xe9, 0x17, 0x5d, 0xe1, 0x88, 0xd5, 0x3d,
+ 0xed, 0xf3, 0xcc, 0x73, 0x5e, 0xd3, 0xce, 0xdc, 0x6c, 0xfd, 0x44, 0x39,
+ 0x0c, 0x8e, 0x38, 0x6b, 0x09, 0x3c, 0x96, 0x58, 0x93, 0xca, 0x49, 0x93,
+ 0x6a, 0x6c, 0xd8, 0x3d, 0x22, 0x4f, 0xd9, 0xb7, 0xa4, 0xf5, 0x64, 0xf8,
+ 0xdf, 0xce, 0x0a, 0x62, 0xce, 0x3f, 0xc6, 0xb3, 0x61, 0x1f, 0xbc, 0xd6,
+ 0x43, 0x91, 0x97, 0xa5, 0xf4, 0xc9, 0xa8, 0xe5, 0x55, 0xd2, 0x80, 0xee,
+ 0x08, 0x70, 0x23, 0xe8, 0x50, 0xb0, 0x7c, 0xfa, 0x0d, 0x37, 0x25, 0x97,
+ 0xcf, 0x04, 0x0e, 0x89, 0xd8, 0x1b, 0xa9, 0xfb, 0xe0, 0x85, 0x68, 0x4e,
+ 0x1e, 0x3c, 0xdd, 0x21, 0x12, 0x06, 0x43, 0x32, 0x42, 0xdd, 0xb1, 0x0a,
+ 0x1e, 0x9e, 0xab, 0xff, 0xf9, 0xb1, 0x3a, 0x6e, 0x12, 0x46, 0x5f, 0x25,
+ 0x01, 0x68, 0x96, 0x4a, 0xab, 0x4b, 0xd5, 0xaf, 0x71, 0x0f, 0x82, 0x33,
+ 0x63, 0x4d, 0xd6, 0x3a, 0x1d, 0xc4, 0xa4, 0x87, 0xd6, 0xe3, 0x06, 0x3c,
+ 0x13, 0x02, 0xfe, 0x89, 0x8e, 0x45, 0x8e, 0xa2, 0x5b, 0xa2, 0x9f, 0x48,
+ 0xa5, 0x1e, 0x09, 0x21, 0xd3, 0xf7, 0x06, 0x1d, 0x86, 0x34, 0xb6, 0x17,
+ 0xae, 0xb8, 0xc4, 0xfe, 0x71, 0xa7, 0xf8, 0xcf, 0x9e, 0x28, 0x64, 0x11,
+ 0x5f, 0xe2, 0x8f, 0x5f, 0x44, 0x16, 0x41, 0x99, 0x1c, 0x71, 0x5d, 0x6e,
+ 0x10, 0xed, 0x37, 0xe8, 0x63, 0x10, 0xa5, 0x0a, 0x4f, 0x36, 0x25, 0x17,
+ 0xd3, 0x6f, 0xb6, 0x5a, 0x06, 0x59, 0xee, 0x68, 0xd2, 0x44, 0xf0, 0x0c,
+ 0x70, 0x49, 0x62, 0x15, 0x5e, 0xf6, 0x58, 0xb2, 0xa7, 0x72, 0xae, 0x3e,
+ 0xcd, 0x17, 0x32, 0x4e, 0x4f, 0xf6, 0x5b, 0xc2, 0xd5, 0xfd, 0x0d, 0x70,
+ 0x75, 0x5c, 0x6c, 0x16, 0x07, 0xe0, 0xe5, 0x84, 0x4d, 0xa7, 0x24, 0x1d,
+ 0x73, 0xb0, 0x04, 0x35, 0xfd, 0xc5, 0x7f, 0x76, 0xd7, 0x7a, 0xb5, 0xe2,
+ 0xea, 0x5a, 0x31, 0x42, 0xd0, 0x0f, 0xc4, 0xe5, 0xc2, 0x0a, 0x29, 0x57,
+ 0xe2, 0x42, 0x19, 0xcd, 0x59, 0x31, 0x51, 0xbc, 0xb6, 0xb4, 0xf6, 0x4b,
+ 0x9d, 0x75, 0x22, 0x6b, 0x49, 0xa5, 0x2d, 0x3e, 0x85, 0xc8, 0x07, 0xa3,
+ 0x95, 0x2d, 0xe6, 0x2b, 0xdb, 0x0b, 0xdc, 0x03, 0x11, 0x04, 0xad, 0x96,
+ 0x24, 0x62, 0x29, 0x29, 0x9a, 0x8f, 0x69, 0x93, 0x2c, 0x0f, 0x89, 0x30,
+ 0x4c, 0xb7, 0x11, 0x1e, 0x12, 0x49, 0xaa, 0x8a, 0x6f, 0x25, 0xda, 0x07,
+ 0x95, 0x23, 0x59, 0x78, 0x11, 0xf0, 0x4a, 0x0e, 0x07, 0x77, 0x45, 0x5e,
+ 0x69, 0x98, 0x95, 0x41, 0x0e, 0x72, 0x54, 0x0b, 0xca, 0x29, 0xa4, 0x2e,
+ 0x04, 0x74, 0xad, 0xd3, 0xcd, 0xe1, 0x2a, 0x17, 0x5e, 0x65, 0x06, 0x04,
+ 0x29, 0x93, 0xb3, 0x4c, 0x27, 0x0c, 0x6a, 0x63, 0xc6, 0x93, 0xd9, 0x14,
+ 0x33, 0x7e, 0xe7, 0x56, 0x38, 0x84, 0xc4, 0x06, 0x8c, 0x12, 0x35, 0xca,
+ 0xef, 0x2b, 0x84, 0x12, 0x40, 0x93, 0xb4, 0x76, 0x24, 0x9a, 0x0d, 0x56,
+ 0x24, 0xca, 0x4f, 0xa9, 0x9b, 0x05, 0x63, 0x2c, 0xb9, 0x88, 0x9d, 0x07,
+ 0x86, 0x37, 0x11, 0xae, 0xa8, 0x19, 0x2f, 0x19, 0x4b, 0x2d, 0xd9, 0x18,
+ 0x6c, 0x3a, 0x11, 0x19, 0xf5, 0xf9, 0x84, 0x34, 0x62, 0x9f, 0x7f, 0xea,
+ 0x02, 0x75, 0x5d, 0x4a, 0x89, 0x54, 0x79, 0x30, 0x0a, 0x51, 0x9a, 0xe0,
+ 0xce, 0xb6, 0xc4, 0xf0, 0x6e, 0xdc, 0x12, 0xf0, 0xc3, 0x91, 0x5c, 0xd6,
+ 0x6a, 0x6c, 0x9e, 0xdd, 0x85, 0x8d, 0x79, 0x25, 0xd5, 0x35, 0xf8, 0x1b,
+ 0x9e, 0xa9, 0x6b, 0x91, 0xdf, 0xa7, 0x8b, 0xc8, 0x7a, 0x83, 0x08, 0x09,
+ 0xfe, 0x66, 0xa8, 0xcc, 0x5b, 0xa4, 0xc8, 0x54, 0x82, 0xf4, 0x51, 0xb1,
+ 0x33, 0x04, 0x4d, 0x73, 0x90, 0x8f, 0x9d, 0x38, 0x26, 0xd5, 0x35, 0x5f,
+ 0xaa, 0x0e, 0x87, 0xa1, 0x51, 0x64, 0xe4, 0x6d, 0x1f, 0xe5, 0xb9, 0xe6,
+ 0x71, 0x70, 0xd6, 0x5b, 0x7c, 0x38, 0x4c, 0x5e, 0x6b, 0xaa, 0x05, 0x32,
+ 0x8c, 0x96, 0x57, 0x19, 0x86, 0x85, 0xc8, 0xfb, 0xa0, 0x99, 0xef, 0x34,
+ 0x2f, 0xaa, 0x83, 0x50, 0xf4, 0xfd, 0xaa, 0x91, 0xab, 0x21, 0x0e, 0x22,
+ 0x41, 0x68, 0x9b, 0x5b, 0x81, 0xb3, 0x11, 0xfe, 0x36, 0x8b, 0x71, 0x8e,
+ 0x58, 0xe1, 0x6a, 0xd8, 0xa1, 0xd2, 0x88, 0xcb, 0x09, 0x13, 0xf7, 0xce,
+ 0x22, 0xf3, 0xae, 0xd8, 0xfb, 0x2c, 0xab, 0x6a, 0x1a, 0x93, 0x35, 0xdd,
+ 0x85, 0xe3, 0x00, 0x3d, 0xf5, 0x49, 0x39, 0x81, 0x47, 0xf5, 0x9e, 0x1f,
+ 0x2d, 0xd3, 0x52, 0x54, 0xef, 0xf9, 0x8d, 0x99, 0xdc, 0xc5, 0x90, 0x94,
+ 0x8d, 0x97, 0x75, 0x13, 0xa0, 0x32, 0xf4, 0x4d, 0x5b, 0x21, 0x4b, 0x0c,
+ 0x6b, 0x03, 0x3e, 0x34, 0xdd, 0x8f, 0xf5, 0x53, 0x33, 0xb7, 0xef, 0xad,
+ 0x6f, 0xaa, 0x5f, 0x51, 0x5c, 0xc4, 0xfa, 0x71, 0x17, 0x18, 0x84, 0x8d,
+ 0xb9, 0xcc, 0x04, 0xaa, 0xae, 0x2e, 0x4c, 0x3c, 0xea, 0xec, 0x9e, 0x28,
+ 0xb2, 0x9c, 0x74, 0xf5, 0xfd, 0x46, 0xaa, 0xc3, 0x07, 0x5d, 0x3b, 0xc3,
+ 0xa6, 0x16, 0x8e, 0xaf, 0xa2, 0xc4, 0x93, 0xa8, 0x67, 0x98, 0x1e, 0x86,
+ 0xc9, 0xbe, 0x0b, 0xc2, 0xb7, 0x57, 0x6d, 0xfd, 0xa3, 0x88, 0x7c, 0x04,
+ 0xb9, 0x79, 0x10, 0x40, 0x96, 0xea, 0xf1, 0x91, 0xcb, 0x83, 0x8c, 0x66,
+ 0x71, 0x53, 0x8e, 0x9e, 0xd2, 0x8f, 0x6f, 0xf9, 0x07, 0x33, 0x20, 0x56,
+ 0xbc, 0x04, 0x79, 0x5b, 0xc0, 0xbb, 0x62, 0x4e, 0xc3, 0x45, 0xc5, 0xf4,
+ 0x87, 0x6e, 0x7a, 0x65, 0x29, 0x37, 0x9c, 0xb2, 0xe4, 0x4b, 0xd7, 0xc0,
+ 0x81, 0x6e, 0xed, 0xf4, 0xcd, 0xf2, 0xb8, 0xb6, 0x32, 0x64, 0xeb, 0x5c,
+ 0x00, 0xa6, 0xa5, 0xee, 0xd1, 0xb9, 0xe8, 0x8d, 0xb4, 0x08, 0xb1, 0x68,
+ 0x42, 0x4b, 0xf5, 0x37, 0x36, 0x64, 0x2f, 0x49, 0x93, 0x21, 0xc2, 0x1e,
+ 0xc3, 0x46, 0x3a, 0x73, 0x1c, 0x0f, 0x65, 0xbc, 0x1d, 0xd0, 0x8f, 0x40,
+ 0x03, 0xc2, 0xa4, 0x0d, 0x1d, 0x35, 0x96, 0xf8, 0xec, 0xbc, 0xae, 0x9c,
+ 0xb2, 0xa4, 0xba, 0xca, 0x8f, 0x56, 0xc2, 0xeb, 0x83, 0x4b, 0xf5, 0x9a,
+ 0x93, 0x09, 0x4d, 0x0c, 0x94, 0xa3, 0x80, 0x84, 0xae, 0xd4, 0x6d, 0xf6,
+ 0x68, 0x99, 0x5b, 0xcd, 0x6d, 0x3c, 0xac, 0xd6, 0x5d, 0xc9, 0xcf, 0x5d,
+ 0x31, 0x4e, 0xa4, 0x3b, 0xa2, 0xb6, 0x18, 0x72, 0xc0, 0x6e, 0x0c, 0x18,
+ 0x66, 0x96, 0xcd, 0x18, 0x31, 0xd4, 0x67, 0x30, 0x42, 0x4c, 0x44, 0xda,
+ 0x39, 0x3a, 0x5f, 0xe1, 0x28, 0x9c, 0x70, 0x76, 0x3b, 0xdb, 0x4a, 0x24,
+ 0x99, 0xe1, 0x5f, 0x22, 0x77, 0x41, 0x75, 0x3f, 0x1f, 0x5f, 0xbf, 0x7e,
+ 0x77, 0xbe, 0xb6, 0x3a, 0x04, 0xa3, 0x31, 0x39, 0x3c, 0x5f, 0x16, 0x73,
+ 0x26, 0x86, 0x20, 0x32, 0x85, 0xb5, 0xa6, 0xfd, 0xe0, 0xbb, 0xee, 0xe6,
+ 0x1a, 0x2f, 0x98, 0x30, 0x80, 0x80, 0x6a, 0xb1, 0xdd, 0x68, 0x50, 0x27,
+ 0x2e, 0xd2, 0x41, 0xca, 0x47, 0xa1, 0xbb, 0xe0, 0xb2, 0x3b, 0xd3, 0x9c,
+ 0x54, 0x95, 0x4d, 0xac, 0xc9, 0x12, 0xc5, 0x37, 0x19, 0xfd, 0x24, 0xa6,
+ 0x6b, 0xd4, 0xa2, 0xb3, 0x1f, 0xbf, 0x64, 0x9b, 0x8f, 0xd3, 0xf2, 0x2a,
+ 0xeb, 0x40, 0x65, 0x0d, 0x57, 0xa8, 0x81, 0x13, 0x15, 0x28, 0x00, 0x44,
+ 0xab, 0x53, 0x7e, 0x5d, 0xc8, 0xb4, 0xaf, 0xd4, 0x8a, 0x8f, 0xca, 0x55,
+ 0x53, 0xa2, 0x45, 0xd9, 0xfd, 0xfa, 0xab, 0xf8, 0x82, 0x7c, 0xfd, 0x6e,
+ 0x45, 0x77, 0xfc, 0xcd, 0xc0, 0xe4, 0x21, 0xb5, 0x98, 0x06, 0x80, 0x07,
+ 0xf1, 0x5a, 0x28, 0x14, 0x77, 0xf7, 0x00, 0x0c, 0xa7, 0xfb, 0x11, 0x2e,
+ 0x41, 0x4f, 0xe8, 0x8f, 0x07, 0x1f, 0x54, 0xd0, 0xbf, 0xee, 0xae, 0x18,
+ 0x0d, 0x70, 0xe3, 0x5c, 0x6a, 0xd5, 0x9d, 0x49, 0xf0, 0xd6, 0xa9, 0x9a,
+ 0xf1, 0x37, 0x3b, 0xb6, 0x68, 0x25, 0xe4, 0xa0, 0x07, 0x89, 0x48, 0x50,
+ 0xce, 0x6c, 0x2d, 0x66, 0x3e, 0xbb, 0xf2, 0x63, 0x6b, 0xd7, 0xa9, 0xc3,
+ 0x4e, 0xa8, 0xc5, 0x21, 0x1d, 0xe4, 0x31, 0x1f, 0x7a, 0x4b, 0xc2, 0x18,
+ 0xdf, 0x57, 0x8f, 0x9f, 0x0c, 0xb7, 0x15, 0xee, 0x9d, 0x64, 0x63, 0x44,
+ 0x97, 0xa0, 0xbb, 0x36, 0xa5, 0xfa, 0xd7, 0x53, 0x40, 0x1f, 0x76, 0x37,
+ 0xf7, 0xec, 0xf3, 0x67, 0x4f, 0x37, 0x37, 0xfb, 0x6a, 0x0d, 0xb4, 0x24,
+ 0x3b, 0x76, 0x8e, 0x31, 0x2b, 0x10, 0xb3, 0x39, 0x8f, 0xf9, 0x1a, 0x79,
+ 0xdb, 0x01, 0xf2, 0x4b, 0x77, 0x73, 0x7c, 0x35, 0xd8, 0xab, 0xbc, 0x2e,
+ 0x8c, 0xf9, 0x01, 0x26, 0xe9, 0x70, 0x37, 0x52, 0x63, 0x33, 0x15, 0xdd,
+ 0x6d, 0xea, 0x35, 0x5a, 0x79, 0xd0, 0xa0, 0x5b, 0x78, 0xe0, 0x1b, 0xf1,
+ 0xd5, 0x81, 0x33, 0xd9, 0xe5, 0xc5, 0x40, 0xe4, 0x6f, 0x8e, 0x8e, 0x0f,
+ 0x1d, 0x1f, 0xf9, 0xaf, 0xad, 0x21, 0x0f, 0xb2, 0x1c, 0x47, 0x5c, 0x53,
+ 0x04, 0xc9, 0x20, 0x89, 0xbd, 0x9f, 0xa0, 0x24, 0xec, 0xb7, 0x7d, 0xd1,
+ 0x66, 0xf1, 0xb1, 0xf7, 0x18, 0x50, 0xc3, 0x87, 0xef, 0xbe, 0x3b, 0x3a,
+ 0x3b, 0x79, 0xf7, 0xf6, 0xf0, 0x9d, 0x4b, 0x16, 0xe1, 0xeb, 0xb9, 0xcb,
+ 0xab, 0x5a, 0xc5, 0x0e, 0xab, 0x9c, 0xd3, 0x8d, 0x58, 0x20, 0x65, 0x07,
+ 0x22, 0xcf, 0x82, 0x76, 0x4b, 0xff, 0x1a, 0x86, 0xcd, 0x05, 0x0f, 0xd9,
+ 0xbe, 0x31, 0x91, 0x2c, 0x38, 0xc8, 0x7b, 0xc2, 0xc9, 0x78, 0x43, 0xc9,
+ 0x9c, 0x11, 0xe7, 0x58, 0x2e, 0x8e, 0xdd, 0x8f, 0xe3, 0x4c, 0x2b, 0x11,
+ 0x54, 0x41, 0xf5, 0x47, 0x4b, 0x1d, 0xf3, 0x09, 0x76, 0x8d, 0x41, 0x78,
+ 0x52, 0x7b, 0x2f, 0x25, 0x2b, 0x56, 0x78, 0x88, 0x81, 0xa8, 0x51, 0x07,
+ 0xbe, 0xc4, 0x6b, 0xf5, 0xb4, 0x09, 0xd8, 0xad, 0x58, 0x79, 0xc3, 0xca,
+ 0x11, 0x1e, 0x0f, 0xd7, 0x82, 0x2c, 0xda, 0xea, 0x7f, 0x30, 0x83, 0x46,
+ 0xf8, 0x05, 0x4a, 0x9e, 0x7c, 0xa1, 0xb1, 0x16, 0x31, 0x02, 0x64, 0x15,
+ 0x3a, 0x34, 0x85, 0x08, 0x02, 0xfc, 0x0a, 0x38, 0x82, 0xd7, 0xc2, 0xbb,
+ 0xfe, 0xc3, 0xe9, 0xd9, 0xc9, 0x0f, 0x7f, 0xfe, 0x07, 0x77, 0x11, 0x1c,
+ 0xed, 0x1f, 0xf9, 0xc6, 0xb3, 0xc6, 0x7f, 0xfe, 0x55, 0xbd, 0x3d, 0xd8,
+ 0x5d, 0xb3, 0xfd, 0x7e, 0xb3, 0xa4, 0x42, 0x64, 0x6a, 0x81, 0xe3, 0x52,
+ 0x40, 0xf0, 0xcd, 0x8d, 0xe9, 0x63, 0xaf, 0x1d, 0x73, 0x90, 0x38, 0xab,
+ 0xaa, 0x05, 0x39, 0x1d, 0xab, 0x53, 0x40, 0x50, 0x47, 0x85, 0x48, 0x2f,
+ 0x2f, 0x85, 0x75, 0x22, 0xfb, 0x28, 0xc9, 0x81, 0xfb, 0xdf, 0xad, 0xc7,
+ 0xfe, 0xf1, 0xf1, 0xaf, 0x5f, 0x04, 0x8b, 0x5d, 0x68, 0x2e, 0x03, 0x0c,
+ 0x20, 0x6e, 0x42, 0x03, 0x27, 0xe0, 0x1a, 0xf9, 0x77, 0x00, 0x71, 0xba,
+ 0xe1, 0xbc, 0x3b, 0xd1, 0xd1, 0x88, 0x9b, 0x74, 0x50, 0x65, 0xa4, 0x08,
+ 0xc0, 0x43, 0xc5, 0x2a, 0x17, 0x5f, 0x8b, 0x3c, 0xb0, 0xa8, 0x0e, 0x75,
+ 0xf8, 0xa5, 0xdc, 0x5d, 0xb2, 0x8e, 0x02, 0xcc, 0x84, 0xc4, 0xfd, 0xc2,
+ 0x79, 0xf8, 0xa5, 0x70, 0x0d, 0x2a, 0x92, 0x21, 0x84, 0xa4, 0x23, 0x2e,
+ 0x83, 0xed, 0xc6, 0x1c, 0xec, 0x55, 0xe6, 0xd5, 0x0d, 0x50, 0x0f, 0xf8,
+ 0x50, 0xf6, 0xa5, 0xa2, 0x6b, 0x8d, 0xda, 0xf5, 0xac, 0x31, 0x60, 0x28,
+ 0x34, 0x76, 0x19, 0x31, 0xfd, 0x7b, 0x71, 0x72, 0x70, 0x72, 0x4c, 0xbf,
+ 0x1c, 0xbe, 0x39, 0xfa, 0xc1, 0x33, 0x34, 0x29, 0x65, 0xa3, 0x9c, 0xd7,
+ 0x18, 0x84, 0x2b, 0x6d, 0x13, 0x3b, 0xfc, 0x15, 0x7d, 0xa3, 0x1d, 0x67,
+ 0xb4, 0xe6, 0xa3, 0x3c, 0x5c, 0xb8, 0x91, 0xfa, 0xbc, 0x03, 0xb8, 0x8f,
+ 0x87, 0xa2, 0x8b, 0xdc, 0x2a, 0x1f, 0x35, 0x76, 0x08, 0x17, 0x71, 0xc8,
+ 0xf4, 0x9a, 0x7b, 0x2b, 0x83, 0x82, 0x3c, 0x95, 0x5f, 0xba, 0x98, 0xc4,
+ 0xd0, 0xe0, 0x6a, 0x36, 0x16, 0x35, 0xb2, 0xb0, 0x6d, 0xd8, 0x83, 0x65,
+ 0xb3, 0xc6, 0xdd, 0x0f, 0x26, 0x69, 0xca, 0x77, 0x10, 0x22, 0xa4, 0x21,
+ 0x25, 0x6b, 0x61, 0x18, 0x8b, 0x1f, 0x2c, 0xbc, 0xd5, 0xae, 0xb9, 0xe6,
+ 0x9c, 0x74, 0x01, 0x34, 0x61, 0x1c, 0x29, 0x87, 0x08, 0x80, 0xf0, 0x0a,
+ 0x90, 0x0b, 0xa6, 0xea, 0x00, 0x2f, 0x80, 0xc1, 0x0f, 0xca, 0xe4, 0x5f,
+ 0x97, 0xf9, 0x6d, 0x0a, 0x5c, 0x04, 0x80, 0x2a, 0xc8, 0x4b, 0xad, 0x36,
+ 0xd2, 0x5f, 0xd5, 0x48, 0xda, 0x6c, 0xe5, 0xd9, 0xaf, 0x69, 0xe4, 0x59,
+ 0xab, 0x8d, 0xeb, 0x5f, 0xd5, 0x88, 0x2b, 0xc9, 0x46, 0xd7, 0xe2, 0x0f,
+ 0x47, 0x17, 0xc9, 0xc1, 0xc9, 0x6b, 0x4f, 0xa3, 0x17, 0xee, 0x6a, 0x4f,
+ 0x49, 0xae, 0x21, 0x61, 0x1c, 0xf6, 0x35, 0x94, 0xe5, 0x85, 0x87, 0x41,
+ 0x6b, 0x16, 0x8b, 0xef, 0x4e, 0x6d, 0x61, 0xd7, 0x59, 0x8e, 0x8f, 0x4a,
+ 0x71, 0xed, 0x85, 0x3e, 0xc0, 0x66, 0x89, 0x63, 0x17, 0x01, 0xc5, 0x94,
+ 0xcd, 0x95, 0x19, 0xd2, 0xd2, 0x30, 0x58, 0x46, 0x29, 0xfb, 0x9e, 0xe7,
+ 0xe2, 0xb0, 0x67, 0x4d, 0xa0, 0x76, 0x55, 0xd8, 0x69, 0x04, 0x6b, 0x4e,
+ 0xb6, 0x55, 0x0c, 0x19, 0xc4, 0x6e, 0x89, 0xfa, 0x9f, 0xd7, 0x3a, 0x9a,
+ 0x46, 0x06, 0xfa, 0x8e, 0x72, 0xc2, 0x79, 0x83, 0x62, 0xb4, 0x26, 0x07,
+ 0x24, 0x2f, 0x96, 0xda, 0xe0, 0xcb, 0xc2, 0x79, 0xe4, 0x7b, 0x71, 0xee,
+ 0x74, 0x79, 0x2d, 0x99, 0x1c, 0xb1, 0x28, 0xd7, 0x84, 0xeb, 0x67, 0x57,
+ 0x7e, 0xbc, 0xa1, 0x5b, 0x5a, 0xbc, 0xc0, 0x9a, 0xba, 0x9c, 0xff, 0x2d,
+ 0xb8, 0xa3, 0x9f, 0xf8, 0x70, 0x9d, 0x59, 0x3a, 0x95, 0x20, 0x2a, 0x89,
+ 0x1e, 0x25, 0x7d, 0xa7, 0x4e, 0x3f, 0x22, 0xee, 0x8d, 0x45, 0x22, 0xac,
+ 0xe1, 0x38, 0x60, 0x83, 0x4f, 0x95, 0x39, 0x27, 0xa6, 0xda, 0xcb, 0xf9,
+ 0x33, 0x97, 0x81, 0x4f, 0xb1, 0xb5, 0x20, 0x5a, 0x0e, 0xf6, 0x51, 0xe8,
+ 0x2e, 0x71, 0x51, 0x54, 0x5c, 0x20, 0xb9, 0xdb, 0xc1, 0xee, 0xba, 0x35,
+ 0xb8, 0xa7, 0x42, 0x02, 0xed, 0x11, 0x5d, 0x91, 0x8f, 0x73, 0x04, 0x6d,
+ 0x69, 0x1d, 0x53, 0x94, 0x0a, 0x4b, 0x64, 0xd1, 0x06, 0x2b, 0xec, 0xb5,
+ 0x45, 0x22, 0x96, 0x43, 0x35, 0x20, 0xa9, 0xfc, 0x31, 0x29, 0xb0, 0x92,
+ 0x12, 0x8e, 0xc6, 0xe5, 0x61, 0xe9, 0x8b, 0x7b, 0x71, 0x9a, 0xa7, 0xf3,
+ 0xa2, 0x03, 0x47, 0xca, 0x6d, 0x8c, 0x2a, 0xc1, 0x5e, 0xe3, 0x7c, 0x26,
+ 0x3f, 0x0e, 0x8c, 0x97, 0x5b, 0x79, 0x34, 0x63, 0xe2, 0x30, 0xf8, 0x88,
+ 0xe1, 0xd1, 0xb8, 0x96, 0x94, 0x02, 0x1c, 0x4b, 0xca, 0x22, 0xcf, 0x35,
+ 0x0e, 0x69, 0xd1, 0x56, 0x02, 0xd5, 0xe3, 0xf9, 0x8a, 0x7e, 0xb8, 0x31,
+ 0xd9, 0x37, 0xe9, 0xa4, 0x9d, 0xeb, 0xc2, 0xed, 0xc7, 0xad, 0x7d, 0xd6,
+ 0x26, 0x11, 0xcb, 0x3b, 0x61, 0xb4, 0xd4, 0x22, 0xcc, 0x40, 0xfb, 0x5c,
+ 0x9f, 0x64, 0x2b, 0xc4, 0x5d, 0xc6, 0x96, 0x23, 0x17, 0x23, 0x5d, 0x66,
+ 0x8b, 0xa9, 0x9b, 0xa2, 0x7d, 0x88, 0x84, 0x37, 0x38, 0x23, 0xb1, 0xe2,
+ 0x63, 0x1d, 0x6f, 0x1c, 0x80, 0x17, 0x0a, 0x8c, 0x2f, 0x7c, 0x27, 0x29,
+ 0x52, 0x94, 0x88, 0x48, 0xe6, 0xb9, 0x23, 0x48, 0x2d, 0xf4, 0x8c, 0x8f,
+ 0x38, 0xc9, 0x9e, 0xae, 0x81, 0xc2, 0xfd, 0x6d, 0x6f, 0xc4, 0x81, 0x3c,
+ 0x72, 0x53, 0xf8, 0xec, 0x07, 0xac, 0xc3, 0xb2, 0x14, 0xa8, 0x1b, 0x5f,
+ 0xae, 0xc4, 0x02, 0x31, 0x64, 0x21, 0x4a, 0x86, 0x13, 0x1d, 0x26, 0x6f,
+ 0xe3, 0xd4, 0xe9, 0xe2, 0xb2, 0x56, 0xbc, 0x38, 0xb6, 0xb4, 0x4f, 0xc2,
+ 0x3a, 0xf1, 0x7c, 0x25, 0xfb, 0x06, 0x71, 0x02, 0xdc, 0xbd, 0x83, 0x00,
+ 0xcc, 0x24, 0xc6, 0x04, 0xf0, 0x25, 0xac, 0xfd, 0x3a, 0xec, 0xec, 0xb4,
+ 0x17, 0xfb, 0x74, 0xff, 0xfc, 0xdc, 0x16, 0xfa, 0x20, 0x5c, 0x50, 0x59,
+ 0x42, 0x4d, 0x11, 0x02, 0x9c, 0xa6, 0x22, 0xe7, 0xc4, 0xea, 0x8e, 0xb6,
+ 0xd1, 0x4a, 0x2d, 0xdc, 0x79, 0xe2, 0xfa, 0x72, 0x5d, 0x7d, 0x27, 0x6d,
+ 0xf5, 0x3f, 0xb1, 0xab, 0xee, 0xbe, 0xbe, 0xeb, 0xe8, 0xeb, 0x69, 0x44,
+ 0x44, 0xbb, 0xbb, 0x9f, 0x19, 0x0e, 0x8d, 0xc0, 0xf1, 0x4f, 0x13, 0xdf,
+ 0x61, 0xd0, 0x23, 0x3d, 0x37, 0x50, 0x2c, 0xd7, 0xac, 0xa3, 0xc0, 0x18,
+ 0xfc, 0x68, 0xf3, 0xb0, 0xab, 0x67, 0xae, 0x2b, 0xd2, 0x99, 0x7a, 0x70,
+ 0x9a, 0xe9, 0x21, 0x89, 0xce, 0x8e, 0x2b, 0x61, 0x78, 0xc4, 0x6b, 0x40,
+ 0x62, 0x58, 0xed, 0x82, 0x80, 0x5a, 0x5d, 0xd9, 0x28, 0x82, 0x7e, 0x3e,
+ 0xf3, 0x53, 0xf2, 0xe3, 0x66, 0xc5, 0x46, 0xa1, 0xe9, 0x86, 0xc1, 0x61,
+ 0x75, 0x84, 0x62, 0xe9, 0x09, 0x2e, 0x5c, 0xae, 0xcd, 0x67, 0xe4, 0x55,
+ 0xdf, 0x8b, 0x1c, 0xbf, 0x53, 0x26, 0x62, 0x2d, 0x0d, 0x34, 0x4c, 0x4e,
+ 0xa0, 0x84, 0x35, 0x20, 0x84, 0xa1, 0xca, 0xf2, 0x71, 0x77, 0x45, 0x1f,
+ 0xc2, 0xd3, 0xbe, 0xf3, 0xc2, 0xaf, 0x89, 0x0d, 0xc9, 0x9c, 0x96, 0x5b,
+ 0x7a, 0x7c, 0xbc, 0x7f, 0xc4, 0x62, 0x12, 0x32, 0x44, 0x88, 0x70, 0xd2,
+ 0x19, 0x70, 0x31, 0x23, 0x50, 0x43, 0x3a, 0x52, 0x9b, 0xce, 0xb5, 0x70,
+ 0x09, 0x4e, 0x12, 0xdc, 0x41, 0x9e, 0x92, 0xff, 0xba, 0x64, 0x86, 0x84,
+ 0x5b, 0x97, 0x11, 0xc7, 0xe4, 0x4f, 0x7b, 0x4f, 0x60, 0x6a, 0xb8, 0x82,
+ 0x18, 0x6e, 0x65, 0x9f, 0x97, 0xa5, 0x27, 0xc3, 0xad, 0xbf, 0x4f, 0x92,
+ 0x95, 0x72, 0x1d, 0xc2, 0x38, 0x1d, 0x54, 0xc5, 0xd0, 0xa5, 0x36, 0x1b,
+ 0x6c, 0x0b, 0xd0, 0x51, 0x94, 0x01, 0x0a, 0xd8, 0x43, 0xe4, 0x31, 0x72,
+ 0x9d, 0x2b, 0xd3, 0xd7, 0x41, 0x34, 0x23, 0x13, 0x03, 0xe9, 0x42, 0xcb,
+ 0xda, 0xd0, 0x15, 0xb8, 0xbd, 0xdd, 0x01, 0x86, 0x90, 0x8e, 0x8a, 0x5b,
+ 0x8b, 0xf0, 0x55, 0xf8, 0x1d, 0xbc, 0x25, 0x4a, 0x33, 0x44, 0x8b, 0x8a,
+ 0xc5, 0xd4, 0xc1, 0x25, 0xdb, 0x04, 0x78, 0xc5, 0xcc, 0x23, 0x14, 0xac,
+ 0x9b, 0x9c, 0xca, 0xef, 0x01, 0x07, 0x64, 0x8b, 0xd6, 0x3a, 0x8e, 0x82,
+ 0x15, 0x64, 0x15, 0x3d, 0xd2, 0xa0, 0x6c, 0x94, 0x46, 0x49, 0x44, 0x23,
+ 0x8b, 0x42, 0x99, 0x76, 0x9f, 0xc5, 0x14, 0x71, 0x7e, 0x71, 0x72, 0xa6,
+ 0x14, 0x16, 0x73, 0x5d, 0xcd, 0xc5, 0xe4, 0x47, 0x7c, 0x94, 0x73, 0xbf,
+ 0x2b, 0x10, 0xd3, 0x0c, 0xf2, 0x92, 0x66, 0x4b, 0xcb, 0x15, 0xf4, 0x2a,
+ 0x97, 0x18, 0x22, 0x2b, 0x75, 0x6a, 0xdf, 0xa9, 0x05, 0xde, 0x4a, 0x0b,
+ 0x59, 0xad, 0xf6, 0xe0, 0x25, 0x39, 0x68, 0x27, 0x4b, 0x10, 0xbb, 0x18,
+ 0x8c, 0x99, 0x8e, 0xd4, 0x74, 0xcc, 0x41, 0xc5, 0x6a, 0x4d, 0x73, 0xae,
+ 0xc1, 0x36, 0x2d, 0xca, 0x21, 0x3a, 0x71, 0xc5, 0xa3, 0x2c, 0x8c, 0xc0,
+ 0xdd, 0x5d, 0x5e, 0x75, 0x85, 0xdb, 0x9a, 0x1d, 0x4e, 0x12, 0x94, 0xa1,
+ 0xb9, 0xb7, 0x29, 0x27, 0xb3, 0xb4, 0x77, 0xdb, 0x62, 0xcb, 0x2c, 0x9a,
+ 0x2c, 0x10, 0x15, 0xbd, 0x94, 0xb5, 0xed, 0xd6, 0xf9, 0xf4, 0xe4, 0xec,
+ 0xc2, 0x86, 0x86, 0x6e, 0xf1, 0x41, 0xeb, 0xfc, 0x30, 0xf4, 0x9c, 0xc2,
+ 0x25, 0x81, 0xb3, 0xc8, 0x26, 0x44, 0x5a, 0xa9, 0x4a, 0x84, 0xb2, 0x29,
+ 0x68, 0xc7, 0x1a, 0x62, 0x9d, 0xad, 0xbc, 0xb7, 0xa8, 0x32, 0xa0, 0x65,
+ 0x1b, 0xcf, 0x11, 0x33, 0x0a, 0x33, 0xe8, 0x6e, 0x77, 0xaf, 0x97, 0x69,
+ 0x9e, 0xec, 0xc4, 0xd4, 0xc1, 0xca, 0xf3, 0xd9, 0xe1, 0xf9, 0x85, 0x8c,
+ 0x9d, 0x7f, 0x8b, 0xc6, 0x2e, 0x56, 0x5c, 0xfd, 0xb0, 0x3b, 0x48, 0x05,
+ 0xd4, 0xc1, 0x49, 0x52, 0x1c, 0xb2, 0xcf, 0xed, 0x3b, 0xab, 0x72, 0xb0,
+ 0x66, 0x4f, 0x82, 0x84, 0x78, 0xb0, 0x4d, 0xa5, 0x15, 0x24, 0x58, 0xe3,
+ 0x83, 0x75, 0xed, 0x65, 0x9d, 0x6e, 0x5d, 0x39, 0x12, 0x0c, 0x99, 0xed,
+ 0x5b, 0x78, 0xea, 0x5b, 0x58, 0x30, 0x7f, 0xd7, 0x06, 0x8e, 0xcc, 0xbb,
+ 0xce, 0x1f, 0xba, 0xa0, 0xe7, 0xab, 0x6c, 0x6e, 0x84, 0x21, 0xcf, 0xf9,
+ 0x76, 0x9e, 0x39, 0xef, 0x91, 0xc9, 0x47, 0xc1, 0x50, 0xf8, 0x63, 0xcb,
+ 0x43, 0x46, 0x08, 0x5f, 0x8b, 0xec, 0x9e, 0x3c, 0xf7, 0x37, 0x04, 0xab,
+ 0x12, 0x3e, 0x4e, 0x44, 0x57, 0x20, 0xb8, 0x91, 0x38, 0xce, 0x26, 0x9f,
+ 0x2f, 0x33, 0x18, 0xcd, 0xd2, 0x72, 0xca, 0x98, 0xee, 0x1a, 0xe8, 0x11,
+ 0xb9, 0xa5, 0x35, 0xa7, 0xde, 0xf7, 0xa3, 0x37, 0xd1, 0xd1, 0xf1, 0xa1,
+ 0xdf, 0x2e, 0x41, 0x83, 0xc7, 0x61, 0xf6, 0x42, 0x1e, 0x1d, 0xdc, 0xb9,
+ 0xbb, 0x2e, 0x86, 0xc9, 0x29, 0x97, 0xf2, 0x83, 0xfb, 0xa9, 0xfa, 0x37,
+ 0xdf, 0x9a, 0x1c, 0x16, 0x18, 0x63, 0xe8, 0x02, 0x85, 0x51, 0x34, 0x9f,
+ 0xd3, 0xee, 0xe2, 0x13, 0xfe, 0x35, 0xa8, 0xc2, 0x16, 0x4d, 0xf9, 0x85,
+ 0x7f, 0xb9, 0xa2, 0x79, 0x90, 0xaa, 0xd6, 0x7e, 0xe4, 0xa9, 0xd2, 0x16,
+ 0xe9, 0x71, 0x68, 0xc2, 0xb1, 0x67, 0x3e, 0xd3, 0xa5, 0x54, 0x4b, 0x99,
+ 0x48, 0x0b, 0x97, 0xf6, 0x4c, 0x83, 0x8d, 0x07, 0x4d, 0xc9, 0xa5, 0xb0,
+ 0x2f, 0xeb, 0x84, 0x64, 0x03, 0x3a, 0x39, 0xec, 0x2c, 0xa1, 0xb6, 0xe6,
+ 0xcc, 0x71, 0xa7, 0x0e, 0xea, 0x37, 0xcc, 0x1e, 0xc3, 0xc2, 0x2a, 0x04,
+ 0x63, 0x8c, 0x24, 0xdc, 0xaa, 0x4b, 0xf8, 0x54, 0xa8, 0xd1, 0x91, 0x8e,
+ 0xbb, 0xc7, 0x1a, 0xa3, 0xe3, 0x8e, 0x7d, 0xd2, 0x15, 0xef, 0x36, 0x9b,
+ 0x86, 0xe8, 0x96, 0x0f, 0xa5, 0xbb, 0xa7, 0xcf, 0x7c, 0x53, 0x97, 0x28,
+ 0x98, 0x60, 0xfc, 0x7d, 0xbf, 0xc1, 0x83, 0x5c, 0xb5, 0x84, 0xdc, 0x3d,
+ 0x29, 0xca, 0x82, 0x58, 0xa8, 0x3b, 0x8e, 0x55, 0xd0, 0x87, 0x10, 0xc3,
+ 0x45, 0xc1, 0x11, 0x13, 0xf3, 0x7b, 0x8f, 0xb9, 0x32, 0x94, 0x18, 0x44,
+ 0xb1, 0x41, 0x48, 0xe9, 0x10, 0x87, 0xc6, 0x22, 0xda, 0xa6, 0x2a, 0xe8,
+ 0xb3, 0xf4, 0x63, 0x74, 0xd5, 0xcf, 0x96, 0x33, 0x85, 0x9a, 0x08, 0x7a,
+ 0xfa, 0x5c, 0xb5, 0xd9, 0x9b, 0x39, 0x91, 0xa4, 0xd7, 0xff, 0x42, 0x66,
+ 0x5a, 0x38, 0x17, 0xb1, 0x4b, 0xd8, 0x94, 0xa0, 0xee, 0xca, 0x15, 0x4a,
+ 0xeb, 0xc0, 0x74, 0xe7, 0x0b, 0x59, 0xc5, 0x44, 0x0b, 0x8a, 0x2c, 0x02,
+ 0xa8, 0x50, 0x5e, 0x6f, 0x7d, 0x4c, 0xbe, 0x7a, 0xc0, 0x67, 0x5f, 0x66,
+ 0x7f, 0x41, 0x81, 0xd2, 0xa1, 0x5c, 0x3a, 0x82, 0xd5, 0x25, 0xb3, 0xe4,
+ 0x90, 0x05, 0xcf, 0xf2, 0x9e, 0xbe, 0x50, 0x53, 0x85, 0xaa, 0xc2, 0x56,
+ 0x34, 0xb3, 0x6d, 0x69, 0x7e, 0xb6, 0xe3, 0xd3, 0x49, 0xb2, 0xac, 0xec,
+ 0x55, 0xc2, 0x1d, 0x02, 0x7c, 0x07, 0x62, 0x70, 0xe7, 0xe7, 0xdf, 0x24,
+ 0x6f, 0x5f, 0x3f, 0xe3, 0x0c, 0xe3, 0xab, 0xac, 0xe4, 0x82, 0xb4, 0x5e,
+ 0x17, 0x3b, 0xf9, 0x36, 0x68, 0x6c, 0x37, 0x8c, 0x09, 0x10, 0xfd, 0x49,
+ 0x19, 0x9a, 0x4a, 0xda, 0xb4, 0x85, 0x8c, 0x54, 0x78, 0x65, 0x2e, 0x14,
+ 0x03, 0x17, 0x37, 0x08, 0x4f, 0xc8, 0x2e, 0xed, 0xdc, 0x94, 0x26, 0x13,
+ 0x7b, 0xf6, 0xc4, 0x33, 0xb1, 0xf2, 0x7e, 0xc1, 0x05, 0x13, 0xe6, 0x57,
+ 0x2c, 0x50, 0x77, 0x9c, 0xa8, 0x67, 0xc2, 0x38, 0x0f, 0xe4, 0xdc, 0xb3,
+ 0x30, 0x1b, 0xbf, 0x06, 0xb4, 0x44, 0x78, 0x3b, 0x82, 0xf7, 0x9e, 0x85,
+ 0xea, 0x24, 0x09, 0xe4, 0xb8, 0x17, 0xb5, 0x94, 0x01, 0x24, 0x95, 0xe0,
+ 0xd9, 0xe7, 0xee, 0x59, 0xb6, 0x1d, 0xe4, 0xf3, 0xa0, 0xa8, 0xcc, 0x8a,
+ 0x37, 0x54, 0x08, 0x16, 0xd1, 0xc0, 0x8b, 0x67, 0x22, 0xf7, 0x04, 0x6b,
+ 0x1f, 0xbc, 0xf2, 0xa2, 0xa9, 0x2d, 0xa3, 0xe2, 0xa1, 0x23, 0x4c, 0x4c,
+ 0x2a, 0x5f, 0x5c, 0x87, 0x87, 0xf3, 0xb9, 0xdc, 0xd4, 0xa7, 0x6d, 0xb8,
+ 0x0e, 0xe3, 0x81, 0x59, 0xe8, 0xbb, 0xb3, 0xa3, 0x2e, 0xa4, 0x7f, 0xb0,
+ 0x9f, 0xd8, 0x2b, 0x51, 0x8d, 0x79, 0xa6, 0xf5, 0xa0, 0x93, 0x1d, 0x3d,
+ 0x33, 0x34, 0xe5, 0xe2, 0x6a, 0x9e, 0xff, 0xcd, 0xf0, 0x46, 0xf9, 0x7e,
+ 0xb6, 0x82, 0x40, 0xc1, 0xe3, 0xbb, 0xca, 0x30, 0x6e, 0xd3, 0x69, 0xae,
+ 0x4c, 0x91, 0xed, 0xe8, 0xfe, 0x81, 0x27, 0x4a, 0xb5, 0x1f, 0x73, 0x3e,
+ 0xa2, 0x12, 0x29, 0xcb, 0xa5, 0xe1, 0xd8, 0x83, 0x93, 0x35, 0xd0, 0x5f,
+ 0x9e, 0x3f, 0x55, 0xd9, 0xcb, 0xe4, 0x63, 0xbe, 0x97, 0x78, 0x21, 0xa6,
+ 0x40, 0x8a, 0x6f, 0xb3, 0xe9, 0xe7, 0x7a, 0xf5, 0xe9, 0x56, 0xba, 0xa2,
+ 0x40, 0xa5, 0xd5, 0xb3, 0xe2, 0x5f, 0xef, 0xf2, 0xb9, 0x66, 0x8b, 0x45,
+ 0xaf, 0x3f, 0x5f, 0x61, 0x82, 0xaa, 0xe4, 0xde, 0x3c, 0x04, 0x2d, 0x05,
+ 0xcf, 0x7f, 0xe6, 0x4f, 0x42, 0x03, 0x65, 0xdf, 0x32, 0xa0, 0x10, 0xbb,
+ 0x67, 0xb5, 0x58, 0xec, 0x2c, 0xb1, 0xea, 0xb2, 0x80, 0x9d, 0x76, 0x3e,
+ 0xe9, 0x4a, 0xcd, 0xbc, 0x74, 0xdd, 0x4f, 0x0b, 0xe6, 0xa6, 0x41, 0x7f,
+ 0x42, 0x52, 0x6f, 0x50, 0x60, 0xd3, 0x2b, 0x08, 0xf3, 0x46, 0x1d, 0x3c,
+ 0xff, 0xf4, 0x0b, 0xa5, 0x0d, 0xbb, 0x2f, 0x4d, 0x4c, 0x5d, 0xf9, 0xc6,
+ 0x67, 0xdb, 0xa1, 0xd0, 0x3a, 0x61, 0x4b, 0xbd, 0xe0, 0x6e, 0xae, 0x7c,
+ 0x41, 0x28, 0xe3, 0x88, 0xae, 0x91, 0x2b, 0x22, 0x6a, 0x3c, 0xe3, 0xd1,
+ 0x9f, 0xfd, 0x63, 0xbb, 0x0d, 0xa6, 0x7b, 0x11, 0x8a, 0x50, 0xc9, 0xd1,
+ 0xeb, 0xe0, 0xc1, 0x27, 0x7e, 0x82, 0xe9, 0x94, 0xa5, 0x81, 0x7b, 0xb1,
+ 0x44, 0x54, 0x5a, 0x8a, 0x30, 0x78, 0xf4, 0xa9, 0x26, 0xfc, 0x48, 0xb4,
+ 0x0b, 0x96, 0x3f, 0x7a, 0x46, 0xc8, 0xe1, 0x00, 0x39, 0x7a, 0x35, 0x60,
+ 0x2a, 0xe6, 0xe6, 0x2d, 0x68, 0xef, 0xfd, 0x67, 0xcf, 0x1f, 0x78, 0x56,
+ 0x2f, 0xcd, 0xca, 0x5d, 0xf5, 0xc1, 0x7b, 0x9f, 0xc5, 0xc7, 0xdc, 0xd4,
+ 0x02, 0x43, 0xd3, 0xa1, 0xa3, 0xc6, 0x27, 0x2d, 0xd9, 0x60, 0x14, 0xc6,
+ 0x7f, 0x33, 0xd3, 0x4f, 0xc9, 0xb9, 0x8a, 0xd5, 0xbf, 0x85, 0xe3, 0xfd,
+ 0x3c, 0x84, 0xe4, 0x11, 0xa3, 0x8f, 0x2b, 0x87, 0x1d, 0x16, 0xc9, 0xf4,
+ 0x11, 0xe5, 0x58, 0x9d, 0xa0, 0x05, 0xd9, 0x73, 0x92, 0x23, 0x96, 0x73,
+ 0xcf, 0x39, 0x44, 0x19, 0x54, 0x24, 0x53, 0x8b, 0xed, 0xd6, 0xd1, 0x7d,
+ 0x43, 0x9b, 0x0a, 0xea, 0x08, 0x8c, 0x67, 0xdb, 0xad, 0x63, 0x50, 0x5d,
+ 0x2f, 0x45, 0xf5, 0x76, 0x33, 0xf2, 0x08, 0x5a, 0xc1, 0x6b, 0xbb, 0x9e,
+ 0x7b, 0x61, 0x6c, 0x90, 0x1a, 0x0f, 0x68, 0xb4, 0xa2, 0x9b, 0x27, 0x20,
+ 0x43, 0x73, 0x7c, 0xdc, 0x95, 0x05, 0xff, 0x6a, 0x98, 0xbe, 0x1b, 0xe9,
+ 0x0a, 0xcc, 0x33, 0x05, 0xb8, 0x09, 0xba, 0x51, 0xd1, 0x86, 0x03, 0xe2,
+ 0x69, 0x97, 0xae, 0xb3, 0xf1, 0x8d, 0x1d, 0x99, 0x8d, 0xb4, 0x05, 0x8b,
+ 0x13, 0xbc, 0xf5, 0xd4, 0x2d, 0x2d, 0xd4, 0x9a, 0xb3, 0xc3, 0xb6, 0x26,
+ 0xe0, 0x1f, 0x15, 0xaa, 0x39, 0xbb, 0x38, 0x3f, 0xdd, 0xe3, 0x31, 0x8b,
+ 0x0b, 0x86, 0x0e, 0xc4, 0xc1, 0x79, 0xf6, 0x57, 0xcd, 0x89, 0xae, 0xfc,
+ 0xd3, 0xcf, 0x57, 0x3c, 0x7d, 0xae, 0x31, 0x52, 0x47, 0x13, 0x66, 0xbf,
+ 0xb4, 0x0f, 0xe1, 0x4b, 0x9f, 0x29, 0xc8, 0x84, 0x99, 0x76, 0xc5, 0x72,
+ 0xc4, 0x23, 0x73, 0x29, 0x35, 0xfe, 0xe1, 0xcf, 0xbd, 0x5e, 0x73, 0xbd,
+ 0x9c, 0xdf, 0x38, 0x79, 0x51, 0x03, 0xd8, 0x6c, 0x83, 0xfd, 0x0b, 0x2f,
+ 0xec, 0x68, 0x04, 0x40, 0x67, 0xce, 0xfd, 0xdd, 0x57, 0x4b, 0x85, 0xc5,
+ 0xac, 0x8a, 0xef, 0x88, 0xf8, 0xeb, 0x32, 0x58, 0x83, 0x17, 0xdb, 0xee,
+ 0xfa, 0x5d, 0x2c, 0x47, 0x24, 0x90, 0x26, 0x37, 0xd9, 0x7d, 0xab, 0x6e,
+ 0x3d, 0x3b, 0x02, 0xf2, 0x39, 0x1b, 0x22, 0xfc, 0x23, 0xae, 0x81, 0x1f,
+ 0x7e, 0x10, 0x1e, 0xef, 0x22, 0xa8, 0xd4, 0xb5, 0xe0, 0x4a, 0x49, 0x13,
+ 0x43, 0x14, 0xb1, 0x80, 0x8f, 0x17, 0xec, 0xf1, 0x65, 0x36, 0xcd, 0x18,
+ 0x3b, 0x5d, 0xf4, 0x14, 0x10, 0x76, 0x57, 0x0a, 0x26, 0xc7, 0x18, 0xc3,
+ 0xad, 0xc2, 0x99, 0xce, 0x30, 0xe8, 0xcd, 0x39, 0x30, 0x55, 0x8d, 0x55,
+ 0xb4, 0xe3, 0xfb, 0xef, 0x2f, 0xbe, 0x39, 0x39, 0x3b, 0x4f, 0xb6, 0x18,
+ 0xd4, 0xf2, 0xe2, 0xec, 0xe8, 0xab, 0xf7, 0xa4, 0xff, 0x3b, 0xb7, 0xcc,
+ 0xeb, 0x74, 0x9e, 0xd3, 0xcd, 0x71, 0x5e, 0x67, 0x73, 0xda, 0xc7, 0x2b,
+ 0x2b, 0x57, 0x2a, 0xc5, 0x4e, 0xe8, 0xae, 0x2c, 0x4a, 0xa9, 0x94, 0x85,
+ 0xf4, 0xb8, 0xeb, 0x42, 0x37, 0x43, 0x82, 0x2d, 0x39, 0xad, 0x80, 0xb3,
+ 0x35, 0x0a, 0xaf, 0xdb, 0xe6, 0x2d, 0x4c, 0x4e, 0xf3, 0xae, 0x26, 0x17,
+ 0xdf, 0xec, 0xbf, 0xfb, 0xf6, 0xdc, 0x0a, 0x03, 0x7c, 0xff, 0xfd, 0xf7,
+ 0xa1, 0xd7, 0x7f, 0x6f, 0x6b, 0x0b, 0xe2, 0xe5, 0x75, 0xfa, 0xf1, 0xe3,
+ 0xb0, 0xca, 0xd6, 0xd6, 0xde, 0x78, 0x5f, 0x9d, 0x2f, 0x36, 0x5b, 0x2d,
+ 0x49, 0xb2, 0xa0, 0xaf, 0xb7, 0x68, 0x7d, 0xb9, 0xb8, 0xed, 0xd6, 0xb2,
+ 0xce, 0xa7, 0x74, 0x21, 0x65, 0x15, 0xde, 0xde, 0x5a, 0x5b, 0x3b, 0x3f,
+ 0x3c, 0x4c, 0xf6, 0x8f, 0xcf, 0x4f, 0x82, 0x77, 0x37, 0x76, 0x38, 0x72,
+ 0xe5, 0x2a, 0xab, 0x37, 0x18, 0x1f, 0xf6, 0x78, 0xff, 0x82, 0x75, 0xde,
+ 0xef, 0x0e, 0xcf, 0xce, 0x8f, 0x4e, 0xde, 0xf1, 0xee, 0x70, 0xc0, 0x62,
+ 0x3a, 0xbd, 0xe3, 0x78, 0xd5, 0xcb, 0x1c, 0x60, 0x3d, 0x77, 0x56, 0x39,
+ 0xb6, 0x8d, 0xbc, 0x4f, 0xf7, 0xd5, 0x1d, 0xa3, 0x66, 0x6b, 0xa0, 0x03,
+ 0x07, 0xae, 0xd3, 0x4a, 0x58, 0x24, 0xe2, 0x5a, 0xe2, 0xed, 0x5e, 0x02,
+ 0xea, 0x9b, 0x8d, 0x24, 0xbc, 0xba, 0x2f, 0x10, 0x17, 0x48, 0x6f, 0x09,
+ 0xe2, 0x26, 0x3b, 0x27, 0x7e, 0x7e, 0xc4, 0xc5, 0x59, 0x92, 0xf7, 0xe7,
+ 0xfb, 0x5f, 0x1f, 0xf2, 0xa3, 0x5f, 0x67, 0xb5, 0xdf, 0x0f, 0xa9, 0x70,
+ 0xcb, 0x9d, 0xbc, 0xcb, 0xea, 0x6a, 0x9c, 0x2e, 0x38, 0x85, 0x9f, 0xba,
+ 0x19, 0xc8, 0x3d, 0x14, 0xb4, 0x2d, 0xba, 0x80, 0x2f, 0x03, 0x3c, 0xd7,
+ 0xe7, 0x51, 0xa3, 0x37, 0x6c, 0xf7, 0xec, 0x70, 0xff, 0xf5, 0xdb, 0x43,
+ 0x0b, 0xd0, 0x97, 0x82, 0x18, 0xd4, 0xe8, 0x75, 0x31, 0xcb, 0x02, 0x5b,
+ 0x38, 0xcb, 0x06, 0xbc, 0xf8, 0xf4, 0x0d, 0x17, 0xc9, 0xed, 0xee, 0xce,
+ 0x6f, 0x14, 0x9e, 0x1d, 0x5e, 0xe6, 0x5b, 0xd2, 0xba, 0xf5, 0x97, 0xba,
+ 0x25, 0x91, 0x49, 0xa4, 0x26, 0x2e, 0x8b, 0x4d, 0x03, 0xc6, 0x90, 0xcf,
+ 0xb7, 0xb7, 0xb7, 0x1f, 0x98, 0x07, 0xf4, 0x09, 0xbd, 0x75, 0x69, 0x2a,
+ 0x7b, 0xfc, 0xf8, 0x96, 0x6f, 0xdf, 0x8f, 0x78, 0xaa, 0x78, 0x09, 0x5c,
+ 0xc7, 0x6e, 0x2e, 0xe0, 0xbc, 0x79, 0x9d, 0x75, 0x0f, 0x79, 0x5c, 0x14,
+ 0x6e, 0x07, 0x1a, 0x8b, 0x43, 0x12, 0x32, 0x24, 0x1e, 0x8d, 0xec, 0xc4,
+ 0x1b, 0x32, 0x70, 0xd2, 0x7f, 0x10, 0xcd, 0x56, 0xde, 0xb7, 0x9b, 0xe4,
+ 0x6f, 0xa8, 0x4d, 0xfe, 0x31, 0x2c, 0xca, 0xab, 0xad, 0xd9, 0x1e, 0x44,
+ 0x1a, 0x7a, 0xe8, 0x0d, 0xa3, 0xa9, 0x24, 0x24, 0x1a, 0xbb, 0xa0, 0xf4,
+ 0x8a, 0x17, 0x96, 0xf3, 0x67, 0x3e, 0x61, 0x5c, 0xbf, 0x60, 0x15, 0x24,
+ 0x22, 0xea, 0xd2, 0x66, 0x6e, 0xc5, 0x2c, 0x3b, 0x3a, 0xa9, 0x78, 0xc3,
+ 0xd8, 0xe2, 0x38, 0x24, 0x06, 0x42, 0xbd, 0x70, 0xb8, 0x1b, 0x48, 0x84,
+ 0x7e, 0x2d, 0x89, 0x64, 0x86, 0xf5, 0x47, 0xf0, 0x5d, 0xad, 0xab, 0x2a,
+ 0xd8, 0x92, 0xec, 0xc1, 0x5d, 0x70, 0x92, 0x6b, 0x89, 0x92, 0x2c, 0xe8,
+ 0x81, 0x13, 0x67, 0x89, 0xf3, 0x5c, 0xe9, 0xc2, 0x21, 0x06, 0x88, 0x1b,
+ 0x6e, 0xf7, 0x39, 0x18, 0x80, 0x7e, 0x2a, 0x47, 0x2d, 0x9f, 0xd0, 0x79,
+ 0x30, 0x29, 0x59, 0xfd, 0xb9, 0x5e, 0xd3, 0x01, 0xed, 0x9c, 0xd3, 0x28,
+ 0xa2, 0xbe, 0x96, 0xbe, 0x34, 0x6c, 0x25, 0xdd, 0x05, 0x75, 0x8d, 0x18,
+ 0x89, 0x6e, 0x0b, 0x59, 0x64, 0x9f, 0xdc, 0xc7, 0xc1, 0xa9, 0xfe, 0xc6,
+ 0xb1, 0x34, 0xf9, 0x2d, 0x4f, 0x9e, 0x59, 0x3c, 0x5d, 0xd6, 0x7c, 0x07,
+ 0x98, 0x8c, 0x8b, 0xd0, 0x1c, 0xa8, 0xab, 0xc8, 0x78, 0x08, 0xf5, 0x8d,
+ 0x07, 0x46, 0xb8, 0x47, 0x4b, 0xc3, 0x57, 0xca, 0x7f, 0x6d, 0x0d, 0xab,
+ 0xea, 0x7a, 0x2b, 0x9f, 0x7c, 0x28, 0xab, 0x34, 0xf9, 0xa9, 0xc9, 0xef,
+ 0xab, 0x71, 0x7b, 0x12, 0xff, 0x85, 0x15, 0xfc, 0x45, 0x2b, 0xb5, 0x7a,
+ 0x16, 0xbf, 0xc5, 0x0c, 0x06, 0x03, 0x80, 0x3b, 0x68, 0x4f, 0x1f, 0xe8,
+ 0x81, 0x0f, 0x0e, 0xa1, 0xe2, 0x57, 0xcc, 0xae, 0x83, 0x15, 0xd2, 0x24,
+ 0x25, 0xd0, 0x9c, 0x78, 0x4b, 0x37, 0xa1, 0xaf, 0xeb, 0xd1, 0xf9, 0x71,
+ 0x77, 0x7b, 0x7b, 0x67, 0x6f, 0xe7, 0xf3, 0x17, 0xdb, 0x7b, 0x3b, 0x3b,
+ 0x3b, 0xbb, 0x7b, 0x3b, 0x7b, 0x7b, 0xbb, 0xdb, 0x3f, 0x6f, 0xad, 0xaf,
+ 0x5a, 0xba, 0xb7, 0x5f, 0xad, 0x68, 0x90, 0x66, 0xbd, 0x2e, 0x51, 0xac,
+ 0x3f, 0xb9, 0xd9, 0x63, 0x56, 0x93, 0xf5, 0xa4, 0x9a, 0x8d, 0xa8, 0x2b,
+ 0x3d, 0x9c, 0xe1, 0x64, 0x2a, 0x92, 0xa4, 0xb3, 0x60, 0x42, 0xaf, 0x4f,
+ 0xbe, 0x7f, 0x77, 0x7c, 0xb2, 0xff, 0x3a, 0xb9, 0x38, 0x49, 0xf6, 0x61,
+ 0xf7, 0xeb, 0xe0, 0x93, 0x88, 0x44, 0xe7, 0x8c, 0x4b, 0x81, 0xc7, 0xf0,
+ 0x3e, 0x02, 0x33, 0x52, 0xb9, 0xd0, 0x27, 0x0c, 0xa2, 0x3d, 0xce, 0x02,
+ 0x7a, 0x1d, 0xb7, 0x34, 0xbc, 0xae, 0x67, 0x8f, 0xdf, 0x08, 0x9f, 0xd2,
+ 0x73, 0x5f, 0x5c, 0xf1, 0x5e, 0x75, 0xc7, 0x70, 0xec, 0xe4, 0x6b, 0x5a,
+ 0x93, 0x3a, 0xb4, 0xd4, 0x8d, 0xed, 0x92, 0x70, 0x36, 0x24, 0x70, 0x0b,
+ 0x6f, 0xe0, 0x5c, 0xc2, 0xfb, 0xd5, 0x0e, 0x0e, 0x52, 0xa1, 0xbe, 0x6f,
+ 0x71, 0x12, 0x90, 0x91, 0x58, 0x28, 0xdd, 0x8c, 0x26, 0x78, 0xb2, 0x72,
+ 0x4a, 0x74, 0x97, 0x67, 0x1f, 0x31, 0xeb, 0x26, 0xef, 0x95, 0x30, 0x67,
+ 0x3f, 0x3b, 0x14, 0x6b, 0x30, 0x63, 0x44, 0x5e, 0xda, 0x90, 0x11, 0xe1,
+ 0xd5, 0xd1, 0x1d, 0xf7, 0x63, 0x2c, 0xd9, 0x77, 0xc1, 0xdf, 0x84, 0xf7,
+ 0xf8, 0x96, 0xb3, 0xef, 0xca, 0x00, 0xde, 0x9f, 0x1f, 0xbd, 0xfb, 0x1a,
+ 0x1e, 0xdc, 0xef, 0x4f, 0xce, 0x5e, 0x9f, 0x53, 0xb3, 0x2c, 0xe0, 0xac,
+ 0xc1, 0xc4, 0xc7, 0x9c, 0x50, 0x47, 0x25, 0xe7, 0x92, 0xbb, 0xfe, 0xa3,
+ 0x90, 0x53, 0x3f, 0x2c, 0xf1, 0x37, 0x0b, 0x15, 0x1e, 0xc6, 0x89, 0xe8,
+ 0xbe, 0x35, 0x02, 0x6a, 0xfc, 0x72, 0x96, 0x8e, 0xaf, 0x59, 0x43, 0x17,
+ 0x62, 0x45, 0xa8, 0xdd, 0x16, 0xe7, 0xcc, 0x6c, 0xb1, 0xe2, 0xb5, 0x55,
+ 0x17, 0x20, 0x47, 0xb4, 0x22, 0xd9, 0x8a, 0x56, 0x94, 0x2e, 0x30, 0xcf,
+ 0x10, 0xad, 0x5f, 0x4e, 0xd3, 0x2b, 0x74, 0x18, 0x1f, 0x83, 0xa0, 0x33,
+ 0xed, 0xfe, 0x53, 0xbb, 0xe4, 0x6b, 0x03, 0xed, 0x1d, 0x81, 0x00, 0x80,
+ 0x22, 0x07, 0xf0, 0x0b, 0xf5, 0x3c, 0x89, 0xd4, 0xc9, 0x7e, 0x7a, 0x84,
+ 0xf4, 0x70, 0x85, 0xed, 0x76, 0xdd, 0x29, 0x94, 0x3c, 0x16, 0xdc, 0x1d,
+ 0x12, 0xcc, 0x07, 0x01, 0x7e, 0x8f, 0x28, 0xa7, 0xdc, 0x52, 0x60, 0x04,
+ 0xaa, 0x7c, 0x58, 0x22, 0x4a, 0x03, 0xc1, 0xe4, 0x21, 0x4b, 0xce, 0x83,
+ 0x01, 0xf2, 0x54, 0x65, 0xf1, 0x6e, 0x2a, 0x06, 0xaf, 0x73, 0x25, 0x41,
+ 0x0e, 0x58, 0x59, 0x37, 0x30, 0x19, 0x5f, 0x63, 0xc4, 0xe3, 0x01, 0x57,
+ 0x35, 0x0d, 0x25, 0xe5, 0x9a, 0x94, 0xa8, 0xb6, 0x6c, 0x10, 0xe3, 0xa4,
+ 0x4e, 0x49, 0x56, 0xf3, 0xba, 0x85, 0xbd, 0x48, 0x2b, 0x79, 0x25, 0x79,
+ 0x05, 0x0e, 0x24, 0x83, 0x2f, 0x2f, 0xc1, 0xbd, 0x5a, 0xd3, 0x90, 0x02,
+ 0x7f, 0x4f, 0x7a, 0xd3, 0x25, 0xdf, 0x71, 0x24, 0xc4, 0x13, 0x03, 0x17,
+ 0xca, 0xd1, 0x14, 0xdc, 0xa0, 0xb4, 0x6d, 0x63, 0xd9, 0x2c, 0x0b, 0x47,
+ 0x9a, 0x63, 0xce, 0xec, 0xcd, 0xb0, 0x6e, 0x05, 0xd7, 0x10, 0x7a, 0xe4,
+ 0x6e, 0x81, 0x8e, 0x7c, 0xfc, 0xd4, 0xc3, 0xd7, 0x04, 0xcb, 0x26, 0xc1,
+ 0x76, 0xfe, 0x3d, 0xda, 0x23, 0x6e, 0x2a, 0xaf, 0xab, 0x6c, 0x7a, 0xa9,
+ 0x78, 0x43, 0x72, 0x85, 0xf0, 0x2c, 0xd3, 0x16, 0x2a, 0x11, 0xfb, 0x4b,
+ 0xe7, 0x0e, 0xfe, 0xa4, 0x50, 0x5e, 0x72, 0x05, 0xb6, 0x2e, 0xcf, 0x81,
+ 0x24, 0x1b, 0x3c, 0x44, 0x9c, 0xa2, 0x7f, 0x92, 0x40, 0x2d, 0xd7, 0x5c,
+ 0x83, 0x75, 0x34, 0x22, 0x8c, 0xf9, 0xd6, 0xb1, 0xb5, 0xe3, 0xd5, 0xba,
+ 0x5f, 0x70, 0x05, 0x01, 0x8e, 0x8a, 0x10, 0xe1, 0x1c, 0x7a, 0x97, 0xa5,
+ 0xf1, 0x00, 0x22, 0x25, 0xfb, 0xc8, 0x49, 0x2d, 0x3a, 0x37, 0xaf, 0xe4,
+ 0x39, 0xa1, 0x5e, 0xe7, 0xcb, 0xad, 0xe1, 0x73, 0xf0, 0x42, 0x5e, 0x6d,
+ 0x46, 0x14, 0x63, 0x45, 0x4d, 0x23, 0x71, 0x1d, 0xa2, 0x05, 0x54, 0x43,
+ 0x57, 0xb5, 0x58, 0x61, 0x41, 0x24, 0xdf, 0xec, 0xde, 0xbc, 0x7f, 0x70,
+ 0xbe, 0xa6, 0xa2, 0x40, 0x42, 0x08, 0x0e, 0x3a, 0x66, 0x52, 0x42, 0x69,
+ 0x95, 0x46, 0xa8, 0x66, 0x63, 0x96, 0xcb, 0x91, 0xdf, 0x58, 0xa6, 0x11,
+ 0x04, 0x39, 0x72, 0x93, 0xf0, 0x35, 0xe3, 0xd4, 0xb8, 0x18, 0xdf, 0x65,
+ 0x04, 0x11, 0x95, 0x2b, 0xd0, 0x16, 0x31, 0x14, 0x24, 0x30, 0x2e, 0x2b,
+ 0x47, 0x39, 0xb4, 0x5a, 0x37, 0x7a, 0x21, 0xae, 0x21, 0xfa, 0x35, 0x66,
+ 0x37, 0xca, 0x79, 0x57, 0xf3, 0x9b, 0xc7, 0x59, 0x4d, 0x3c, 0x24, 0xd3,
+ 0x17, 0xa7, 0xf7, 0xc2, 0x0d, 0xf2, 0xf9, 0xc3, 0x4c, 0x47, 0x07, 0xf1,
+ 0x49, 0x1d, 0x63, 0xae, 0x0a, 0xaa, 0x03, 0xb7, 0x8a, 0x8f, 0x3e, 0x94,
+ 0x48, 0x0e, 0x24, 0xc5, 0xb4, 0x92, 0x3b, 0xcc, 0x28, 0xe9, 0xd6, 0x11,
+ 0x07, 0x5e, 0x52, 0x3f, 0xf7, 0x92, 0xaf, 0xd2, 0x2a, 0x1f, 0xf7, 0xb5,
+ 0x32, 0xa5, 0x56, 0xaa, 0xe4, 0x37, 0x7c, 0xc5, 0xc2, 0x0d, 0x49, 0xeb,
+ 0xd9, 0x1c, 0x26, 0xdf, 0x5b, 0xa9, 0x51, 0xd2, 0x21, 0x01, 0x96, 0xcb,
+ 0xbe, 0x00, 0x6e, 0xad, 0x81, 0xba, 0xa4, 0xf4, 0xe9, 0x90, 0x8d, 0xe8,
+ 0x53, 0x74, 0xe2, 0x4b, 0x09, 0x61, 0x57, 0xd3, 0xea, 0xc6, 0x79, 0xc2,
+ 0xb0, 0x57, 0xca, 0x8a, 0x00, 0xce, 0x28, 0xb2, 0xb4, 0x58, 0x06, 0x8a,
+ 0xa5, 0x0b, 0x2f, 0xc1, 0xdf, 0xee, 0xf8, 0x5a, 0xa1, 0x60, 0x58, 0x5f,
+ 0x2b, 0x8d, 0x4b, 0xb4, 0xe8, 0x11, 0xbe, 0x7e, 0xb9, 0x39, 0xc7, 0xa2,
+ 0x06, 0x03, 0x5a, 0x30, 0x5e, 0x1a, 0x65, 0xa0, 0x27, 0x17, 0x87, 0xff,
+ 0x92, 0xec, 0xb7, 0x9d, 0xe7, 0x7c, 0x33, 0x35, 0xe0, 0x95, 0xfa, 0x9e,
+ 0xc0, 0x30, 0x76, 0x09, 0x45, 0x94, 0x02, 0x5b, 0x29, 0xb6, 0x7f, 0x4d,
+ 0x13, 0x9f, 0xbd, 0x89, 0xb8, 0x2a, 0x34, 0xb2, 0xba, 0xbe, 0xb7, 0xaa,
+ 0x02, 0xfc, 0x1a, 0x5c, 0x0a, 0x41, 0x61, 0x21, 0xc9, 0x1d, 0xcd, 0x53,
+ 0x89, 0x6c, 0x67, 0x30, 0x35, 0xda, 0x94, 0xb9, 0x30, 0x50, 0x04, 0x61,
+ 0x4b, 0xac, 0xa0, 0xa0, 0x95, 0xe5, 0x35, 0x54, 0x2d, 0xc9, 0xe0, 0x92,
+ 0x02, 0x83, 0x41, 0x55, 0xd9, 0x34, 0xc4, 0xb5, 0xfb, 0xc0, 0x47, 0xee,
+ 0x83, 0x5d, 0x2c, 0x7a, 0x05, 0xca, 0x58, 0x2e, 0x45, 0x0f, 0x6a, 0x92,
+ 0xac, 0x1d, 0x3b, 0xb9, 0xcd, 0x4e, 0x2d, 0x0c, 0x11, 0x1b, 0x31, 0x06,
+ 0x5c, 0xd4, 0xf4, 0x5e, 0xbc, 0xe6, 0xb8, 0x53, 0x8d, 0x6b, 0x86, 0x17,
+ 0x13, 0x70, 0xe0, 0x00, 0x3c, 0x85, 0x82, 0xdf, 0x5a, 0xbc, 0x4a, 0x82,
+ 0xbe, 0xa9, 0xd5, 0x66, 0xa8, 0x3e, 0x92, 0x77, 0xb0, 0xaa, 0x3c, 0x0a,
+ 0x01, 0x5d, 0x0c, 0x53, 0x05, 0xa8, 0x35, 0x74, 0x64, 0xf5, 0x9b, 0x5b,
+ 0x04, 0x4d, 0xdc, 0xf0, 0xa8, 0x6e, 0xb1, 0x27, 0x57, 0x16, 0x2a, 0x88,
+ 0x51, 0x7d, 0xe3, 0x00, 0xf8, 0xb4, 0x59, 0x2e, 0x6f, 0x39, 0xce, 0x82,
+ 0x0c, 0x9d, 0x79, 0xb1, 0x16, 0xdc, 0x7c, 0x42, 0x3f, 0x45, 0x65, 0x3c,
+ 0x51, 0xd0, 0xd9, 0xa4, 0xb4, 0xdd, 0x28, 0x93, 0x7a, 0x13, 0x44, 0x25,
+ 0xb2, 0x8b, 0x80, 0x30, 0xe5, 0x13, 0x28, 0x94, 0x39, 0x03, 0x71, 0xaf,
+ 0x79, 0xea, 0xe6, 0x3b, 0x68, 0xd5, 0x3c, 0x39, 0x55, 0x97, 0xc9, 0xcd,
+ 0xec, 0xe5, 0x22, 0x3a, 0xb1, 0x9e, 0x32, 0xd7, 0xc2, 0x9d, 0x30, 0x1e,
+ 0xe9, 0xa8, 0x79, 0x77, 0x20, 0xd9, 0xce, 0x9d, 0x9c, 0x65, 0x9b, 0xde,
+ 0x40, 0x19, 0x64, 0x9e, 0x32, 0x49, 0x66, 0xf7, 0x9a, 0x9a, 0xa2, 0xb2,
+ 0x01, 0x63, 0x3c, 0xc0, 0x2a, 0xf1, 0xf9, 0xe7, 0x91, 0x2c, 0xf8, 0xd1,
+ 0x3d, 0xbd, 0x47, 0x5f, 0x07, 0xd6, 0x8f, 0x29, 0x07, 0x9a, 0xb0, 0xb5,
+ 0x01, 0x72, 0xa8, 0x33, 0x81, 0x74, 0x68, 0x18, 0x01, 0x66, 0x9a, 0xf4,
+ 0xe8, 0xfc, 0x32, 0x11, 0x95, 0xf5, 0x3d, 0xdf, 0x5f, 0x13, 0xf5, 0x5a,
+ 0x0b, 0xb3, 0x56, 0x12, 0xb0, 0xb4, 0x42, 0x31, 0x33, 0x36, 0xd9, 0x1e,
+ 0x6d, 0x20, 0x35, 0x93, 0xe4, 0x3e, 0xe4, 0x4b, 0x95, 0x95, 0x80, 0xf3,
+ 0x42, 0x1b, 0xe6, 0x45, 0xd6, 0xc1, 0x38, 0xea, 0x68, 0xd1, 0x91, 0xab,
+ 0x2a, 0xea, 0x79, 0xc4, 0xfb, 0xd5, 0xc3, 0x79, 0xff, 0x6b, 0x86, 0xb3,
+ 0x9f, 0x3c, 0x98, 0xa2, 0x21, 0x90, 0x10, 0xe0, 0xf8, 0x95, 0x25, 0xa7,
+ 0x15, 0xa0, 0x6a, 0x93, 0x7b, 0x64, 0x8d, 0x50, 0x18, 0xb8, 0x55, 0x7d,
+ 0x2f, 0x36, 0x4c, 0xcc, 0x0b, 0x79, 0x1a, 0x4a, 0x0d, 0xb7, 0xdf, 0xb7,
+ 0xa1, 0x7c, 0xea, 0x70, 0x05, 0xf7, 0xc6, 0x25, 0xa1, 0xb4, 0xd3, 0x2b,
+ 0x34, 0xed, 0x69, 0x67, 0xb8, 0x1d, 0xca, 0x57, 0x2e, 0x19, 0xaa, 0x04,
+ 0x00, 0x6d, 0x0d, 0x68, 0x29, 0x2f, 0xa2, 0xf0, 0x4c, 0x90, 0x1d, 0xd8,
+ 0x7a, 0x4d, 0x3f, 0xdb, 0x11, 0x08, 0x2f, 0x3a, 0x49, 0x5a, 0xb0, 0x88,
+ 0x11, 0x74, 0xb2, 0xd9, 0x02, 0x49, 0x23, 0xc6, 0x01, 0x43, 0x21, 0x00,
+ 0xe7, 0xe8, 0xa9, 0x3f, 0x52, 0xcf, 0xdc, 0x76, 0xeb, 0x18, 0x25, 0xa7,
+ 0x40, 0x2b, 0xc1, 0x4b, 0x58, 0x3f, 0x84, 0xcf, 0x2c, 0x93, 0x96, 0xea,
+ 0x95, 0xc9, 0x6d, 0x07, 0xcd, 0x44, 0x53, 0xa6, 0x67, 0x5c, 0xb6, 0xc9,
+ 0xe5, 0xb2, 0x04, 0xe3, 0x55, 0x08, 0x46, 0x45, 0xa3, 0xe1, 0x56, 0x39,
+ 0x3e, 0xb7, 0x83, 0xd3, 0x20, 0x7d, 0x3b, 0x43, 0x5d, 0x77, 0x3e, 0xd7,
+ 0x62, 0x1d, 0x07, 0x72, 0x86, 0xd6, 0xdc, 0xf3, 0xbe, 0x37, 0x27, 0x9e,
+ 0x51, 0xbb, 0xd3, 0x9c, 0x06, 0xd4, 0x03, 0x2c, 0x8b, 0x95, 0xac, 0x56,
+ 0x5e, 0xe8, 0xd0, 0x29, 0x0d, 0x96, 0xbd, 0x59, 0x0f, 0x3a, 0x2e, 0xe1,
+ 0xd5, 0x66, 0xba, 0x72, 0x0d, 0xf4, 0x93, 0xc1, 0xff, 0xd2, 0x95, 0x61,
+ 0xf1, 0x9c, 0x63, 0xc7, 0x50, 0xb7, 0x63, 0x11, 0xe0, 0x99, 0x6a, 0x8a,
+ 0x1f, 0x18, 0x3e, 0x07, 0x86, 0xda, 0x3c, 0x5c, 0xde, 0xad, 0xe5, 0x08,
+ 0x81, 0xff, 0xbd, 0x09, 0x91, 0x6b, 0x1b, 0x65, 0xba, 0x95, 0x55, 0x48,
+ 0x73, 0x6b, 0xae, 0x10, 0x88, 0xc4, 0x0a, 0x46, 0x03, 0x76, 0x17, 0xd9,
+ 0x57, 0x5c, 0x28, 0xf1, 0xa0, 0x48, 0xc3, 0x65, 0x35, 0x5d, 0x6e, 0xcd,
+ 0x46, 0x2a, 0xc4, 0xef, 0x4c, 0x19, 0x92, 0xdf, 0x3a, 0xa0, 0x17, 0x06,
+ 0xef, 0xd5, 0x9c, 0xf1, 0xa5, 0xf4, 0x30, 0x84, 0xd9, 0x5d, 0x7a, 0x38,
+ 0x45, 0x81, 0x69, 0x7b, 0x60, 0x4f, 0x5f, 0xe2, 0xa4, 0xd8, 0x75, 0xb5,
+ 0xe4, 0x34, 0x57, 0x45, 0x9e, 0xb7, 0xa4, 0x59, 0xae, 0x4e, 0x8c, 0x29,
+ 0x0c, 0xc4, 0xa1, 0xc3, 0x87, 0x4c, 0x7e, 0x95, 0x77, 0x55, 0x79, 0xbc,
+ 0xe7, 0x26, 0x86, 0x12, 0x75, 0xaf, 0xb6, 0x97, 0xdd, 0x9d, 0x2d, 0x19,
+ 0xcc, 0x96, 0x34, 0x20, 0x72, 0x9d, 0x92, 0xa4, 0x0f, 0x02, 0x31, 0x00,
+ 0xa2, 0xf0, 0xe6, 0xe2, 0x1c, 0x01, 0x0e, 0xde, 0x99, 0x69, 0xe4, 0x31,
+ 0xbc, 0x6b, 0x7c, 0x35, 0xd1, 0x5d, 0x0b, 0x38, 0x23, 0x4d, 0x62, 0xe4,
+ 0xf2, 0x09, 0x6e, 0x83, 0xfa, 0x4e, 0xe4, 0x23, 0x52, 0x1a, 0xdc, 0x86,
+ 0x5a, 0x53, 0xa6, 0xe8, 0xa2, 0xd3, 0x7b, 0xf8, 0x06, 0x5c, 0xbd, 0x3d,
+ 0x0d, 0x95, 0x20, 0x8a, 0x3e, 0xdb, 0x7f, 0xf7, 0xf5, 0x21, 0x24, 0x01,
+ 0x07, 0x37, 0x99, 0x33, 0xb5, 0x4f, 0x96, 0x63, 0xa8, 0x42, 0xb4, 0x62,
+ 0x88, 0x7d, 0x03, 0x0e, 0xb3, 0x95, 0x47, 0x44, 0xc5, 0x47, 0x10, 0x2f,
+ 0xb6, 0x5b, 0x23, 0xda, 0xd6, 0x12, 0xb3, 0xa8, 0x42, 0x82, 0x60, 0x85,
+ 0x91, 0x66, 0x08, 0xf3, 0x6b, 0xb5, 0x1c, 0x2d, 0x52, 0x45, 0xa8, 0x49,
+ 0x43, 0x08, 0x13, 0xb5, 0xb3, 0x0c, 0x9b, 0x67, 0x71, 0xcd, 0xd2, 0x5b,
+ 0x9c, 0x4e, 0x5f, 0x42, 0xa7, 0x1f, 0x86, 0x56, 0x35, 0x81, 0xd8, 0xd8,
+ 0xd9, 0xde, 0xf6, 0x05, 0x77, 0x3c, 0x14, 0x4b, 0xc4, 0x2d, 0xcb, 0x64,
+ 0x7b, 0xf0, 0xe2, 0xc5, 0x2a, 0x46, 0xe8, 0x1a, 0x05, 0x1e, 0xca, 0xb3,
+ 0x4f, 0x6e, 0x73, 0xc0, 0x8f, 0xae, 0x6a, 0xb3, 0x43, 0xa3, 0xa9, 0x72,
+ 0x80, 0x11, 0xca, 0x8a, 0x3a, 0xa9, 0x45, 0x2d, 0x3c, 0xe2, 0xac, 0x81,
+ 0xf3, 0xcc, 0xd5, 0x87, 0xc7, 0x52, 0xae, 0x79, 0xa4, 0x6c, 0x00, 0x67,
+ 0x98, 0x31, 0x68, 0xc1, 0x01, 0x85, 0xb9, 0xf3, 0xe1, 0x7e, 0xd2, 0xc2,
+ 0x04, 0x0a, 0xfc, 0x8a, 0x25, 0xba, 0x8c, 0x67, 0x63, 0x22, 0xc1, 0xfb,
+ 0x53, 0xb6, 0xff, 0x1d, 0xbd, 0xfb, 0x5a, 0xcc, 0x21, 0xa4, 0xdb, 0xc3,
+ 0x96, 0xbe, 0xd5, 0xd2, 0xf4, 0xdf, 0x4b, 0xdd, 0x1c, 0x0e, 0x27, 0x45,
+ 0xf0, 0x86, 0x94, 0xbd, 0xcd, 0xe7, 0xc2, 0x0a, 0xfc, 0xee, 0xaf, 0xb0,
+ 0x55, 0x5e, 0x24, 0x83, 0x40, 0x38, 0xd1, 0xb2, 0x39, 0x2c, 0x99, 0xcc,
+ 0xee, 0x4d, 0x33, 0xd2, 0x1e, 0xd0, 0xba, 0x79, 0x66, 0x5c, 0xb3, 0xa2,
+ 0xe7, 0x8a, 0x7a, 0x0e, 0x0a, 0x8a, 0x64, 0x93, 0x8e, 0x2e, 0xa5, 0x1b,
+ 0x9c, 0xef, 0x96, 0x24, 0xf2, 0x69, 0x43, 0x69, 0x98, 0x3a, 0x9b, 0x85,
+ 0x16, 0x59, 0xb2, 0xea, 0x9b, 0xed, 0xa7, 0x6d, 0x86, 0x94, 0x52, 0xee,
+ 0x21, 0x57, 0xe7, 0xdd, 0x46, 0x51, 0xd6, 0xa2, 0xf8, 0xef, 0x8f, 0xf3,
+ 0x81, 0x11, 0xf2, 0x41, 0xe5, 0x9b, 0x6a, 0x3e, 0xf1, 0x36, 0x0d, 0x1d,
+ 0x71, 0xa7, 0x23, 0xe4, 0x42, 0xde, 0x97, 0xae, 0xd3, 0xee, 0xee, 0xe4,
+ 0x7d, 0x5b, 0x9a, 0x8e, 0x03, 0xc0, 0x22, 0xad, 0x96, 0x55, 0x72, 0xa9,
+ 0xa7, 0xa6, 0xcb, 0xb0, 0x14, 0x0e, 0xce, 0x91, 0x37, 0xc5, 0x92, 0xb5,
+ 0x44, 0xf3, 0xdb, 0x51, 0x74, 0x89, 0x69, 0x08, 0x28, 0xfc, 0xb8, 0xbc,
+ 0x6e, 0x72, 0x2d, 0x3b, 0x08, 0xac, 0x69, 0x66, 0x69, 0x2c, 0xd4, 0x28,
+ 0xc6, 0x95, 0x87, 0xfd, 0x2e, 0x97, 0x73, 0xe5, 0x7d, 0xac, 0x6f, 0xd1,
+ 0xe0, 0xd3, 0xea, 0x1a, 0x85, 0xac, 0x9d, 0x29, 0x2a, 0x16, 0xaf, 0xd0,
+ 0xbd, 0x62, 0x58, 0x93, 0x3c, 0x25, 0xc2, 0x14, 0x84, 0xeb, 0xc6, 0x52,
+ 0x34, 0x57, 0x60, 0x6d, 0x8d, 0x8d, 0xf0, 0x5b, 0x6c, 0x8a, 0x3f, 0x8f,
+ 0x17, 0xd0, 0x6c, 0xe9, 0x0f, 0xda, 0xe3, 0xbd, 0x8f, 0xe1, 0x11, 0xcb,
+ 0x7c, 0x60, 0x3d, 0xf9, 0xd4, 0x13, 0x27, 0xf2, 0x7b, 0x87, 0x5f, 0x11,
+ 0x87, 0x2e, 0x60, 0x64, 0x9d, 0xa4, 0xde, 0xb4, 0xa6, 0x85, 0xba, 0x00,
+ 0x8c, 0x3e, 0xd0, 0xcc, 0x80, 0x02, 0xd1, 0xda, 0x2e, 0x28, 0xec, 0x40,
+ 0xe0, 0x15, 0xa4, 0x33, 0x63, 0xef, 0x21, 0x64, 0x89, 0xaf, 0x11, 0x35,
+ 0x95, 0x3c, 0x14, 0x96, 0x2d, 0x44, 0xfd, 0x85, 0xab, 0x5b, 0xb2, 0xe7,
+ 0xd0, 0x27, 0x66, 0x28, 0x03, 0x14, 0xb0, 0x83, 0x1a, 0x51, 0xed, 0xe7,
+ 0x17, 0x6c, 0x46, 0xc0, 0xd5, 0x67, 0xfa, 0xe8, 0x77, 0x87, 0x67, 0x5f,
+ 0x9d, 0x9c, 0x1f, 0xd2, 0x7e, 0xbc, 0x3e, 0xfc, 0xea, 0x3d, 0x73, 0x2d,
+ 0xa6, 0x0e, 0x31, 0x3d, 0x03, 0x3f, 0x59, 0xec, 0x5f, 0x80, 0x3b, 0xe3,
+ 0x70, 0x3d, 0x90, 0xa9, 0xc8, 0x41, 0x7d, 0xa3, 0x42, 0x13, 0xf1, 0x04,
+ 0x8b, 0x78, 0x9a, 0x89, 0xad, 0x32, 0x47, 0x12, 0x82, 0x47, 0x4c, 0xe7,
+ 0x58, 0x3f, 0xae, 0x72, 0x0f, 0xf5, 0x52, 0x8f, 0x92, 0x60, 0xbb, 0x56,
+ 0x7b, 0xde, 0xa8, 0x79, 0x2b, 0x96, 0x69, 0x3d, 0x7c, 0xd4, 0xec, 0xa8,
+ 0x80, 0xd2, 0x8e, 0xb2, 0x15, 0x20, 0xde, 0x03, 0x27, 0x47, 0x2b, 0x5c,
+ 0xe7, 0xb4, 0x90, 0x5b, 0x13, 0x15, 0xe5, 0xb9, 0x6d, 0xdc, 0xe3, 0x79,
+ 0x8d, 0x2b, 0x5c, 0x14, 0x0a, 0xad, 0x6c, 0x5f, 0x09, 0x71, 0x13, 0x7b,
+ 0x93, 0xb4, 0xf3, 0xa9, 0x5e, 0x07, 0xe0, 0x7e, 0x55, 0x26, 0x38, 0x71,
+ 0x72, 0x6b, 0xab, 0x3f, 0x5c, 0x02, 0x7d, 0xb5, 0x08, 0xcd, 0x86, 0x2a,
+ 0xc1, 0x77, 0x98, 0xa7, 0x56, 0x45, 0x95, 0xf2, 0xef, 0x56, 0x1b, 0x11,
+ 0x2b, 0x1f, 0x84, 0xe4, 0x28, 0xe9, 0xdc, 0xae, 0x66, 0x3d, 0x17, 0x32,
+ 0x53, 0xb6, 0x73, 0x88, 0x20, 0x10, 0x02, 0x57, 0xb7, 0x2a, 0xa3, 0x7b,
+ 0x01, 0x45, 0xce, 0x2e, 0xe7, 0x13, 0x04, 0x2a, 0xe4, 0xea, 0x7a, 0xf1,
+ 0x4d, 0x64, 0xb1, 0x20, 0x9b, 0x48, 0x98, 0xab, 0x86, 0xe1, 0xf1, 0x96,
+ 0xc2, 0x25, 0x20, 0xc4, 0x17, 0x9f, 0x77, 0x69, 0x5d, 0x4a, 0xc5, 0xf3,
+ 0x19, 0x0d, 0x1c, 0x27, 0x6b, 0x6b, 0x6b, 0xaf, 0x0f, 0x2f, 0xf6, 0x8f,
+ 0x8e, 0x0f, 0x5f, 0x27, 0x47, 0xef, 0xde, 0x9c, 0x9c, 0xbd, 0xdd, 0xbf,
+ 0xd0, 0x68, 0x8c, 0xd7, 0xce, 0x22, 0xe7, 0xc1, 0x9c, 0x14, 0xba, 0x3e,
+ 0xb0, 0xd6, 0x81, 0x84, 0x69, 0x17, 0xaf, 0xb4, 0x4a, 0x81, 0x2c, 0x43,
+ 0xd6, 0x58, 0x83, 0xb5, 0x44, 0xa3, 0x38, 0x3c, 0xfa, 0x15, 0xcb, 0x05,
+ 0x5b, 0xce, 0xf7, 0x3e, 0xb4, 0xe5, 0x34, 0x33, 0x1a, 0x4a, 0x57, 0x3e,
+ 0xd8, 0x54, 0xca, 0x36, 0x90, 0xab, 0x69, 0xa6, 0x77, 0x22, 0xa0, 0x95,
+ 0x91, 0xfe, 0x2f, 0x78, 0xc8, 0x47, 0x5b, 0x4d, 0x70, 0x66, 0x18, 0x5a,
+ 0x0c, 0x0c, 0x2d, 0x05, 0x1c, 0x4a, 0x08, 0xba, 0x71, 0x59, 0x20, 0xa8,
+ 0x24, 0x6c, 0xd3, 0xc1, 0x49, 0x60, 0x47, 0x19, 0x3d, 0x18, 0xb1, 0x3f,
+ 0xf8, 0x24, 0xdc, 0xdf, 0x5c, 0xaa, 0xc7, 0x4f, 0x39, 0xf4, 0x08, 0x11,
+ 0x45, 0x8c, 0x9f, 0x5a, 0xd1, 0x4e, 0xb9, 0xb3, 0x0e, 0x44, 0x57, 0xc7,
+ 0xb0, 0xcd, 0x3b, 0xa7, 0x95, 0x16, 0xc3, 0xa6, 0x36, 0x9c, 0xbf, 0x9e,
+ 0x24, 0xa6, 0xc1, 0x91, 0xd6, 0xe0, 0xe4, 0xb5, 0x60, 0x78, 0x7b, 0xfe,
+ 0x39, 0x37, 0x44, 0x45, 0x17, 0x3e, 0xea, 0x35, 0xfe, 0x9c, 0xa6, 0xac,
+ 0x2e, 0x2a, 0x3d, 0x6d, 0xfe, 0xdc, 0x1a, 0x66, 0xcb, 0xe0, 0x35, 0x3d,
+ 0x34, 0x59, 0xce, 0x16, 0x5a, 0xc4, 0xd9, 0x24, 0x6a, 0xd8, 0xf2, 0x6c,
0x0b, 0x45, 0x68, 0x83, 0xf0, 0x01, 0xc3, 0xcf, 0x1b, 0x5d, 0x03, 0x99,
- 0x07, 0xe8, 0xbb, 0x32, 0x57, 0x60, 0x05, 0x18, 0x5e, 0xf3, 0xde, 0x59,
- 0x8d, 0x13, 0x17, 0x71, 0x54, 0x93, 0x5c, 0xb0, 0x20, 0x63, 0xf7, 0x2c,
- 0x56, 0x32, 0x78, 0x21, 0xf6, 0x01, 0x4a, 0x58, 0xff, 0x4d, 0x2b, 0x98,
- 0xc2, 0x24, 0xab, 0x0d, 0xea, 0x55, 0xd1, 0x76, 0x3e, 0xd6, 0x26, 0x15,
- 0xbe, 0x58, 0x0f, 0xe9, 0x09, 0x39, 0xbd, 0x75, 0xed, 0x51, 0x74, 0x9b,
- 0x23, 0x50, 0x2e, 0x4e, 0xfc, 0xe4, 0xde, 0x8a, 0x40, 0x73, 0xdd, 0x07,
- 0x81, 0xc9, 0xdc, 0x90, 0xd4, 0x26, 0xe3, 0x94, 0x70, 0x88, 0x19, 0xf9,
- 0xae, 0x50, 0xfc, 0x38, 0xbf, 0x61, 0x5d, 0x1e, 0xa9, 0x9d, 0x5a, 0x08,
- 0xde, 0x60, 0xe6, 0x11, 0x7a, 0xa6, 0x35, 0x87, 0xc0, 0xf4, 0xb2, 0x0d,
- 0xab, 0x0e, 0x68, 0x2f, 0x59, 0x00, 0x23, 0xb8, 0xbf, 0xe0, 0xdf, 0x83,
- 0xc9, 0xb3, 0x52, 0x9d, 0xc4, 0x25, 0x14, 0x2a, 0x64, 0xe2, 0xc8, 0x9d,
- 0xe1, 0xcc, 0xb0, 0xbe, 0xc2, 0x43, 0x80, 0x97, 0x05, 0x16, 0x2d, 0xb8,
- 0xa1, 0x31, 0x83, 0x69, 0xb8, 0x22, 0xd7, 0x88, 0xba, 0x77, 0xad, 0x98,
- 0x83, 0x83, 0x9a, 0x41, 0xe8, 0xb4, 0xc6, 0x92, 0x9e, 0xe5, 0xa5, 0x9c,
- 0x37, 0x48, 0xf8, 0x3d, 0x66, 0x3d, 0x3d, 0x90, 0x41, 0x6f, 0x79, 0x4d,
- 0x7d, 0xf4, 0xa2, 0x2b, 0xd6, 0x91, 0x26, 0x34, 0xf4, 0x16, 0x03, 0x9d,
- 0xc9, 0xe3, 0xaf, 0xce, 0xe3, 0xcb, 0x38, 0x99, 0xff, 0x7e, 0x6f, 0x67,
- 0x1c, 0x5f, 0xad, 0xe6, 0xf1, 0xbf, 0xe2, 0xc5, 0x57, 0x4f, 0x9e, 0xec,
- 0xed, 0x7c, 0xf6, 0xf9, 0x4e, 0xaf, 0x19, 0x7d, 0xe0, 0x03, 0xb2, 0x10,
- 0x61, 0xc3, 0x37, 0x19, 0xf8, 0x2e, 0xfa, 0x19, 0x4d, 0xaf, 0x52, 0x28,
- 0x75, 0x2c, 0x28, 0xe9, 0x1a, 0xc4, 0xa2, 0x4d, 0x82, 0x4d, 0x0a, 0xec,
- 0x20, 0xa3, 0xf2, 0x12, 0x5d, 0xff, 0x6e, 0x77, 0x5f, 0x58, 0x19, 0x40,
- 0xa2, 0x71, 0x4f, 0xf0, 0x5a, 0xbc, 0x4c, 0x33, 0xba, 0x81, 0xbe, 0x88,
- 0xaa, 0xf8, 0xca, 0xd1, 0xaa, 0x66, 0xd3, 0x4b, 0x0e, 0x85, 0xf3, 0x6f,
- 0x5e, 0x32, 0x91, 0xa7, 0x99, 0x14, 0x67, 0xe1, 0xd2, 0x23, 0x10, 0xb2,
- 0x96, 0x49, 0x01, 0x04, 0xc1, 0xab, 0x22, 0x5e, 0x58, 0xa6, 0x0a, 0xbf,
- 0xcf, 0x51, 0x6b, 0xa3, 0xe5, 0x1c, 0x59, 0x14, 0x16, 0x7a, 0x26, 0x12,
- 0xaf, 0x10, 0xdc, 0x7c, 0x59, 0x7a, 0x10, 0x3e, 0xb9, 0x6e, 0xc2, 0xa2,
- 0x26, 0xb4, 0x58, 0xb0, 0xa9, 0xf4, 0x30, 0x2b, 0x61, 0x19, 0xe0, 0x66,
- 0x33, 0x9b, 0xe9, 0x08, 0xbf, 0x03, 0xfd, 0x21, 0x16, 0xc4, 0xc5, 0xde,
- 0x52, 0xf2, 0xaa, 0x05, 0xa3, 0xa3, 0x67, 0x69, 0x0d, 0x69, 0x6d, 0x5e,
- 0xb1, 0x8f, 0xd8, 0x8c, 0x5e, 0x9a, 0x95, 0x68, 0xf7, 0x8b, 0x57, 0x20,
- 0x88, 0xdd, 0x2f, 0xfe, 0xd5, 0x7d, 0xb6, 0xa7, 0x9f, 0xed, 0x7d, 0xf1,
- 0xaf, 0xa3, 0x11, 0xc6, 0xc7, 0x14, 0xd2, 0xb7, 0xaf, 0xfb, 0x8a, 0xb6,
- 0x12, 0xeb, 0x11, 0x96, 0xbf, 0x1c, 0xf8, 0xb1, 0xec, 0x75, 0xcf, 0x7a,
- 0x0e, 0x57, 0x79, 0xa0, 0x1e, 0x55, 0xc7, 0xb7, 0x52, 0x2b, 0x54, 0x06,
- 0x50, 0xeb, 0xb2, 0x6b, 0xd1, 0x9d, 0x1f, 0x04, 0xed, 0x68, 0xec, 0x25,
- 0x5e, 0xfe, 0x03, 0x53, 0xea, 0x1f, 0x36, 0x22, 0xf5, 0x6e, 0xf2, 0x76,
- 0xdc, 0xc3, 0xe1, 0x61, 0x64, 0x4b, 0x8f, 0xc6, 0x56, 0x44, 0x85, 0x5b,
- 0xe6, 0xdc, 0x0f, 0xbe, 0x03, 0x25, 0x64, 0x1c, 0x83, 0xfd, 0xa3, 0x82,
- 0x5f, 0xba, 0xa4, 0x19, 0x7b, 0x46, 0xf2, 0x64, 0x48, 0xc6, 0x40, 0xed,
- 0x0f, 0xa9, 0xe8, 0xf1, 0xc3, 0x0f, 0x2a, 0x50, 0xd1, 0x2f, 0x3a, 0xf2,
- 0x6b, 0xe2, 0x45, 0x33, 0x62, 0x6f, 0x0b, 0x54, 0x3c, 0x67, 0x9c, 0x41,
- 0x9a, 0x87, 0x5e, 0xf9, 0x97, 0x3a, 0x53, 0x69, 0x84, 0xb6, 0xf6, 0x60,
- 0x7c, 0x78, 0x7c, 0x8c, 0x30, 0x53, 0x2c, 0xea, 0x91, 0xb0, 0x31, 0xd0,
- 0xe6, 0x26, 0x42, 0x3c, 0x7c, 0x54, 0x62, 0x48, 0xfa, 0xbc, 0x77, 0xd8,
- 0x76, 0x50, 0x3f, 0x35, 0x66, 0x0a, 0xb8, 0x6e, 0x25, 0x68, 0x56, 0xa4,
- 0x9c, 0x57, 0x3d, 0x79, 0xf0, 0x2a, 0xed, 0xa9, 0x13, 0x4b, 0x3e, 0xe9,
- 0x79, 0xf0, 0x1c, 0xd9, 0x0f, 0x6c, 0xda, 0x2b, 0x11, 0x9d, 0xd2, 0xbf,
- 0x25, 0xaf, 0x76, 0x77, 0xba, 0x9f, 0x80, 0xd7, 0x96, 0xe1, 0xc4, 0x5f,
- 0x79, 0x87, 0xe0, 0x43, 0xcf, 0xa7, 0x33, 0x79, 0xfa, 0x3a, 0x9d, 0xcd,
- 0xe8, 0x4e, 0xb8, 0x8d, 0xe7, 0x2b, 0xa2, 0x85, 0x09, 0xdf, 0xb0, 0xfc,
- 0xff, 0x6b, 0xc6, 0x01, 0x8f, 0x95, 0x3e, 0x5b, 0xae, 0x26, 0x8b, 0xb4,
- 0x36, 0xe0, 0x6d, 0x9e, 0xe0, 0x17, 0x3c, 0xe1, 0xef, 0x13, 0x47, 0x1d,
- 0x09, 0x8b, 0x76, 0x22, 0xfb, 0xf5, 0x2f, 0xf3, 0x7c, 0x12, 0x17, 0x7d,
- 0x75, 0xe7, 0xd8, 0x38, 0xfb, 0xbb, 0x7b, 0x4f, 0x9e, 0x3e, 0xeb, 0x8f,
- 0x54, 0x4e, 0x03, 0x8b, 0xa8, 0x42, 0x80, 0x0a, 0x69, 0xc2, 0x01, 0x2a,
- 0x04, 0x58, 0xae, 0x5d, 0xce, 0x55, 0xe6, 0x62, 0xdc, 0xdd, 0x2b, 0xe9,
- 0xed, 0x5f, 0xb9, 0x9f, 0x57, 0xe8, 0xe2, 0x5f, 0xd3, 0xd9, 0x2b, 0x37,
- 0xc3, 0x7f, 0xe5, 0xb9, 0xbc, 0xd2, 0x49, 0xd0, 0xbe, 0x5a, 0x06, 0x62,
- 0x19, 0x56, 0x5b, 0x79, 0x6c, 0x73, 0x6d, 0x13, 0x37, 0x30, 0x69, 0x44,
- 0x30, 0x0c, 0x67, 0xe2, 0xfd, 0x80, 0xb4, 0xea, 0x33, 0xf0, 0xb6, 0x3f,
- 0x0e, 0xa9, 0x95, 0x21, 0xb7, 0x32, 0xf4, 0x0c, 0x1b, 0x28, 0xf0, 0x43,
- 0xde, 0x88, 0x81, 0xa6, 0x61, 0xce, 0x61, 0x65, 0x51, 0x51, 0x20, 0xcf,
- 0x11, 0x04, 0x70, 0xf8, 0xf5, 0x71, 0x5f, 0x03, 0x6f, 0x44, 0x4d, 0x1c,
- 0x74, 0xd9, 0xa7, 0x5d, 0x88, 0xe1, 0x34, 0x5e, 0xf2, 0xe9, 0xdf, 0x88,
- 0xb4, 0x38, 0x60, 0xcc, 0x71, 0x24, 0xdc, 0xaf, 0x64, 0x4c, 0x53, 0x67,
- 0x7a, 0xeb, 0xcc, 0xd9, 0xe2, 0x5d, 0x08, 0x40, 0x7d, 0xd0, 0x0c, 0x10,
- 0x9b, 0x25, 0xa0, 0x04, 0x3e, 0x9f, 0xa5, 0x4b, 0xb7, 0x1c, 0xbe, 0x71,
- 0x4e, 0x4f, 0x97, 0xde, 0xa7, 0x8f, 0xd2, 0x57, 0xc2, 0x4f, 0x8c, 0x45,
- 0xf4, 0xa0, 0x00, 0x7b, 0x3e, 0x11, 0x72, 0x0f, 0xa4, 0xfd, 0x4f, 0x12,
- 0x4d, 0xd2, 0x14, 0xb3, 0x89, 0x08, 0x86, 0xcc, 0x3f, 0x5f, 0x7e, 0x69,
- 0x28, 0xcf, 0x5f, 0x44, 0x28, 0xf0, 0x29, 0x6f, 0xa9, 0xdf, 0x51, 0x0d,
- 0x50, 0x62, 0xb3, 0xc5, 0x4b, 0xaa, 0x1e, 0x38, 0x17, 0x58, 0x10, 0x8d,
- 0xa3, 0x82, 0x81, 0x42, 0xf1, 0x63, 0xa2, 0x93, 0x7b, 0x35, 0x36, 0x70,
- 0x0b, 0xfd, 0x3f, 0xe1, 0x10, 0xbc, 0xe4, 0x6d, 0xc0, 0xd7, 0x5f, 0xf4,
- 0xc5, 0x78, 0xe8, 0xde, 0xe5, 0x61, 0x34, 0x1c, 0xc8, 0x42, 0xa0, 0xe1,
- 0x7c, 0x48, 0xa0, 0x36, 0x48, 0x63, 0x91, 0xc6, 0x18, 0xa0, 0x03, 0x55,
- 0xb0, 0x49, 0x9a, 0x9a, 0xcf, 0x14, 0xd0, 0xd3, 0x19, 0xa8, 0xa5, 0xf1,
- 0x84, 0x73, 0x1b, 0x58, 0x7a, 0xec, 0x73, 0xb4, 0x2a, 0xde, 0xeb, 0x3b,
- 0x84, 0x64, 0xd8, 0x4c, 0xc1, 0xf0, 0x8a, 0xc4, 0x70, 0x26, 0x37, 0x14,
- 0xd0, 0xdc, 0x4b, 0xf3, 0xe1, 0xc4, 0xca, 0x40, 0x78, 0xf0, 0x49, 0x8e,
- 0x82, 0x65, 0xd3, 0x3a, 0x22, 0x6f, 0x38, 0x83, 0x58, 0x3b, 0x7d, 0xc5,
- 0xcb, 0xbd, 0x3b, 0xba, 0x4a, 0x2f, 0x65, 0x31, 0x88, 0x45, 0x5e, 0x25,
- 0xdb, 0xf4, 0xe7, 0x80, 0x3e, 0xdf, 0x63, 0xa9, 0x8c, 0x7f, 0x79, 0x82,
- 0x78, 0xac, 0xf0, 0xee, 0x0f, 0xce, 0x86, 0x3b, 0x17, 0xfc, 0x4b, 0xea,
- 0xee, 0x7c, 0xf5, 0xea, 0xe8, 0x28, 0x41, 0xe6, 0xad, 0xaa, 0x66, 0x61,
- 0x50, 0x09, 0x2b, 0x5a, 0xac, 0x92, 0xae, 0x38, 0xa7, 0xc5, 0x05, 0x8f,
- 0x68, 0x20, 0x85, 0x0a, 0xea, 0x2c, 0x77, 0xa7, 0x6a, 0x9e, 0xe1, 0x1c,
- 0x20, 0xdc, 0xac, 0xc9, 0xdd, 0xd6, 0x20, 0x8c, 0xb4, 0x25, 0xf6, 0x7e,
- 0xcb, 0x59, 0xf5, 0x0c, 0xd5, 0xe1, 0x4b, 0x36, 0x71, 0xf7, 0x9b, 0xdc,
- 0xec, 0x46, 0x14, 0xa6, 0x19, 0x63, 0x9b, 0xd3, 0xe6, 0x0e, 0x06, 0x35,
- 0x51, 0x4d, 0xda, 0x64, 0x0f, 0xda, 0x16, 0x77, 0x93, 0xcc, 0x4b, 0xe8,
- 0xea, 0x0a, 0xd4, 0x68, 0xbd, 0x1a, 0x98, 0x36, 0x3a, 0xea, 0x87, 0x67,
- 0x3f, 0x9f, 0x56, 0x09, 0xe9, 0xba, 0x8c, 0xaa, 0xb5, 0x10, 0x3e, 0x77,
- 0xb4, 0x90, 0xe2, 0x90, 0x20, 0xe1, 0xf9, 0x50, 0x6e, 0x4f, 0x15, 0x89,
- 0x86, 0x6f, 0x46, 0xd1, 0x09, 0x22, 0xc6, 0xcb, 0x58, 0xd0, 0x59, 0xec,
- 0x86, 0x35, 0x6a, 0x20, 0xd2, 0x11, 0x19, 0x7c, 0x43, 0xd2, 0x5e, 0x18,
- 0x12, 0xc3, 0x48, 0x2a, 0x35, 0x98, 0x74, 0x21, 0x2e, 0x91, 0x2f, 0x54,
- 0x1e, 0x19, 0xc0, 0x16, 0xee, 0x9e, 0x83, 0xcd, 0x5f, 0xec, 0x7e, 0x48,
- 0xfe, 0x72, 0x04, 0x1b, 0x34, 0x12, 0x42, 0x61, 0x87, 0x6c, 0xdd, 0x1d,
- 0x02, 0x09, 0xa9, 0x4c, 0xc4, 0xe8, 0xc2, 0xc8, 0x0c, 0x0c, 0x12, 0x03,
- 0x9f, 0x30, 0xb5, 0x06, 0x2a, 0x03, 0xfe, 0x35, 0x91, 0x51, 0x0f, 0x7a,
- 0xe3, 0x3c, 0x71, 0xca, 0xb5, 0x96, 0xbc, 0x73, 0xe1, 0xe6, 0xb0, 0xc5,
- 0x88, 0xb8, 0xe1, 0xdd, 0x75, 0x3c, 0x48, 0x1e, 0x57, 0x7c, 0x4b, 0xbf,
- 0xb0, 0x70, 0x36, 0x29, 0x68, 0xd7, 0x93, 0x42, 0xae, 0x06, 0x89, 0x11,
- 0xca, 0x85, 0x93, 0x88, 0x9a, 0xf2, 0xf6, 0x24, 0x32, 0x94, 0x9b, 0x4b,
- 0x2f, 0x2a, 0x5a, 0x64, 0x26, 0xa6, 0xa8, 0x96, 0x11, 0x91, 0x87, 0xf4,
- 0x29, 0xb9, 0xe5, 0x64, 0x6d, 0x39, 0x53, 0x3e, 0xe2, 0xc5, 0xa9, 0x1d,
- 0xd9, 0xe0, 0x09, 0x79, 0x95, 0xe9, 0x88, 0xc8, 0xa4, 0xcf, 0x4b, 0xd0,
- 0x1f, 0x44, 0x7d, 0x1e, 0x2a, 0x7f, 0xd1, 0xc7, 0x7a, 0xe2, 0xe3, 0x60,
- 0xf9, 0xfa, 0xa3, 0x8e, 0x53, 0xc8, 0xcf, 0xbc, 0xfa, 0xb2, 0xb6, 0x4a,
- 0xf8, 0xdc, 0x9a, 0x7a, 0x25, 0x49, 0x26, 0x2d, 0x99, 0xdb, 0xde, 0x0d,
- 0xda, 0x7f, 0x75, 0x98, 0x33, 0x42, 0x21, 0x35, 0x13, 0x84, 0xb9, 0x4e,
- 0xdd, 0x67, 0x29, 0x12, 0x66, 0x5b, 0x0d, 0x3d, 0x7e, 0x8a, 0x2f, 0x8c,
- 0x15, 0xb9, 0x10, 0x50, 0xe1, 0x6e, 0x42, 0x02, 0xc6, 0x79, 0x69, 0x37,
- 0x53, 0xd1, 0xfb, 0xee, 0x72, 0x58, 0x19, 0xc0, 0x73, 0x76, 0x47, 0xc8,
- 0xa0, 0xf4, 0x55, 0x6a, 0x5d, 0x03, 0x4e, 0x79, 0xef, 0x61, 0x41, 0x7b,
- 0x2e, 0x2a, 0xd7, 0x54, 0x7a, 0x5b, 0xe5, 0x2e, 0xde, 0xb5, 0x4c, 0xa7,
- 0x80, 0xd4, 0x7e, 0xf5, 0xe5, 0x2c, 0xbf, 0x62, 0xce, 0x35, 0xa0, 0x83,
- 0xc6, 0x3f, 0x11, 0x90, 0xbc, 0xa7, 0x9d, 0xca, 0x80, 0x71, 0x56, 0x44,
- 0x8a, 0xb7, 0xbf, 0xd7, 0x84, 0xa8, 0xbe, 0x61, 0x53, 0xe8, 0x54, 0xdb,
- 0x76, 0x4d, 0xcb, 0x7e, 0x50, 0xfb, 0xee, 0x8b, 0xb0, 0x2f, 0x5b, 0x9c,
- 0x58, 0x5b, 0x86, 0x6c, 0x44, 0x9c, 0xa2, 0x92, 0xab, 0x1c, 0x1d, 0xe7,
- 0x08, 0x74, 0xab, 0x38, 0x11, 0x3a, 0xa9, 0xe4, 0xde, 0x9a, 0x6b, 0x5a,
- 0x5f, 0xff, 0xcb, 0xbe, 0xe4, 0x08, 0xf4, 0x5f, 0xf6, 0xc1, 0xc1, 0x98,
- 0x2f, 0x59, 0x55, 0x37, 0xbd, 0x9c, 0xfa, 0x72, 0x2b, 0x0e, 0x45, 0x76,
+ 0x07, 0xe8, 0xbb, 0x36, 0x57, 0x60, 0x0d, 0x18, 0x5e, 0xf3, 0xde, 0x59,
+ 0x61, 0x18, 0x17, 0x71, 0xd4, 0x90, 0x5c, 0xb0, 0x20, 0xe7, 0xee, 0x59,
+ 0xac, 0x64, 0xf0, 0x42, 0xea, 0x03, 0x94, 0xb0, 0xfe, 0x1b, 0x56, 0x65,
+ 0x86, 0x49, 0x56, 0x1b, 0xd4, 0xab, 0x22, 0x76, 0x3e, 0x36, 0x26, 0x15,
+ 0xbe, 0xd8, 0x0c, 0xe9, 0x09, 0x39, 0xbd, 0x75, 0xed, 0x51, 0x74, 0xdb,
+ 0x23, 0x50, 0x2e, 0x4e, 0xfc, 0xe4, 0xde, 0x4a, 0x67, 0x73, 0x95, 0x0c,
+ 0x81, 0xc9, 0x5c, 0xd3, 0x2a, 0x47, 0x21, 0xf0, 0xb8, 0x91, 0xef, 0x12,
+ 0xc0, 0xd7, 0xc5, 0x0d, 0xeb, 0xf2, 0x48, 0xed, 0x1c, 0xdd, 0x87, 0x39,
+ 0x78, 0x12, 0x7a, 0xa6, 0x75, 0x9a, 0xc0, 0xf4, 0xe6, 0x6b, 0x56, 0x52,
+ 0xd1, 0x5e, 0xb2, 0x00, 0x46, 0x70, 0x7f, 0xa9, 0x16, 0x00, 0x26, 0xcf,
+ 0x4a, 0x75, 0x96, 0x56, 0x50, 0xa8, 0x90, 0x89, 0x23, 0x77, 0x86, 0x33,
+ 0xc3, 0xfa, 0x7a, 0x18, 0x01, 0x5e, 0x16, 0x58, 0xb4, 0xe0, 0x86, 0xa6,
+ 0x0c, 0xa6, 0x61, 0x87, 0x42, 0xa2, 0xee, 0x5d, 0x2b, 0xe6, 0xe0, 0xa0,
+ 0x66, 0x10, 0x3a, 0xad, 0xb1, 0xa4, 0xa7, 0x45, 0x25, 0xe7, 0x0d, 0x12,
+ 0xfe, 0x3a, 0xb3, 0x9e, 0x75, 0x90, 0xc1, 0xfa, 0xe2, 0x9a, 0xfa, 0x58,
+ 0x4f, 0xae, 0x58, 0x47, 0x1a, 0xd1, 0xd0, 0x23, 0x06, 0x3a, 0x91, 0xc7,
+ 0x5f, 0x9d, 0xa5, 0x97, 0x69, 0x36, 0xfd, 0xfd, 0xee, 0xf6, 0x79, 0x7a,
+ 0xb5, 0x9c, 0xa6, 0xff, 0x8a, 0x17, 0x5f, 0x3d, 0x79, 0xb2, 0xbb, 0xfd,
+ 0xd9, 0xe7, 0xdb, 0xeb, 0xed, 0xe8, 0x03, 0x1f, 0x90, 0x85, 0x08, 0x1b,
+ 0xbe, 0xc9, 0xc0, 0x77, 0xd1, 0xcf, 0x70, 0x7c, 0x95, 0x43, 0xa9, 0x63,
+ 0x41, 0x49, 0xd7, 0x20, 0x15, 0x6d, 0x12, 0x6c, 0x52, 0x60, 0x07, 0x19,
+ 0x95, 0x97, 0xe8, 0xfa, 0x77, 0x3b, 0x7b, 0xc2, 0xca, 0x00, 0x12, 0x8d,
+ 0x7b, 0x82, 0xd7, 0xe2, 0x65, 0x3e, 0xa7, 0x1b, 0xe8, 0x8b, 0xa4, 0x4e,
+ 0xaf, 0x1c, 0xad, 0x6a, 0x36, 0xbd, 0xe4, 0x50, 0x38, 0xff, 0xe6, 0x25,
+ 0x13, 0x79, 0x3e, 0x97, 0x52, 0x36, 0x5c, 0xa6, 0x05, 0x42, 0xd6, 0x22,
+ 0x2b, 0x81, 0x20, 0x78, 0x55, 0xa6, 0x33, 0xcb, 0x54, 0xe1, 0xf7, 0x39,
+ 0x6a, 0x6d, 0xb8, 0x98, 0x22, 0x8b, 0xc2, 0x42, 0xcf, 0x44, 0xe2, 0x15,
+ 0x82, 0x9b, 0x2e, 0x2a, 0x0f, 0xc2, 0x27, 0xd7, 0x4d, 0x58, 0x00, 0x86,
+ 0x16, 0x0b, 0x36, 0x95, 0x75, 0xcc, 0x4a, 0x58, 0x06, 0xb8, 0xd9, 0xc4,
+ 0x66, 0x3a, 0xc4, 0xef, 0x40, 0x7f, 0x48, 0x05, 0x71, 0x71, 0x7d, 0x21,
+ 0x79, 0xd5, 0x82, 0xd1, 0xb1, 0x6e, 0x69, 0x0d, 0x79, 0x63, 0x5e, 0xa9,
+ 0x8f, 0xd8, 0x4c, 0x5e, 0x9a, 0x95, 0x68, 0xe7, 0x8b, 0x57, 0x20, 0x88,
+ 0x9d, 0x2f, 0xfe, 0xd5, 0x7d, 0xb6, 0xab, 0x9f, 0xed, 0x7e, 0xf1, 0xaf,
+ 0xc3, 0x21, 0xc6, 0xc7, 0x14, 0xd2, 0xb3, 0xaf, 0x7b, 0x8a, 0xb6, 0x92,
+ 0xea, 0x11, 0x96, 0xbf, 0x1c, 0xf8, 0xb1, 0xec, 0xf5, 0xba, 0xf5, 0x1c,
+ 0xae, 0x72, 0x5f, 0x3d, 0xaa, 0x8e, 0x6f, 0xe5, 0x56, 0xde, 0x0d, 0xa0,
+ 0xd6, 0x55, 0xd7, 0xa2, 0x3b, 0x3f, 0x08, 0xda, 0xd1, 0xd8, 0x4b, 0xbc,
+ 0xfc, 0x07, 0xa6, 0xd4, 0x3f, 0xac, 0x25, 0xea, 0xdd, 0xe4, 0xed, 0xb8,
+ 0x87, 0xc3, 0xc3, 0xc8, 0x96, 0x1e, 0x4d, 0xad, 0xde, 0x0c, 0xb7, 0xcc,
+ 0xb9, 0x1f, 0x7c, 0x07, 0x4a, 0xc8, 0x38, 0x06, 0xfb, 0x47, 0x05, 0xbf,
+ 0x74, 0x49, 0x33, 0xf6, 0x8c, 0xe4, 0xc9, 0x90, 0x8c, 0x51, 0x4b, 0xc5,
+ 0x23, 0xae, 0x7f, 0xf2, 0xc3, 0x0f, 0x2a, 0x50, 0xd1, 0x2f, 0x3a, 0xf2,
+ 0x6b, 0xe2, 0x45, 0x13, 0x62, 0x6f, 0x33, 0x94, 0x89, 0x67, 0x9c, 0x41,
+ 0x9a, 0x87, 0x5e, 0xf9, 0x97, 0x3a, 0x53, 0x69, 0x84, 0xb6, 0x76, 0xff,
+ 0xfc, 0xe0, 0xe8, 0x08, 0x61, 0xa6, 0x58, 0xd4, 0x43, 0x61, 0x63, 0xa0,
+ 0xcd, 0x0d, 0x84, 0x78, 0xf8, 0xa8, 0xc4, 0x90, 0xf4, 0x79, 0xef, 0xb0,
+ 0xed, 0xa0, 0x7e, 0x6a, 0xcc, 0x14, 0x70, 0xdd, 0x4a, 0xd0, 0xac, 0x48,
+ 0x39, 0xaf, 0xd6, 0xe5, 0xc1, 0xab, 0x7c, 0x5d, 0x9d, 0x58, 0xf2, 0xc9,
+ 0xba, 0x07, 0xcf, 0x91, 0xfd, 0xc0, 0xa6, 0xbd, 0x12, 0xd1, 0x29, 0xff,
+ 0x5b, 0xf6, 0x6a, 0x67, 0xbb, 0xfb, 0x09, 0x78, 0x6d, 0x19, 0x4e, 0xfc,
+ 0x95, 0x77, 0x08, 0x3e, 0xf4, 0x7c, 0x3e, 0x91, 0xa7, 0xaf, 0xf3, 0xc9,
+ 0x84, 0xee, 0x84, 0xdb, 0x74, 0xba, 0x24, 0x5a, 0x18, 0xf1, 0x0d, 0xcb,
+ 0xff, 0xbf, 0x62, 0x1c, 0xf0, 0x58, 0xe9, 0xb3, 0xd5, 0x72, 0x34, 0xcb,
+ 0x1b, 0x03, 0xde, 0xe2, 0x09, 0x7e, 0xc1, 0x13, 0xfe, 0x3e, 0x73, 0xd4,
+ 0x91, 0xb1, 0x68, 0x27, 0xb2, 0x5f, 0xef, 0xb2, 0x28, 0x46, 0x69, 0xd9,
+ 0x53, 0x77, 0x8e, 0x8d, 0xb3, 0xb7, 0xb3, 0xfb, 0xe4, 0xe9, 0xb3, 0xde,
+ 0x50, 0xe5, 0x34, 0xb0, 0x88, 0x3a, 0x04, 0xa8, 0x90, 0x26, 0x1c, 0xa0,
+ 0x42, 0x80, 0xe5, 0xda, 0xe5, 0x5c, 0x65, 0x2e, 0xc6, 0xdd, 0xbd, 0x92,
+ 0xde, 0xfe, 0x95, 0xfb, 0x79, 0x85, 0x2e, 0xfe, 0x35, 0x9f, 0xbc, 0x72,
+ 0x33, 0xfc, 0x57, 0x9e, 0xcb, 0x2b, 0x9d, 0x04, 0xed, 0xab, 0x65, 0x20,
+ 0x56, 0x61, 0x6d, 0x9a, 0xc7, 0x36, 0xd7, 0x36, 0x71, 0x0d, 0x93, 0x46,
+ 0x04, 0xc3, 0x60, 0x22, 0xde, 0x0f, 0x48, 0xab, 0x3e, 0x03, 0x6f, 0xeb,
+ 0xe3, 0x80, 0x5a, 0x19, 0x70, 0x2b, 0x03, 0xcf, 0xb0, 0x81, 0x02, 0x3f,
+ 0xe0, 0x8d, 0xe8, 0x6b, 0x1a, 0xe6, 0x14, 0x56, 0x16, 0x15, 0x05, 0x8a,
+ 0x02, 0x41, 0x00, 0x07, 0x5f, 0x1f, 0xf5, 0xaa, 0xb0, 0x24, 0x43, 0xbf,
+ 0xcb, 0x3e, 0xed, 0x42, 0x0c, 0xc7, 0xe9, 0x82, 0x4f, 0xff, 0x9a, 0x95,
+ 0x53, 0x4c, 0x39, 0x8e, 0x84, 0xfb, 0x95, 0x8c, 0x69, 0xea, 0x4c, 0x6f,
+ 0x9d, 0x29, 0x5b, 0xbc, 0x4b, 0x01, 0xa8, 0x0f, 0x9a, 0x01, 0x62, 0xb3,
+ 0x04, 0x94, 0xc0, 0xe7, 0xb3, 0x70, 0xe9, 0x96, 0x83, 0x37, 0xce, 0xe9,
+ 0xe9, 0xd2, 0xfb, 0xf4, 0x51, 0xfa, 0x4a, 0xf8, 0x89, 0xb1, 0x88, 0x75,
+ 0x28, 0xc0, 0x9e, 0x4f, 0x84, 0xdc, 0x03, 0x69, 0xff, 0xa3, 0x4c, 0x93,
+ 0x34, 0xc5, 0x6c, 0x22, 0x82, 0x21, 0xf3, 0xcf, 0x97, 0x5f, 0x1a, 0xca,
+ 0xf3, 0x17, 0x09, 0xaa, 0xa2, 0xca, 0x5b, 0xea, 0x77, 0x54, 0x03, 0x94,
+ 0xd8, 0x6c, 0xf1, 0x92, 0xaa, 0x07, 0xce, 0x05, 0x16, 0x44, 0xe3, 0xa8,
+ 0x60, 0xa0, 0x50, 0xfc, 0x98, 0xe8, 0xe8, 0x5e, 0x8d, 0x0d, 0xdc, 0x42,
+ 0xef, 0x4f, 0x38, 0x04, 0x2f, 0x79, 0x1b, 0xf0, 0xf5, 0x17, 0xbd, 0x35,
+ 0x57, 0x1d, 0xc3, 0x49, 0xee, 0x2d, 0x07, 0xb2, 0x10, 0x68, 0x38, 0x1f,
+ 0x12, 0xa8, 0x0d, 0xd2, 0x58, 0xa4, 0x31, 0x06, 0xe8, 0x40, 0xe9, 0x70,
+ 0x92, 0xa6, 0xa6, 0x13, 0x05, 0xf4, 0x74, 0x06, 0x6a, 0x69, 0x3c, 0xe3,
+ 0xdc, 0x06, 0x96, 0x1e, 0x7b, 0x1c, 0xad, 0x8a, 0xf7, 0x7a, 0x0e, 0x21,
+ 0x19, 0x36, 0x53, 0x30, 0xbc, 0x32, 0x33, 0x9c, 0xc9, 0x35, 0x05, 0x34,
+ 0xf7, 0xd2, 0x7c, 0x38, 0xb1, 0x2a, 0x10, 0x1e, 0x7c, 0x92, 0xa3, 0x60,
+ 0xd9, 0x44, 0x47, 0xe4, 0x0d, 0x67, 0x10, 0x6b, 0xa7, 0xaf, 0x78, 0xb9,
+ 0x77, 0x86, 0x57, 0xf9, 0xa5, 0x2c, 0x06, 0xb1, 0xc8, 0xab, 0x6c, 0x8b,
+ 0xfe, 0xec, 0xd3, 0xe7, 0xbb, 0x2c, 0x95, 0xf1, 0x2f, 0x4f, 0x10, 0x8f,
+ 0x15, 0xde, 0xfd, 0xc1, 0xd9, 0x70, 0xe7, 0x82, 0x7f, 0xc9, 0xdd, 0x9d,
+ 0xaf, 0x5e, 0x1d, 0x1d, 0x25, 0xc8, 0x3c, 0xaa, 0x00, 0x17, 0x06, 0x95,
+ 0xb0, 0xa2, 0xc5, 0x2a, 0xe9, 0x92, 0x73, 0x5a, 0x5c, 0xf0, 0x88, 0x06,
+ 0x52, 0xa8, 0xa0, 0xce, 0x72, 0x77, 0xae, 0xe6, 0x19, 0xce, 0x01, 0xc2,
+ 0xcd, 0x9a, 0xdd, 0x6d, 0xf6, 0xc3, 0x48, 0x5b, 0x62, 0xef, 0xb7, 0x9c,
+ 0x55, 0xcf, 0x50, 0x1d, 0xbe, 0xc2, 0x15, 0x77, 0xbf, 0xc1, 0xcd, 0xb2,
+ 0x50, 0xe0, 0xd3, 0x8c, 0xb1, 0xcd, 0x79, 0x7b, 0x07, 0x83, 0x42, 0xb2,
+ 0x26, 0x6d, 0xb2, 0x07, 0x6d, 0x93, 0xbb, 0xc9, 0xa6, 0x15, 0x74, 0x75,
+ 0x05, 0x6a, 0xb4, 0x5e, 0x0d, 0x4c, 0x1b, 0x1d, 0xf5, 0xc2, 0xb3, 0x5f,
+ 0x8c, 0xeb, 0x8c, 0x74, 0x5d, 0x46, 0xd5, 0x9a, 0x09, 0x9f, 0x3b, 0x9c,
+ 0x49, 0x41, 0x4d, 0x90, 0xf0, 0x74, 0x20, 0xb7, 0xa7, 0x8a, 0x44, 0x83,
+ 0x37, 0xc3, 0xe4, 0x18, 0x11, 0xe3, 0x55, 0x2a, 0xe8, 0x2c, 0x76, 0xc3,
+ 0x1a, 0x35, 0x10, 0xe9, 0x88, 0x0c, 0xbe, 0x26, 0x69, 0x2f, 0x0c, 0x89,
+ 0x61, 0x24, 0x95, 0x1b, 0x4c, 0xba, 0x10, 0x97, 0xc8, 0x17, 0x2a, 0x8f,
+ 0xf4, 0x61, 0x0b, 0x77, 0xcf, 0xc1, 0xe6, 0x2f, 0x76, 0x3f, 0x24, 0x7f,
+ 0x39, 0x82, 0x0d, 0x1a, 0x09, 0xa1, 0xb0, 0x43, 0xb6, 0xee, 0x0e, 0x81,
+ 0x84, 0x54, 0x66, 0x62, 0x74, 0x61, 0x64, 0x06, 0x06, 0x89, 0x81, 0x4f,
+ 0x98, 0x5a, 0x03, 0x95, 0x01, 0xff, 0x9a, 0xc8, 0x68, 0x1d, 0x7a, 0xe3,
+ 0x34, 0x73, 0xca, 0xb5, 0xec, 0x55, 0xe1, 0xc2, 0xcd, 0x61, 0x8b, 0x11,
+ 0x71, 0xc3, 0xbb, 0xeb, 0x78, 0x90, 0x3c, 0xae, 0xf4, 0x96, 0x7e, 0x61,
+ 0xe1, 0x6c, 0x54, 0xd2, 0xae, 0x67, 0xa5, 0x5c, 0x0d, 0x12, 0x23, 0x54,
+ 0x08, 0x27, 0x11, 0x35, 0xe5, 0xed, 0x71, 0x62, 0x28, 0x37, 0x97, 0x5e,
+ 0x54, 0xb4, 0xc8, 0x4c, 0x4c, 0x51, 0x2d, 0x23, 0x22, 0x0f, 0xe9, 0x53,
+ 0x72, 0xcb, 0xc9, 0xda, 0x72, 0xa6, 0x7c, 0xc2, 0x8b, 0xd3, 0x38, 0xb2,
+ 0xc1, 0x13, 0xf2, 0x2a, 0xd3, 0x11, 0x91, 0x49, 0x8f, 0x97, 0xa0, 0xd7,
+ 0x4f, 0x7a, 0x3c, 0x54, 0xfe, 0xa2, 0x87, 0xf5, 0xc4, 0xc7, 0xc1, 0xf2,
+ 0xf5, 0x86, 0x1d, 0xa7, 0x90, 0x9f, 0x79, 0xf5, 0x65, 0x63, 0x95, 0xf0,
+ 0xb9, 0x35, 0xf5, 0x4a, 0x92, 0x4c, 0x22, 0x99, 0xdb, 0xde, 0x0d, 0xda,
+ 0x7f, 0x75, 0x50, 0x30, 0x42, 0x21, 0x35, 0x13, 0x84, 0xb9, 0x8e, 0xdd,
+ 0x67, 0x39, 0x12, 0x66, 0xa3, 0x86, 0x1e, 0x3f, 0xc5, 0x17, 0xc6, 0x8a,
+ 0x5c, 0x08, 0xa8, 0x70, 0x37, 0x21, 0x01, 0xe3, 0xbc, 0xb4, 0x9b, 0xb9,
+ 0xe8, 0x7d, 0x77, 0x05, 0xac, 0x0c, 0xe0, 0x39, 0x3b, 0x43, 0x64, 0x50,
+ 0xfa, 0xba, 0xbe, 0xae, 0x01, 0xa7, 0xbc, 0xaf, 0x63, 0x41, 0xd7, 0x5d,
+ 0x54, 0xae, 0xa9, 0xf4, 0xb6, 0xca, 0x5d, 0xbc, 0x6b, 0x91, 0x8f, 0x01,
+ 0xa9, 0xfd, 0xea, 0xcb, 0x49, 0x71, 0xc5, 0x9c, 0xab, 0x4f, 0x07, 0x8d,
+ 0x7f, 0x22, 0x20, 0x79, 0x57, 0x3b, 0x95, 0x01, 0xe3, 0xac, 0x88, 0x14,
+ 0x6f, 0x7f, 0xaf, 0x08, 0x51, 0x7d, 0xc3, 0xa6, 0xd0, 0xb1, 0xb6, 0xed,
+ 0x9a, 0x96, 0xfd, 0xa0, 0xf6, 0xdd, 0x17, 0x61, 0x5f, 0xb6, 0x38, 0xa9,
+ 0xb6, 0x0c, 0xd9, 0x88, 0x38, 0x45, 0x2d, 0x57, 0x39, 0x3a, 0x2e, 0x10,
+ 0xe8, 0x56, 0x73, 0x22, 0x74, 0x26, 0xa5, 0x21, 0xe9, 0x10, 0x48, 0x5a,
+ 0x5f, 0xef, 0xcb, 0x9e, 0xe4, 0x08, 0xf4, 0x5e, 0xf6, 0xc0, 0xc1, 0x98,
+ 0x2f, 0x59, 0x0d, 0x3c, 0xbd, 0x9c, 0x7a, 0x72, 0x2b, 0x0e, 0x44, 0x76,
0x50, 0xc4, 0x3f, 0x7f, 0x40, 0x70, 0x2d, 0x7b, 0x35, 0x32, 0x0c, 0x9e,
- 0x84, 0x99, 0x00, 0x05, 0xdf, 0x31, 0x2a, 0x86, 0x2f, 0x9d, 0x54, 0x12,
- 0x28, 0xa3, 0x97, 0x2e, 0xc4, 0x32, 0xa0, 0xa5, 0x94, 0x1c, 0xbf, 0x20,
- 0x66, 0xce, 0x55, 0xb6, 0xe4, 0xdc, 0xf8, 0x29, 0x00, 0xdc, 0xf5, 0x2c,
- 0x8d, 0xa2, 0xf7, 0x99, 0x94, 0x12, 0x48, 0x58, 0x59, 0x4e, 0x8b, 0xe9,
- 0x6a, 0xc1, 0xa6, 0x8a, 0x29, 0x1b, 0xc8, 0x70, 0xf1, 0x88, 0x78, 0x50,
- 0x73, 0xcf, 0x87, 0x03, 0x16, 0xe3, 0x88, 0x18, 0xcc, 0xb5, 0x5f, 0x84,
- 0xa2, 0x70, 0x00, 0x96, 0x1a, 0xc4, 0x21, 0x15, 0x38, 0xd4, 0x14, 0x65,
- 0x40, 0xec, 0x19, 0x3c, 0x7a, 0x73, 0x74, 0x7e, 0x7e, 0x74, 0xce, 0xeb,
- 0x7d, 0xa0, 0xa1, 0x1f, 0x86, 0x5d, 0x61, 0xd0, 0xa9, 0xde, 0xd5, 0x68,
- 0x61, 0xbf, 0x6d, 0x08, 0x7d, 0x61, 0x85, 0xf1, 0x6c, 0xc6, 0x20, 0xe3,
- 0xd0, 0x20, 0x04, 0x27, 0x48, 0xea, 0x4e, 0x87, 0xe6, 0x45, 0x84, 0x7d,
- 0x3b, 0xb7, 0x41, 0x58, 0x87, 0x30, 0x90, 0x2d, 0x7c, 0x0b, 0x85, 0xd6,
- 0xd9, 0x5c, 0x59, 0x4a, 0xfe, 0x75, 0x52, 0x13, 0x53, 0x47, 0x1a, 0xa9,
- 0x9b, 0xa8, 0x33, 0x7d, 0xee, 0xec, 0x13, 0x98, 0xf2, 0x25, 0x9f, 0x51,
- 0xd6, 0x9d, 0xb0, 0x18, 0x65, 0xb5, 0x5a, 0xa6, 0x33, 0x67, 0xed, 0xa5,
- 0xcf, 0x49, 0xfc, 0x8b, 0xe4, 0x94, 0x97, 0x16, 0xeb, 0x02, 0xaf, 0xa6,
- 0x19, 0x23, 0x42, 0x6b, 0x5b, 0x03, 0xbf, 0x37, 0x42, 0xb6, 0x9c, 0x04,
- 0x8d, 0x59, 0xcd, 0xa4, 0x7a, 0x6e, 0xb9, 0xd2, 0x7e, 0x02, 0x2b, 0x23,
- 0x73, 0x0b, 0x0b, 0xbf, 0x09, 0x39, 0x03, 0xdb, 0xb2, 0x16, 0x3e, 0xde,
- 0x9d, 0x43, 0xd8, 0xf6, 0x05, 0x06, 0x05, 0x29, 0xa5, 0xc5, 0x7e, 0xf4,
- 0x63, 0x99, 0x4e, 0x7f, 0xf6, 0x97, 0x07, 0xd2, 0x7f, 0xea, 0x55, 0xd2,
- 0xb0, 0x74, 0xba, 0x50, 0xaa, 0x0c, 0x4b, 0x2a, 0xf7, 0xfb, 0xf1, 0xd1,
- 0x79, 0x74, 0xf0, 0x35, 0xa3, 0x00, 0xff, 0x37, 0x37, 0x98, 0x9f, 0xd3,
- 0xdb, 0x61, 0x43, 0x71, 0xf8, 0x14, 0xdb, 0x24, 0x31, 0x53, 0xb8, 0xe0,
- 0x72, 0xd5, 0x76, 0x36, 0xb5, 0x4a, 0xd2, 0xfe, 0xba, 0xaf, 0xef, 0xe1,
- 0x46, 0xf4, 0xe8, 0x2e, 0x7e, 0xca, 0x1e, 0xf2, 0x21, 0x0b, 0x77, 0x51,
- 0x50, 0x91, 0xc4, 0x25, 0x61, 0x7b, 0xa3, 0xa3, 0x2f, 0x5b, 0x6a, 0xa7,
- 0xec, 0xd2, 0x41, 0xd4, 0x7f, 0x9b, 0xff, 0x8d, 0x84, 0x81, 0x78, 0xfb,
- 0xc9, 0x68, 0x27, 0xda, 0xfc, 0x3e, 0xcd, 0x5e, 0x3c, 0xfb, 0x53, 0x74,
- 0xbc, 0xd5, 0xaf, 0x05, 0xf3, 0x4b, 0x65, 0xc1, 0x49, 0x9c, 0xdd, 0xb8,
- 0x2d, 0x3b, 0xc5, 0xc9, 0x96, 0xa0, 0x3a, 0xab, 0xca, 0x22, 0x05, 0x90,
- 0xd7, 0xb6, 0x88, 0xc4, 0x4f, 0xcd, 0x0b, 0x88, 0xbe, 0x73, 0x90, 0xd7,
- 0xac, 0xe5, 0xd3, 0x53, 0x33, 0x5e, 0xba, 0x17, 0xcf, 0x5a, 0x4d, 0x3c,
- 0x75, 0x6d, 0xbc, 0x97, 0x36, 0x7e, 0x61, 0x13, 0x7b, 0xa3, 0x9d, 0xbd,
- 0x68, 0xf3, 0x74, 0xbc, 0xbd, 0xe7, 0x5a, 0x68, 0x37, 0xb1, 0x87, 0x26,
- 0xf8, 0xa1, 0xfa, 0xcb, 0x4f, 0xb9, 0xff, 0x1f, 0x93, 0xec, 0xe7, 0x68,
- 0xf3, 0x87, 0xdd, 0x5d, 0x6a, 0xe0, 0x4f, 0xd1, 0xc1, 0xf1, 0x0f, 0xd1,
- 0xd3, 0x11, 0x35, 0xf6, 0x2e, 0xbe, 0xd5, 0xe6, 0x14, 0xcc, 0x76, 0x8c,
- 0x46, 0xe8, 0xfb, 0x56, 0x1b, 0xcf, 0x1a, 0x6d, 0x9c, 0x90, 0x5e, 0xf8,
- 0x91, 0xae, 0x95, 0x9d, 0xd1, 0x93, 0xbd, 0x28, 0x7d, 0xf6, 0xf9, 0x73,
- 0x6b, 0x48, 0xdb, 0xc0, 0xf7, 0x75, 0x6b, 0xa5, 0xc0, 0xa5, 0x90, 0xa8,
- 0x73, 0xf4, 0x91, 0x18, 0x1a, 0x58, 0x04, 0x2a, 0x65, 0x5c, 0xc7, 0x85,
- 0x55, 0xe5, 0xe5, 0x72, 0x07, 0xb4, 0x53, 0x0a, 0x23, 0x9d, 0xc0, 0x6c,
- 0x49, 0x17, 0xe7, 0x7e, 0x6b, 0x38, 0xac, 0x9b, 0xda, 0xa3, 0x7f, 0x8a,
- 0xde, 0x8e, 0x8f, 0x8f, 0x68, 0x46, 0x3b, 0x34, 0x34, 0xbf, 0x86, 0x32,
- 0x20, 0x7c, 0x85, 0xc5, 0x7d, 0x01, 0x54, 0x52, 0x6d, 0x23, 0xac, 0x1f,
- 0x0b, 0xa2, 0xa3, 0x8b, 0xbb, 0x44, 0xbf, 0x1c, 0x92, 0x32, 0x3c, 0xb8,
- 0x62, 0x15, 0x42, 0xae, 0x5a, 0x74, 0xfd, 0x6d, 0x9e, 0xd1, 0x31, 0x29,
- 0xf2, 0x82, 0x23, 0xa7, 0xfa, 0x35, 0x69, 0xe1, 0xdb, 0xd7, 0x47, 0x92,
- 0x52, 0xff, 0x36, 0xce, 0x88, 0x47, 0x32, 0x3a, 0x56, 0x79, 0xc3, 0xfe,
- 0x7f, 0x71, 0xe7, 0xc8, 0xfb, 0x27, 0xf7, 0xd9, 0x47, 0xda, 0xc7, 0xcf,
- 0x46, 0xbb, 0x1c, 0xb2, 0xcd, 0x5a, 0xef, 0x9b, 0xb7, 0xf4, 0xf7, 0xee,
- 0xd3, 0x7e, 0xc4, 0x5f, 0xd5, 0x35, 0x78, 0x3b, 0xaf, 0x1b, 0x87, 0xa7,
- 0xa7, 0xdf, 0x1e, 0x4b, 0x00, 0xc8, 0xa1, 0x9a, 0x55, 0x59, 0xb8, 0x72,
- 0x5a, 0xb1, 0x70, 0x57, 0xd2, 0xde, 0x7c, 0xb6, 0x12, 0x9c, 0x71, 0x37,
- 0x49, 0xb2, 0xe4, 0x68, 0x84, 0xaa, 0xc1, 0x11, 0x2a, 0xe5, 0xd1, 0x2e,
- 0xb6, 0x89, 0xc5, 0x9f, 0x1a, 0xb2, 0x57, 0xc9, 0x50, 0xc9, 0x66, 0xc2,
- 0x9d, 0xdc, 0x3b, 0xd8, 0x8e, 0xd8, 0xb9, 0xcc, 0xac, 0x6e, 0x8a, 0x36,
- 0x65, 0x26, 0x68, 0x29, 0x3a, 0x42, 0x2f, 0xaa, 0xee, 0xdb, 0x1f, 0x93,
- 0x74, 0x2f, 0x83, 0xde, 0x57, 0xab, 0x6d, 0x3f, 0xc0, 0x96, 0x86, 0x44,
- 0xbb, 0xd4, 0x52, 0x3f, 0x30, 0x1d, 0x5b, 0x44, 0xbd, 0xf1, 0xe6, 0x12,
- 0xb6, 0x6c, 0x84, 0xe7, 0xbd, 0x3b, 0x78, 0x7b, 0xf4, 0xea, 0xbb, 0x83,
- 0x93, 0xf7, 0x47, 0xf4, 0x4a, 0x0a, 0x18, 0x77, 0x17, 0xc2, 0x87, 0x31,
- 0x2e, 0x52, 0xd4, 0xae, 0x2d, 0x49, 0x3c, 0xe8, 0x6f, 0x48, 0x78, 0x79,
- 0xd4, 0xe3, 0xb7, 0x76, 0xe5, 0x35, 0xa2, 0x0b, 0xfe, 0x6b, 0x4f, 0xfe,
- 0xda, 0xfb, 0x53, 0x6f, 0xab, 0x36, 0xe9, 0x96, 0x96, 0xcc, 0xf4, 0x72,
- 0x27, 0xf5, 0x9e, 0x38, 0x3c, 0x48, 0x72, 0x37, 0x64, 0x55, 0x7a, 0xe6,
- 0xa3, 0xb1, 0xbb, 0x8d, 0x9f, 0xdd, 0x9c, 0xdc, 0x87, 0x3a, 0x78, 0x8f,
- 0x5f, 0x7a, 0x05, 0x01, 0xa3, 0x07, 0xa0, 0xfb, 0xc4, 0x56, 0x4b, 0xda,
- 0xb0, 0x26, 0x92, 0x8f, 0x4b, 0x8e, 0x88, 0xdc, 0xec, 0xc9, 0x2f, 0xaf,
- 0x5e, 0x1f, 0x5c, 0x1c, 0xf1, 0x0b, 0xd6, 0xbd, 0xd5, 0x36, 0xb0, 0x34,
- 0x0a, 0x1e, 0xcf, 0xa6, 0xba, 0xa6, 0x5f, 0xf1, 0x84, 0x7a, 0x5b, 0xe2,
- 0xcb, 0x80, 0x53, 0xbd, 0x31, 0x2e, 0xe6, 0x69, 0x12, 0xb8, 0xed, 0xd3,
- 0xd4, 0x4b, 0x8b, 0x58, 0xd9, 0xec, 0xc9, 0x77, 0x3d, 0x67, 0xc1, 0xd5,
- 0xfa, 0xf0, 0xea, 0xae, 0x9c, 0x21, 0xc9, 0xa2, 0x95, 0x59, 0x2b, 0x21,
- 0x69, 0x7e, 0x7f, 0xd4, 0x59, 0x21, 0x16, 0xa7, 0x00, 0x6d, 0xdb, 0x6d,
- 0xbc, 0xe6, 0xc1, 0xb3, 0x8d, 0x29, 0xcf, 0x77, 0xf7, 0x9e, 0xfc, 0x09,
- 0xeb, 0xf9, 0xaa, 0xb7, 0x4d, 0x77, 0x43, 0xef, 0x4f, 0xdc, 0x75, 0x6a,
- 0x36, 0xce, 0x20, 0x88, 0x9c, 0xf5, 0x29, 0xa5, 0x28, 0x09, 0x97, 0xe1,
- 0x5d, 0x0f, 0xe0, 0x7d, 0xb0, 0xa0, 0x77, 0x92, 0x25, 0x66, 0x60, 0x38,
- 0x16, 0x3c, 0x80, 0xfd, 0x9a, 0x24, 0x57, 0x69, 0x96, 0xb9, 0x1a, 0xb9,
- 0xd2, 0x5d, 0x78, 0x7f, 0x0c, 0xe4, 0x5d, 0x99, 0xa3, 0x02, 0x08, 0x71,
- 0x9f, 0x8b, 0x7b, 0x4b, 0x24, 0x2b, 0x4b, 0x53, 0x71, 0x65, 0xcf, 0x5a,
- 0x92, 0xf1, 0x44, 0x6d, 0x3b, 0xa6, 0x8c, 0x40, 0x26, 0x20, 0xd6, 0x72,
- 0x0f, 0x41, 0x09, 0xd1, 0x06, 0x61, 0x90, 0x85, 0xdd, 0xd9, 0xf1, 0x84,
- 0x93, 0xcc, 0x5d, 0x6a, 0x4c, 0xa0, 0x95, 0xbb, 0xa5, 0xb7, 0xe3, 0x97,
- 0x06, 0xc8, 0x4c, 0x7c, 0x51, 0xca, 0x5a, 0x96, 0xce, 0x86, 0x04, 0x6f,
- 0xa3, 0x3e, 0x5b, 0xdf, 0xa7, 0x46, 0x3e, 0x1a, 0xa6, 0x21, 0x2a, 0xbd,
- 0xe8, 0xc7, 0xc4, 0x6a, 0xb2, 0xa4, 0x78, 0x30, 0xc0, 0xa2, 0xc3, 0x19,
- 0x85, 0x29, 0x06, 0x91, 0x0e, 0xfc, 0xce, 0x68, 0x34, 0xf2, 0x95, 0xb6,
- 0x79, 0x5b, 0xd4, 0x07, 0x85, 0x5a, 0x46, 0x01, 0x7e, 0x2c, 0xd6, 0x78,
- 0x13, 0xc2, 0x3c, 0x04, 0xea, 0x2d, 0x0d, 0xbc, 0x51, 0x3b, 0x81, 0x3b,
- 0x1a, 0x81, 0x8d, 0xa3, 0xaf, 0xdd, 0xf6, 0x0d, 0xb4, 0xe1, 0xa6, 0x6b,
- 0x13, 0x1e, 0x18, 0x9b, 0xd8, 0x1e, 0xb5, 0xc0, 0xa6, 0xe3, 0x53, 0xb9,
- 0x5b, 0x0b, 0xa6, 0x60, 0x0e, 0x20, 0x07, 0x9d, 0x48, 0xc6, 0xb1, 0x2c,
- 0x9a, 0x0e, 0x45, 0x4b, 0xad, 0x31, 0x93, 0xcb, 0xef, 0x00, 0x82, 0x20,
- 0xc5, 0x6a, 0x96, 0x05, 0x6b, 0x7a, 0xbc, 0xc6, 0x76, 0x83, 0x2c, 0x9d,
- 0xd8, 0xac, 0xed, 0x28, 0x96, 0x30, 0xeb, 0xcc, 0x90, 0xfd, 0x35, 0xcb,
- 0x51, 0xe1, 0x68, 0x4a, 0x4b, 0xe2, 0x21, 0xb1, 0x2d, 0x5f, 0xc0, 0xed,
- 0xa5, 0x93, 0xf7, 0xe6, 0x2a, 0x8e, 0x36, 0x1b, 0x0a, 0xa0, 0x8b, 0x25,
- 0x22, 0x1a, 0xf7, 0x50, 0x50, 0x8f, 0x87, 0xfc, 0xe5, 0x53, 0x6b, 0xd1,
- 0x39, 0xcb, 0x1b, 0x6b, 0xe3, 0x6f, 0xe5, 0x3a, 0xeb, 0xa2, 0x15, 0x15,
- 0xeb, 0xb2, 0x40, 0x67, 0x78, 0xbe, 0x17, 0xc5, 0x77, 0x5c, 0xf1, 0x3d,
- 0xe1, 0xf8, 0x4c, 0x44, 0x3a, 0xc0, 0x2a, 0x73, 0x12, 0xd8, 0x19, 0xdd,
- 0x0c, 0x95, 0x6a, 0x35, 0xa6, 0x89, 0xf9, 0xce, 0xbe, 0x15, 0x8e, 0x16,
- 0xb8, 0x5c, 0x33, 0xe8, 0xa5, 0xa8, 0x70, 0xcd, 0xf0, 0xa6, 0x2a, 0xa9,
- 0x9b, 0x7a, 0xce, 0x23, 0xdf, 0x42, 0x11, 0x60, 0x11, 0xe7, 0x11, 0x97,
- 0xc8, 0x76, 0x0e, 0x89, 0xab, 0xb0, 0xd5, 0x8a, 0xb3, 0x59, 0xd0, 0x89,
- 0xf3, 0x4f, 0xab, 0xf9, 0x89, 0xc3, 0x7b, 0xb3, 0x21, 0x80, 0x2e, 0x5c,
- 0x31, 0x5d, 0x51, 0xaf, 0xae, 0xae, 0xac, 0xf2, 0x4e, 0x63, 0x6a, 0xdd,
- 0x44, 0x76, 0xc2, 0xab, 0xc2, 0x51, 0xd0, 0xf7, 0xeb, 0x56, 0xf3, 0xc2,
- 0x6c, 0x3e, 0x66, 0x75, 0xa9, 0x11, 0xb3, 0xf9, 0x24, 0x65, 0xdf, 0x2a,
- 0x97, 0x74, 0x85, 0x04, 0x8d, 0xba, 0x0f, 0xf9, 0xf4, 0x7c, 0x03, 0x85,
- 0x13, 0x32, 0x0f, 0xc8, 0x60, 0x9b, 0x0e, 0x74, 0x3e, 0x1f, 0x81, 0xe2,
- 0x23, 0x51, 0xef, 0x5c, 0xa8, 0x95, 0x54, 0x06, 0x9c, 0xc4, 0x5e, 0xe5,
- 0xda, 0x88, 0x6a, 0xd6, 0x5e, 0x2e, 0xa8, 0x72, 0x9c, 0x29, 0x1f, 0xca,
- 0x6f, 0x13, 0x0f, 0x10, 0xe9, 0x0d, 0x8e, 0x1e, 0x65, 0x57, 0x4f, 0xbf,
- 0x63, 0x26, 0x0d, 0x07, 0xaf, 0xe3, 0x57, 0x98, 0x64, 0x63, 0x55, 0x46,
- 0x51, 0xd0, 0xa4, 0x98, 0x4a, 0xf2, 0x90, 0xc5, 0xcb, 0xd8, 0xd4, 0x6f,
- 0x6d, 0x2d, 0x0a, 0x8d, 0x08, 0xc4, 0x4b, 0xa0, 0x9a, 0x48, 0xc1, 0x11,
- 0x43, 0xca, 0x77, 0x31, 0x7a, 0xde, 0xff, 0x6b, 0xb3, 0xec, 0xb9, 0x4d,
- 0xea, 0x59, 0x4d, 0x02, 0x10, 0x01, 0x68, 0x80, 0x05, 0x3a, 0xe7, 0xc2,
- 0x3f, 0x98, 0xc7, 0x1c, 0xc4, 0x92, 0x4b, 0x74, 0x00, 0xb6, 0x0c, 0x44,
- 0x0d, 0x63, 0x5a, 0x83, 0xa7, 0xb6, 0x8e, 0x9f, 0x8b, 0xd6, 0x10, 0x5a,
- 0x63, 0x21, 0x05, 0xcd, 0x10, 0x95, 0x20, 0x9a, 0x7b, 0x1a, 0x96, 0x8e,
- 0x5e, 0x8f, 0x5d, 0x30, 0xa9, 0x9d, 0xd1, 0xc7, 0x8e, 0xec, 0xd9, 0xf9,
- 0xe9, 0xd7, 0xe7, 0x47, 0xe3, 0x71, 0xf4, 0xf6, 0xe8, 0x42, 0xd4, 0xfe,
- 0x0b, 0x89, 0xc2, 0xbb, 0x62, 0xcd, 0x3d, 0x82, 0xdb, 0xc1, 0xc0, 0x9c,
- 0x2c, 0xfa, 0xc4, 0x6c, 0x0a, 0x48, 0x7f, 0xca, 0xd9, 0xa5, 0x06, 0x51,
- 0x0e, 0xfa, 0xfc, 0x5c, 0x83, 0xf7, 0xae, 0x61, 0xf8, 0x47, 0x78, 0x13,
- 0x7c, 0x93, 0xce, 0x8e, 0xee, 0x2d, 0xaa, 0x90, 0x91, 0x25, 0xe0, 0xc9,
- 0xa5, 0x1f, 0x7a, 0x6b, 0x3a, 0xdf, 0xde, 0xf4, 0x13, 0xd3, 0xfb, 0x7d,
- 0x74, 0x91, 0x57, 0x5c, 0x14, 0x9c, 0x7f, 0x3d, 0x37, 0xfa, 0xf8, 0x7d,
- 0xf4, 0x03, 0xb5, 0x39, 0xa3, 0x55, 0x67, 0x63, 0x32, 0x5d, 0xb8, 0x63,
- 0x14, 0x3e, 0xf5, 0xf5, 0x85, 0x50, 0xad, 0x34, 0xac, 0xf7, 0xbe, 0x2a,
- 0x8a, 0x51, 0x77, 0x79, 0x9e, 0x5a, 0x7d, 0x1d, 0xc1, 0xcd, 0xd4, 0xf0,
- 0x3a, 0xd7, 0xb3, 0x56, 0x34, 0x8e, 0xa2, 0x93, 0xe4, 0xb2, 0x82, 0x40,
- 0xc2, 0xdd, 0x51, 0x73, 0x3b, 0x0c, 0x04, 0xbd, 0xcb, 0x05, 0xd0, 0xe8,
- 0xd7, 0x27, 0x9f, 0x3f, 0xdf, 0xf9, 0x5c, 0x7e, 0xb5, 0x7f, 0x5f, 0x3c,
- 0xdd, 0x51, 0x40, 0x75, 0xfa, 0xeb, 0xe9, 0xfe, 0xd3, 0xdd, 0x7d, 0xc6,
- 0x79, 0xdc, 0xd9, 0xdf, 0xa1, 0xff, 0x7f, 0xaa, 0x9f, 0x30, 0x98, 0xe5,
- 0x8b, 0xbd, 0xcf, 0x3f, 0x43, 0x60, 0x0c, 0xd3, 0xc7, 0x9c, 0x3a, 0x19,
- 0x56, 0xf9, 0x10, 0x70, 0x53, 0x10, 0x82, 0x7e, 0x5f, 0x37, 0x4a, 0xb2,
- 0xa7, 0x7d, 0xca, 0x7e, 0xd5, 0x2b, 0x51, 0x6f, 0xe6, 0x09, 0x73, 0x00,
- 0x35, 0xb0, 0x0a, 0x04, 0x8e, 0x05, 0x8b, 0x4b, 0x06, 0xb7, 0x4e, 0x43,
- 0xdf, 0xae, 0xf0, 0x37, 0xf0, 0xdb, 0x6a, 0xef, 0x48, 0xcc, 0x79, 0x00,
- 0x15, 0xf7, 0x4b, 0xbb, 0xb6, 0x9c, 0xf2, 0x0d, 0x00, 0xc0, 0xe9, 0x56,
- 0xe9, 0x7b, 0x53, 0x2b, 0x0a, 0xed, 0x9e, 0x62, 0x89, 0x70, 0x21, 0xe9,
- 0x09, 0x97, 0x12, 0xb9, 0xfc, 0x4b, 0xfb, 0x13, 0x23, 0x16, 0xbf, 0xa5,
- 0xd4, 0x10, 0xb5, 0x7b, 0x73, 0x69, 0x09, 0x1d, 0x7d, 0xd5, 0x88, 0x67,
- 0xc3, 0x6f, 0xbf, 0x5f, 0x29, 0xe6, 0x6a, 0xfa, 0x90, 0x4b, 0xe7, 0x92,
- 0x1a, 0xbb, 0x1d, 0x53, 0x6e, 0x35, 0xa7, 0x64, 0xf4, 0x0b, 0x9a, 0xf3,
- 0x33, 0x02, 0x05, 0xbb, 0x9d, 0x1b, 0x06, 0x9b, 0x93, 0x4a, 0x8c, 0x9b,
- 0xad, 0x86, 0x03, 0x18, 0xb5, 0x1b, 0x4f, 0x5e, 0x75, 0x24, 0x3b, 0x94,
- 0x37, 0x54, 0xfc, 0x74, 0x29, 0x72, 0x74, 0x0a, 0x6f, 0x73, 0xdc, 0xf6,
- 0xf2, 0xbc, 0x51, 0x76, 0xab, 0x2b, 0xa6, 0xc6, 0xa0, 0x3f, 0xed, 0x03,
- 0xe7, 0xc9, 0x1d, 0xba, 0x07, 0xa7, 0xe6, 0xc3, 0xec, 0x5d, 0x8d, 0xe1,
- 0x4d, 0x17, 0xb6, 0xde, 0x75, 0x24, 0xfd, 0x73, 0x88, 0x64, 0x77, 0xcd,
- 0x85, 0x17, 0x11, 0xea, 0x4b, 0x6b, 0x85, 0x0c, 0x46, 0x2d, 0x65, 0x98,
- 0xff, 0x2d, 0x63, 0x61, 0xc3, 0xdf, 0xb9, 0x08, 0x2e, 0xdc, 0x6b, 0x5a,
- 0x2e, 0x34, 0x16, 0xca, 0x9f, 0x87, 0x69, 0xb5, 0x8e, 0xdb, 0x4d, 0xe2,
- 0xa2, 0x06, 0xa8, 0xbf, 0x21, 0x65, 0x25, 0xe8, 0xa6, 0xa5, 0x9b, 0x03,
- 0x99, 0x8f, 0x22, 0x52, 0xfc, 0xcb, 0xc6, 0xc6, 0xf8, 0xec, 0xe8, 0xe8,
- 0x75, 0x74, 0x72, 0xfc, 0xf6, 0xf8, 0x22, 0x10, 0xc8, 0xdd, 0x45, 0x62,
- 0x46, 0x57, 0x2b, 0x3e, 0xd5, 0x58, 0x0e, 0x0f, 0xdf, 0x2c, 0xfd, 0xd9,
- 0x55, 0xbe, 0x48, 0x34, 0xa1, 0x62, 0xde, 0x7c, 0x0f, 0xaa, 0x37, 0x30,
- 0x9e, 0x46, 0xd1, 0x57, 0x41, 0x8c, 0x64, 0x54, 0x92, 0x70, 0x33, 0x75,
- 0x95, 0x97, 0x87, 0x7f, 0xd6, 0x90, 0x8d, 0xba, 0xe4, 0xa4, 0x28, 0xb4,
- 0x2e, 0xbb, 0x47, 0xc3, 0x5c, 0x1b, 0xa3, 0xe2, 0xb5, 0x4d, 0x24, 0xca,
- 0x3a, 0xb0, 0xd0, 0x21, 0x82, 0xef, 0x2e, 0x01, 0xf0, 0xc1, 0x22, 0x95,
- 0xb4, 0xcb, 0x30, 0xbc, 0xd8, 0x15, 0xa3, 0xbd, 0xc8, 0x85, 0x8f, 0x87,
- 0x3d, 0x86, 0x55, 0xc6, 0x2d, 0xb6, 0xd6, 0xfa, 0x0a, 0xcb, 0x57, 0x3f,
- 0xd9, 0x71, 0x99, 0x0b, 0x4b, 0xf0, 0x1c, 0x15, 0xf5, 0xb9, 0xb3, 0xdd,
- 0x88, 0xe4, 0x91, 0x15, 0x4b, 0xf5, 0xc5, 0x2a, 0x6b, 0x5d, 0x77, 0x7f,
- 0x96, 0x77, 0x69, 0xfe, 0xcf, 0x77, 0x70, 0xbd, 0x5d, 0xc6, 0xc5, 0x90,
- 0x24, 0xaf, 0xfb, 0xa1, 0x59, 0x57, 0x85, 0x22, 0x34, 0xf4, 0x58, 0x4c,
- 0x3f, 0x89, 0xaf, 0x7b, 0xdb, 0x90, 0x16, 0x7d, 0xfa, 0x49, 0x0e, 0x17,
- 0xe5, 0x5c, 0x0f, 0x00, 0x4f, 0x9d, 0x93, 0x7e, 0xcd, 0xd8, 0xe9, 0x65,
- 0x1d, 0x8f, 0x50, 0x6c, 0xbb, 0xe8, 0x79, 0x14, 0x27, 0x23, 0x80, 0xad,
- 0x72, 0xab, 0x29, 0x4f, 0x53, 0xe7, 0xd2, 0x16, 0xad, 0x17, 0xd1, 0xee,
- 0xe7, 0x3c, 0x8f, 0x4f, 0x9b, 0xcf, 0x9b, 0xbc, 0x98, 0xba, 0xf4, 0x62,
- 0xa8, 0x0b, 0x41, 0xae, 0xa9, 0x64, 0x48, 0xa0, 0x6c, 0x93, 0xac, 0xae,
- 0xc5, 0xc7, 0x22, 0x7e, 0x8f, 0xf5, 0x13, 0x75, 0xad, 0xc3, 0x32, 0x05,
- 0x5f, 0xb7, 0x48, 0x48, 0x7c, 0xd7, 0xe8, 0xba, 0xb0, 0xad, 0x55, 0xe2,
- 0xf7, 0xfa, 0x85, 0xcb, 0x45, 0x95, 0x65, 0x60, 0xeb, 0x08, 0xd1, 0xda,
- 0x5d, 0x3a, 0x83, 0x54, 0xed, 0xb1, 0xea, 0x68, 0xbf, 0x84, 0xf8, 0x24,
- 0x6c, 0x1a, 0xee, 0x4b, 0xf8, 0x3d, 0xdd, 0xc8, 0x54, 0x80, 0xe1, 0x65,
- 0xcd, 0x61, 0x5c, 0xd8, 0x84, 0xfc, 0xc0, 0xa9, 0xce, 0xde, 0x45, 0xc0,
- 0xaa, 0x14, 0xb3, 0xe6, 0x9e, 0xef, 0x85, 0xd3, 0x06, 0xaa, 0x6a, 0x6e,
- 0x76, 0x85, 0xb7, 0x8e, 0xb0, 0xeb, 0x73, 0x66, 0xd0, 0x96, 0x60, 0xda,
- 0xbb, 0x3b, 0x24, 0xbf, 0xce, 0xf3, 0x5a, 0x15, 0x74, 0x22, 0xaa, 0xb6,
- 0x52, 0x8a, 0x69, 0x0d, 0xb1, 0x3a, 0xbb, 0x3b, 0xdf, 0xae, 0x5f, 0x75,
- 0xe0, 0xf0, 0x3f, 0xf8, 0xf2, 0xde, 0xd3, 0x07, 0x36, 0xed, 0xb4, 0x80,
- 0x5e, 0x9e, 0x58, 0x38, 0x24, 0x04, 0x41, 0xef, 0x84, 0x69, 0x6d, 0x1b,
- 0x11, 0x7e, 0x72, 0x15, 0xf3, 0xf0, 0x1f, 0x1a, 0xbd, 0xa5, 0x87, 0x34,
- 0x86, 0xf2, 0x56, 0x03, 0xb4, 0xe5, 0xcb, 0x92, 0x2d, 0x64, 0x4b, 0x20,
- 0xf5, 0x79, 0x35, 0xd6, 0x65, 0x96, 0x0b, 0x4c, 0x43, 0xf0, 0xb6, 0x70,
- 0xce, 0x41, 0x9d, 0x49, 0x18, 0xf5, 0x14, 0xc9, 0xd5, 0x4a, 0x40, 0x31,
- 0x72, 0x51, 0xfb, 0x19, 0xd8, 0x5a, 0xcf, 0x2b, 0xf1, 0x66, 0x8e, 0x24,
- 0x12, 0x7a, 0x02, 0xe3, 0x9d, 0xc6, 0x26, 0xb2, 0x8a, 0xc8, 0xd1, 0xbc,
- 0x18, 0xd8, 0x3e, 0x3b, 0x65, 0x87, 0x18, 0xb8, 0xc1, 0x46, 0xd4, 0xac,
- 0xa0, 0x2d, 0xc8, 0x8d, 0x23, 0x24, 0xfd, 0x0a, 0xa1, 0x38, 0x66, 0xcf,
- 0x19, 0x66, 0xec, 0x18, 0xab, 0xc4, 0x43, 0x80, 0x06, 0x06, 0x4a, 0xb5,
- 0x68, 0xc9, 0x75, 0xc5, 0x1c, 0xbf, 0x34, 0x04, 0x4d, 0x41, 0xdb, 0x67,
- 0xbb, 0xff, 0xe1, 0xe9, 0xbb, 0x37, 0xc7, 0x5f, 0x3b, 0x54, 0x23, 0x61,
- 0xe2, 0x35, 0xb4, 0x0d, 0xb1, 0x24, 0x87, 0x4e, 0x6f, 0xad, 0xc9, 0xa8,
- 0x81, 0xb8, 0xc4, 0x9e, 0x3e, 0x84, 0x1f, 0x80, 0x81, 0x64, 0x4f, 0xd8,
- 0x56, 0x2e, 0x50, 0x20, 0xe5, 0x96, 0xb7, 0x3c, 0x34, 0x50, 0xeb, 0x24,
- 0x61, 0x23, 0x2e, 0xaa, 0xd5, 0xd2, 0xc5, 0x13, 0x06, 0x35, 0x1d, 0x15,
- 0x87, 0xdb, 0xb2, 0xd2, 0x57, 0x4b, 0x61, 0x4d, 0x9a, 0x5b, 0x5a, 0x33,
- 0xec, 0xca, 0x1d, 0xc0, 0x96, 0x05, 0x85, 0x55, 0xd1, 0x0b, 0xa0, 0x15,
- 0xa2, 0x33, 0x67, 0xf4, 0xce, 0x30, 0x74, 0xde, 0x5c, 0x39, 0x33, 0xd4,
- 0xc5, 0x0c, 0x6b, 0x9f, 0x2f, 0x44, 0x33, 0xe3, 0x79, 0xa3, 0xb8, 0xb4,
- 0x8b, 0xcb, 0x71, 0x81, 0xc0, 0xde, 0x55, 0x54, 0xba, 0x6a, 0xd9, 0x2e,
- 0x54, 0xc9, 0x32, 0x5a, 0x63, 0x78, 0x2d, 0xe1, 0xf6, 0xc4, 0x27, 0xaf,
- 0xd8, 0x43, 0xb3, 0xcf, 0x68, 0xf4, 0x0b, 0xc1, 0x96, 0x0b, 0x33, 0x51,
- 0x95, 0x4b, 0x7a, 0xd4, 0xf8, 0xe3, 0xcb, 0x20, 0xb9, 0x4d, 0x42, 0x06,
- 0x8d, 0xe8, 0xc4, 0x5c, 0xcc, 0xb6, 0x96, 0xfe, 0xef, 0xfa, 0xc3, 0xf2,
- 0x7e, 0x31, 0xc9, 0xe7, 0x96, 0x83, 0xe1, 0xb0, 0x24, 0xec, 0xa1, 0xb0,
- 0xc6, 0x5a, 0x24, 0x4e, 0xdb, 0x2a, 0xb0, 0x50, 0xfa, 0xb0, 0x29, 0x3f,
- 0x7e, 0xa9, 0x53, 0x04, 0x4f, 0x91, 0xcd, 0x02, 0x30, 0x3f, 0xcc, 0xe3,
- 0x93, 0x6c, 0x3a, 0xcf, 0x95, 0xaa, 0x39, 0xd7, 0x1c, 0x2b, 0x55, 0x9f,
- 0x3a, 0x3b, 0xff, 0xf2, 0x15, 0x1b, 0x3b, 0x50, 0x83, 0x84, 0xc4, 0x9d,
- 0x9e, 0x82, 0x6b, 0x60, 0x82, 0xfc, 0xb6, 0x7c, 0xa1, 0x01, 0xfa, 0x01,
- 0xd4, 0x8d, 0x14, 0x2d, 0xa1, 0xa1, 0xfe, 0x24, 0xb6, 0x45, 0x71, 0x01,
- 0xfe, 0xd9, 0x3a, 0xb7, 0x47, 0x1b, 0x4b, 0x4f, 0xf4, 0x14, 0x17, 0x57,
- 0x0a, 0xd8, 0xa7, 0x4e, 0x35, 0x28, 0x89, 0xae, 0x94, 0x8c, 0xb3, 0x51,
- 0xb2, 0x50, 0xe2, 0x02, 0x68, 0x20, 0x3e, 0xad, 0x24, 0xbd, 0x50, 0x93,
- 0xaf, 0xc4, 0x3a, 0xe9, 0x08, 0x31, 0xe0, 0x38, 0xbf, 0x73, 0x61, 0x29,
- 0xb1, 0xbf, 0xcb, 0xac, 0xc2, 0x85, 0x37, 0xd5, 0xea, 0x65, 0x16, 0xbc,
- 0xc6, 0xf6, 0x3c, 0x68, 0xc2, 0x89, 0xda, 0x50, 0xa4, 0x2b, 0xc8, 0x12,
- 0x0c, 0x71, 0x83, 0x3c, 0xa0, 0xa4, 0xf4, 0x4d, 0xc8, 0xf7, 0xaf, 0xb4,
- 0xb4, 0x15, 0x9d, 0x67, 0x05, 0x4d, 0x51, 0x24, 0xc1, 0xcf, 0x77, 0xd4,
- 0x12, 0x57, 0x69, 0xe4, 0x6a, 0x19, 0x1d, 0x9c, 0x1f, 0x91, 0x64, 0x7b,
- 0x95, 0x01, 0xae, 0x22, 0xab, 0x2c, 0xbf, 0x2e, 0xc9, 0xb4, 0x96, 0x56,
- 0x66, 0xe7, 0x83, 0x3b, 0xbc, 0x0b, 0xde, 0x64, 0x62, 0xd2, 0x18, 0x01,
- 0x49, 0xe5, 0xf6, 0x24, 0x37, 0x35, 0x5c, 0x61, 0x70, 0x1d, 0x46, 0x4c,
- 0x10, 0x92, 0x62, 0x6f, 0x09, 0x75, 0x95, 0x1b, 0xa6, 0xf0, 0x59, 0x8b,
- 0xad, 0x87, 0x60, 0xc2, 0xb6, 0xd6, 0x38, 0xd5, 0x3e, 0x2b, 0xe1, 0xaf,
- 0x06, 0xd1, 0xa9, 0x7d, 0xd5, 0x3c, 0xa0, 0x9e, 0x9c, 0x06, 0xdd, 0xd6,
- 0xa3, 0xbf, 0xe2, 0x9e, 0x61, 0x59, 0xa4, 0x29, 0x17, 0x24, 0x2e, 0xd8,
- 0x5e, 0x0c, 0xd9, 0xb3, 0x40, 0xf8, 0x95, 0x6c, 0x40, 0x0e, 0xb7, 0x16,
- 0x1b, 0xb5, 0x82, 0x02, 0xa9, 0x89, 0x47, 0xd4, 0x81, 0x99, 0x9e, 0x55,
- 0xa6, 0x0a, 0x8e, 0x1c, 0x9e, 0x30, 0x70, 0x92, 0x54, 0xd1, 0xae, 0xf1,
- 0xa7, 0x4e, 0x33, 0xef, 0xef, 0xdc, 0x6c, 0xfd, 0x18, 0xdc, 0x97, 0xfc,
- 0xd1, 0x2b, 0x07, 0x74, 0xc7, 0xa3, 0x18, 0x71, 0x47, 0x60, 0xa9, 0x70,
- 0x9f, 0xf2, 0x2f, 0xf8, 0x18, 0x01, 0x70, 0x06, 0x7c, 0x0a, 0xae, 0xe3,
- 0xd0, 0xb4, 0x72, 0x75, 0xaf, 0xfa, 0x81, 0x88, 0x8f, 0x0f, 0x1c, 0x7a,
- 0x12, 0x8a, 0xc6, 0xc3, 0x6f, 0xb7, 0xad, 0x1c, 0x2e, 0x9b, 0x72, 0x38,
- 0x97, 0xd8, 0x0e, 0x7c, 0x99, 0xd4, 0xea, 0xe7, 0xba, 0xa4, 0xa1, 0xde,
- 0xb0, 0x47, 0x6b, 0xd1, 0x9f, 0xcf, 0x3d, 0xc3, 0xb7, 0xc7, 0x78, 0x57,
- 0x91, 0x5f, 0xe7, 0x05, 0x26, 0xe5, 0x5d, 0x5c, 0x98, 0xe3, 0xbe, 0x96,
- 0xed, 0xc0, 0x95, 0xcd, 0x38, 0x19, 0xc8, 0x61, 0x7c, 0x21, 0x63, 0x04,
- 0xf1, 0x02, 0xb7, 0x69, 0x69, 0x7e, 0x48, 0xa2, 0xed, 0xa9, 0x84, 0x47,
- 0x54, 0x82, 0x4d, 0x90, 0x54, 0xd3, 0x60, 0x29, 0x93, 0xe9, 0x75, 0x2e,
- 0xe1, 0xb5, 0xb4, 0x68, 0x41, 0xd2, 0x67, 0x2f, 0xfa, 0x4f, 0xa5, 0x81,
- 0x6f, 0x7d, 0xfe, 0x1e, 0x13, 0xc2, 0x48, 0x20, 0x29, 0x47, 0x9e, 0x20,
- 0x8e, 0x7e, 0xb8, 0x38, 0x3f, 0x88, 0xbe, 0x39, 0x3a, 0x78, 0x7d, 0x74,
- 0x3e, 0x6e, 0x5c, 0xfa, 0x1a, 0x09, 0x22, 0x12, 0x1a, 0xdb, 0x83, 0x21,
- 0x1a, 0x1b, 0x06, 0x81, 0x86, 0xf0, 0x1b, 0xd7, 0x23, 0xe2, 0xe1, 0x83,
- 0x44, 0xe7, 0x83, 0x15, 0x22, 0x71, 0x1c, 0x00, 0x00, 0xb9, 0x04, 0xb3,
- 0x71, 0x6d, 0x4c, 0x89, 0x43, 0x71, 0x3c, 0x83, 0x59, 0xcf, 0xc3, 0xe4,
- 0x19, 0x0f, 0xdb, 0xe7, 0x2f, 0x93, 0x59, 0x6e, 0x79, 0x81, 0xf5, 0x9d,
- 0xfb, 0xc6, 0xa7, 0x7e, 0x07, 0x6c, 0x4b, 0x2f, 0x19, 0x35, 0x20, 0xf6,
- 0x7e, 0x18, 0x52, 0xbf, 0x43, 0x5a, 0xfc, 0x21, 0xe3, 0x3a, 0xde, 0x27,
- 0x65, 0xaf, 0x61, 0x0d, 0xac, 0x77, 0xbf, 0x21, 0xd5, 0x9c, 0x5a, 0x27,
- 0xe9, 0x9b, 0xce, 0x96, 0xf8, 0x74, 0x71, 0xc1, 0xe7, 0x96, 0x06, 0x81,
- 0x4b, 0x35, 0x10, 0x92, 0xf5, 0x04, 0xb5, 0x32, 0x5d, 0x34, 0x56, 0xc9,
- 0xab, 0x99, 0x1a, 0x1a, 0x86, 0x81, 0xe8, 0x14, 0x20, 0xeb, 0xd0, 0xd9,
- 0x93, 0x4b, 0x7d, 0x2e, 0x58, 0xcd, 0x62, 0x31, 0xa3, 0x61, 0xe9, 0x43,
- 0xe1, 0xfd, 0x00, 0x5f, 0x88, 0x86, 0xe3, 0x97, 0x35, 0x57, 0xa9, 0xda,
- 0x45, 0x15, 0xc6, 0x5b, 0x9b, 0xe3, 0x31, 0x38, 0x9a, 0xb7, 0x28, 0x7e,
- 0xee, 0xd2, 0x2a, 0x8c, 0xe8, 0xbb, 0x12, 0x10, 0xc6, 0x4a, 0x3d, 0x4c,
- 0x9d, 0x52, 0xaa, 0x54, 0xea, 0x15, 0x0a, 0x63, 0x0b, 0xd2, 0x82, 0x42,
- 0x62, 0x46, 0x39, 0x34, 0x04, 0x92, 0xbb, 0xe7, 0x92, 0xe8, 0x9b, 0xbc,
- 0xc4, 0x5d, 0xd0, 0x7e, 0x9c, 0x2f, 0xf9, 0xae, 0xe5, 0xc7, 0x1b, 0xea,
- 0xea, 0x72, 0x78, 0xb1, 0x80, 0x57, 0x06, 0xfb, 0x3a, 0x3b, 0xb8, 0xf8,
- 0x06, 0x8e, 0x56, 0x90, 0xf0, 0x6b, 0x80, 0xa7, 0x98, 0x7b, 0xad, 0x9d,
- 0x9d, 0xe5, 0x14, 0x38, 0x91, 0x7f, 0x0d, 0xa3, 0xd1, 0xe4, 0x49, 0x38,
- 0xf2, 0x52, 0x89, 0x49, 0x9a, 0x4b, 0x79, 0x58, 0xf0, 0xe8, 0x5a, 0x89,
- 0x3e, 0x44, 0xc1, 0xbb, 0xd4, 0x3b, 0x17, 0x7a, 0xd9, 0x97, 0x9c, 0xf8,
- 0xbe, 0xcc, 0x09, 0x44, 0xcf, 0xc2, 0x1c, 0x6b, 0x3c, 0x21, 0x08, 0x31,
- 0xbe, 0xe0, 0xa4, 0x67, 0xf1, 0x45, 0xcd, 0xf2, 0x6e, 0x08, 0xc4, 0xe0,
- 0x48, 0x7f, 0xb9, 0xb8, 0x1f, 0xb5, 0xb1, 0x78, 0xa2, 0xaf, 0x56, 0x55,
- 0x9d, 0xad, 0x34, 0xa0, 0x90, 0x9d, 0x64, 0x59, 0xe4, 0x79, 0x15, 0x8c,
- 0x01, 0xd2, 0x4f, 0x5c, 0xe9, 0x89, 0x16, 0xac, 0x4b, 0x19, 0x0b, 0x37,
- 0x95, 0xa9, 0xdc, 0x1d, 0x0a, 0x86, 0xf1, 0xa4, 0xcc, 0xe7, 0xab, 0x2a,
- 0x08, 0xc4, 0xfe, 0x65, 0x63, 0x0e, 0x06, 0xbd, 0x79, 0x3c, 0x32, 0xdc,
- 0xcf, 0x4c, 0xd0, 0xea, 0x48, 0xd3, 0x27, 0xf1, 0x12, 0x7e, 0xc7, 0x22,
- 0xcf, 0xea, 0x75, 0xe4, 0x10, 0xf3, 0xbd, 0xb5, 0xb1, 0x31, 0xb6, 0xcd,
- 0x66, 0xe4, 0xd7, 0xf6, 0xa6, 0x7f, 0x0f, 0x69, 0x92, 0xc7, 0x20, 0x7e,
- 0x83, 0x29, 0xfd, 0x62, 0x78, 0x70, 0x89, 0xec, 0x29, 0x58, 0xb8, 0xec,
- 0x71, 0x5a, 0xd6, 0x27, 0x85, 0xaf, 0x9c, 0xe7, 0xc2, 0x52, 0xcd, 0x2e,
- 0x72, 0xc3, 0xf4, 0x57, 0xcf, 0x9d, 0x27, 0x88, 0x5a, 0x62, 0x7c, 0x27,
- 0xd8, 0x34, 0x5f, 0x02, 0x56, 0x74, 0xd8, 0x45, 0xe6, 0xf2, 0x20, 0xb7,
- 0xff, 0x6b, 0x3b, 0x1a, 0x44, 0x5a, 0x0f, 0xbe, 0x03, 0xef, 0xe8, 0xff,
- 0x42, 0x0c, 0x96, 0x22, 0xfd, 0x72, 0x9b, 0xa3, 0x3a, 0x96, 0xec, 0x88,
- 0x54, 0xa8, 0xeb, 0x62, 0xea, 0xa9, 0x9f, 0xa4, 0x83, 0xe4, 0x8e, 0xf5,
- 0x17, 0xd3, 0x11, 0x14, 0x39, 0x44, 0xea, 0xfe, 0x3a, 0x2c, 0x26, 0x20,
- 0x6f, 0x5c, 0x3a, 0xab, 0x1e, 0x97, 0xe0, 0x94, 0x7a, 0x94, 0x22, 0xd6,
- 0xa3, 0x1c, 0x93, 0x79, 0x50, 0x25, 0xb9, 0xde, 0xe9, 0xed, 0x65, 0x54,
- 0xe6, 0xf2, 0xd3, 0xf2, 0x8f, 0x34, 0xc6, 0x4b, 0xc9, 0x3f, 0x28, 0xf3,
- 0x17, 0xd4, 0xc7, 0xb5, 0xe0, 0x53, 0x09, 0xac, 0x33, 0xcf, 0xa4, 0x0d,
- 0xd2, 0xa4, 0x00, 0x76, 0x5c, 0x02, 0xe1, 0x52, 0x41, 0x48, 0x38, 0xa8,
- 0x8c, 0xe1, 0x8c, 0x25, 0x7f, 0x9b, 0x0b, 0x38, 0x9a, 0x26, 0x63, 0x57,
- 0xaa, 0x65, 0x74, 0x6c, 0x84, 0xe5, 0xb4, 0x65, 0xf8, 0x7a, 0xf7, 0x23,
- 0x1f, 0x1f, 0x4e, 0xba, 0xbb, 0x98, 0x21, 0xd3, 0xbc, 0x48, 0x60, 0x53,
- 0xd2, 0x12, 0xb0, 0x12, 0xc7, 0x11, 0xc6, 0xa6, 0xf8, 0xe0, 0xcd, 0x2b,
- 0x4e, 0xf8, 0x50, 0x93, 0x94, 0xc2, 0x9a, 0xc0, 0xfe, 0x75, 0x9d, 0x6a,
- 0x88, 0xa9, 0xac, 0x7a, 0xbd, 0xc0, 0x26, 0x2c, 0x7c, 0x1c, 0x5d, 0xe0,
- 0x1d, 0xac, 0x2e, 0x06, 0x62, 0xd4, 0x3e, 0x30, 0x23, 0x07, 0xb0, 0xaa,
- 0x97, 0xc8, 0x71, 0x98, 0x5e, 0x2e, 0x01, 0x19, 0x2e, 0xec, 0xf9, 0x13,
- 0x7b, 0x0f, 0xbb, 0xe4, 0x78, 0xd6, 0x2c, 0x92, 0x5c, 0x12, 0x45, 0x8d,
- 0xe3, 0x0b, 0x65, 0x6f, 0x17, 0x8a, 0xa9, 0x84, 0x6f, 0x00, 0xb2, 0xd4,
- 0x5a, 0x30, 0xe8, 0xb4, 0xe6, 0xe2, 0x6f, 0x0d, 0x74, 0x95, 0x5c, 0xf2,
- 0xbd, 0x7a, 0x9b, 0x45, 0x2e, 0x0c, 0xfc, 0x4e, 0xb5, 0x42, 0x72, 0x92,
- 0xd0, 0x5d, 0x56, 0xc5, 0x6a, 0x5a, 0x43, 0xeb, 0x03, 0x45, 0xd4, 0xbc,
- 0xf4, 0x6e, 0x8d, 0xf3, 0x50, 0xb7, 0x3f, 0x3e, 0x53, 0xf5, 0x5e, 0xb4,
- 0x0f, 0x1e, 0xd9, 0x66, 0x5c, 0xcb, 0x77, 0x71, 0x35, 0x46, 0xc3, 0x7e,
- 0xb7, 0x1c, 0x95, 0x0d, 0xcf, 0x5c, 0x72, 0x7d, 0xa3, 0x52, 0x3c, 0x27,
- 0x2a, 0x04, 0x77, 0xaf, 0x0a, 0x62, 0x10, 0x3c, 0x8a, 0x48, 0x71, 0x18,
- 0x21, 0xd6, 0xb0, 0xc9, 0x72, 0xc3, 0x61, 0x25, 0xd2, 0x90, 0x86, 0x1a,
- 0xb5, 0x2a, 0x8e, 0xe0, 0x6d, 0x5a, 0x48, 0xab, 0x14, 0xe4, 0x4a, 0x64,
- 0x95, 0x1e, 0x6f, 0xb1, 0x11, 0xb2, 0x0a, 0xb4, 0x26, 0x27, 0x1f, 0x2a,
- 0x6e, 0x9c, 0xae, 0xdf, 0x28, 0x7a, 0xad, 0x87, 0x42, 0x7b, 0x68, 0x8a,
- 0x13, 0xed, 0xbb, 0xf1, 0x4c, 0x50, 0x51, 0x5a, 0x74, 0xf4, 0xda, 0x6c,
- 0xaa, 0x60, 0x39, 0x58, 0x1b, 0xd6, 0x6c, 0x6c, 0x93, 0x68, 0x5d, 0xad,
- 0x0b, 0x1a, 0x02, 0xcf, 0xb8, 0x3f, 0x4f, 0x76, 0xfa, 0x41, 0x8d, 0xaf,
- 0x4d, 0x89, 0xff, 0xcf, 0xa1, 0xfd, 0x38, 0xdc, 0x42, 0xb1, 0x5e, 0x70,
- 0x9c, 0xdb, 0x56, 0xc7, 0x50, 0xa8, 0x89, 0x5f, 0x3a, 0x98, 0xdd, 0x17,
- 0x7b, 0xa3, 0xdd, 0xe7, 0x9f, 0x8f, 0x76, 0x46, 0xbb, 0x3b, 0xcc, 0x5f,
- 0x78, 0x28, 0xc1, 0xe0, 0x64, 0x5d, 0x3a, 0xba, 0xaa, 0xbd, 0xd7, 0xee,
- 0xf3, 0xdd, 0xd1, 0xc5, 0xf7, 0xa7, 0xe7, 0xdf, 0x46, 0xc7, 0xef, 0x2e,
- 0x8e, 0xce, 0xdf, 0x1c, 0x1c, 0x7e, 0x2a, 0x76, 0x7f, 0x68, 0xb6, 0x0e,
- 0xca, 0x5c, 0x27, 0x7e, 0x61, 0xda, 0xb6, 0x41, 0xbf, 0x66, 0x49, 0x75,
- 0xbd, 0xb3, 0xbf, 0xfb, 0x20, 0x3a, 0x75, 0x87, 0x79, 0xd0, 0xbf, 0x6f,
- 0x93, 0xda, 0xe5, 0x49, 0xad, 0x6f, 0xc5, 0xa1, 0x34, 0x8e, 0x25, 0xcc,
- 0xca, 0x85, 0xe8, 0x82, 0xcd, 0xa3, 0x8a, 0x12, 0xc0, 0x59, 0x95, 0xb1,
- 0x4f, 0x04, 0x07, 0x57, 0x32, 0x6d, 0x15, 0x6f, 0x46, 0xc3, 0xd1, 0x95,
- 0xe7, 0x6e, 0x48, 0x49, 0xe9, 0x4a, 0xcd, 0x29, 0x82, 0x6c, 0x3b, 0x83,
- 0x88, 0x67, 0x5c, 0x59, 0xd3, 0xd8, 0x98, 0x5a, 0xb4, 0xca, 0xa9, 0x60,
- 0x0f, 0xce, 0x5c, 0xca, 0x88, 0x03, 0x24, 0x40, 0x14, 0x84, 0xc9, 0xe9,
- 0x18, 0x6b, 0xbd, 0x2a, 0x78, 0x18, 0x49, 0xdb, 0x80, 0x61, 0x2d, 0x2d,
- 0xc4, 0x19, 0x13, 0xab, 0x99, 0x46, 0x0f, 0x75, 0x20, 0x38, 0x0d, 0xc1,
- 0x68, 0xa4, 0x2b, 0x08, 0x54, 0x8c, 0x97, 0x06, 0xa4, 0xc8, 0x1a, 0x58,
- 0xb2, 0xdc, 0x51, 0x48, 0xa3, 0x10, 0xf9, 0xcf, 0x0a, 0x5c, 0x70, 0xeb,
- 0x65, 0x0d, 0xaf, 0x30, 0x92, 0xca, 0x56, 0xe1, 0xeb, 0x22, 0x6a, 0x23,
- 0x50, 0x73, 0x56, 0xc4, 0x77, 0x28, 0xcf, 0x92, 0x7a, 0xf4, 0xd1, 0x8d,
- 0xa8, 0x56, 0x9e, 0x8b, 0x05, 0x27, 0xbf, 0xe6, 0xd1, 0xd9, 0xd1, 0xdb,
- 0xa1, 0x15, 0x15, 0xa6, 0xdf, 0xc5, 0x18, 0x65, 0x50, 0x93, 0x92, 0xe6,
- 0xb3, 0x4c, 0x32, 0x0b, 0xab, 0x01, 0x4f, 0xd4, 0x38, 0xa0, 0x70, 0x02,
- 0x7c, 0x68, 0x1c, 0x18, 0xa5, 0x46, 0x8f, 0x5a, 0xf8, 0xa5, 0xa4, 0x19,
- 0x36, 0x11, 0x3a, 0x79, 0x3f, 0x35, 0x76, 0x39, 0xda, 0x74, 0xf1, 0xba,
- 0xdc, 0x1f, 0x82, 0x52, 0x11, 0x33, 0xe0, 0xc2, 0x04, 0x72, 0x4b, 0xc2,
- 0x3e, 0xfb, 0xf6, 0x70, 0xfc, 0xbb, 0xdd, 0x3d, 0x1d, 0xce, 0x96, 0x69,
- 0x05, 0xcc, 0xab, 0x9a, 0xf9, 0xf9, 0x60, 0xd7, 0xe1, 0x18, 0x2d, 0xdb,
- 0x1a, 0x07, 0x1c, 0x9b, 0xb1, 0xe9, 0x72, 0x84, 0xb6, 0x6a, 0x49, 0x42,
- 0x1b, 0x52, 0xdb, 0xde, 0x44, 0x4c, 0x57, 0xf8, 0x97, 0x5d, 0x22, 0x28,
- 0x0f, 0xa5, 0x05, 0x9a, 0x2a, 0x17, 0xf5, 0x17, 0x67, 0xf6, 0x91, 0xb4,
- 0xac, 0xad, 0x21, 0x9d, 0xdc, 0x47, 0xb6, 0x34, 0xf7, 0x9c, 0xd7, 0xdb,
- 0x7f, 0xcb, 0x90, 0xb1, 0x7a, 0xb3, 0x1b, 0x36, 0x90, 0xef, 0x06, 0x07,
- 0x40, 0x03, 0xd9, 0x67, 0x56, 0x02, 0x2e, 0xf3, 0x15, 0x51, 0xf8, 0xe9,
- 0x53, 0xda, 0x28, 0x3a, 0x59, 0x02, 0xe1, 0xc0, 0x4c, 0x21, 0x9f, 0xb3,
- 0xea, 0xe2, 0x1e, 0x79, 0x5d, 0x70, 0xe9, 0x99, 0xa5, 0x84, 0x94, 0xbe,
- 0x1b, 0x45, 0xdf, 0x24, 0x19, 0xe7, 0xd0, 0x73, 0xf0, 0x9d, 0xa5, 0x61,
- 0x21, 0x44, 0x90, 0x6b, 0x50, 0xa2, 0x26, 0xdf, 0x49, 0x12, 0x2b, 0x3c,
- 0x27, 0xf1, 0xba, 0x52, 0x34, 0x5c, 0xab, 0x47, 0x15, 0x73, 0xa0, 0x9e,
- 0x62, 0x89, 0x3a, 0xdc, 0x0b, 0xc1, 0x8b, 0xe6, 0x06, 0x36, 0xeb, 0x18,
- 0x9b, 0xa8, 0x8e, 0x80, 0xe6, 0xf4, 0x98, 0xc3, 0xd7, 0xa4, 0x56, 0xe5,
- 0x6b, 0x20, 0x6b, 0xb3, 0xb5, 0x50, 0x34, 0x2e, 0xcf, 0x54, 0x66, 0xc5,
- 0x35, 0x9b, 0x3e, 0x4a, 0xba, 0x6e, 0xe2, 0x6c, 0x7a, 0x3f, 0x9a, 0x91,
- 0x2c, 0xcb, 0xc6, 0xb3, 0xd1, 0xea, 0x66, 0x3b, 0x38, 0xa6, 0xcc, 0xf2,
- 0xaf, 0x05, 0x2e, 0xa0, 0x6e, 0xf8, 0xb6, 0x62, 0xc7, 0x6d, 0x14, 0xb1,
- 0xb8, 0x76, 0x26, 0x98, 0x24, 0x2c, 0xf1, 0x5f, 0x8e, 0xe7, 0x5a, 0xbc,
- 0xad, 0xa3, 0xc8, 0x81, 0x1d, 0x73, 0x0b, 0xa3, 0x65, 0xb2, 0xd8, 0x77,
- 0x89, 0xc9, 0xc6, 0x1f, 0xb4, 0xc0, 0x86, 0x53, 0x2c, 0x02, 0x23, 0x6d,
- 0x96, 0x5c, 0xcd, 0x55, 0xa0, 0x08, 0x55, 0x17, 0xd7, 0x44, 0x47, 0x36,
- 0x88, 0x28, 0x3c, 0x5a, 0x2d, 0x09, 0x12, 0x3b, 0xd1, 0x61, 0xa5, 0xd1,
- 0xb5, 0xf2, 0x70, 0xc1, 0x02, 0xbd, 0x6f, 0x44, 0x41, 0x44, 0x80, 0xbb,
- 0x8c, 0xc2, 0xf2, 0x62, 0xe2, 0xb1, 0xa0, 0x24, 0x75, 0x3f, 0x31, 0x26,
- 0x2c, 0x28, 0x04, 0x88, 0xee, 0x1a, 0x20, 0x0d, 0xe7, 0xa7, 0xd5, 0x14,
- 0x96, 0xb3, 0x42, 0x5f, 0xdf, 0x3e, 0x61, 0x8b, 0xf7, 0xc5, 0xc9, 0xd8,
- 0xbc, 0x22, 0x59, 0x72, 0x17, 0x90, 0x96, 0x54, 0x21, 0x50, 0xfa, 0x63,
- 0x03, 0x90, 0xa0, 0x2b, 0x03, 0xf8, 0x00, 0x23, 0x11, 0xae, 0xe0, 0xdd,
- 0x64, 0x3e, 0x0f, 0xc2, 0x16, 0x41, 0x23, 0x8a, 0x79, 0x28, 0x56, 0xfa,
- 0x4c, 0x84, 0x21, 0x07, 0xfa, 0xc2, 0x30, 0x7e, 0x24, 0x2c, 0x3d, 0x19,
- 0x44, 0xc3, 0x3d, 0x40, 0xe9, 0xec, 0xd6, 0x17, 0x31, 0xae, 0x04, 0x31,
- 0x90, 0xdb, 0xa0, 0x96, 0xac, 0x15, 0x65, 0x07, 0x9b, 0x4a, 0xd2, 0xb7,
- 0xf4, 0x3e, 0xff, 0xd8, 0xd3, 0x09, 0xdd, 0xee, 0x22, 0x78, 0x5b, 0x20,
- 0x2c, 0xe7, 0xf7, 0x6d, 0x91, 0x61, 0xef, 0xc1, 0x5d, 0x45, 0x9a, 0xc4,
- 0x5d, 0xea, 0xb0, 0xa4, 0xa5, 0x7e, 0x02, 0x4c, 0xa1, 0x8a, 0x0e, 0x6a,
- 0x03, 0xa0, 0x25, 0x54, 0x23, 0x77, 0x16, 0xdd, 0xee, 0x99, 0xaf, 0x99,
- 0xbf, 0xb1, 0x75, 0x13, 0x63, 0xbd, 0x67, 0x22, 0xad, 0x0c, 0x46, 0x0e,
- 0x78, 0x0b, 0xa8, 0x96, 0x13, 0xa0, 0x88, 0x66, 0x89, 0x8b, 0xd4, 0xb8,
- 0x4c, 0x9e, 0xa9, 0x59, 0x41, 0xb2, 0xdf, 0x05, 0x9a, 0x9e, 0x15, 0xf8,
- 0x20, 0xcc, 0x09, 0x41, 0xe0, 0x41, 0x70, 0xe4, 0x71, 0xe6, 0x72, 0x26,
- 0xd4, 0x94, 0x0f, 0xb4, 0x3e, 0x6c, 0xff, 0x75, 0x2a, 0x86, 0x09, 0x84,
- 0x9d, 0xe2, 0x3a, 0xa7, 0x93, 0xdf, 0x8f, 0xe8, 0x30, 0xad, 0x98, 0xe3,
- 0x57, 0xae, 0x0e, 0xdb, 0x58, 0x50, 0x3e, 0xfb, 0x21, 0x9b, 0x1b, 0x7e,
- 0xc1, 0x53, 0x29, 0xfb, 0x7e, 0xee, 0x8a, 0x76, 0x5e, 0x9f, 0x88, 0xfa,
- 0x39, 0xac, 0xf2, 0xd8, 0x59, 0x61, 0x05, 0xd6, 0xfb, 0x47, 0x1f, 0x59,
- 0xc6, 0xe9, 0x6b, 0x4f, 0xf2, 0xb5, 0xa4, 0xf7, 0x63, 0x8d, 0xce, 0x8e,
- 0xdf, 0x49, 0xc9, 0x70, 0x77, 0x16, 0x12, 0x46, 0x61, 0xdc, 0x90, 0x6a,
- 0xf7, 0x18, 0x4f, 0x6c, 0x70, 0xf0, 0x62, 0x38, 0x62, 0x9a, 0x61, 0x1a,
- 0x4f, 0xb5, 0xaf, 0xf3, 0x95, 0xf4, 0xde, 0xe7, 0x7b, 0xae, 0x2c, 0xe7,
- 0xfd, 0x46, 0x19, 0x5c, 0xb7, 0x27, 0x8d, 0x0b, 0xc5, 0x59, 0xa4, 0xa6,
- 0x33, 0x2f, 0xe0, 0xa3, 0xd4, 0x37, 0xb7, 0x52, 0xe3, 0x73, 0x83, 0x46,
- 0xd2, 0x63, 0x68, 0x0a, 0xff, 0x5d, 0x34, 0xda, 0xa6, 0x0e, 0xcb, 0x6d,
- 0x7b, 0x71, 0x79, 0x33, 0x2d, 0xe9, 0x86, 0xe3, 0x0c, 0xdf, 0x1f, 0xa1,
- 0x90, 0x63, 0x3b, 0x68, 0xc4, 0xb3, 0x9f, 0xa3, 0xe1, 0x74, 0x8e, 0xf9,
- 0x45, 0x28, 0xb8, 0xfd, 0x23, 0xed, 0x3c, 0x3f, 0xf1, 0xb3, 0xdb, 0xc3,
- 0x37, 0x29, 0x9f, 0xb7, 0x8f, 0x03, 0x9b, 0xfa, 0xa9, 0x28, 0x0c, 0x02,
- 0x75, 0x1b, 0x1d, 0xcc, 0x6e, 0x39, 0xff, 0x6e, 0xa6, 0x7f, 0xf2, 0x7c,
- 0x8e, 0x32, 0x94, 0x2a, 0xc5, 0x4c, 0xe3, 0x89, 0x54, 0x27, 0xff, 0x2e,
- 0x25, 0xa5, 0xe3, 0xb0, 0x21, 0x5f, 0x70, 0x2a, 0x20, 0x0f, 0x10, 0x6f,
- 0x05, 0x5f, 0x5a, 0x5e, 0xc7, 0x40, 0xd3, 0x17, 0x7c, 0xe4, 0x1f, 0x73,
- 0x67, 0xde, 0xba, 0x51, 0xf4, 0x15, 0xfb, 0x38, 0x8b, 0x24, 0x00, 0x82,
- 0xd5, 0x8b, 0x4f, 0x4a, 0xfa, 0xf1, 0x66, 0xc4, 0x02, 0x45, 0x31, 0x72,
- 0x33, 0x69, 0xa5, 0xc3, 0xb8, 0x39, 0xb9, 0x6f, 0xea, 0x93, 0xc3, 0xb8,
- 0x2c, 0xbb, 0x9d, 0xa6, 0x62, 0xa9, 0x13, 0x51, 0x6b, 0x2a, 0x01, 0x44,
- 0xa5, 0x8c, 0x50, 0x2e, 0xcc, 0x59, 0x62, 0x39, 0xfe, 0x79, 0x08, 0xac,
- 0x62, 0x96, 0x63, 0x34, 0x65, 0x12, 0x81, 0x23, 0x09, 0xdc, 0xe1, 0x7e,
- 0xd4, 0x87, 0xd7, 0xc4, 0x9a, 0x13, 0x37, 0xd4, 0xb1, 0x98, 0xf4, 0x6c,
- 0x88, 0x63, 0xbe, 0xa3, 0x6c, 0x13, 0xdc, 0x97, 0x96, 0x28, 0x09, 0x29,
- 0x74, 0x5b, 0x78, 0x97, 0xa3, 0x5d, 0x59, 0xdd, 0xfa, 0x14, 0x38, 0xbf,
- 0x71, 0xfc, 0xfe, 0x2d, 0x57, 0x39, 0x41, 0x05, 0xeb, 0x8b, 0xf3, 0x83,
- 0x77, 0xe3, 0x37, 0x62, 0x1a, 0xbf, 0xc8, 0x83, 0xc2, 0xd8, 0xea, 0x57,
- 0x30, 0xff, 0xb1, 0x43, 0x8c, 0xbb, 0x93, 0xd2, 0x1b, 0x16, 0x5a, 0xaf,
- 0x55, 0xb3, 0x07, 0x4d, 0xe8, 0x7d, 0x29, 0xb9, 0xcd, 0xab, 0xc1, 0x43,
- 0xdb, 0x1c, 0x6f, 0x39, 0x41, 0xa8, 0x0c, 0xcb, 0xb3, 0xf9, 0xca, 0xf5,
- 0x06, 0x12, 0xad, 0x0f, 0xf1, 0xb2, 0x1c, 0xda, 0x60, 0xec, 0x53, 0xb9,
- 0x7b, 0xd7, 0xe2, 0x92, 0x1e, 0x92, 0xaa, 0x38, 0xd4, 0xa2, 0x35, 0x41,
- 0x31, 0x3a, 0x67, 0x4e, 0x95, 0xbb, 0x57, 0x51, 0xfd, 0x5c, 0xe3, 0x61,
- 0x0a, 0xa8, 0x35, 0xbd, 0xf9, 0x87, 0xdd, 0xad, 0xee, 0xe6, 0x2f, 0x7e,
- 0x69, 0xf3, 0xdd, 0x63, 0x37, 0xdd, 0xcc, 0x67, 0x17, 0x6d, 0xfe, 0x61,
- 0x6f, 0xeb, 0xc1, 0x19, 0x85, 0x09, 0x92, 0xbe, 0x4f, 0x7a, 0x83, 0x07,
- 0x1b, 0xbd, 0x92, 0x63, 0xe6, 0x64, 0x26, 0x17, 0xa1, 0x13, 0x40, 0x0f,
- 0xd7, 0xb0, 0x3b, 0x38, 0x82, 0xdb, 0x49, 0xea, 0xde, 0xf1, 0xa6, 0x89,
- 0x26, 0xc7, 0xff, 0xfb, 0x28, 0x44, 0x94, 0xcc, 0xfa, 0x55, 0x78, 0x45,
- 0x31, 0x50, 0x40, 0x99, 0x8f, 0xd0, 0xf7, 0xde, 0x03, 0x7d, 0xfb, 0xd9,
- 0x05, 0x66, 0x09, 0xf6, 0x62, 0x73, 0x18, 0x9c, 0x01, 0x63, 0x6b, 0x3f,
- 0x1b, 0xbe, 0xe2, 0xfa, 0xfa, 0xfe, 0x2e, 0x8e, 0xdf, 0x1e, 0x31, 0x80,
- 0xf6, 0xeb, 0x63, 0xc6, 0xa1, 0x1b, 0x2b, 0x12, 0xa4, 0x59, 0x20, 0x1c,
- 0x38, 0x6f, 0x58, 0x38, 0x45, 0xdc, 0xbb, 0x2e, 0xda, 0xcc, 0x71, 0x0e,
- 0xb7, 0x13, 0xdc, 0xb5, 0x86, 0x43, 0x97, 0x96, 0x74, 0x79, 0x7c, 0x39,
- 0x7c, 0x9b, 0xcf, 0xa0, 0x25, 0x0f, 0xc7, 0x08, 0x15, 0xa4, 0xb7, 0xe8,
- 0xc3, 0xf7, 0xd9, 0xa2, 0xf6, 0xf1, 0xa8, 0x23, 0x69, 0x77, 0x63, 0x5d,
- 0x7d, 0x9e, 0xbf, 0x6d, 0x0f, 0x87, 0x3c, 0x98, 0xa1, 0x84, 0x75, 0xa9,
- 0x73, 0xa7, 0x06, 0xd5, 0x61, 0xac, 0x85, 0x16, 0x28, 0x9d, 0xdf, 0x4b,
- 0x20, 0x42, 0xec, 0xc3, 0xc7, 0x7c, 0x22, 0xe7, 0x15, 0x27, 0x93, 0x79,
- 0x13, 0x9f, 0x18, 0xf1, 0x36, 0x42, 0x1c, 0x53, 0x28, 0x52, 0xc9, 0x9d,
- 0x8f, 0x7f, 0xd2, 0xf2, 0xcd, 0xf9, 0xf2, 0x1e, 0xb3, 0xbc, 0xab, 0x85,
- 0x56, 0x74, 0xfa, 0x57, 0xff, 0x26, 0xef, 0xd4, 0x2a, 0x52, 0x29, 0xdc,
- 0x74, 0x40, 0x81, 0xfa, 0x89, 0x16, 0x70, 0x3a, 0x2d, 0x82, 0xeb, 0x4a,
- 0x87, 0x6d, 0x85, 0xee, 0x02, 0x8c, 0xd3, 0x00, 0x92, 0xb5, 0x3e, 0xce,
- 0x10, 0x0f, 0x36, 0xe7, 0x2c, 0xd8, 0xd7, 0xb9, 0x73, 0x8e, 0x11, 0xdb,
- 0x59, 0xd6, 0x0b, 0x24, 0x27, 0x91, 0xe5, 0x7b, 0x4b, 0x3a, 0x7f, 0x7f,
- 0xd8, 0x47, 0x89, 0x86, 0x34, 0xeb, 0x98, 0xcc, 0xf0, 0x97, 0xcf, 0xa6,
- 0xe5, 0x7a, 0x8d, 0x7a, 0x97, 0x8c, 0x89, 0xc1, 0x7e, 0xac, 0x9e, 0x0c,
- 0x40, 0x20, 0x63, 0x84, 0xb8, 0xe8, 0x82, 0x60, 0xbe, 0x66, 0x8a, 0xa4,
- 0x28, 0xd5, 0x2e, 0x32, 0xd6, 0x19, 0xc9, 0xc5, 0x2a, 0xc9, 0x8c, 0x74,
- 0xb5, 0x9c, 0x21, 0x28, 0x43, 0xc2, 0x51, 0xff, 0x9d, 0xf1, 0xb1, 0x8b,
- 0xfb, 0x68, 0x77, 0x6f, 0x10, 0xed, 0xed, 0xec, 0xee, 0x75, 0xcc, 0xa1,
- 0xf7, 0xef, 0x1c, 0x14, 0xb5, 0x87, 0xaf, 0x7b, 0x9f, 0x3a, 0x0b, 0x9f,
- 0xda, 0x80, 0x9b, 0x44, 0x93, 0x80, 0x89, 0xf9, 0xb0, 0x7f, 0x16, 0x98,
- 0xcc, 0xa8, 0x9a, 0x0c, 0x64, 0x3b, 0x5c, 0x5b, 0x62, 0x24, 0xb4, 0x6a,
- 0x9b, 0xae, 0x8a, 0xd8, 0x0c, 0x45, 0x75, 0xa4, 0x70, 0x2d, 0x22, 0x5f,
- 0x9c, 0xa5, 0x34, 0x2e, 0x50, 0x4a, 0xb4, 0xbe, 0x47, 0x69, 0x65, 0xdb,
- 0xc2, 0xa1, 0x35, 0xbc, 0x37, 0x44, 0xef, 0xaf, 0x8f, 0x0f, 0x2f, 0x0c,
- 0xfa, 0xf0, 0x92, 0x85, 0xa7, 0xe2, 0xfe, 0xd3, 0xea, 0x32, 0x3e, 0xf8,
- 0xcc, 0x6c, 0xff, 0x3a, 0x21, 0x31, 0x3a, 0x9b, 0xac, 0xae, 0xf6, 0xff,
- 0x12, 0x17, 0x57, 0x79, 0xf6, 0xd8, 0xf3, 0x33, 0xe4, 0x96, 0xed, 0x13,
- 0x87, 0xda, 0x7d, 0xb1, 0xfb, 0x44, 0x12, 0x17, 0x52, 0xd4, 0x06, 0x62,
- 0x06, 0xd1, 0x5f, 0xf4, 0x05, 0x6b, 0x03, 0x19, 0x13, 0x0e, 0x60, 0x23,
- 0x9b, 0xf5, 0xe5, 0xba, 0x8f, 0xc3, 0x67, 0x67, 0xfa, 0xac, 0x64, 0xa1,
- 0xf7, 0x37, 0xa4, 0x4c, 0x4a, 0x9f, 0x33, 0x36, 0x57, 0xcb, 0x7e, 0x1d,
- 0x2d, 0xfe, 0x91, 0xb9, 0x72, 0x17, 0xae, 0x0c, 0xe5, 0xa1, 0xc3, 0xc0,
- 0x47, 0x32, 0x51, 0x91, 0xc4, 0x37, 0xbe, 0x8c, 0xb2, 0x07, 0xe2, 0x30,
- 0x97, 0xc7, 0xf9, 0x9b, 0x43, 0x01, 0x33, 0xb5, 0xd4, 0x29, 0x2c, 0x75,
- 0xe4, 0x4c, 0x53, 0x5b, 0x3c, 0xca, 0x47, 0xfa, 0xe7, 0xdc, 0x86, 0xfd,
- 0xd9, 0xe4, 0x13, 0x1e, 0xa2, 0x73, 0x27, 0xb8, 0x71, 0x07, 0xf5, 0x2a,
- 0x3c, 0xac, 0xa8, 0xa1, 0x94, 0x88, 0xd5, 0x4c, 0xde, 0x94, 0x9a, 0xb4,
- 0xe2, 0x71, 0xe0, 0xa1, 0x59, 0x25, 0x6a, 0xb3, 0xee, 0xd0, 0xb8, 0xb9,
- 0xde, 0xeb, 0xeb, 0x83, 0xb3, 0x40, 0xd1, 0x85, 0x22, 0xe9, 0x8d, 0x7a,
- 0xfc, 0x1c, 0x2b, 0x3a, 0x28, 0xc9, 0xae, 0x85, 0x99, 0x06, 0x5e, 0x45,
- 0xa9, 0xc0, 0x27, 0x59, 0x36, 0x42, 0x80, 0x7c, 0xae, 0xf7, 0x09, 0xec,
- 0x4f, 0x28, 0x6c, 0x30, 0x9f, 0xc5, 0x70, 0x84, 0xea, 0x2d, 0x04, 0x99,
- 0x0b, 0x6d, 0xa5, 0x1a, 0x0d, 0x45, 0x7b, 0xf3, 0x31, 0xd2, 0x24, 0x0e,
- 0xcd, 0x56, 0xd1, 0xd2, 0x23, 0x78, 0x8c, 0x13, 0x94, 0xef, 0x6d, 0x02,
- 0xc2, 0x9f, 0x69, 0xf0, 0x71, 0x79, 0x43, 0xac, 0x54, 0x1c, 0xf8, 0xd4,
- 0x7b, 0xaa, 0x2e, 0x70, 0x36, 0xfa, 0xa4, 0x12, 0x48, 0xc3, 0xe6, 0x27,
- 0x40, 0x22, 0xd5, 0x36, 0x4c, 0xae, 0x20, 0xd6, 0x38, 0xe7, 0x65, 0x22,
- 0x00, 0x86, 0xd1, 0xc5, 0x5d, 0x2e, 0x2a, 0x46, 0x69, 0xe1, 0xb5, 0x12,
- 0x8a, 0x5a, 0xae, 0x52, 0x91, 0x22, 0x69, 0xf3, 0xc0, 0x0f, 0x82, 0x82,
- 0xb2, 0x3d, 0x67, 0xf9, 0x7a, 0xed, 0xfc, 0x9e, 0xe3, 0xd7, 0xdf, 0x46,
- 0x9c, 0x5a, 0xcf, 0x7d, 0x1c, 0x32, 0xb4, 0x3f, 0x87, 0x30, 0x2c, 0xa0,
- 0xfd, 0x7d, 0xbd, 0xe2, 0xf3, 0x7e, 0x78, 0x1d, 0x2f, 0x59, 0x01, 0xda,
- 0xdd, 0x61, 0x73, 0xc9, 0xf7, 0x96, 0xa4, 0xc7, 0x07, 0xd5, 0x0a, 0xde,
- 0x97, 0xbd, 0xc0, 0x92, 0x32, 0xe3, 0x7a, 0xf5, 0xac, 0x01, 0xd5, 0x8d,
- 0xb4, 0x74, 0x7d, 0x96, 0xdb, 0x02, 0xe8, 0x5f, 0x12, 0x69, 0x14, 0xe5,
- 0xec, 0x66, 0x7b, 0x4a, 0xff, 0x3c, 0xd9, 0xd9, 0x06, 0xa6, 0x66, 0x05,
- 0x9b, 0x26, 0xd3, 0xe4, 0xde, 0xde, 0xb3, 0x67, 0x83, 0xa8, 0xc7, 0x56,
- 0x46, 0xeb, 0x80, 0x8f, 0x04, 0x9d, 0xac, 0x5e, 0x57, 0x65, 0xdd, 0xed,
- 0xe2, 0x72, 0xca, 0xff, 0xe3, 0xd7, 0xac, 0xa0, 0xe4, 0x85, 0x66, 0xdd,
- 0x60, 0x1d, 0xb2, 0x10, 0x26, 0x47, 0xc8, 0x8a, 0xbf, 0x3b, 0x76, 0x76,
- 0x24, 0x76, 0x1a, 0x2d, 0x93, 0x7c, 0x69, 0xde, 0xe1, 0x85, 0x96, 0x0a,
- 0x41, 0xf7, 0x81, 0x4b, 0x0d, 0xfe, 0x7c, 0x09, 0x87, 0x53, 0x3c, 0x84,
- 0x72, 0x35, 0x19, 0x6a, 0x62, 0xb0, 0x68, 0x95, 0x29, 0x9d, 0x5c, 0xfa,
- 0x73, 0x6e, 0xe6, 0xfa, 0x16, 0x47, 0xfe, 0x2a, 0xea, 0x29, 0x6d, 0xf1,
- 0x8f, 0x11, 0x9c, 0xbb, 0xc9, 0x94, 0xa7, 0x91, 0xbf, 0xd2, 0x3f, 0xfe,
- 0xed, 0xdf, 0xa8, 0xd9, 0x7f, 0xe3, 0x56, 0x5e, 0xfd, 0xa1, 0xac, 0xae,
- 0x83, 0x67, 0x7a, 0x4a, 0xf0, 0xc7, 0xde, 0xb5, 0x8d, 0x70, 0x35, 0x20,
- 0xce, 0x22, 0x7f, 0xed, 0xed, 0x89, 0x72, 0xe4, 0x41, 0x30, 0xbf, 0x14,
- 0x99, 0x85, 0x62, 0x24, 0x75, 0xd1, 0x22, 0x5f, 0xb1, 0xdb, 0x39, 0xe1,
- 0x8c, 0x74, 0xba, 0x48, 0x00, 0x28, 0xb8, 0x65, 0x22, 0xc6, 0xd1, 0xbb,
- 0xef, 0x8e, 0xcf, 0x4f, 0xdf, 0xbd, 0x3d, 0x7a, 0x77, 0x11, 0x7d, 0x77,
- 0x70, 0x7e, 0x7c, 0xf0, 0xd5, 0x89, 0x26, 0xbe, 0xf3, 0x14, 0x38, 0xc8,
- 0x47, 0x64, 0xef, 0x06, 0x20, 0x6c, 0x90, 0x88, 0xd4, 0x59, 0x46, 0xa4,
- 0x51, 0x20, 0xf9, 0x83, 0xa2, 0x99, 0x43, 0x13, 0xf9, 0x80, 0x8a, 0x48,
- 0x03, 0x16, 0x3e, 0x3f, 0x58, 0x71, 0x24, 0x56, 0x9e, 0xee, 0x83, 0x54,
- 0x6a, 0x8e, 0x3f, 0x62, 0x2a, 0x35, 0xfe, 0xe4, 0xcb, 0x02, 0xba, 0x3a,
- 0x1b, 0x5f, 0x4b, 0x36, 0xbe, 0x15, 0x1d, 0xb1, 0x57, 0x35, 0x33, 0x0c,
- 0x76, 0x37, 0x37, 0x86, 0x83, 0x93, 0x13, 0xdf, 0xd5, 0xc3, 0xf5, 0x68,
- 0x14, 0x89, 0x49, 0x92, 0xb7, 0xd0, 0x28, 0x3b, 0x06, 0xaf, 0x72, 0x0f,
- 0xcd, 0x9e, 0xdd, 0x87, 0x28, 0xec, 0xdc, 0x19, 0x6d, 0xc7, 0xa6, 0x40,
- 0x68, 0xb0, 0x97, 0x98, 0x0e, 0x50, 0x5a, 0xde, 0x0c, 0xa2, 0xfe, 0x1f,
- 0xfa, 0x5a, 0x52, 0x1c, 0xb8, 0xc1, 0x52, 0xed, 0x66, 0xcb, 0x0f, 0xea,
- 0xdd, 0xa9, 0x1f, 0x93, 0x3a, 0x3e, 0xdd, 0x00, 0xdc, 0x8b, 0xde, 0x6d,
- 0x5d, 0x9a, 0x3c, 0x83, 0x78, 0x51, 0xff, 0xb8, 0x96, 0x84, 0x70, 0xc8,
- 0x00, 0x4a, 0xa3, 0xec, 0xd8, 0xea, 0x7c, 0x17, 0x5a, 0x5b, 0x3c, 0x0d,
- 0xe0, 0xa1, 0x31, 0xd7, 0x8c, 0x4d, 0x1d, 0xae, 0x4c, 0x97, 0x59, 0x03,
- 0x69, 0xa9, 0xd9, 0xa6, 0xa7, 0xee, 0xc4, 0x55, 0xa9, 0x1c, 0x14, 0x54,
- 0xf5, 0x71, 0xdb, 0xaa, 0xde, 0xc0, 0xc7, 0xc8, 0xf9, 0x00, 0x45, 0x3a,
- 0x53, 0xb8, 0xc1, 0x4e, 0xaa, 0x18, 0xc1, 0x35, 0x75, 0x7e, 0x08, 0x74,
- 0xf6, 0x8c, 0xeb, 0x33, 0xfa, 0xaa, 0x1a, 0x88, 0x1d, 0x26, 0x2e, 0x52,
- 0x70, 0x42, 0x5e, 0xa6, 0x42, 0x08, 0xe2, 0x71, 0x21, 0xa3, 0xc7, 0x57,
- 0xb9, 0xc9, 0xdf, 0xb1, 0x73, 0x9a, 0xbb, 0xda, 0x63, 0x81, 0x4c, 0xef,
- 0x30, 0xc4, 0x9c, 0xc9, 0x12, 0xee, 0x75, 0x73, 0x10, 0x70, 0x78, 0x19,
- 0x6f, 0xb9, 0xd5, 0x92, 0x2e, 0x83, 0x2c, 0x6d, 0x9f, 0xbd, 0xc0, 0xbc,
- 0x44, 0x82, 0xf4, 0x0d, 0xd4, 0x0b, 0x40, 0x6a, 0x96, 0xd5, 0x8d, 0x40,
- 0x47, 0x0c, 0x8b, 0x1f, 0x44, 0x93, 0x1a, 0xb3, 0x8a, 0x26, 0xcd, 0x76,
- 0x4d, 0xa7, 0x67, 0xce, 0x09, 0x64, 0xc6, 0x89, 0xe2, 0x68, 0x92, 0x5e,
- 0x09, 0x3a, 0x00, 0xa7, 0xa2, 0x33, 0x95, 0x00, 0xec, 0x8d, 0x14, 0x7b,
- 0xde, 0x2a, 0x40, 0xb9, 0x41, 0x76, 0xbf, 0xce, 0xe7, 0x21, 0xde, 0x98,
- 0xcd, 0xa4, 0xd4, 0xaa, 0x6a, 0x66, 0xfa, 0x84, 0xeb, 0x63, 0xc5, 0xeb,
- 0x68, 0xd1, 0x68, 0x0a, 0x54, 0xae, 0xb1, 0x79, 0x6c, 0x53, 0x07, 0x6a,
- 0x62, 0x86, 0x4c, 0x20, 0xcb, 0xaa, 0xc6, 0x3a, 0x58, 0xdc, 0x32, 0x73,
- 0x0b, 0xd8, 0xd1, 0xb8, 0xe2, 0xe3, 0xa6, 0x43, 0x1a, 0xe7, 0x56, 0xa6,
- 0x82, 0xd5, 0xca, 0x44, 0x2f, 0x1e, 0xe5, 0x7a, 0x69, 0x20, 0xdd, 0x2c,
- 0x45, 0xd1, 0x22, 0x9a, 0xe0, 0x41, 0xd3, 0x4a, 0x6d, 0x06, 0x8c, 0x27,
- 0x23, 0x12, 0x91, 0xc7, 0x44, 0x81, 0xd4, 0xbf, 0x86, 0xae, 0xaa, 0x99,
- 0xfa, 0x9d, 0xb7, 0x7c, 0xdc, 0x81, 0x48, 0x01, 0x4c, 0xad, 0x53, 0xad,
- 0x2b, 0x09, 0x0f, 0x3d, 0x17, 0xc5, 0x04, 0x34, 0x54, 0xcd, 0xf6, 0x18,
- 0x59, 0xbe, 0xcd, 0x7c, 0x1e, 0x40, 0x8d, 0x8b, 0x39, 0x22, 0x6e, 0xc9,
- 0x1e, 0xec, 0x1c, 0x92, 0x34, 0x54, 0x8d, 0xfc, 0x11, 0x58, 0xe2, 0x60,
- 0x22, 0x1a, 0x53, 0xce, 0xd2, 0x59, 0xc3, 0xa4, 0x19, 0x30, 0x34, 0xf3,
- 0x8e, 0x87, 0x17, 0x93, 0x56, 0xd6, 0x48, 0xe3, 0x85, 0xc8, 0x8e, 0x9e,
- 0xfa, 0x16, 0xf7, 0x12, 0x75, 0xb8, 0xb1, 0x71, 0xf8, 0x7e, 0x7c, 0x71,
- 0xfa, 0x36, 0x3a, 0x7d, 0x7f, 0x71, 0xf6, 0xfe, 0x42, 0x6f, 0xae, 0x89,
- 0xc4, 0x6c, 0x4b, 0xe4, 0x82, 0x08, 0x01, 0xb6, 0x99, 0x0b, 0xf5, 0xef,
- 0x23, 0xc4, 0x24, 0x07, 0xc0, 0x60, 0x80, 0x2d, 0xe4, 0x72, 0xb2, 0x80,
- 0xba, 0x25, 0xc8, 0xc5, 0x58, 0xf2, 0x3b, 0x5a, 0x72, 0xe4, 0xd3, 0xc2,
- 0x90, 0x67, 0x29, 0x5e, 0x50, 0x7b, 0xec, 0xac, 0xd5, 0xab, 0xd6, 0xdc,
- 0xd7, 0xd5, 0x18, 0x38, 0xe7, 0xeb, 0x58, 0x4e, 0x61, 0xf1, 0x4c, 0xb1,
- 0xed, 0x78, 0xd3, 0x4f, 0x18, 0xd2, 0xa9, 0xa5, 0x37, 0xcd, 0x00, 0x6d,
- 0x51, 0xb5, 0x08, 0x35, 0xaa, 0x27, 0x16, 0x86, 0xf9, 0x8d, 0x55, 0x4e,
- 0x33, 0xbc, 0x76, 0x11, 0xf1, 0x1c, 0x45, 0x84, 0x48, 0x40, 0x09, 0xa0,
- 0xe0, 0x90, 0x3b, 0xd1, 0x18, 0x48, 0x0f, 0x64, 0x97, 0x45, 0xeb, 0x96,
- 0xbd, 0x8b, 0xfa, 0xdf, 0x27, 0x61, 0x83, 0xbf, 0xff, 0x0f, 0x4e, 0xdb,
- 0xfc, 0x60, 0x9f, 0xfc, 0x5d, 0xba, 0xfc, 0x29, 0xeb, 0x23, 0x80, 0xae,
- 0xee, 0x29, 0xff, 0xf6, 0xe8, 0xfc, 0xab, 0xa3, 0xf3, 0xd3, 0x31, 0xf8,
- 0x81, 0x99, 0xbb, 0xda, 0xb4, 0x7e, 0x93, 0x14, 0x93, 0xa4, 0xc8, 0xb5,
- 0xa2, 0x96, 0xfd, 0xf5, 0x6c, 0xfb, 0xeb, 0xf1, 0xf8, 0xe0, 0xec, 0xd8,
- 0xd5, 0xac, 0x71, 0x09, 0x64, 0xa2, 0x22, 0x65, 0x92, 0xe2, 0xc8, 0xf3,
- 0xb7, 0x57, 0x88, 0x2e, 0xa6, 0x37, 0x12, 0x58, 0xdc, 0xf2, 0x49, 0x9b,
- 0x5d, 0x9d, 0x9d, 0xd1, 0x9a, 0x57, 0xc8, 0x0d, 0x1b, 0x26, 0x54, 0x88,
- 0x3b, 0x2f, 0x00, 0xf1, 0xec, 0x0b, 0x18, 0xb8, 0x08, 0xbc, 0x9b, 0x62,
- 0x32, 0x24, 0x6a, 0xbf, 0xb1, 0x12, 0xce, 0x92, 0x07, 0x41, 0xac, 0x52,
- 0x02, 0xa4, 0xbd, 0xad, 0x81, 0x64, 0xba, 0xb4, 0xda, 0xbe, 0xe1, 0xf3,
- 0xc1, 0xf5, 0x54, 0xe6, 0x23, 0xe1, 0xee, 0x72, 0xa0, 0x2c, 0xea, 0x95,
- 0x59, 0xec, 0x43, 0x38, 0x15, 0xd4, 0x9b, 0x2b, 0x82, 0x28, 0xf6, 0x2e,
- 0xfa, 0xe4, 0xa9, 0x03, 0xec, 0x0a, 0x2b, 0x8a, 0x5f, 0x92, 0x00, 0xbe,
- 0xbc, 0x9b, 0xe9, 0x25, 0x02, 0xbc, 0xea, 0x4c, 0xdc, 0x13, 0xc2, 0xc3,
- 0x9b, 0x0e, 0x2a, 0x2e, 0xd4, 0x88, 0x84, 0x0d, 0x0d, 0x47, 0x8f, 0x26,
- 0xf3, 0x38, 0xbb, 0xc1, 0x6d, 0x86, 0xfb, 0x89, 0x55, 0x4e, 0x83, 0xa1,
- 0xe2, 0x02, 0x9a, 0xf0, 0x47, 0x2a, 0x32, 0x04, 0x84, 0xc0, 0x39, 0x33,
- 0xb7, 0x7b, 0xb1, 0xe5, 0x3b, 0xb4, 0xad, 0xc0, 0xf3, 0x86, 0xe3, 0xe4,
- 0x17, 0x81, 0x4d, 0x47, 0x47, 0x27, 0x74, 0x31, 0xb9, 0x24, 0x13, 0xa8,
- 0xe8, 0xc9, 0x9c, 0x4d, 0xc1, 0x16, 0x11, 0x24, 0x79, 0x95, 0x29, 0x18,
- 0x99, 0x70, 0x0f, 0x83, 0x52, 0x87, 0xff, 0x08, 0xe4, 0x82, 0xf4, 0xd1,
- 0xd2, 0x15, 0x1c, 0x51, 0xce, 0x2d, 0x4c, 0x0c, 0x38, 0xa1, 0xbe, 0xfe,
- 0x48, 0x58, 0x09, 0x47, 0xc3, 0xed, 0x0e, 0x7d, 0x3c, 0x90, 0x2b, 0x0d,
- 0x26, 0x83, 0xf0, 0x62, 0xa9, 0xf3, 0x30, 0xd6, 0xb2, 0x5b, 0xd6, 0x6e,
- 0x93, 0xbc, 0xde, 0x65, 0x04, 0x10, 0x78, 0xb3, 0x99, 0xfa, 0x3b, 0x1c,
- 0x32, 0x90, 0x85, 0x2c, 0xd7, 0xc3, 0x84, 0x6d, 0xe0, 0x12, 0x0d, 0xc0,
- 0xc6, 0xdb, 0x79, 0x65, 0x4e, 0x43, 0x84, 0xb8, 0xea, 0x0d, 0x5c, 0xcd,
- 0xc0, 0x72, 0x8a, 0x1a, 0x68, 0x6d, 0x18, 0x9d, 0x2b, 0xe0, 0x15, 0xb0,
- 0x0d, 0x4a, 0xbe, 0x06, 0xb4, 0x18, 0x27, 0xdf, 0x0e, 0xdf, 0xf1, 0x75,
- 0x91, 0x0f, 0x27, 0x2b, 0xe8, 0x65, 0x41, 0xc9, 0x2e, 0xc9, 0xe1, 0x24,
- 0x75, 0x4d, 0x70, 0xd5, 0xf0, 0x3d, 0xfb, 0xa3, 0x90, 0x1d, 0x2f, 0x2e,
- 0x2a, 0xa4, 0x4b, 0xd6, 0x31, 0x77, 0x1c, 0xd2, 0x8a, 0xe4, 0x20, 0xf8,
- 0x5a, 0xc2, 0x6e, 0x82, 0xba, 0xc9, 0x2e, 0x5a, 0x30, 0xd3, 0x82, 0xaf,
- 0xf0, 0xac, 0xd4, 0x23, 0xae, 0x2b, 0x07, 0x7d, 0x7f, 0x01, 0x31, 0x21,
- 0x51, 0x40, 0x78, 0x0b, 0xa5, 0xb6, 0xc4, 0x8d, 0xdb, 0x8a, 0x8b, 0x4c,
- 0x09, 0x48, 0x44, 0x3c, 0x97, 0x8a, 0x1d, 0x6b, 0xaf, 0x12, 0x39, 0x4c,
- 0xd5, 0xc5, 0xc5, 0x9f, 0xcf, 0x8e, 0x5e, 0xd9, 0x9b, 0x0f, 0xed, 0x99,
- 0x60, 0xa7, 0x21, 0x66, 0x26, 0x51, 0xac, 0xd2, 0xa0, 0x4c, 0x36, 0x11,
- 0xd9, 0xb0, 0x32, 0x5f, 0xbe, 0x74, 0x33, 0x8c, 0x7e, 0x78, 0x7d, 0x3c,
- 0x3e, 0x3b, 0x39, 0x3d, 0x7c, 0xf5, 0xf2, 0x07, 0x63, 0xc9, 0x5f, 0xb0,
- 0x8b, 0x40, 0xe4, 0x34, 0xf7, 0x99, 0xc7, 0x76, 0xd0, 0xf7, 0xde, 0x1d,
- 0x7d, 0xff, 0x81, 0xb4, 0x83, 0x57, 0x8c, 0xf0, 0x3e, 0xb8, 0x8d, 0xe7,
- 0xfa, 0x12, 0xab, 0x58, 0x1d, 0xb2, 0xdd, 0xa8, 0x0e, 0xc6, 0xd7, 0x5c,
- 0x58, 0x57, 0xa9, 0xd4, 0xe7, 0x29, 0xdc, 0x5b, 0x18, 0x5d, 0x50, 0x94,
- 0x2a, 0xae, 0xa5, 0xd5, 0x76, 0xd4, 0x15, 0xf6, 0xd7, 0x7f, 0xbf, 0x92,
- 0x98, 0x4a, 0x0e, 0x21, 0x08, 0x3d, 0xf3, 0x88, 0x5b, 0xd5, 0x6f, 0x7c,
- 0x3c, 0xaf, 0x22, 0x29, 0x17, 0x1c, 0xc0, 0xe2, 0xa0, 0x28, 0xb5, 0x58,
- 0x35, 0x7c, 0xde, 0x8a, 0x57, 0xa9, 0x20, 0x4c, 0x1c, 0x42, 0x6b, 0xd1,
- 0xf4, 0xc6, 0xc7, 0x54, 0x84, 0x71, 0x63, 0x89, 0xad, 0x6c, 0x2e, 0x6a,
- 0xf3, 0x9c, 0x1d, 0x9d, 0x8f, 0x8f, 0xc7, 0x17, 0xac, 0x46, 0x69, 0x0d,
- 0x47, 0xb5, 0x41, 0x5b, 0x81, 0x4d, 0x60, 0x36, 0xd4, 0xa1, 0x47, 0xc3,
- 0xba, 0x21, 0xb5, 0x13, 0xed, 0xd8, 0x5c, 0x3d, 0x89, 0x93, 0x6f, 0x00,
- 0xc9, 0x0c, 0x65, 0x41, 0x54, 0x00, 0x74, 0xe3, 0x4b, 0x3b, 0xc0, 0xb9,
- 0x92, 0x46, 0xa3, 0x7c, 0x06, 0x4a, 0xdf, 0x60, 0x77, 0xe6, 0xe9, 0x24,
- 0x28, 0x9a, 0x5d, 0x77, 0x21, 0x73, 0x74, 0x82, 0x82, 0x75, 0x84, 0x47,
- 0xc8, 0xec, 0xe1, 0x3e, 0x33, 0x5a, 0xcb, 0xfa, 0xea, 0xb5, 0xa6, 0x59,
- 0x8d, 0x61, 0xfe, 0xaa, 0x53, 0x54, 0xa1, 0x9c, 0x84, 0xe5, 0xcb, 0xf1,
- 0x69, 0x10, 0x84, 0xaa, 0xf8, 0x4f, 0x80, 0xae, 0x55, 0x96, 0xcd, 0x4c,
- 0x39, 0x95, 0x4c, 0x34, 0x36, 0xb4, 0x90, 0xd4, 0x82, 0xcc, 0x7a, 0xc4,
- 0x09, 0xe9, 0xcc, 0x5a, 0x22, 0x88, 0x8a, 0x8e, 0x57, 0x9c, 0xc2, 0x06,
- 0x90, 0xad, 0x19, 0xcb, 0x5b, 0xb0, 0xc0, 0x85, 0x9d, 0xd9, 0x75, 0xca,
- 0x2b, 0x38, 0x59, 0x85, 0x45, 0xe1, 0xdc, 0xe8, 0xa5, 0x3e, 0x09, 0x16,
- 0x1e, 0x11, 0x92, 0x71, 0x01, 0x14, 0xcb, 0x4a, 0x41, 0xe3, 0x4d, 0xf1,
- 0xd1, 0x70, 0xc7, 0x51, 0x1d, 0xcf, 0xc7, 0xe8, 0xd2, 0x0a, 0x97, 0x3e,
- 0xb4, 0xa2, 0x41, 0x15, 0x49, 0x26, 0xdf, 0x22, 0xb1, 0xb8, 0x25, 0x31,
- 0x33, 0x94, 0xec, 0x70, 0xc8, 0xa6, 0xee, 0x32, 0xe6, 0xa4, 0x23, 0xf6,
- 0x2f, 0x16, 0x8a, 0x95, 0x44, 0xec, 0x8f, 0x2d, 0xcb, 0x28, 0x3d, 0x89,
- 0x9a, 0xcc, 0xec, 0x75, 0x33, 0x1c, 0x3d, 0x1f, 0xc6, 0x2d, 0xcb, 0x1d,
- 0x90, 0x95, 0x98, 0xd7, 0xef, 0xb5, 0x43, 0x97, 0x20, 0x6f, 0x9b, 0x35,
- 0x90, 0x7c, 0xab, 0x18, 0xe9, 0x3d, 0x66, 0xd7, 0x0d, 0xd2, 0x44, 0x4b,
- 0x4d, 0xbe, 0x75, 0xee, 0x69, 0x30, 0xbc, 0x5a, 0xfd, 0x5d, 0x9e, 0x5d,
- 0xcd, 0x35, 0x48, 0xf2, 0xe5, 0x12, 0xc5, 0x94, 0xa6, 0x8a, 0x26, 0x8f,
- 0xa0, 0x5d, 0xd7, 0xa0, 0x5d, 0x22, 0x7e, 0xb1, 0x68, 0x55, 0xdf, 0xbe,
- 0x3f, 0xb9, 0x38, 0x3e, 0x0b, 0xdd, 0x8f, 0xd1, 0xf7, 0xc7, 0x17, 0xdf,
- 0x90, 0xd4, 0x3e, 0x3e, 0x7e, 0xf7, 0xf5, 0x09, 0xfb, 0x78, 0xde, 0xbe,
- 0x3d, 0x78, 0xc7, 0xe8, 0x02, 0xef, 0x10, 0xd9, 0x78, 0x00, 0xc5, 0x81,
- 0xd9, 0x11, 0x2d, 0x31, 0xd3, 0x0e, 0xe7, 0x9d, 0x0f, 0xda, 0xae, 0x86,
- 0xc6, 0xf1, 0x93, 0xfa, 0xca, 0x59, 0x7d, 0x91, 0x36, 0x50, 0x2d, 0x1b,
- 0x9a, 0xc1, 0x3d, 0x1b, 0x76, 0x70, 0x6c, 0x59, 0xd9, 0xe2, 0x85, 0x6e,
- 0xc2, 0xc8, 0x23, 0xc7, 0x51, 0x24, 0x74, 0xb8, 0xd1, 0xe5, 0xee, 0xf6,
- 0xee, 0x0b, 0xec, 0xa8, 0x03, 0xa1, 0x85, 0x1e, 0x43, 0x32, 0x53, 0xa6,
- 0x7a, 0x8d, 0xdc, 0x97, 0xf5, 0x9c, 0x03, 0xea, 0x11, 0x43, 0x42, 0x1c,
- 0x41, 0xee, 0x2d, 0x82, 0xac, 0x71, 0xb2, 0xd2, 0x7c, 0x7e, 0x12, 0x5e,
- 0xa8, 0xa3, 0x5a, 0xf5, 0x31, 0x0b, 0x0f, 0xbc, 0xca, 0x13, 0x7f, 0x72,
- 0x87, 0xa7, 0xd6, 0x8c, 0x99, 0x7f, 0xa1, 0x86, 0xc9, 0xe5, 0x32, 0x64,
- 0xbe, 0x36, 0xa4, 0x2d, 0xd9, 0x72, 0x15, 0x87, 0xd4, 0x7c, 0xb6, 0x2f,
- 0x62, 0xa5, 0x83, 0x59, 0xb6, 0x42, 0x7d, 0xd4, 0x9c, 0xb5, 0xac, 0xa1,
- 0x28, 0x88, 0xc7, 0xd6, 0xb4, 0x26, 0x9d, 0x33, 0xb8, 0xa5, 0x3d, 0x56,
- 0xcb, 0xca, 0x96, 0xfb, 0xee, 0xd4, 0x4c, 0x7b, 0x96, 0xd6, 0xe6, 0x4a,
- 0xc0, 0x79, 0xcf, 0x29, 0x8a, 0xac, 0xe5, 0xf9, 0x28, 0xf9, 0x98, 0xb0,
- 0x93, 0x93, 0x7f, 0xfd, 0xcb, 0xf2, 0x2a, 0xcc, 0x78, 0x93, 0x12, 0xd3,
- 0xcb, 0xae, 0x9d, 0x55, 0x4c, 0x67, 0x11, 0x8b, 0xb4, 0xac, 0x5d, 0x6d,
- 0x04, 0x5a, 0xab, 0x6e, 0x77, 0x5d, 0x87, 0xfa, 0xfd, 0x5e, 0xfb, 0xfb,
- 0x3d, 0x31, 0x3b, 0x1e, 0x9f, 0xdd, 0x3e, 0x77, 0x58, 0xa8, 0x92, 0xc7,
- 0x1d, 0x8a, 0x6f, 0x26, 0x14, 0x30, 0x85, 0xf1, 0xa3, 0x72, 0xe7, 0xc4,
- 0xc2, 0x13, 0xc5, 0xf6, 0xcf, 0x11, 0x64, 0xab, 0x02, 0xf9, 0xa9, 0x78,
- 0x04, 0x66, 0x62, 0x09, 0xfb, 0x45, 0x90, 0x1d, 0xf8, 0x14, 0x5f, 0x57,
- 0xd4, 0x20, 0x7d, 0xff, 0xd4, 0xc5, 0xe2, 0x7b, 0x9e, 0x86, 0x72, 0x6d,
- 0x9a, 0x0d, 0x35, 0x4c, 0x97, 0xb7, 0x56, 0xef, 0x97, 0x7e, 0x7d, 0xee,
- 0x4a, 0xf5, 0x94, 0x35, 0x1f, 0x55, 0x0d, 0x77, 0xd8, 0x98, 0x3f, 0x06,
- 0x87, 0xb0, 0x48, 0xe6, 0x0c, 0x5e, 0xc9, 0x68, 0x8c, 0x2b, 0xa9, 0x07,
- 0x64, 0x07, 0x05, 0x4b, 0x61, 0x60, 0x9e, 0x23, 0x33, 0x16, 0xfc, 0x28,
- 0x60, 0x2e, 0x21, 0xe6, 0xbf, 0xee, 0xfa, 0x8f, 0x7b, 0x3b, 0x3b, 0xbb,
- 0xfb, 0xbb, 0x9f, 0xbf, 0xd8, 0xd9, 0xdf, 0xdd, 0xdd, 0xdd, 0xdb, 0xdf,
- 0xdd, 0xdf, 0xdf, 0xdb, 0xf9, 0x79, 0x9b, 0xed, 0x47, 0xb7, 0x69, 0x72,
- 0x67, 0x8e, 0x29, 0xc9, 0xc5, 0x03, 0x59, 0x4b, 0xdd, 0x76, 0xd5, 0xe0,
- 0x55, 0xcf, 0x35, 0xc9, 0xc7, 0xa1, 0x4a, 0x48, 0xc8, 0xbc, 0x80, 0xc9,
- 0x2d, 0x7d, 0xa6, 0x29, 0xce, 0x60, 0x00, 0x78, 0x8d, 0x51, 0xfd, 0x75,
- 0xc5, 0x33, 0x9d, 0xb0, 0x38, 0x00, 0x99, 0xa6, 0x74, 0x79, 0x7d, 0x57,
- 0xf3, 0x7c, 0x32, 0x41, 0xe6, 0x82, 0x4b, 0x6d, 0x1d, 0x45, 0x8c, 0xaa,
- 0x7a, 0x23, 0x24, 0xa1, 0x9e, 0x03, 0x04, 0x15, 0xca, 0x41, 0xf7, 0xab,
- 0x23, 0x82, 0x97, 0x06, 0x52, 0x4f, 0x73, 0xae, 0x30, 0x30, 0x63, 0xa6,
- 0x44, 0x8b, 0x54, 0xb8, 0x94, 0x97, 0xe8, 0x32, 0xf9, 0x7c, 0x67, 0x7f,
- 0x9f, 0x8b, 0x80, 0xfc, 0x7e, 0x77, 0xa0, 0xf1, 0xa0, 0x61, 0x90, 0xfb,
- 0xc0, 0x5d, 0x4f, 0xd2, 0x06, 0xab, 0x1f, 0xe1, 0x3c, 0xb3, 0xd5, 0x22,
- 0x29, 0x48, 0x11, 0xe1, 0x32, 0xb2, 0x08, 0x88, 0x84, 0xd1, 0x5b, 0xd0,
- 0xd6, 0x00, 0xc8, 0xd2, 0x08, 0xc6, 0xe7, 0x1b, 0x41, 0x50, 0x63, 0x5d,
- 0x12, 0xba, 0xc0, 0x05, 0xf9, 0x29, 0xba, 0xb6, 0x51, 0x08, 0x07, 0x76,
- 0x7c, 0x49, 0x65, 0x91, 0x24, 0x1e, 0xb9, 0x6f, 0x95, 0x33, 0xe0, 0x70,
- 0x65, 0x52, 0xdc, 0x94, 0x1f, 0x17, 0x19, 0x1e, 0x16, 0x93, 0x40, 0xb8,
- 0xd5, 0xfc, 0x9d, 0x1f, 0x83, 0xc9, 0xee, 0x3d, 0xdb, 0xfd, 0x59, 0xc2,
- 0x15, 0xf9, 0x40, 0xf8, 0x55, 0xd3, 0xc2, 0x70, 0xb3, 0x30, 0x43, 0xc3,
- 0x08, 0x69, 0x33, 0x19, 0x5d, 0x8d, 0x4c, 0xaa, 0x50, 0x6b, 0xe3, 0x20,
- 0x0c, 0x1a, 0x17, 0xc4, 0x72, 0x29, 0x59, 0x0c, 0x3d, 0xcd, 0x0c, 0x4a,
- 0x66, 0x10, 0x16, 0x63, 0x66, 0xad, 0xc2, 0x0f, 0xdd, 0x30, 0x47, 0x17,
- 0x07, 0x74, 0x79, 0x7c, 0xdb, 0x56, 0xf4, 0xdf, 0x26, 0xa4, 0x95, 0xf3,
- 0x66, 0x6f, 0xe2, 0x3c, 0xdc, 0x3a, 0x9c, 0x60, 0x5e, 0xbb, 0xa7, 0xd1,
- 0x26, 0xfb, 0x2c, 0x9e, 0x7d, 0xfe, 0xec, 0xe9, 0x96, 0x14, 0x65, 0x90,
- 0xd7, 0x12, 0xce, 0x0f, 0x81, 0x55, 0x52, 0xc1, 0x69, 0xd8, 0x9c, 0xec,
- 0x58, 0xd2, 0xfb, 0xf3, 0x63, 0x39, 0xd2, 0xd7, 0x82, 0x21, 0x20, 0x4a,
- 0x6f, 0x13, 0x57, 0x0e, 0xf7, 0x6d, 0x20, 0x64, 0x2c, 0x52, 0xc6, 0x3c,
- 0x44, 0xee, 0x35, 0x5f, 0x8c, 0x2e, 0xf7, 0x1f, 0x37, 0x2c, 0x1d, 0xd0,
- 0x1c, 0xa5, 0x0a, 0xb5, 0x02, 0x14, 0x06, 0x03, 0x90, 0x44, 0xc6, 0x68,
- 0x55, 0x3a, 0x73, 0x1a, 0x18, 0xeb, 0x41, 0xc2, 0x8f, 0x84, 0xfb, 0x37,
- 0x70, 0xb9, 0xb7, 0xc4, 0xe3, 0x0f, 0xa1, 0x90, 0xc9, 0x90, 0x1e, 0xb4,
- 0xd0, 0x51, 0x1e, 0x71, 0x2d, 0x1b, 0xcd, 0x4b, 0x9b, 0x01, 0xa6, 0x93,
- 0xc1, 0xb9, 0x28, 0x2b, 0x72, 0x4b, 0x28, 0xee, 0xec, 0x0a, 0x96, 0xc5,
- 0xb4, 0x66, 0xf2, 0xd1, 0x5c, 0x7a, 0xe4, 0xb4, 0x23, 0xe4, 0x78, 0x41,
- 0xd7, 0x51, 0x71, 0xaf, 0x12, 0x36, 0xd4, 0x04, 0x57, 0x59, 0xad, 0x11,
- 0x10, 0x20, 0xa8, 0x11, 0x61, 0x24, 0xbd, 0x03, 0x4d, 0x31, 0xa5, 0xb9,
- 0x36, 0x80, 0x1a, 0xdb, 0x1f, 0x2e, 0xec, 0xab, 0x20, 0x5e, 0x26, 0x4c,
- 0x2f, 0xb3, 0xdf, 0xed, 0xb9, 0x20, 0x94, 0x32, 0x6e, 0x4e, 0x6c, 0xcd,
- 0xd0, 0x04, 0x5b, 0x13, 0xe1, 0x53, 0x4e, 0xfb, 0xd9, 0xc4, 0x48, 0xb6,
- 0xb7, 0xb7, 0xd6, 0x8c, 0x46, 0xbf, 0xee, 0xea, 0xfd, 0x0c, 0x98, 0x24,
- 0x41, 0x46, 0x27, 0xed, 0x79, 0xbd, 0x71, 0x5e, 0xda, 0xb4, 0xe4, 0x9d,
- 0x9c, 0x69, 0x5c, 0xac, 0x98, 0x51, 0x4d, 0xbd, 0x92, 0xc1, 0x1b, 0xf3,
- 0xaa, 0x4f, 0x42, 0x43, 0x71, 0x0c, 0x23, 0x4a, 0xea, 0x4b, 0x8b, 0x7b,
- 0x73, 0x14, 0x1d, 0x30, 0x35, 0xd4, 0x3a, 0x0e, 0x86, 0x6c, 0xf6, 0x5c,
- 0x43, 0x40, 0x37, 0x21, 0xd6, 0x99, 0xf3, 0x06, 0xc1, 0x97, 0x26, 0xe6,
- 0x19, 0x24, 0x80, 0x33, 0xf6, 0x4e, 0x12, 0x81, 0x3f, 0x71, 0x9c, 0x33,
- 0x40, 0x36, 0x4e, 0xb3, 0x5a, 0xc9, 0x50, 0x6d, 0x04, 0x8e, 0x6e, 0x37,
- 0x09, 0x80, 0x26, 0x16, 0x06, 0xc6, 0x1b, 0x96, 0x11, 0x04, 0x02, 0x81,
- 0x06, 0xb5, 0x8b, 0x60, 0xed, 0x88, 0x58, 0xbc, 0xad, 0x13, 0x21, 0xaf,
- 0xda, 0x7a, 0x0c, 0x84, 0xe2, 0x25, 0x88, 0x41, 0xe2, 0x6d, 0xe9, 0x90,
- 0x30, 0xc3, 0x38, 0x38, 0x3e, 0xe1, 0xa8, 0xb8, 0x13, 0x52, 0xf1, 0xc6,
- 0x26, 0x2a, 0x21, 0x4a, 0x14, 0xf1, 0x7a, 0x59, 0xca, 0xe2, 0xfa, 0xc0,
- 0x95, 0x1e, 0xb1, 0x64, 0x29, 0xe8, 0x2d, 0xec, 0xdc, 0x13, 0xd5, 0x5f,
- 0x31, 0x02, 0x69, 0xb7, 0x48, 0x5e, 0x2a, 0xc5, 0x68, 0x0b, 0x28, 0x5e,
- 0x06, 0xa9, 0x87, 0x23, 0x15, 0x2a, 0xb5, 0xb0, 0x69, 0x54, 0x3e, 0x2a,
- 0x92, 0x79, 0x72, 0xab, 0xd6, 0x55, 0x01, 0x36, 0xfd, 0x5a, 0x7d, 0x98,
- 0x52, 0xfa, 0xb4, 0xf2, 0xae, 0xd8, 0x9a, 0x9b, 0x94, 0xfb, 0xdc, 0x16,
- 0x4c, 0x18, 0x0f, 0xf5, 0xc1, 0xdd, 0x7b, 0x34, 0x7e, 0x73, 0x19, 0xf3,
- 0x7b, 0x43, 0xd6, 0x71, 0x35, 0xb4, 0xf5, 0x7d, 0xa9, 0x68, 0x0e, 0xcd,
- 0x58, 0x71, 0xb1, 0x15, 0x5a, 0xf1, 0x3c, 0x31, 0xbe, 0x0f, 0x0c, 0x2f,
- 0x59, 0x3c, 0x06, 0x7c, 0xf1, 0x0c, 0xd8, 0x50, 0x2b, 0xc5, 0xe0, 0x49,
- 0x21, 0xe3, 0xca, 0x18, 0x03, 0x49, 0x1c, 0x05, 0x6d, 0xe4, 0x73, 0xfa,
- 0x13, 0xe1, 0x54, 0x12, 0x60, 0x49, 0xcf, 0x32, 0xde, 0x6b, 0x10, 0xd1,
- 0x4a, 0x7f, 0x4a, 0x32, 0x84, 0xfe, 0x85, 0xa6, 0x8a, 0x15, 0x60, 0x85,
- 0x07, 0x72, 0x19, 0xb2, 0xd3, 0xb1, 0x9a, 0x8e, 0xdc, 0xe8, 0xd5, 0xe7,
- 0x2f, 0xe3, 0x7f, 0x6d, 0x2e, 0x69, 0x13, 0x43, 0xf2, 0xc2, 0x56, 0x57,
- 0x76, 0x61, 0x22, 0xb5, 0x0e, 0xbf, 0x5a, 0xb1, 0x33, 0xcc, 0x55, 0xf2,
- 0xe1, 0x51, 0x2c, 0xf8, 0x2a, 0x4a, 0xa4, 0xac, 0xa8, 0x6b, 0x9c, 0x35,
- 0xba, 0x15, 0xed, 0xae, 0xb4, 0x7e, 0x92, 0xdf, 0x71, 0x4d, 0xd4, 0xcb,
- 0xcb, 0x74, 0xca, 0x85, 0x6e, 0x3c, 0x7c, 0x30, 0xb3, 0x78, 0x79, 0x70,
- 0x61, 0x65, 0x98, 0x68, 0x6e, 0xd1, 0x72, 0x35, 0x99, 0xd3, 0x5d, 0x6d,
- 0xd1, 0xec, 0x74, 0xa8, 0xb0, 0x4a, 0xa4, 0x6c, 0xa1, 0x39, 0xf1, 0xe5,
- 0x43, 0xdf, 0x6c, 0x44, 0x50, 0x6b, 0xa1, 0x78, 0x96, 0xc0, 0x17, 0x28,
- 0x0e, 0xcb, 0x61, 0xc6, 0x8b, 0x3c, 0xb3, 0x64, 0x98, 0x55, 0x29, 0x60,
- 0x92, 0x56, 0x55, 0x7e, 0x43, 0x3c, 0x13, 0xe9, 0x5c, 0xd1, 0xdb, 0x55,
- 0x33, 0xc7, 0x1b, 0xe1, 0x64, 0x66, 0xc3, 0xe5, 0xf5, 0xd2, 0x76, 0xda,
- 0xe4, 0x21, 0x11, 0x96, 0x34, 0xfd, 0x02, 0x27, 0xef, 0xec, 0x9b, 0xb3,
- 0x51, 0x74, 0xc4, 0x2d, 0xc9, 0x98, 0x54, 0xce, 0x85, 0x89, 0x86, 0xbe,
- 0xa3, 0xc9, 0x5e, 0xf1, 0xfd, 0x75, 0x5a, 0xf0, 0x5f, 0x68, 0x4d, 0xbf,
- 0x14, 0xab, 0x2c, 0xbe, 0xad, 0xf7, 0x4a, 0x0d, 0x59, 0x90, 0xf5, 0x19,
- 0x7e, 0xa7, 0xa3, 0x42, 0xd2, 0x97, 0xdb, 0x26, 0xdf, 0x43, 0x5e, 0xd4,
- 0xa0, 0x77, 0xe4, 0xcd, 0x88, 0x84, 0x32, 0x88, 0x56, 0xcb, 0x7b, 0xec,
- 0x5f, 0xc0, 0x1b, 0x45, 0xfc, 0x94, 0x06, 0x02, 0xd2, 0x52, 0xf2, 0x73,
- 0xe1, 0x7b, 0x72, 0xae, 0x0a, 0x01, 0x9d, 0x29, 0x12, 0x0d, 0x76, 0xcc,
- 0xd5, 0x4b, 0x2a, 0x06, 0x8d, 0x32, 0x69, 0x1c, 0xd7, 0x40, 0x7d, 0xb3,
- 0x2f, 0x58, 0xeb, 0xe6, 0xb1, 0x90, 0xd0, 0x42, 0x5b, 0x30, 0xda, 0xf8,
- 0xbf, 0x01, 0x87, 0xa5, 0x00, 0x5a, 0xec, 0x78, 0x02, 0x00,
+ 0x84, 0x99, 0x80, 0x29, 0x57, 0x46, 0xc5, 0xf0, 0xa5, 0xa3, 0x5a, 0x02,
+ 0x65, 0xf4, 0xd2, 0x85, 0x58, 0x06, 0xb4, 0x94, 0x8a, 0xe3, 0x17, 0xc4,
+ 0xcc, 0xb9, 0x9c, 0x2f, 0x38, 0x37, 0x7e, 0x5c, 0x4b, 0x3d, 0x4b, 0x9c,
+ 0xa5, 0x61, 0xf2, 0x7e, 0x2e, 0xa5, 0x04, 0x32, 0x56, 0x96, 0xf3, 0x72,
+ 0xbc, 0x9c, 0xb1, 0xa9, 0x62, 0xcc, 0x06, 0x32, 0x5c, 0x3c, 0x22, 0x1e,
+ 0x34, 0xdc, 0xf3, 0xe1, 0x80, 0xc5, 0x38, 0x22, 0x06, 0x73, 0xed, 0x17,
+ 0xa1, 0x28, 0x1c, 0x80, 0xa5, 0x06, 0x71, 0x48, 0x05, 0x0e, 0x35, 0x45,
+ 0x19, 0x10, 0x7b, 0x06, 0x0f, 0xdf, 0x1c, 0x9e, 0x9d, 0x1d, 0x9e, 0xf1,
+ 0x7a, 0xef, 0xcf, 0x1b, 0x65, 0xe3, 0x1c, 0x74, 0xaa, 0x77, 0x35, 0x5a,
+ 0xd8, 0x6f, 0x0c, 0xa1, 0x2f, 0xac, 0x30, 0x9d, 0x4c, 0x18, 0x64, 0x1c,
+ 0x1a, 0x84, 0xe0, 0x04, 0x49, 0xb1, 0xee, 0xd0, 0xbc, 0x88, 0xb0, 0x6f,
+ 0xe7, 0x36, 0x08, 0x8b, 0x36, 0x06, 0xb2, 0x85, 0x6f, 0xa1, 0xd4, 0xaa,
+ 0xa4, 0x4b, 0x4b, 0xc9, 0xbf, 0xce, 0x1a, 0x62, 0xea, 0x50, 0x23, 0x75,
+ 0x33, 0x75, 0xa6, 0x4f, 0x9d, 0x7d, 0x02, 0x53, 0xbe, 0xe4, 0x33, 0xca,
+ 0xba, 0x13, 0x16, 0xa3, 0xaa, 0x97, 0x8b, 0x7c, 0xe2, 0xac, 0xbd, 0xf4,
+ 0x39, 0x89, 0x7f, 0x89, 0x9c, 0xf2, 0xca, 0x62, 0x5d, 0xe0, 0xd5, 0x34,
+ 0x63, 0x44, 0x68, 0x6d, 0x6b, 0xe1, 0xf7, 0x26, 0xc8, 0x96, 0x93, 0xa0,
+ 0x31, 0xab, 0x99, 0xd4, 0xcc, 0x2d, 0x57, 0xda, 0xcf, 0x60, 0x65, 0x64,
+ 0x6e, 0x61, 0xe1, 0x37, 0x21, 0x67, 0x60, 0x5b, 0xd6, 0xcc, 0xc7, 0xbb,
+ 0x73, 0x08, 0xdb, 0x9e, 0xc0, 0xa0, 0x20, 0xa5, 0xb4, 0xdc, 0x4b, 0x7e,
+ 0xac, 0xf2, 0xf1, 0xcf, 0xfe, 0xf2, 0x40, 0xfa, 0x8f, 0x0f, 0x49, 0x17,
+ 0x0b, 0x3d, 0x4d, 0x5e, 0x17, 0x4a, 0x95, 0x61, 0x49, 0xe5, 0x7e, 0x7f,
+ 0x7e, 0x78, 0x96, 0xec, 0x7f, 0xcd, 0x28, 0xc0, 0xff, 0xcd, 0x0d, 0xe6,
+ 0xe7, 0xf4, 0x76, 0x58, 0x53, 0x1c, 0x3e, 0xc5, 0x36, 0xc9, 0xcc, 0x14,
+ 0x2e, 0xb8, 0x5c, 0x8d, 0x9d, 0xcd, 0xad, 0xfa, 0xb6, 0xbf, 0xee, 0x9b,
+ 0x7b, 0xb8, 0x96, 0x3c, 0xba, 0x8b, 0x9f, 0xb2, 0x87, 0x7c, 0xc8, 0xc2,
+ 0x5d, 0x14, 0x54, 0x24, 0x71, 0x49, 0xd8, 0xde, 0xe8, 0xe8, 0xab, 0x48,
+ 0xed, 0x94, 0x5d, 0xda, 0x4f, 0x7a, 0x6f, 0x8b, 0xbf, 0x91, 0x30, 0x90,
+ 0x6e, 0x3d, 0x19, 0x6e, 0x27, 0x1b, 0xdf, 0xe7, 0xf3, 0x17, 0xcf, 0xfe,
+ 0x94, 0x1c, 0x6d, 0xf6, 0x1a, 0xc1, 0xfc, 0x52, 0x81, 0x75, 0x94, 0xce,
+ 0x6f, 0xdc, 0x96, 0x9d, 0xe0, 0x64, 0x4b, 0x50, 0x9d, 0x55, 0x65, 0x91,
+ 0xaa, 0xd1, 0x2b, 0x5b, 0x44, 0xe2, 0xa7, 0xe6, 0x05, 0x24, 0xdf, 0x39,
+ 0xc8, 0x6b, 0xd6, 0xf2, 0xe9, 0xa9, 0x09, 0x2f, 0xdd, 0x8b, 0x67, 0x51,
+ 0x13, 0x4f, 0x5d, 0x1b, 0xef, 0xa5, 0x8d, 0x5f, 0xd8, 0xc4, 0xee, 0x70,
+ 0x7b, 0x37, 0xd9, 0x38, 0x39, 0xdf, 0xda, 0x75, 0x2d, 0xc4, 0x4d, 0xec,
+ 0xa2, 0x09, 0x7e, 0xa8, 0xf9, 0xf2, 0x53, 0xee, 0xff, 0xc7, 0x6c, 0xfe,
+ 0x73, 0xb2, 0xf1, 0xc3, 0xce, 0x0e, 0x35, 0xf0, 0xa7, 0x64, 0xff, 0xe8,
+ 0x87, 0xe4, 0xe9, 0x90, 0x1a, 0x7b, 0x97, 0xde, 0x6a, 0x73, 0x0a, 0x66,
+ 0x7b, 0x8e, 0x46, 0xe8, 0xfb, 0xa8, 0x8d, 0x67, 0xad, 0x36, 0x8e, 0x49,
+ 0x2f, 0xfc, 0x48, 0xd7, 0xca, 0xf6, 0xf0, 0xc9, 0x6e, 0x92, 0x3f, 0xfb,
+ 0xfc, 0xb9, 0x35, 0xa4, 0x6d, 0xe0, 0xfb, 0xa6, 0xb5, 0x52, 0xe0, 0x52,
+ 0x48, 0xd4, 0x39, 0xfc, 0x48, 0x0c, 0x0d, 0x2c, 0x02, 0x95, 0x32, 0xae,
+ 0xd3, 0xd2, 0x6a, 0x18, 0x73, 0xb9, 0x03, 0xda, 0x29, 0x85, 0x91, 0xce,
+ 0x60, 0xb6, 0xa4, 0x8b, 0x73, 0x2f, 0x1a, 0x0e, 0xeb, 0xa6, 0xf6, 0xe8,
+ 0x9f, 0x92, 0xb7, 0xe7, 0x47, 0x87, 0x34, 0xa3, 0x6d, 0x1a, 0x9a, 0x5f,
+ 0x43, 0x19, 0x10, 0xbe, 0xc2, 0xe2, 0xbe, 0x00, 0x2a, 0xa9, 0xb6, 0x11,
+ 0x56, 0xdb, 0x05, 0xd1, 0xd1, 0xc5, 0x5d, 0xa1, 0x5f, 0x0e, 0x49, 0x19,
+ 0xec, 0x5f, 0xb1, 0x0a, 0x21, 0x57, 0x2d, 0xba, 0xfe, 0xb6, 0x98, 0xd3,
+ 0x31, 0x29, 0x8b, 0x92, 0x23, 0xa7, 0x7a, 0x0d, 0x69, 0xe1, 0xdb, 0xd7,
+ 0x87, 0x92, 0x52, 0xff, 0x36, 0x9d, 0x13, 0x8f, 0x64, 0x74, 0xac, 0xea,
+ 0x86, 0xfd, 0xff, 0xe2, 0xce, 0x91, 0xf7, 0x8f, 0xef, 0xe7, 0x1f, 0x69,
+ 0x1f, 0x3f, 0x1b, 0xee, 0x70, 0xc8, 0x36, 0x6b, 0xbd, 0x6f, 0xde, 0xd2,
+ 0xdf, 0x3b, 0x4f, 0x7b, 0x09, 0x7f, 0xd5, 0xd4, 0xe0, 0xed, 0xbc, 0xae,
+ 0x1d, 0x9c, 0x9c, 0x7c, 0x7b, 0x24, 0x01, 0x20, 0x07, 0x6a, 0x56, 0x65,
+ 0xe1, 0xca, 0x69, 0xc5, 0xc2, 0x5d, 0x49, 0x7b, 0xf3, 0xd9, 0x4a, 0x70,
+ 0xc6, 0xdd, 0x64, 0xd9, 0x82, 0xa3, 0x11, 0xea, 0x16, 0x47, 0xa8, 0x95,
+ 0x47, 0xbb, 0xd8, 0x26, 0x16, 0x7f, 0x1a, 0xc8, 0x5e, 0x15, 0x43, 0x25,
+ 0x9b, 0x09, 0x77, 0x74, 0xef, 0x60, 0x3b, 0x52, 0x5f, 0x0e, 0x51, 0xeb,
+ 0xa6, 0x68, 0x53, 0x66, 0x82, 0x96, 0xa2, 0x23, 0xf4, 0xa2, 0xea, 0xbe,
+ 0xbd, 0x73, 0x92, 0xee, 0x65, 0xd0, 0x7b, 0x6a, 0xb5, 0xed, 0x05, 0xd8,
+ 0xd2, 0x90, 0x68, 0x17, 0x5a, 0xea, 0x07, 0xa6, 0x63, 0x8b, 0xa8, 0x37,
+ 0xde, 0x5c, 0xc1, 0x96, 0x8d, 0xf0, 0xbc, 0x77, 0xfb, 0x6f, 0x0f, 0x5f,
+ 0x7d, 0xb7, 0x7f, 0xfc, 0xfe, 0x90, 0x5e, 0xc9, 0x01, 0xe3, 0xee, 0x42,
+ 0xf8, 0x30, 0xc6, 0x59, 0x8e, 0x4a, 0xbf, 0x15, 0x89, 0x07, 0xbd, 0x35,
+ 0x09, 0x2f, 0x4f, 0xd6, 0xf9, 0xad, 0x1d, 0x79, 0x8d, 0xe8, 0x82, 0xff,
+ 0xda, 0x95, 0xbf, 0x76, 0xff, 0xb4, 0xbe, 0xd9, 0x98, 0x74, 0xa4, 0x25,
+ 0x33, 0xbd, 0xdc, 0x49, 0xbd, 0x27, 0x0e, 0x0f, 0x92, 0xdc, 0x0d, 0x59,
+ 0x95, 0x75, 0xf3, 0xd1, 0x84, 0x45, 0x2f, 0x37, 0x46, 0xf7, 0xa1, 0x0e,
+ 0xbe, 0xce, 0x2f, 0xbd, 0x82, 0x80, 0xb1, 0x0e, 0xa0, 0xfb, 0xcc, 0x56,
+ 0x4b, 0xda, 0xb0, 0x26, 0xb2, 0x8f, 0x0b, 0x8e, 0x88, 0xdc, 0x58, 0x97,
+ 0x5f, 0x5e, 0xbd, 0xde, 0xbf, 0x38, 0xe4, 0x17, 0xac, 0x7b, 0xab, 0x6d,
+ 0x60, 0x69, 0x14, 0x3c, 0x9e, 0x0d, 0x75, 0x4d, 0xbf, 0xe2, 0x09, 0xad,
+ 0x6f, 0x8a, 0x2f, 0x03, 0x4e, 0xf5, 0xd6, 0xb8, 0x98, 0xa7, 0x49, 0xe0,
+ 0xb6, 0x4f, 0x53, 0xaf, 0x2c, 0x62, 0x65, 0x63, 0x5d, 0xbe, 0x5b, 0x77,
+ 0x16, 0x5c, 0xba, 0xcb, 0x7b, 0xb7, 0x99, 0xb9, 0x2b, 0x27, 0x48, 0xb2,
+ 0x88, 0x32, 0x6b, 0x25, 0x24, 0xcd, 0xef, 0x8f, 0x3a, 0x2b, 0xc4, 0xe2,
+ 0x14, 0xa0, 0x6d, 0xbb, 0x8d, 0xd7, 0x3c, 0x78, 0xb6, 0x31, 0x15, 0xc5,
+ 0xce, 0xee, 0x93, 0x3f, 0x61, 0x3d, 0x5f, 0xad, 0x6f, 0xd1, 0xdd, 0xb0,
+ 0xfe, 0x27, 0xee, 0x3a, 0xf7, 0x35, 0xb5, 0xdd, 0x7e, 0xb0, 0x3e, 0xa5,
+ 0x14, 0x25, 0xe1, 0x32, 0xbc, 0xeb, 0x01, 0xbc, 0x0f, 0x16, 0xf4, 0x4e,
+ 0xb2, 0xc4, 0x0c, 0x0c, 0xc7, 0x82, 0x07, 0xb0, 0x5f, 0xa3, 0xec, 0x2a,
+ 0x9f, 0xa3, 0xd4, 0x9f, 0x18, 0x75, 0xd1, 0x5d, 0x78, 0x7f, 0xf4, 0xe5,
+ 0x5d, 0x99, 0xa3, 0x02, 0x08, 0x71, 0x9f, 0xb3, 0x7b, 0x4b, 0x24, 0xab,
+ 0x2a, 0x53, 0x71, 0x65, 0xcf, 0x22, 0xc9, 0x78, 0xa4, 0xb6, 0x1d, 0x53,
+ 0x46, 0x20, 0x13, 0x10, 0x6b, 0xb9, 0x87, 0xa0, 0x84, 0x68, 0x83, 0x30,
+ 0xc8, 0xc2, 0xee, 0xec, 0x74, 0xc4, 0x49, 0xe6, 0x2e, 0x35, 0x26, 0xd0,
+ 0xca, 0xdd, 0xd2, 0xdb, 0xf1, 0xcb, 0x03, 0x64, 0x26, 0xbe, 0x28, 0x65,
+ 0x2d, 0x2b, 0x67, 0x43, 0x82, 0xb7, 0x51, 0x9f, 0x6d, 0xee, 0x53, 0x2b,
+ 0x1f, 0x0d, 0xd3, 0x10, 0x95, 0x5e, 0xf4, 0x63, 0x62, 0x35, 0xf3, 0xac,
+ 0x7c, 0x30, 0xc0, 0xa2, 0xc3, 0x19, 0x85, 0x29, 0x06, 0x91, 0x0e, 0xfc,
+ 0xce, 0x70, 0x38, 0xf4, 0x75, 0xc9, 0x79, 0x5b, 0xd4, 0x07, 0x85, 0x5a,
+ 0x46, 0x01, 0x7e, 0x2c, 0xd6, 0x78, 0x03, 0xc2, 0x3c, 0x04, 0xea, 0x4d,
+ 0x0d, 0xbc, 0x51, 0x3b, 0x81, 0x3b, 0x1a, 0x81, 0x8d, 0xa3, 0xa7, 0xdd,
+ 0xf6, 0x0c, 0xb4, 0xe1, 0xa6, 0x6b, 0x13, 0x1e, 0x18, 0x9b, 0xd8, 0x1e,
+ 0xb5, 0xc0, 0xa6, 0xe3, 0x53, 0x85, 0x5b, 0x0b, 0xa6, 0x60, 0x0e, 0x20,
+ 0x07, 0x9d, 0x48, 0xc6, 0xb1, 0x2c, 0x9a, 0x0e, 0x45, 0x4b, 0xad, 0x31,
+ 0x93, 0x2b, 0xee, 0x00, 0x82, 0x20, 0xc5, 0x6a, 0x16, 0x25, 0x6b, 0x7a,
+ 0xbc, 0xc6, 0x76, 0x83, 0x2c, 0x9c, 0xd8, 0xac, 0xed, 0x28, 0x96, 0x30,
+ 0xeb, 0xcc, 0x90, 0xfd, 0x35, 0xcb, 0x51, 0xe1, 0x68, 0x2a, 0x4b, 0xe2,
+ 0x21, 0xb1, 0xad, 0x98, 0xc1, 0xed, 0xa5, 0x93, 0xf7, 0xe6, 0x2a, 0x8e,
+ 0x36, 0x1b, 0x08, 0xa0, 0x8b, 0x25, 0x22, 0x1a, 0xf7, 0x50, 0x50, 0x8f,
+ 0x87, 0xfc, 0xe5, 0x63, 0x6b, 0xd1, 0x39, 0xcb, 0x5b, 0x6b, 0xe3, 0x6f,
+ 0xe5, 0x26, 0xeb, 0xa2, 0x15, 0x15, 0xeb, 0xb2, 0x40, 0x67, 0x78, 0xbe,
+ 0x97, 0xa4, 0x77, 0x74, 0xf5, 0xcc, 0x33, 0x8e, 0xcf, 0x44, 0xa4, 0x03,
+ 0xac, 0x32, 0xc7, 0x81, 0x9d, 0xd1, 0xcd, 0x50, 0xa9, 0x56, 0x63, 0x9a,
+ 0x98, 0xef, 0xec, 0x59, 0x89, 0x6d, 0x81, 0xcb, 0x35, 0x83, 0x5e, 0x8e,
+ 0x7a, 0xe0, 0x0c, 0x6f, 0xaa, 0x92, 0xba, 0xa9, 0xe7, 0x3c, 0xf2, 0x4d,
+ 0x54, 0x4b, 0x16, 0x71, 0x1e, 0x71, 0x89, 0x6c, 0xe7, 0x90, 0xb8, 0x0a,
+ 0x5b, 0xad, 0x74, 0x3e, 0x09, 0x3a, 0x71, 0xfe, 0x69, 0x35, 0x3f, 0x71,
+ 0x78, 0xef, 0x7c, 0x00, 0xa0, 0x0b, 0x57, 0x4c, 0x57, 0xd4, 0xab, 0xab,
+ 0x2b, 0xab, 0xbc, 0xd3, 0x9a, 0x5a, 0x37, 0x91, 0x1d, 0xf3, 0xaa, 0x70,
+ 0x14, 0xf4, 0xfd, 0xaa, 0xd5, 0xbc, 0x30, 0x9b, 0x8f, 0x59, 0x5d, 0x1a,
+ 0xc4, 0x6c, 0x3e, 0x49, 0xd9, 0xb7, 0xda, 0x25, 0x5d, 0x21, 0x41, 0xa3,
+ 0xe9, 0x43, 0x3e, 0x39, 0x5b, 0x43, 0xe1, 0x84, 0xb9, 0x07, 0x64, 0xb0,
+ 0x4d, 0x07, 0x3a, 0x9f, 0x8f, 0x40, 0xf1, 0x91, 0xa8, 0x77, 0x2e, 0xd4,
+ 0x4a, 0x2a, 0x03, 0x8e, 0x52, 0xaf, 0x72, 0xad, 0x25, 0x0d, 0x6b, 0x2f,
+ 0x17, 0x54, 0x39, 0x9a, 0x2b, 0x1f, 0x2a, 0x6e, 0x33, 0x0f, 0x10, 0xe9,
+ 0x0d, 0x8e, 0x1e, 0x65, 0x57, 0x4f, 0xbf, 0x63, 0x26, 0x2d, 0x07, 0xaf,
+ 0xe3, 0x57, 0x98, 0x64, 0x6b, 0x55, 0x86, 0x49, 0xd0, 0xa4, 0x98, 0x4a,
+ 0x8a, 0x90, 0xc5, 0xcb, 0xd8, 0xd4, 0x6f, 0x6d, 0x2d, 0x0a, 0x8d, 0x08,
+ 0xc4, 0x4b, 0xa0, 0x9a, 0x48, 0xc1, 0x11, 0x43, 0xca, 0x77, 0x31, 0x7a,
+ 0xde, 0xff, 0x6b, 0xb3, 0x5c, 0x77, 0x9b, 0xb4, 0x6e, 0x35, 0x09, 0x40,
+ 0x04, 0xa0, 0x01, 0x16, 0xe8, 0x9c, 0x0b, 0xff, 0x42, 0xf7, 0x09, 0x94,
+ 0x0c, 0x0b, 0x5a, 0x8b, 0x91, 0x46, 0x67, 0xce, 0x85, 0x68, 0x20, 0x0f,
+ 0x85, 0x38, 0x2f, 0xe2, 0x0a, 0x06, 0xa3, 0x35, 0xc9, 0x37, 0x1a, 0x8c,
+ 0xc3, 0xca, 0xda, 0xab, 0x01, 0x0b, 0x46, 0x8d, 0x83, 0xf9, 0xd8, 0x39,
+ 0x3d, 0x3d, 0x3b, 0xf9, 0xfa, 0xec, 0xf0, 0xfc, 0x3c, 0x79, 0x7b, 0x78,
+ 0x21, 0xba, 0xfe, 0x85, 0x84, 0xde, 0x5d, 0xb1, 0xba, 0x9e, 0xc0, 0xd7,
+ 0x60, 0x08, 0x4e, 0x16, 0x72, 0x62, 0x86, 0x04, 0xe4, 0x3c, 0x15, 0xec,
+ 0x47, 0x83, 0xfc, 0x06, 0x25, 0x7e, 0xaa, 0x11, 0x7b, 0xd7, 0xb0, 0xf6,
+ 0x23, 0xa6, 0x09, 0x0e, 0x49, 0x67, 0x3c, 0xf7, 0x66, 0x54, 0x08, 0xc6,
+ 0x12, 0xe5, 0xe4, 0x72, 0x0e, 0xbd, 0x09, 0x9d, 0xaf, 0x6c, 0xfa, 0x89,
+ 0xe9, 0xfd, 0x9e, 0x56, 0xb3, 0xe6, 0xb2, 0xe9, 0xfc, 0xeb, 0x99, 0x11,
+ 0xc5, 0xef, 0x93, 0x1f, 0xa8, 0xcd, 0x09, 0x29, 0xaf, 0x6c, 0x41, 0xa6,
+ 0x5b, 0xf6, 0x1c, 0xd5, 0x4e, 0x7d, 0x51, 0x21, 0x94, 0x28, 0x0d, 0xfe,
+ 0xe3, 0x42, 0xc4, 0xc3, 0xee, 0x9a, 0x3c, 0x8d, 0xa2, 0x3a, 0x02, 0x96,
+ 0xa9, 0x31, 0x75, 0xae, 0x67, 0x2d, 0x63, 0x9c, 0x24, 0xc7, 0xd9, 0x65,
+ 0x0d, 0x29, 0x84, 0xbb, 0xa3, 0xe6, 0xb6, 0x19, 0xfd, 0x79, 0x87, 0xab,
+ 0x9e, 0xd1, 0xaf, 0x4f, 0x3e, 0x7f, 0xbe, 0xfd, 0xb9, 0xfc, 0x6a, 0xff,
+ 0xbe, 0x78, 0xba, 0xad, 0x28, 0xea, 0xf4, 0xd7, 0xd3, 0xbd, 0xa7, 0x3b,
+ 0x7b, 0x0c, 0xee, 0xb8, 0xbd, 0xb7, 0x4d, 0xff, 0xff, 0x54, 0x3f, 0x61,
+ 0x04, 0xcb, 0x17, 0xbb, 0x9f, 0x7f, 0x86, 0x68, 0x18, 0xa6, 0x8f, 0x29,
+ 0x75, 0x32, 0xa8, 0x8b, 0x01, 0x30, 0xa6, 0x20, 0xf9, 0xfc, 0xbe, 0x69,
+ 0x89, 0x64, 0xf7, 0xfa, 0x98, 0x9d, 0xa9, 0x57, 0xa2, 0xd3, 0x4c, 0x33,
+ 0x3e, 0xf6, 0x6a, 0x55, 0x15, 0xdc, 0x1b, 0x8b, 0x10, 0x97, 0xb4, 0x6d,
+ 0x9d, 0x86, 0xbe, 0x5d, 0xe3, 0x6f, 0x80, 0xb6, 0x35, 0xde, 0x91, 0x40,
+ 0xf3, 0x00, 0x1f, 0xee, 0x97, 0x76, 0x6d, 0x89, 0xe4, 0x6b, 0x40, 0x7d,
+ 0xd3, 0xad, 0xd2, 0xf7, 0xc6, 0x56, 0x09, 0xda, 0x3d, 0xc5, 0x62, 0xe0,
+ 0x4c, 0x72, 0x12, 0x2e, 0x25, 0x5c, 0xf9, 0x97, 0xf6, 0x27, 0x96, 0x2b,
+ 0x7e, 0x4b, 0xa9, 0x21, 0x89, 0x7b, 0x73, 0xb9, 0x08, 0x1d, 0x7d, 0x35,
+ 0x88, 0x67, 0xcd, 0x6f, 0xbf, 0x5f, 0x29, 0x66, 0x65, 0xfa, 0x90, 0xcb,
+ 0xe1, 0x92, 0xc2, 0xba, 0x1d, 0x53, 0x8e, 0x9a, 0x53, 0x32, 0xfa, 0x05,
+ 0xcd, 0xf9, 0x19, 0x81, 0x82, 0xdd, 0xce, 0x0d, 0x82, 0xcd, 0xc9, 0x25,
+ 0xb0, 0xcd, 0x56, 0xc3, 0xa1, 0x8a, 0xda, 0x35, 0x27, 0xaf, 0x3a, 0x92,
+ 0x1d, 0xc8, 0x1b, 0x2a, 0x73, 0xba, 0xbc, 0x38, 0x3a, 0x85, 0xb7, 0x05,
+ 0xae, 0x78, 0x79, 0xde, 0x28, 0x3b, 0xea, 0x8a, 0xa9, 0x31, 0xe8, 0x4f,
+ 0xfb, 0xc0, 0x79, 0x72, 0x87, 0xee, 0xc1, 0xa9, 0xf9, 0xd8, 0x7a, 0x57,
+ 0x58, 0x78, 0xc3, 0xc5, 0xaa, 0x77, 0x1d, 0x49, 0xff, 0x1c, 0xc2, 0xd7,
+ 0x5d, 0x73, 0xe1, 0xed, 0x83, 0xa2, 0xd2, 0x5a, 0x16, 0x83, 0xa1, 0x4a,
+ 0x19, 0xdb, 0x7f, 0xd3, 0x58, 0xd8, 0xe0, 0x77, 0x2e, 0x6c, 0x0b, 0x97,
+ 0x99, 0xd6, 0x08, 0x4d, 0x85, 0xf2, 0xa7, 0x61, 0x2e, 0xad, 0xe3, 0x76,
+ 0xa3, 0xb4, 0x6c, 0xa0, 0xe8, 0xaf, 0x49, 0x2d, 0x09, 0xba, 0x5e, 0xe9,
+ 0xba, 0x40, 0xba, 0xa3, 0xc8, 0x11, 0xff, 0xb2, 0xb6, 0x76, 0x7e, 0x7a,
+ 0x78, 0xf8, 0x3a, 0x39, 0x3e, 0x7a, 0x7b, 0x74, 0x11, 0x48, 0xe1, 0xee,
+ 0xf6, 0x30, 0x4b, 0xab, 0x55, 0x9c, 0x6a, 0x2d, 0x87, 0xc7, 0x6c, 0x96,
+ 0xfe, 0xec, 0xfe, 0x9e, 0x65, 0x9a, 0x45, 0x31, 0x6d, 0xbf, 0x07, 0x7d,
+ 0x1b, 0xc0, 0x4e, 0xc3, 0xe4, 0xab, 0x20, 0x30, 0x32, 0xa9, 0x48, 0xa2,
+ 0x19, 0xbb, 0x72, 0xcb, 0x83, 0x3f, 0x6b, 0x9c, 0x46, 0x53, 0x5c, 0x52,
+ 0xe8, 0x59, 0x97, 0xd2, 0xa3, 0xb1, 0xad, 0xad, 0x51, 0xf1, 0xda, 0x66,
+ 0x12, 0x5a, 0x1d, 0x98, 0xe5, 0x10, 0xb6, 0x77, 0x97, 0x01, 0xed, 0x60,
+ 0x96, 0x4b, 0xae, 0x65, 0x18, 0x53, 0xec, 0x2a, 0xd0, 0x5e, 0x14, 0xc2,
+ 0xc7, 0xc3, 0x1e, 0xc3, 0xd2, 0xe2, 0x16, 0x50, 0x6b, 0x7d, 0x85, 0x35,
+ 0xab, 0x9f, 0x6c, 0xbb, 0x74, 0x85, 0x05, 0x78, 0x8e, 0xca, 0xf7, 0xdc,
+ 0xd9, 0x4e, 0x42, 0x42, 0xc8, 0x92, 0x45, 0xf9, 0x72, 0x39, 0x8f, 0xae,
+ 0xbb, 0x3f, 0xcb, 0xbb, 0x34, 0xff, 0xe7, 0xdb, 0xb8, 0xde, 0x2e, 0xd3,
+ 0x72, 0x40, 0xe2, 0xd6, 0xfd, 0xc0, 0x4c, 0xaa, 0x42, 0x11, 0x1a, 0x6f,
+ 0x2c, 0xf6, 0x9e, 0xcc, 0x17, 0xbb, 0x6d, 0x89, 0x88, 0x3e, 0xe7, 0xa4,
+ 0x80, 0x5f, 0x72, 0xaa, 0x07, 0x80, 0xa7, 0xce, 0x99, 0xbe, 0x66, 0xe1,
+ 0xf4, 0x02, 0x8e, 0x87, 0x25, 0xb6, 0x5d, 0xf4, 0x3c, 0x8a, 0x33, 0x10,
+ 0xc0, 0x56, 0xb9, 0xd5, 0x9c, 0xa7, 0xa9, 0x73, 0x89, 0xe5, 0xe9, 0x59,
+ 0xb2, 0xf3, 0x39, 0xcf, 0xe3, 0xd3, 0xe6, 0xf3, 0xa6, 0x28, 0xc7, 0x2e,
+ 0xa7, 0x18, 0x3a, 0x42, 0x90, 0x60, 0x2a, 0x69, 0x11, 0xa8, 0xd5, 0x24,
+ 0xab, 0x6b, 0x41, 0xb1, 0x08, 0xda, 0x63, 0xa5, 0x44, 0xfd, 0xe9, 0x30,
+ 0x47, 0xc1, 0xc1, 0x2d, 0x62, 0x11, 0xdf, 0x35, 0xba, 0x2e, 0x6c, 0x60,
+ 0x95, 0xa0, 0xbd, 0x5e, 0xe9, 0x12, 0x50, 0x65, 0x19, 0xd8, 0x24, 0x42,
+ 0xb4, 0x76, 0x97, 0x4f, 0x20, 0x4a, 0x7b, 0x80, 0x3a, 0xda, 0x2f, 0x21,
+ 0x3e, 0x89, 0x95, 0x86, 0xcf, 0x12, 0xce, 0x4e, 0x37, 0x32, 0x15, 0x60,
+ 0x78, 0x59, 0x0b, 0x58, 0x14, 0x36, 0x20, 0x3f, 0x70, 0x7e, 0xb3, 0xf7,
+ 0x0b, 0xb0, 0xfe, 0xc4, 0xac, 0x79, 0xdd, 0xf7, 0xc2, 0xb9, 0x02, 0x75,
+ 0x3d, 0x35, 0x63, 0xc2, 0x5b, 0x47, 0xd8, 0xcd, 0x39, 0x33, 0x52, 0x4b,
+ 0x30, 0xed, 0x9d, 0x6d, 0x12, 0x5a, 0xa7, 0x45, 0xa3, 0xf4, 0x39, 0x11,
+ 0x55, 0xac, 0x89, 0x62, 0x5a, 0x03, 0xac, 0xce, 0xce, 0xf6, 0xb7, 0xab,
+ 0x57, 0x1d, 0xe0, 0xfb, 0x0f, 0xbe, 0xbc, 0xfb, 0xf4, 0x81, 0x4d, 0x3b,
+ 0x29, 0xa1, 0x8c, 0x67, 0x16, 0x03, 0x09, 0x41, 0xd0, 0x7b, 0x5e, 0xa2,
+ 0x6d, 0x23, 0xc2, 0xcf, 0xae, 0x52, 0x1e, 0xfe, 0x43, 0xa3, 0xb7, 0x9c,
+ 0x90, 0xd6, 0x50, 0xde, 0x6a, 0x54, 0xb6, 0x7c, 0x59, 0xb1, 0x59, 0x6c,
+ 0x01, 0x78, 0x3e, 0xaf, 0xbb, 0xba, 0x74, 0x72, 0xc1, 0x66, 0x08, 0xde,
+ 0x16, 0xce, 0xd9, 0x6f, 0x32, 0x09, 0xa3, 0x9e, 0x32, 0xbb, 0x5a, 0x0a,
+ 0x12, 0x46, 0x21, 0xba, 0x3e, 0xa3, 0x59, 0xeb, 0x79, 0x25, 0xde, 0xcc,
+ 0xe1, 0x43, 0x42, 0x4f, 0x60, 0xbc, 0xe3, 0xd4, 0x44, 0x56, 0x11, 0x39,
+ 0xda, 0x17, 0x03, 0x1b, 0x65, 0xc7, 0xec, 0x05, 0x03, 0x37, 0x58, 0x4b,
+ 0xda, 0x65, 0xb3, 0x05, 0xae, 0x71, 0x88, 0x4c, 0x5f, 0x21, 0x14, 0xc7,
+ 0xec, 0x39, 0xad, 0x8c, 0xbd, 0x61, 0xb5, 0xb8, 0x05, 0xd0, 0x40, 0x5f,
+ 0xa9, 0x16, 0x2d, 0xb9, 0xae, 0x98, 0xe3, 0x57, 0x06, 0x9b, 0x29, 0x10,
+ 0xfb, 0x6c, 0xec, 0x3f, 0x38, 0x79, 0xf7, 0xe6, 0xe8, 0x6b, 0x07, 0x65,
+ 0x24, 0x4c, 0xbc, 0x01, 0xb1, 0x21, 0xe6, 0xe3, 0xd0, 0xd3, 0xad, 0x85,
+ 0x18, 0x35, 0xfa, 0x96, 0xd8, 0xd3, 0x87, 0xf0, 0x03, 0x30, 0x90, 0xf9,
+ 0x13, 0x36, 0x90, 0x0b, 0xfe, 0x47, 0xb5, 0xe9, 0xcd, 0x0d, 0x2d, 0xa8,
+ 0x3a, 0xc9, 0xd2, 0x48, 0xcb, 0x7a, 0xb9, 0x70, 0x41, 0x84, 0x41, 0x21,
+ 0x47, 0x05, 0xdf, 0xb6, 0x54, 0xf4, 0xe5, 0x42, 0x58, 0x93, 0x26, 0x94,
+ 0x36, 0xac, 0xb9, 0x72, 0x07, 0xb0, 0x39, 0x41, 0xb1, 0x54, 0xf4, 0x02,
+ 0x88, 0xe2, 0x72, 0xa6, 0x0c, 0xd9, 0x19, 0xc6, 0xcb, 0x9b, 0xff, 0x66,
+ 0x82, 0x62, 0x98, 0x61, 0xc1, 0xf3, 0x99, 0xa8, 0x63, 0x3c, 0x6f, 0x54,
+ 0x94, 0x76, 0xc1, 0x38, 0x2e, 0xfa, 0xd7, 0xfb, 0x87, 0x2a, 0x57, 0x22,
+ 0xdb, 0xc5, 0x27, 0x59, 0x1a, 0x6b, 0x0a, 0x57, 0x25, 0x7c, 0x9d, 0xf8,
+ 0xe4, 0x15, 0xbb, 0x65, 0xf6, 0x18, 0x82, 0x7e, 0x26, 0x80, 0x72, 0x61,
+ 0xfa, 0xa9, 0x72, 0x49, 0x0f, 0x15, 0x7f, 0x74, 0x19, 0x64, 0xb4, 0x49,
+ 0x9c, 0xa0, 0x11, 0x9d, 0xd8, 0x88, 0xd9, 0xc0, 0xd2, 0xfb, 0x5d, 0x6f,
+ 0x50, 0xdd, 0xcf, 0x46, 0xc5, 0xd4, 0x12, 0x2f, 0x1c, 0x80, 0x84, 0x3d,
+ 0x14, 0x16, 0x56, 0x4b, 0xc4, 0x53, 0x5b, 0x07, 0x66, 0x49, 0x1f, 0x2b,
+ 0xe5, 0xc7, 0x2f, 0xc5, 0x89, 0xe0, 0x1e, 0xb2, 0x59, 0x00, 0xdb, 0x87,
+ 0x79, 0x7c, 0x36, 0x1f, 0x4f, 0x0b, 0xa5, 0x6a, 0x4e, 0x30, 0xc7, 0x4a,
+ 0x35, 0xa7, 0xce, 0x1e, 0xbf, 0x62, 0xc9, 0x16, 0x0e, 0x14, 0x1e, 0x21,
+ 0x71, 0x67, 0x5d, 0x11, 0x35, 0x30, 0x41, 0x7e, 0x5b, 0xbe, 0xd0, 0xa8,
+ 0xfc, 0x00, 0xdf, 0x46, 0x2a, 0x95, 0xd0, 0x50, 0x7f, 0x12, 0x83, 0xa2,
+ 0xf8, 0xfd, 0xfe, 0x6c, 0x9d, 0xdb, 0xa3, 0xad, 0xa5, 0x27, 0x7a, 0x4a,
+ 0xcb, 0x2b, 0x45, 0xe9, 0x53, 0x4f, 0x1a, 0x94, 0x44, 0x57, 0x3f, 0xc6,
+ 0x19, 0x26, 0x59, 0x28, 0x71, 0x51, 0x33, 0x10, 0x9f, 0x96, 0x92, 0x53,
+ 0xa8, 0x19, 0x57, 0x62, 0x92, 0x74, 0x84, 0x18, 0x70, 0x9c, 0xdf, 0xb9,
+ 0x58, 0x94, 0xd4, 0xdf, 0x65, 0x56, 0xd6, 0xc2, 0xdb, 0x67, 0xf5, 0x32,
+ 0x0b, 0x5e, 0x63, 0x23, 0x1e, 0x34, 0xe1, 0x4c, 0x0d, 0x27, 0xd2, 0x15,
+ 0x64, 0x09, 0xc6, 0xb5, 0x41, 0xf2, 0x4f, 0x56, 0xf9, 0x26, 0xe4, 0xfb,
+ 0x57, 0x5a, 0xcf, 0x8a, 0xce, 0xb3, 0x22, 0xa5, 0x28, 0x7c, 0xe0, 0xe7,
+ 0xdb, 0x6a, 0x7e, 0xab, 0x35, 0x5c, 0xb5, 0x4a, 0xf6, 0xcf, 0x0e, 0x49,
+ 0xb2, 0xbd, 0x9a, 0x03, 0xa3, 0x62, 0x5e, 0x5b, 0x52, 0x5d, 0x36, 0xd7,
+ 0x02, 0x5a, 0x73, 0x3b, 0x1f, 0xdc, 0xe1, 0x5d, 0xf0, 0x26, 0x13, 0x93,
+ 0x06, 0x06, 0x48, 0xfe, 0xb6, 0x27, 0xb9, 0xb1, 0x81, 0x09, 0x83, 0xeb,
+ 0x30, 0x4c, 0x82, 0x90, 0x14, 0xbb, 0x48, 0xa8, 0xab, 0xc2, 0x80, 0x84,
+ 0x4f, 0x23, 0xb6, 0x1e, 0x22, 0x08, 0xdb, 0x5a, 0xe3, 0x54, 0xfb, 0x54,
+ 0x84, 0xbf, 0x1a, 0x2e, 0xa7, 0xf6, 0xd5, 0x70, 0x7b, 0x7a, 0x72, 0xea,
+ 0x77, 0x9b, 0x8c, 0xfe, 0x8a, 0x7b, 0x86, 0x65, 0x91, 0xb6, 0x5c, 0x90,
+ 0xb9, 0x08, 0x7b, 0xb1, 0x5e, 0x4f, 0x02, 0xe1, 0x57, 0x52, 0x00, 0x39,
+ 0xc6, 0x5a, 0x0c, 0xd3, 0x8a, 0x04, 0xa4, 0x76, 0x1d, 0x51, 0x07, 0x26,
+ 0x7a, 0x56, 0x99, 0x2a, 0x38, 0x5c, 0x78, 0xc4, 0x68, 0x49, 0x52, 0x3a,
+ 0xbb, 0xc1, 0x9f, 0x3a, 0x6d, 0xbb, 0xbf, 0x73, 0xb3, 0xf5, 0x63, 0x70,
+ 0x5f, 0xf2, 0x47, 0xaf, 0x1c, 0xba, 0x1d, 0x8f, 0x62, 0xc8, 0x1d, 0x81,
+ 0xa5, 0xc2, 0x67, 0xca, 0xbf, 0xe0, 0x63, 0x44, 0xbd, 0x19, 0xda, 0x29,
+ 0xb8, 0x8e, 0x83, 0xd0, 0x2a, 0xd4, 0xa7, 0xea, 0x07, 0x22, 0x8e, 0x3d,
+ 0x70, 0xe8, 0x51, 0x28, 0x1a, 0x0f, 0xbe, 0xdd, 0xb2, 0x1a, 0xb8, 0x6c,
+ 0xbf, 0xe1, 0x04, 0x62, 0x3b, 0xf0, 0x55, 0xd6, 0x28, 0x9a, 0xeb, 0x32,
+ 0x85, 0xd6, 0x07, 0xeb, 0xb4, 0x16, 0xbd, 0xe9, 0xd4, 0x33, 0x7c, 0x7b,
+ 0x8c, 0x77, 0x15, 0x49, 0x75, 0x5e, 0x60, 0x52, 0xde, 0xc5, 0xd5, 0x38,
+ 0xee, 0x1b, 0x29, 0x0e, 0x5c, 0xce, 0x8c, 0x33, 0x80, 0x1c, 0xb0, 0x17,
+ 0xd2, 0x44, 0x10, 0x24, 0x70, 0x9b, 0x57, 0xe6, 0x7c, 0x24, 0xda, 0x1e,
+ 0x4b, 0x4c, 0x44, 0x2d, 0x80, 0x04, 0x59, 0x3d, 0x0e, 0x96, 0x32, 0x1b,
+ 0x5f, 0x17, 0x12, 0x53, 0x4b, 0x8b, 0x16, 0x64, 0x7a, 0xae, 0x27, 0xff,
+ 0xa9, 0x34, 0xf0, 0xad, 0x4f, 0xda, 0x63, 0x42, 0x18, 0x0a, 0x0e, 0xe5,
+ 0xd0, 0x13, 0xc4, 0xe1, 0x0f, 0x17, 0x67, 0xfb, 0xc9, 0x37, 0x87, 0xfb,
+ 0xaf, 0x0f, 0xcf, 0xce, 0x5b, 0x97, 0xbe, 0x86, 0x7f, 0x88, 0x84, 0xc6,
+ 0x46, 0x60, 0x88, 0xc6, 0x06, 0x3c, 0xa0, 0x71, 0xfb, 0xc6, 0xf5, 0x88,
+ 0x78, 0xf8, 0x20, 0xd1, 0xf9, 0x60, 0x85, 0x48, 0xbc, 0x05, 0x40, 0x3d,
+ 0xae, 0xc0, 0x6c, 0x5c, 0x1b, 0x63, 0xe2, 0x50, 0x1c, 0xc4, 0x60, 0x26,
+ 0xf3, 0x30, 0x63, 0xc6, 0x63, 0xf5, 0xf9, 0xcb, 0x64, 0x52, 0x58, 0x32,
+ 0x60, 0x73, 0xe7, 0xbe, 0xf1, 0xf9, 0xde, 0x01, 0xdb, 0xd2, 0x4b, 0x46,
+ 0xad, 0x86, 0xeb, 0x3f, 0x0c, 0xa8, 0xdf, 0x01, 0x2d, 0xfe, 0x80, 0xc1,
+ 0x1c, 0xef, 0xb3, 0x6a, 0xbd, 0x65, 0x02, 0x6c, 0x76, 0xbf, 0x26, 0x25,
+ 0x9c, 0xa2, 0x93, 0xf4, 0x4d, 0x67, 0x4b, 0x7c, 0xba, 0xb8, 0xca, 0x73,
+ 0xa4, 0x41, 0xe0, 0x52, 0x0d, 0x84, 0x64, 0x3d, 0x41, 0x51, 0x7a, 0x8b,
+ 0x06, 0x28, 0x79, 0x35, 0x53, 0xe3, 0xc1, 0x30, 0x10, 0x9d, 0x02, 0x64,
+ 0x1d, 0x3a, 0x7b, 0x72, 0xa9, 0x4f, 0x05, 0xa0, 0x59, 0x2c, 0x66, 0x34,
+ 0x2c, 0x7d, 0x28, 0xbc, 0x1f, 0xe0, 0x00, 0xd1, 0x18, 0xfc, 0xaa, 0xe1,
+ 0x1f, 0x55, 0x63, 0xa8, 0x62, 0x77, 0x6b, 0x73, 0x3c, 0x06, 0x47, 0xf3,
+ 0x16, 0xba, 0xcf, 0x5d, 0x5a, 0x59, 0x11, 0x7d, 0x57, 0xa2, 0xc0, 0x58,
+ 0xa9, 0x87, 0x7d, 0x53, 0xea, 0x93, 0x4a, 0x91, 0x42, 0x61, 0x6c, 0x41,
+ 0x2e, 0x50, 0x48, 0xcc, 0xa8, 0x81, 0x86, 0xe8, 0x71, 0xf7, 0x5c, 0x96,
+ 0x7c, 0x53, 0x54, 0xb8, 0x0b, 0xe2, 0xc7, 0xf9, 0x92, 0xef, 0x5a, 0x7e,
+ 0xbc, 0xa1, 0xfe, 0x2d, 0x07, 0x12, 0x0b, 0x4c, 0x65, 0xb0, 0xaf, 0xd3,
+ 0xfd, 0x8b, 0x6f, 0xe0, 0x5d, 0x05, 0x09, 0xbf, 0x06, 0x62, 0x8a, 0xf9,
+ 0xd4, 0xe2, 0x94, 0x2c, 0xa7, 0xc0, 0x89, 0xfc, 0x6b, 0xc0, 0x8c, 0x26,
+ 0x4f, 0xc2, 0x7b, 0x97, 0x4b, 0x20, 0xd2, 0x54, 0x6a, 0xc2, 0x82, 0x47,
+ 0x37, 0xea, 0xf2, 0x21, 0xf4, 0xdd, 0xe5, 0xdb, 0xb9, 0x78, 0xcb, 0x9e,
+ 0x24, 0xc2, 0xf7, 0x64, 0x4e, 0x20, 0x7a, 0x16, 0xe6, 0x58, 0xe3, 0x09,
+ 0x91, 0x87, 0xf1, 0x05, 0x67, 0x3a, 0x8b, 0x03, 0x6a, 0x52, 0x74, 0xe3,
+ 0x1e, 0x06, 0x47, 0xfa, 0xcb, 0xd9, 0xfd, 0x30, 0x06, 0xe0, 0x49, 0xbe,
+ 0x5a, 0xd6, 0x4d, 0xb6, 0xd2, 0xc2, 0x3f, 0x76, 0x92, 0x65, 0x59, 0x14,
+ 0x75, 0x30, 0x06, 0x48, 0x3f, 0x69, 0xad, 0x27, 0x5a, 0x00, 0x2e, 0x65,
+ 0x2c, 0xdc, 0xd4, 0x5c, 0xe5, 0xee, 0x50, 0x30, 0x4c, 0x47, 0x55, 0x31,
+ 0x5d, 0xd6, 0x41, 0xf4, 0xf5, 0x2f, 0x1b, 0x73, 0x30, 0xe8, 0x8d, 0xa3,
+ 0xa1, 0x81, 0x7d, 0xce, 0x05, 0xa2, 0x8e, 0x34, 0x7d, 0x12, 0x2f, 0xe1,
+ 0x6c, 0x2c, 0x8b, 0x79, 0xb3, 0x78, 0x1c, 0x02, 0xbd, 0x37, 0xd7, 0xd6,
+ 0xce, 0x6d, 0xb3, 0x19, 0xee, 0x35, 0xde, 0xf4, 0xef, 0x21, 0x4d, 0xf2,
+ 0x18, 0xc4, 0x59, 0x30, 0xa6, 0x5f, 0x0c, 0x04, 0x2e, 0x93, 0x3d, 0x05,
+ 0x0b, 0x97, 0x3d, 0xce, 0xab, 0xe6, 0xa4, 0xf0, 0x95, 0x73, 0x57, 0x58,
+ 0x7e, 0xd9, 0x45, 0x61, 0x40, 0xfe, 0xea, 0xae, 0xf3, 0x04, 0xd1, 0xc8,
+ 0x86, 0xef, 0x44, 0x98, 0xe6, 0x4b, 0xc0, 0x2a, 0x0d, 0xbb, 0x70, 0x5c,
+ 0x1e, 0xe4, 0xd6, 0x7f, 0x6d, 0x25, 0xfd, 0x44, 0x8b, 0xc0, 0x77, 0x80,
+ 0x1c, 0xfd, 0x5f, 0x08, 0xbc, 0x52, 0x78, 0x5f, 0x6e, 0x73, 0xd8, 0x04,
+ 0x90, 0x1d, 0x92, 0x0a, 0x75, 0x5d, 0x8e, 0x3d, 0xf5, 0x93, 0x74, 0x90,
+ 0xdd, 0xb1, 0xfe, 0x62, 0x3a, 0x82, 0xc2, 0x85, 0x48, 0xb1, 0x5f, 0x07,
+ 0xc0, 0x04, 0xb8, 0x8d, 0x4b, 0x67, 0xd5, 0xe3, 0xba, 0x9b, 0x52, 0x84,
+ 0x52, 0xc4, 0x7a, 0xd4, 0x60, 0x32, 0xb7, 0xa9, 0x64, 0xd4, 0x3b, 0xbd,
+ 0xbd, 0x4a, 0xaa, 0x42, 0x7e, 0x5a, 0xd2, 0x91, 0x06, 0x76, 0x29, 0xf9,
+ 0x07, 0xb5, 0xfd, 0x82, 0xa2, 0xb8, 0x16, 0x71, 0x2a, 0xd1, 0x74, 0xe6,
+ 0x8e, 0xb4, 0x41, 0x9a, 0x14, 0xc0, 0xde, 0x4a, 0xc0, 0x5a, 0x2a, 0xf2,
+ 0x08, 0x47, 0x92, 0x31, 0x86, 0xb1, 0x24, 0x6d, 0x73, 0xd5, 0x46, 0xd3,
+ 0x64, 0xec, 0x4a, 0xb5, 0x34, 0x8e, 0xb5, 0xb0, 0x86, 0xb6, 0x0c, 0x5f,
+ 0xef, 0x7e, 0x24, 0xe1, 0xc3, 0x33, 0x77, 0x97, 0x32, 0x4e, 0x9a, 0x17,
+ 0x09, 0x6c, 0x4a, 0x5a, 0xf7, 0x55, 0x82, 0x37, 0xc2, 0x80, 0x14, 0x1f,
+ 0xb1, 0x79, 0xc5, 0x59, 0x1e, 0x6a, 0x92, 0x52, 0x2c, 0x13, 0xd8, 0xbf,
+ 0xae, 0x73, 0x8d, 0x2b, 0x95, 0x55, 0x6f, 0x56, 0xd5, 0x84, 0x85, 0x8f,
+ 0x43, 0x0a, 0xbc, 0x57, 0xd5, 0x05, 0x3e, 0x0c, 0xe3, 0x03, 0x33, 0x74,
+ 0xa8, 0xaa, 0x7a, 0x89, 0x1c, 0x85, 0x39, 0xe5, 0x12, 0x85, 0xe1, 0x62,
+ 0x9d, 0x3f, 0xb1, 0xf7, 0xb0, 0x4b, 0x0e, 0x62, 0x9d, 0x27, 0x92, 0x40,
+ 0xa2, 0x50, 0x71, 0x7c, 0xa1, 0xec, 0xee, 0x40, 0x31, 0x95, 0x98, 0x0d,
+ 0xe0, 0x94, 0x5a, 0x0b, 0x86, 0x97, 0xd6, 0x5e, 0xfc, 0xcd, 0xbe, 0xae,
+ 0x92, 0xcb, 0xb8, 0x57, 0x17, 0xb3, 0xc8, 0x85, 0x81, 0xdf, 0xa9, 0x51,
+ 0x3d, 0x4e, 0xb2, 0xb8, 0xab, 0xba, 0x5c, 0x8e, 0x1b, 0x10, 0x7d, 0xa0,
+ 0x88, 0x86, 0x6b, 0xde, 0xad, 0x71, 0x11, 0xea, 0xf6, 0x47, 0xa7, 0xaa,
+ 0xde, 0x8b, 0xf6, 0xc1, 0x23, 0xdb, 0x48, 0x1b, 0x49, 0x2e, 0xae, 0xb0,
+ 0x68, 0xd8, 0xef, 0xa6, 0xa3, 0xb2, 0xc1, 0xa9, 0xcb, 0xa8, 0x6f, 0x95,
+ 0x87, 0xe7, 0xec, 0x84, 0xe0, 0xee, 0x55, 0x41, 0x0c, 0x82, 0x47, 0x99,
+ 0x28, 0xf8, 0x22, 0xc4, 0x1a, 0x36, 0x59, 0xae, 0x39, 0x80, 0x44, 0x1a,
+ 0xd2, 0x40, 0x43, 0x55, 0xc5, 0xfb, 0xbb, 0x45, 0x0b, 0x69, 0xe5, 0x81,
+ 0x5c, 0x5d, 0xac, 0xca, 0x83, 0x2c, 0xb6, 0xe2, 0x54, 0x01, 0xd1, 0xe4,
+ 0xe4, 0x43, 0x05, 0x8b, 0xd3, 0xf5, 0x1b, 0x26, 0xaf, 0xf5, 0x50, 0x68,
+ 0x0f, 0x6d, 0x71, 0x22, 0xbe, 0x1b, 0x4f, 0x05, 0x0a, 0x25, 0xa2, 0xa3,
+ 0xd7, 0x66, 0x53, 0x05, 0xcb, 0xc1, 0xda, 0xb0, 0x66, 0x63, 0x9b, 0x44,
+ 0xeb, 0x6a, 0x5d, 0xd0, 0x10, 0x78, 0xc6, 0xbd, 0x69, 0xb6, 0xdd, 0x0b,
+ 0x0a, 0x7b, 0x6d, 0x48, 0xd0, 0x7f, 0x01, 0xed, 0xc7, 0x81, 0x15, 0x8a,
+ 0xf5, 0x82, 0x83, 0xdb, 0x36, 0x3b, 0x86, 0x42, 0x4d, 0xfc, 0xd2, 0xc1,
+ 0xec, 0xbc, 0xd8, 0x1d, 0xee, 0x3c, 0xff, 0x7c, 0xb8, 0x3d, 0xdc, 0xd9,
+ 0x66, 0xfe, 0xc2, 0x43, 0x09, 0x06, 0x27, 0xeb, 0xd2, 0xd1, 0x55, 0xe3,
+ 0xbd, 0xb8, 0xcf, 0x77, 0x87, 0x17, 0xdf, 0x9f, 0x9c, 0x7d, 0x9b, 0x1c,
+ 0xbd, 0xbb, 0x38, 0x3c, 0x7b, 0xb3, 0x7f, 0xf0, 0xa9, 0x80, 0xfd, 0xa1,
+ 0xd9, 0x3a, 0xa8, 0x6d, 0x9d, 0xf9, 0x85, 0x89, 0x6d, 0x83, 0x7e, 0xcd,
+ 0xb2, 0xfa, 0x7a, 0x7b, 0x6f, 0xe7, 0x41, 0x48, 0xea, 0x0e, 0xf3, 0xa0,
+ 0x7f, 0xdf, 0x26, 0xb5, 0xc3, 0x93, 0x5a, 0xdd, 0x8a, 0x83, 0x66, 0x3c,
+ 0x97, 0xd8, 0x2a, 0x17, 0x97, 0x0b, 0x36, 0x8f, 0xd2, 0x49, 0x40, 0x64,
+ 0x55, 0xc6, 0x3e, 0x12, 0xf0, 0x5b, 0x49, 0xaf, 0x55, 0x90, 0x19, 0x8d,
+ 0x41, 0x57, 0x9e, 0xbb, 0x26, 0x75, 0xa4, 0x6b, 0x35, 0xa7, 0x08, 0x9c,
+ 0xed, 0x04, 0x22, 0x9e, 0x71, 0x65, 0xcd, 0x5d, 0x63, 0x6a, 0xd1, 0xd2,
+ 0xa6, 0x02, 0x38, 0x38, 0x71, 0x79, 0x22, 0x0e, 0x85, 0x00, 0xa1, 0x0f,
+ 0x26, 0xa7, 0x63, 0xac, 0xcd, 0x52, 0xe0, 0x61, 0xf8, 0x6c, 0x0b, 0x7b,
+ 0xb5, 0xb2, 0xb8, 0x66, 0x4c, 0xac, 0x61, 0x1a, 0x3d, 0xd0, 0x81, 0xe0,
+ 0x34, 0x04, 0xa3, 0x91, 0xae, 0x20, 0x50, 0x31, 0x48, 0x1a, 0xe0, 0x21,
+ 0x1b, 0x08, 0xc9, 0x72, 0x47, 0x21, 0x77, 0x42, 0xe4, 0x3f, 0xab, 0x6a,
+ 0xc1, 0xad, 0x57, 0x0d, 0x90, 0xc2, 0x44, 0xca, 0x59, 0x85, 0xaf, 0x8b,
+ 0xa8, 0x8d, 0xe8, 0xcc, 0x49, 0x99, 0xde, 0xa1, 0x26, 0x4b, 0xee, 0x21,
+ 0x47, 0xd7, 0x92, 0x46, 0x4d, 0x2e, 0x16, 0x9c, 0xfc, 0x9a, 0x27, 0xa7,
+ 0x87, 0x6f, 0x07, 0x56, 0x49, 0x98, 0x7e, 0x17, 0x63, 0x94, 0xe1, 0x4b,
+ 0x4a, 0x6e, 0xcf, 0x22, 0x9b, 0x5b, 0x2c, 0x0d, 0x78, 0xa2, 0x06, 0xff,
+ 0x84, 0x13, 0xe0, 0x43, 0xe3, 0x10, 0x28, 0x35, 0x64, 0xd4, 0x62, 0x2e,
+ 0x25, 0xb7, 0xb0, 0x0d, 0xcb, 0xc9, 0xfb, 0xa9, 0x01, 0xcb, 0xc9, 0x86,
+ 0x0b, 0xd2, 0xe5, 0xfe, 0x10, 0x89, 0x8a, 0xa8, 0x01, 0x17, 0x26, 0x50,
+ 0x58, 0xe6, 0xf5, 0xe9, 0xb7, 0x07, 0xe7, 0xbf, 0xdb, 0xd9, 0xd5, 0xe1,
+ 0x6c, 0x9a, 0x56, 0xc0, 0xbc, 0xaa, 0x9d, 0x94, 0x0f, 0x76, 0x1d, 0x8e,
+ 0xd1, 0x52, 0xac, 0x71, 0xc0, 0xb1, 0x19, 0x1b, 0x2e, 0x31, 0x68, 0xb3,
+ 0x91, 0x19, 0xb4, 0x26, 0x05, 0xed, 0x4d, 0xc4, 0x74, 0xd5, 0x7e, 0xd9,
+ 0x25, 0x82, 0x9a, 0x50, 0x5a, 0x95, 0xa9, 0x76, 0xa1, 0x7e, 0xe9, 0xdc,
+ 0x3e, 0x92, 0x96, 0xb5, 0x35, 0xe4, 0x90, 0xfb, 0x70, 0x96, 0xf6, 0x9e,
+ 0xf3, 0x7a, 0xfb, 0x6f, 0x19, 0x27, 0x56, 0x6f, 0x76, 0x03, 0x04, 0xf2,
+ 0xdd, 0xe0, 0x00, 0x68, 0xf4, 0xfa, 0xc4, 0xea, 0xbe, 0xcd, 0x7d, 0x19,
+ 0x14, 0x7e, 0xfa, 0x84, 0x36, 0x8a, 0x4e, 0x96, 0xe0, 0x36, 0x30, 0x53,
+ 0x28, 0xa6, 0xac, 0xba, 0xb8, 0x47, 0x5e, 0x97, 0x5c, 0x6f, 0x66, 0x21,
+ 0x71, 0xa4, 0xef, 0x86, 0xc9, 0x37, 0xd9, 0x9c, 0x13, 0xe7, 0x39, 0xe2,
+ 0xce, 0x72, 0xaf, 0x10, 0x17, 0xc8, 0x85, 0x27, 0x51, 0x88, 0xef, 0x38,
+ 0x4b, 0x15, 0x93, 0x93, 0x78, 0x5d, 0x25, 0x1a, 0xae, 0x15, 0xa1, 0x4a,
+ 0x39, 0x3a, 0x4f, 0x01, 0x44, 0x1d, 0xd8, 0x85, 0x80, 0x44, 0x73, 0x03,
+ 0x1b, 0x4d, 0x60, 0x4d, 0x94, 0x44, 0x40, 0x73, 0x7a, 0xcc, 0xe1, 0x6b,
+ 0x52, 0xab, 0xf2, 0x35, 0xe0, 0xb4, 0xd9, 0x5a, 0x28, 0x1a, 0x97, 0x67,
+ 0x2a, 0x93, 0xf2, 0x9a, 0x4d, 0x1f, 0x15, 0x5d, 0x37, 0xe9, 0x7c, 0x7c,
+ 0x3f, 0x9c, 0x90, 0x2c, 0xcb, 0xc6, 0xb3, 0xe1, 0xf2, 0x66, 0x2b, 0x38,
+ 0xa6, 0xcc, 0xf2, 0xaf, 0x05, 0x23, 0xa0, 0x69, 0xf8, 0xb6, 0x0a, 0xc7,
+ 0x31, 0x74, 0x58, 0xda, 0x38, 0x13, 0x4c, 0x12, 0x96, 0xed, 0x2f, 0xc7,
+ 0x73, 0x25, 0xc8, 0xd6, 0x61, 0xe2, 0x10, 0x8e, 0xb9, 0x85, 0xe1, 0x22,
+ 0x9b, 0xed, 0xb9, 0x6c, 0x64, 0xe3, 0x0f, 0x5a, 0x55, 0xc3, 0x29, 0x16,
+ 0x81, 0x91, 0x76, 0x9e, 0x5d, 0x4d, 0x55, 0xa0, 0x08, 0x55, 0x17, 0xd7,
+ 0x44, 0x47, 0x0a, 0x88, 0x28, 0x3c, 0x5a, 0x22, 0x09, 0x12, 0x3b, 0xd1,
+ 0x61, 0xad, 0x21, 0xb5, 0xf2, 0x70, 0xc9, 0x02, 0xbd, 0x6f, 0x44, 0x91,
+ 0x43, 0x00, 0xb6, 0x8c, 0x6a, 0xf2, 0x62, 0xe2, 0xb1, 0x48, 0x24, 0x75,
+ 0x3f, 0x31, 0x10, 0x2c, 0x28, 0x04, 0x30, 0xee, 0x1a, 0x15, 0x0d, 0xe7,
+ 0xa7, 0x15, 0x12, 0x96, 0xb3, 0x42, 0x5f, 0xdf, 0x3e, 0x61, 0x8b, 0xf7,
+ 0xc5, 0xf1, 0xb9, 0x79, 0x45, 0xe6, 0xd9, 0x5d, 0x40, 0x5a, 0x52, 0x7a,
+ 0x40, 0xe9, 0x8f, 0x0d, 0x40, 0x02, 0xa9, 0x0c, 0xb4, 0x03, 0x8c, 0x44,
+ 0xb8, 0x82, 0x77, 0x93, 0xf9, 0xe4, 0x07, 0x5b, 0x04, 0x0d, 0x23, 0xe6,
+ 0xa1, 0x58, 0xbd, 0x33, 0x11, 0x86, 0x1c, 0xd2, 0x0b, 0x63, 0xf7, 0x91,
+ 0xb0, 0xf4, 0xa4, 0x9f, 0x0c, 0x76, 0x81, 0x9f, 0xb3, 0xd3, 0x5c, 0xc4,
+ 0xb4, 0x16, 0x98, 0x40, 0x6e, 0x83, 0x5a, 0xb2, 0x56, 0x94, 0x1d, 0x6c,
+ 0x28, 0x49, 0xdf, 0xd2, 0xfb, 0xfc, 0x63, 0x57, 0x27, 0x74, 0xbb, 0x83,
+ 0x88, 0x6d, 0xc1, 0xad, 0x9c, 0xde, 0xc7, 0x22, 0xc3, 0xee, 0x83, 0xbb,
+ 0x8a, 0xdc, 0x88, 0xbb, 0xdc, 0x01, 0x48, 0x4b, 0xd1, 0x04, 0x98, 0x42,
+ 0x15, 0x12, 0xd4, 0x06, 0x40, 0x4b, 0xa8, 0x46, 0xee, 0x79, 0x72, 0xbb,
+ 0x6b, 0xbe, 0x66, 0xfe, 0xc6, 0xd6, 0x4d, 0x8c, 0xf5, 0x9e, 0x89, 0x44,
+ 0x69, 0x8b, 0x1c, 0xe5, 0x16, 0x50, 0x2d, 0x67, 0x3d, 0x11, 0xcd, 0x12,
+ 0x17, 0x69, 0x70, 0x99, 0x62, 0xae, 0x66, 0x05, 0x49, 0x79, 0x17, 0x3c,
+ 0x7a, 0x56, 0xe0, 0x83, 0x30, 0x27, 0x44, 0x7e, 0x07, 0x11, 0x91, 0x47,
+ 0x73, 0x97, 0x28, 0xa1, 0xa6, 0x7c, 0x40, 0xf4, 0x61, 0xfb, 0xaf, 0x73,
+ 0x31, 0x4c, 0x20, 0xd6, 0x14, 0xd7, 0x39, 0x9d, 0xfc, 0x5e, 0x42, 0x87,
+ 0x69, 0xc9, 0x1c, 0xbf, 0x76, 0xc5, 0xd7, 0xce, 0x05, 0xda, 0xb3, 0x17,
+ 0xb2, 0xb9, 0xc1, 0x17, 0x3c, 0x95, 0xaa, 0xe7, 0xe7, 0xae, 0x10, 0xe7,
+ 0xcd, 0x89, 0xa8, 0x9f, 0xc3, 0xca, 0x8d, 0x9d, 0x96, 0x56, 0x55, 0xbd,
+ 0x77, 0xf8, 0x91, 0x65, 0x9c, 0x9e, 0xf6, 0x24, 0x5f, 0x4b, 0x4e, 0x3f,
+ 0xd6, 0xe8, 0xf4, 0xe8, 0x9d, 0xd4, 0x09, 0x77, 0x67, 0x21, 0x63, 0xe8,
+ 0xc5, 0x35, 0x29, 0x71, 0x8f, 0xf1, 0xa4, 0x86, 0x01, 0x2f, 0x86, 0x23,
+ 0xa6, 0x19, 0xa6, 0xf1, 0x5c, 0xfb, 0x3a, 0x5b, 0x4a, 0xef, 0x3d, 0xbe,
+ 0xe7, 0xaa, 0x6a, 0xda, 0x6b, 0xd5, 0xbe, 0x75, 0x7b, 0xd2, 0xba, 0x50,
+ 0x9c, 0x45, 0x6a, 0x3c, 0xf1, 0x02, 0x3e, 0xea, 0x7b, 0x73, 0x2b, 0x0d,
+ 0x3e, 0xd7, 0x6f, 0x65, 0x3a, 0x86, 0xa6, 0xf0, 0xdf, 0x25, 0xc3, 0x2d,
+ 0xea, 0xb0, 0xda, 0xb2, 0x17, 0x17, 0x37, 0xe3, 0x8a, 0x6e, 0x38, 0x4e,
+ 0xeb, 0xfd, 0x11, 0x0a, 0x39, 0xb6, 0x83, 0x46, 0x3c, 0xf9, 0x39, 0x19,
+ 0x8c, 0xa7, 0x98, 0x5f, 0x82, 0x2a, 0xdb, 0x3f, 0xd2, 0xce, 0xf3, 0x13,
+ 0x3f, 0xbb, 0x3d, 0x7c, 0x93, 0xf3, 0x79, 0xfb, 0xd8, 0xb7, 0xa9, 0x9f,
+ 0x88, 0xc2, 0x20, 0xf8, 0xb6, 0xc9, 0xfe, 0xe4, 0x96, 0x93, 0xee, 0x26,
+ 0xfa, 0x27, 0xcf, 0xe7, 0x70, 0x8e, 0xfa, 0xa4, 0x98, 0x69, 0x3a, 0x92,
+ 0x92, 0xe4, 0xdf, 0xe5, 0xa4, 0x74, 0x1c, 0xb4, 0xe4, 0x0b, 0xce, 0xff,
+ 0xe3, 0x01, 0xe2, 0xad, 0xe0, 0x4b, 0x4b, 0xe6, 0xe8, 0x6b, 0xce, 0x82,
+ 0x0f, 0x2d, 0x65, 0xee, 0xcc, 0x5b, 0x37, 0x4c, 0xbe, 0x62, 0x1f, 0x67,
+ 0x99, 0x05, 0xe8, 0xaf, 0x7a, 0xf1, 0x49, 0x1d, 0x3f, 0xde, 0x8c, 0x54,
+ 0xf0, 0x27, 0x86, 0x6e, 0x26, 0x51, 0x0e, 0x8c, 0x9b, 0x93, 0xfb, 0xa6,
+ 0x39, 0x39, 0x8c, 0xcb, 0x52, 0xda, 0x69, 0x2a, 0x96, 0x2f, 0x91, 0x44,
+ 0x53, 0x09, 0x70, 0x29, 0x65, 0x84, 0x72, 0x61, 0x4e, 0x32, 0x4b, 0xec,
+ 0x2f, 0x42, 0x34, 0x15, 0xb3, 0x1c, 0xa3, 0x29, 0x93, 0x08, 0x1c, 0x49,
+ 0xe0, 0x0e, 0xf7, 0xa3, 0x3e, 0xb8, 0x26, 0xd6, 0x9c, 0xb9, 0xa1, 0x9e,
+ 0x8b, 0x49, 0xcf, 0x86, 0x78, 0xce, 0x77, 0x94, 0x6d, 0x82, 0xfb, 0xd2,
+ 0xb2, 0x23, 0x21, 0x85, 0x6e, 0x09, 0xef, 0x72, 0xb4, 0x2b, 0xab, 0xdb,
+ 0x9c, 0x02, 0x27, 0x35, 0x9e, 0xbf, 0x7f, 0xcb, 0xa5, 0x4d, 0x50, 0xb6,
+ 0xfa, 0xe2, 0x6c, 0xff, 0xdd, 0xf9, 0x1b, 0x31, 0x8d, 0x5f, 0x14, 0x41,
+ 0x35, 0x6c, 0xf5, 0x2b, 0x98, 0xff, 0xd8, 0xc1, 0xc4, 0xdd, 0x49, 0xbd,
+ 0x0d, 0x8b, 0xa7, 0xd7, 0x52, 0xd9, 0xfd, 0x36, 0xde, 0xbe, 0xd4, 0xd9,
+ 0xe6, 0xd5, 0xe0, 0xa1, 0x6d, 0x9c, 0x6f, 0x3a, 0x41, 0xa8, 0x0a, 0x6b,
+ 0xb2, 0xf9, 0x72, 0xf5, 0x86, 0x0c, 0xad, 0x0f, 0xf1, 0xb2, 0x1c, 0xd8,
+ 0x60, 0xec, 0x53, 0xb9, 0x7b, 0x57, 0x82, 0x91, 0x1e, 0x90, 0xaa, 0x38,
+ 0xd0, 0x4a, 0x35, 0x41, 0x05, 0x3a, 0x67, 0x4e, 0x95, 0xbb, 0x57, 0xa1,
+ 0xfc, 0x5c, 0xe3, 0x61, 0xde, 0xa7, 0x35, 0xbd, 0xf1, 0x87, 0x9d, 0xcd,
+ 0xee, 0xe6, 0x2f, 0x7e, 0x69, 0xf3, 0xdd, 0x63, 0x37, 0xdd, 0xcc, 0xa7,
+ 0x14, 0x6d, 0xfc, 0x61, 0x77, 0xf3, 0xc1, 0x19, 0x85, 0x59, 0x91, 0xbe,
+ 0x4f, 0x7a, 0x83, 0x07, 0x9b, 0xbc, 0x92, 0x63, 0xe6, 0x64, 0x26, 0x17,
+ 0xa1, 0x13, 0xe0, 0x0d, 0x37, 0x00, 0x3b, 0x38, 0x6c, 0xdb, 0x49, 0xea,
+ 0xde, 0xf1, 0xa6, 0xd9, 0x25, 0x47, 0xff, 0xfb, 0x30, 0x84, 0x91, 0x9c,
+ 0xf7, 0xea, 0xf0, 0x8a, 0x62, 0x74, 0x80, 0xaa, 0x18, 0xa2, 0xef, 0xdd,
+ 0x07, 0xfa, 0xf6, 0xb3, 0x0b, 0xcc, 0x12, 0xec, 0xc5, 0xe6, 0x30, 0x38,
+ 0x43, 0xc3, 0xd6, 0x7e, 0xd6, 0x7c, 0x99, 0xf5, 0xd5, 0xfd, 0x5d, 0x1c,
+ 0xbd, 0x3d, 0x64, 0xd4, 0xec, 0xd7, 0x47, 0x0c, 0x3e, 0x77, 0xae, 0xf0,
+ 0x8f, 0x66, 0x81, 0x70, 0x88, 0xbc, 0x61, 0xb5, 0x14, 0x71, 0xef, 0xba,
+ 0x68, 0x33, 0xc7, 0x39, 0xdc, 0x4e, 0x70, 0xd7, 0x1a, 0x03, 0x5d, 0x59,
+ 0xa6, 0xe5, 0xd1, 0xe5, 0xe0, 0x6d, 0x31, 0x81, 0x96, 0x3c, 0x38, 0x47,
+ 0xa8, 0x20, 0xbd, 0x45, 0x1f, 0xbe, 0x9f, 0xcf, 0x1a, 0x1f, 0x0f, 0x3b,
+ 0x32, 0x75, 0xd7, 0x56, 0x15, 0xe5, 0xf9, 0xdb, 0xd6, 0x60, 0xc0, 0x83,
+ 0x19, 0x48, 0x58, 0x97, 0x3a, 0x77, 0x1a, 0xf8, 0x1c, 0xc6, 0x5a, 0x68,
+ 0x81, 0xf2, 0xe9, 0xbd, 0x04, 0x22, 0xa4, 0x3e, 0x7c, 0xcc, 0x67, 0x6f,
+ 0x5e, 0x71, 0x06, 0x99, 0x37, 0xf1, 0x89, 0x11, 0x6f, 0x2d, 0x04, 0x2f,
+ 0x85, 0x22, 0x95, 0xdd, 0xf9, 0xf8, 0x27, 0xad, 0xd9, 0x5c, 0x2c, 0xee,
+ 0x31, 0xcb, 0xbb, 0x46, 0x68, 0x45, 0xa7, 0x7f, 0xf5, 0x6f, 0xf2, 0x4e,
+ 0xa3, 0x0c, 0x95, 0x62, 0x4c, 0x07, 0x14, 0xa8, 0x9f, 0x68, 0xd5, 0xa6,
+ 0x93, 0x32, 0xb8, 0xae, 0x74, 0xd8, 0x56, 0xdd, 0x2e, 0x00, 0x36, 0x0d,
+ 0x70, 0x58, 0x9b, 0xe3, 0x0c, 0x41, 0x60, 0x0b, 0x4e, 0x7d, 0x7d, 0x5d,
+ 0x38, 0xe7, 0x18, 0xb1, 0x9d, 0x45, 0xb3, 0x2a, 0x72, 0x96, 0x58, 0x92,
+ 0xb7, 0xe4, 0xf0, 0xf7, 0x06, 0x3d, 0xd4, 0x65, 0xc8, 0xe7, 0x1d, 0x93,
+ 0x19, 0xfc, 0xf2, 0xd9, 0x44, 0xae, 0xd7, 0x64, 0xfd, 0x92, 0x81, 0x30,
+ 0xd8, 0x8f, 0xb5, 0x2e, 0x03, 0x10, 0x9c, 0x18, 0x21, 0x2e, 0xba, 0x20,
+ 0x98, 0xaf, 0x99, 0x22, 0x29, 0x4a, 0xb5, 0x8b, 0x8c, 0x75, 0x46, 0x72,
+ 0xb1, 0x4a, 0x32, 0x23, 0x5d, 0x2e, 0x26, 0x08, 0xca, 0x90, 0x70, 0xd4,
+ 0x7f, 0x67, 0x50, 0xec, 0xf2, 0x3e, 0xd9, 0xd9, 0xed, 0x27, 0xbb, 0xdb,
+ 0x3b, 0xbb, 0x1d, 0x73, 0x58, 0xff, 0x77, 0x0e, 0x8a, 0xda, 0xc5, 0xd7,
+ 0xeb, 0x9f, 0x3a, 0x0b, 0x9f, 0xcf, 0x80, 0x9b, 0x44, 0x33, 0x7f, 0x89,
+ 0xf9, 0xb0, 0x7f, 0x16, 0x40, 0xcc, 0x28, 0x95, 0x0c, 0x38, 0x3b, 0x5c,
+ 0x5b, 0x62, 0x24, 0xb4, 0x12, 0x9b, 0xae, 0x74, 0xd8, 0x04, 0x95, 0x74,
+ 0xa4, 0x5a, 0x2d, 0x22, 0x5f, 0x9c, 0xa5, 0x34, 0x2d, 0x51, 0x3f, 0xb4,
+ 0xb9, 0x47, 0x79, 0x6d, 0xdb, 0xc2, 0xa1, 0x35, 0xbc, 0x37, 0x44, 0xef,
+ 0xaf, 0x8f, 0x0e, 0x2e, 0x0c, 0xef, 0xf0, 0x92, 0x85, 0xa7, 0xf2, 0xfe,
+ 0xd3, 0x8a, 0x31, 0x3e, 0xf8, 0xcc, 0x64, 0xef, 0x3a, 0x23, 0x31, 0x7a,
+ 0x3e, 0x5a, 0x5e, 0xed, 0xfd, 0x25, 0x2d, 0xaf, 0x8a, 0xf9, 0x63, 0xcf,
+ 0x4f, 0x90, 0x50, 0xb6, 0x47, 0x1c, 0x6a, 0xe7, 0xc5, 0xce, 0x13, 0xe4,
+ 0x7f, 0x4f, 0x73, 0x14, 0x04, 0x62, 0x06, 0xd1, 0x9b, 0xf5, 0x04, 0x60,
+ 0x03, 0x69, 0x12, 0x0e, 0x55, 0x63, 0x3e, 0xe9, 0xc9, 0x75, 0x9f, 0x86,
+ 0xcf, 0x4e, 0xf4, 0x59, 0x49, 0x3d, 0xef, 0x69, 0xae, 0x42, 0x8f, 0xd3,
+ 0x34, 0x97, 0x8b, 0x5e, 0x13, 0x22, 0xfe, 0x91, 0xb9, 0x72, 0x17, 0xae,
+ 0xf6, 0xe4, 0x81, 0x03, 0xbe, 0x47, 0x06, 0x51, 0x99, 0xa5, 0x37, 0xbe,
+ 0x76, 0xb2, 0x47, 0xdf, 0x30, 0x97, 0xc7, 0xd9, 0x9b, 0x03, 0x41, 0x30,
+ 0xb5, 0x7c, 0x29, 0x2c, 0x75, 0xe2, 0x4c, 0x53, 0x9b, 0x3c, 0xca, 0x47,
+ 0xfa, 0xe7, 0xdc, 0x86, 0xbd, 0xc9, 0xe8, 0x13, 0x1e, 0xa2, 0x73, 0x27,
+ 0x60, 0x71, 0xfb, 0xcd, 0xd2, 0x3b, 0xac, 0xa8, 0xa1, 0x7e, 0x88, 0x15,
+ 0x4a, 0xde, 0x90, 0x42, 0xb4, 0xe2, 0x71, 0xe0, 0xa1, 0x59, 0xf9, 0x69,
+ 0xb3, 0xee, 0xd0, 0xb8, 0xb9, 0xc8, 0xeb, 0xeb, 0xfd, 0xd3, 0x40, 0xd1,
+ 0x85, 0x22, 0xe9, 0x8d, 0x7a, 0xfc, 0x1c, 0x2b, 0x3a, 0xa8, 0xc3, 0xae,
+ 0xd5, 0x98, 0xfa, 0x5e, 0x45, 0xa9, 0xc1, 0x27, 0x59, 0x36, 0x42, 0x80,
+ 0x7c, 0xa1, 0xf7, 0x09, 0xec, 0x4f, 0xa8, 0x66, 0x30, 0x9d, 0xa4, 0x70,
+ 0x84, 0xea, 0x2d, 0x04, 0x99, 0x0b, 0x6d, 0xe5, 0x1a, 0x0d, 0x45, 0x7b,
+ 0xf3, 0x31, 0xd1, 0x24, 0x0e, 0xcd, 0x56, 0xd1, 0x7a, 0x23, 0x78, 0x8c,
+ 0xb3, 0x92, 0xef, 0x6d, 0x02, 0xc2, 0x9f, 0x69, 0xf0, 0x69, 0x75, 0x43,
+ 0xac, 0x54, 0x1c, 0xf8, 0xd4, 0x7b, 0xae, 0x2e, 0x70, 0x36, 0xfa, 0xe4,
+ 0x12, 0x48, 0xc3, 0xe6, 0x27, 0xe0, 0x20, 0x35, 0x36, 0x4c, 0xae, 0x20,
+ 0xd6, 0x38, 0xa7, 0x55, 0x26, 0xa8, 0x85, 0xc9, 0xc5, 0x5d, 0x21, 0x2a,
+ 0x46, 0x65, 0xe1, 0xb5, 0x12, 0x8a, 0x5a, 0x2d, 0x73, 0x91, 0x22, 0x69,
+ 0xf3, 0xc0, 0x0f, 0x82, 0x2a, 0xb2, 0xeb, 0xce, 0xf2, 0xf5, 0xda, 0xf9,
+ 0x3d, 0xcf, 0x5f, 0x7f, 0x9b, 0x70, 0x3e, 0x3d, 0xf7, 0x71, 0xc0, 0x78,
+ 0xfe, 0x1c, 0xc2, 0x30, 0x83, 0xf6, 0xf7, 0xf5, 0x92, 0xcf, 0xfb, 0xc1,
+ 0x75, 0xba, 0x60, 0x05, 0x68, 0x67, 0x9b, 0xcd, 0x25, 0xdf, 0x5b, 0x66,
+ 0x1e, 0x1f, 0x54, 0xab, 0x72, 0x5f, 0xad, 0x07, 0x96, 0x94, 0x09, 0x17,
+ 0xa9, 0x67, 0x0d, 0xa8, 0x69, 0xa4, 0xa5, 0xeb, 0xb3, 0xda, 0x12, 0x14,
+ 0xff, 0x8a, 0x48, 0xa3, 0xac, 0x26, 0x37, 0x5b, 0x63, 0xfa, 0xe7, 0xc9,
+ 0xf6, 0x16, 0x80, 0x34, 0x6b, 0xd8, 0x34, 0x99, 0x26, 0x77, 0x77, 0x9f,
+ 0x3d, 0xeb, 0x27, 0xeb, 0x6c, 0x65, 0xb4, 0x0e, 0xf8, 0x48, 0xd0, 0xc9,
+ 0x5a, 0xef, 0x2a, 0xa7, 0xbb, 0x55, 0x5e, 0x8e, 0xf9, 0x7f, 0xfc, 0x9a,
+ 0x55, 0x91, 0xbc, 0xd0, 0xac, 0x1b, 0xac, 0xc3, 0x3c, 0xc4, 0xc6, 0x11,
+ 0xb2, 0xe2, 0xef, 0x8e, 0x9c, 0x1d, 0x89, 0x9d, 0x46, 0x8b, 0xac, 0x58,
+ 0x98, 0x77, 0x78, 0xa6, 0xf5, 0x41, 0xd0, 0x7d, 0xe0, 0x52, 0x83, 0x3f,
+ 0x5f, 0xc2, 0xe1, 0x14, 0x04, 0xa1, 0x5a, 0x8e, 0x06, 0x9a, 0x0d, 0x2c,
+ 0x5a, 0x65, 0x4e, 0x27, 0x97, 0xfe, 0x9c, 0x9a, 0xb9, 0x3e, 0xe2, 0xc8,
+ 0x5f, 0x25, 0xeb, 0x4a, 0x5b, 0xfc, 0x63, 0x08, 0xe7, 0x6e, 0x36, 0xe6,
+ 0x69, 0x14, 0xaf, 0xf4, 0x8f, 0x7f, 0xfb, 0x37, 0x6a, 0xf6, 0xdf, 0xb8,
+ 0x95, 0x57, 0x7f, 0xa8, 0xea, 0xeb, 0xe0, 0x99, 0x75, 0x25, 0xf8, 0x23,
+ 0xef, 0xda, 0x46, 0xb8, 0x1a, 0x60, 0x66, 0x91, 0xb4, 0xf6, 0xf6, 0x58,
+ 0x39, 0x72, 0x3f, 0x98, 0x5f, 0x8e, 0x74, 0x42, 0x31, 0x92, 0xba, 0x68,
+ 0x91, 0xaf, 0xd8, 0xed, 0x9c, 0x71, 0x1a, 0x3a, 0x5d, 0x24, 0x40, 0x11,
+ 0xdc, 0x34, 0x11, 0xe3, 0xf0, 0xdd, 0x77, 0x47, 0x67, 0x27, 0xef, 0xde,
+ 0x1e, 0xbe, 0xbb, 0x48, 0xbe, 0xdb, 0x3f, 0x3b, 0xda, 0xff, 0xea, 0x58,
+ 0xb3, 0xdd, 0x79, 0x0a, 0x1c, 0xe4, 0x23, 0xb2, 0x77, 0x0b, 0x05, 0x36,
+ 0x48, 0x44, 0xea, 0xac, 0x1d, 0xd2, 0xaa, 0x8a, 0xfc, 0x41, 0x21, 0xcc,
+ 0xa1, 0x89, 0x7c, 0x40, 0x19, 0xa4, 0x3e, 0x0b, 0x9f, 0x1f, 0xac, 0x22,
+ 0x12, 0x2b, 0x4f, 0xf7, 0x41, 0xfe, 0x34, 0xc7, 0x1f, 0x31, 0x95, 0x1a,
+ 0x7f, 0xf2, 0xb5, 0x00, 0x5d, 0x71, 0x8d, 0xaf, 0x25, 0x05, 0xdf, 0x2a,
+ 0x8d, 0xd8, 0xab, 0xd8, 0x43, 0xb9, 0x5c, 0xfc, 0x18, 0xf6, 0x8f, 0x8f,
+ 0x7d, 0x57, 0x0f, 0x17, 0xa1, 0x51, 0xf8, 0x25, 0x49, 0xde, 0x42, 0xa3,
+ 0xec, 0x18, 0xbc, 0x2a, 0x3c, 0x1e, 0xfb, 0xfc, 0x3e, 0x84, 0x5e, 0xe7,
+ 0xce, 0x68, 0x3b, 0x36, 0x04, 0x37, 0x83, 0xbd, 0xc4, 0x74, 0x80, 0xf2,
+ 0xea, 0xa6, 0x9f, 0xf4, 0xfe, 0xd0, 0xd3, 0x3a, 0xe2, 0x00, 0x0b, 0x96,
+ 0x12, 0x37, 0x9b, 0x7e, 0x50, 0xef, 0x4e, 0xfc, 0x98, 0xd4, 0xf1, 0xe9,
+ 0x06, 0xe0, 0x5e, 0xf4, 0x6e, 0xeb, 0xca, 0xe4, 0x19, 0xc4, 0x8b, 0xfa,
+ 0xc7, 0xb5, 0x0e, 0x84, 0x83, 0x03, 0x50, 0x1a, 0x65, 0xc7, 0x56, 0xe7,
+ 0xbb, 0xd0, 0xda, 0xd2, 0x71, 0x80, 0x09, 0x8d, 0xb9, 0xce, 0xd9, 0xd4,
+ 0xe1, 0x6a, 0x73, 0x99, 0x35, 0x90, 0x96, 0x9a, 0x6d, 0x7a, 0xea, 0x4e,
+ 0x5c, 0x56, 0xca, 0x41, 0x41, 0x55, 0x1f, 0xb7, 0xac, 0xd4, 0x0d, 0x7c,
+ 0x8c, 0x9c, 0x0f, 0x50, 0xe6, 0x13, 0xc5, 0x18, 0xec, 0xa4, 0x8a, 0x21,
+ 0x5c, 0x53, 0x67, 0x07, 0x80, 0x64, 0x9f, 0x73, 0x51, 0x46, 0x5f, 0x4a,
+ 0x03, 0xb1, 0xc3, 0xc4, 0x45, 0x4a, 0x4e, 0xc8, 0x9b, 0xab, 0x10, 0x82,
+ 0x78, 0x5c, 0xc8, 0xe8, 0xe9, 0x55, 0x61, 0xf2, 0x77, 0xea, 0x9c, 0xe6,
+ 0xae, 0xe0, 0x58, 0x20, 0xd3, 0x3b, 0xe0, 0x30, 0x67, 0xb2, 0x84, 0x7b,
+ 0xdd, 0x1c, 0x04, 0x1c, 0x5e, 0xc6, 0x5b, 0x6e, 0x05, 0xa4, 0xab, 0x20,
+ 0x35, 0xdb, 0x67, 0x2f, 0x30, 0x2f, 0x91, 0x20, 0x7d, 0x43, 0xf2, 0x02,
+ 0x7a, 0x9a, 0xa5, 0x72, 0x23, 0xd0, 0x11, 0xc3, 0xe2, 0x07, 0xd1, 0xa4,
+ 0xc6, 0xac, 0xa2, 0x49, 0xb3, 0x5d, 0xd3, 0xe9, 0x99, 0x72, 0x02, 0x99,
+ 0x71, 0xa2, 0x34, 0x19, 0xe5, 0x57, 0x02, 0x09, 0xc0, 0xf9, 0xe7, 0x4c,
+ 0x25, 0x40, 0x78, 0x23, 0xc5, 0x9e, 0xb7, 0x0a, 0xf8, 0x6d, 0x90, 0xdd,
+ 0xaf, 0x8b, 0x69, 0x08, 0x32, 0x66, 0x33, 0xa9, 0xb4, 0x94, 0x9a, 0x99,
+ 0x3e, 0xe1, 0xfa, 0x58, 0xf2, 0x3a, 0x5a, 0x34, 0x9a, 0xa2, 0x93, 0x6b,
+ 0x6c, 0x1e, 0xdb, 0xd4, 0x01, 0x95, 0x38, 0x47, 0x26, 0x90, 0xa5, 0x52,
+ 0x63, 0x1d, 0x2c, 0x6e, 0x99, 0xb9, 0x05, 0xec, 0x68, 0x5c, 0xe6, 0x71,
+ 0xc3, 0xc1, 0x8b, 0x73, 0x2b, 0x63, 0x01, 0x68, 0x65, 0xa2, 0x17, 0x8f,
+ 0x72, 0xb3, 0x1e, 0x90, 0x6e, 0x96, 0x42, 0x67, 0x11, 0x4d, 0xf0, 0xa0,
+ 0x69, 0xa5, 0x36, 0x02, 0xc6, 0x33, 0x27, 0x12, 0x91, 0xc7, 0x44, 0x81,
+ 0xd4, 0xbf, 0x06, 0xae, 0x94, 0x99, 0xfa, 0x9d, 0x37, 0x7d, 0xdc, 0x81,
+ 0x48, 0x01, 0x4c, 0xad, 0x63, 0x2d, 0x26, 0x09, 0x0f, 0x3d, 0x57, 0xc2,
+ 0x04, 0x1e, 0x54, 0xc3, 0xf6, 0x98, 0x58, 0xbe, 0xcd, 0x74, 0x1a, 0xe0,
+ 0x8b, 0x8b, 0x39, 0x22, 0x8d, 0x64, 0x0f, 0x76, 0x0e, 0x0d, 0x85, 0x03,
+ 0x48, 0xe4, 0x8f, 0x60, 0x11, 0x07, 0x13, 0xd1, 0x98, 0x72, 0x96, 0xce,
+ 0x5a, 0x26, 0xcd, 0x80, 0xa1, 0x99, 0x77, 0x3c, 0xbc, 0x98, 0xb4, 0x9c,
+ 0x46, 0x9e, 0xce, 0x44, 0x76, 0xf4, 0xd4, 0x37, 0xbb, 0x97, 0xa8, 0xc3,
+ 0xb5, 0xb5, 0x83, 0xf7, 0xe7, 0x17, 0x27, 0x6f, 0x93, 0x93, 0xf7, 0x17,
+ 0xa7, 0xef, 0x2f, 0xf4, 0xe6, 0x1a, 0x49, 0xcc, 0xb6, 0x44, 0x2e, 0x88,
+ 0x10, 0x60, 0x9b, 0x39, 0x53, 0xff, 0x3e, 0x42, 0x4c, 0x0a, 0xa0, 0x0a,
+ 0x06, 0x80, 0x42, 0x2e, 0x27, 0x0b, 0x50, 0x5b, 0x02, 0x57, 0x8c, 0x25,
+ 0xbf, 0xa3, 0x25, 0x47, 0x3e, 0x2d, 0x0c, 0x79, 0x96, 0xe2, 0x05, 0xb5,
+ 0xc7, 0xce, 0x5a, 0xb3, 0x54, 0xcd, 0x7d, 0x53, 0x8d, 0x81, 0x73, 0xbe,
+ 0x09, 0xe0, 0x14, 0x56, 0xcc, 0x14, 0xdb, 0x8e, 0x37, 0xfd, 0x84, 0x21,
+ 0x9d, 0x5a, 0x6f, 0xd3, 0x0c, 0xd0, 0x16, 0x55, 0x8b, 0x50, 0xa3, 0x66,
+ 0x62, 0x61, 0x98, 0xdf, 0x58, 0x17, 0x34, 0xc3, 0x6b, 0x17, 0x11, 0xcf,
+ 0x51, 0x44, 0x88, 0x04, 0x94, 0x00, 0x0a, 0x0e, 0xb9, 0x13, 0x8d, 0x81,
+ 0xf4, 0x40, 0x76, 0x59, 0x44, 0xb7, 0xec, 0x5d, 0xd2, 0xfb, 0x3e, 0x0b,
+ 0x1b, 0xfc, 0xfd, 0x7f, 0x70, 0xda, 0xe6, 0x07, 0xfb, 0xe4, 0xef, 0xd2,
+ 0xe5, 0x4f, 0xf3, 0x1e, 0x02, 0xe8, 0x9a, 0x9e, 0xf2, 0x6f, 0x0f, 0xcf,
+ 0xbe, 0x3a, 0x3c, 0x3b, 0x39, 0x07, 0x3f, 0x30, 0x73, 0x57, 0x4c, 0xeb,
+ 0x37, 0x59, 0x39, 0xca, 0xca, 0x42, 0xcb, 0x68, 0xd9, 0x5f, 0xcf, 0xb6,
+ 0xbe, 0x3e, 0x3f, 0xdf, 0x3f, 0x3d, 0x72, 0x85, 0x6a, 0x5c, 0x02, 0x99,
+ 0xa8, 0x48, 0x73, 0x49, 0x71, 0xe4, 0xf9, 0xdb, 0x2b, 0x44, 0x17, 0xe3,
+ 0x1b, 0x09, 0x2c, 0x8e, 0x7c, 0xd2, 0x66, 0x57, 0x67, 0x67, 0xb4, 0xe6,
+ 0x15, 0x72, 0xc3, 0x06, 0x04, 0x15, 0x82, 0xcd, 0x0b, 0x2a, 0x3c, 0xfb,
+ 0x02, 0xfa, 0x2e, 0x02, 0xef, 0xa6, 0x1c, 0x0d, 0x88, 0xda, 0x6f, 0xac,
+ 0x6e, 0xb3, 0xe4, 0x41, 0x10, 0xab, 0x94, 0x00, 0x69, 0x6f, 0x6b, 0x20,
+ 0x99, 0x2e, 0xaf, 0xb7, 0x6e, 0xf8, 0x7c, 0x70, 0x11, 0x95, 0xe9, 0x50,
+ 0xb8, 0xbb, 0x1c, 0x28, 0x8b, 0x7a, 0x65, 0x16, 0xfb, 0x10, 0x38, 0x05,
+ 0xf5, 0xe6, 0x2a, 0x1f, 0x8a, 0xbd, 0x8b, 0x3e, 0x79, 0xea, 0x50, 0xba,
+ 0xc2, 0x32, 0xe2, 0x97, 0x24, 0x80, 0x2f, 0xee, 0x26, 0x7a, 0x89, 0x00,
+ 0xa4, 0x7a, 0x2e, 0xee, 0x09, 0xe1, 0xe1, 0x6d, 0x07, 0x15, 0x57, 0x67,
+ 0x44, 0xc2, 0x86, 0x86, 0xa3, 0x27, 0xa3, 0x69, 0x3a, 0xbf, 0xc1, 0x6d,
+ 0x86, 0xfb, 0x89, 0x55, 0x4e, 0xc3, 0x9e, 0xe2, 0xaa, 0x99, 0xf0, 0x47,
+ 0x2a, 0x1c, 0x04, 0x84, 0xc0, 0x29, 0x33, 0xb7, 0x7b, 0xb1, 0xe5, 0x3b,
+ 0x88, 0xad, 0xc0, 0xf3, 0x86, 0xe3, 0xe4, 0x17, 0x81, 0x4d, 0x47, 0x87,
+ 0xc7, 0x74, 0x31, 0xb9, 0x24, 0x13, 0xa8, 0xe8, 0xd9, 0x94, 0x4d, 0xc1,
+ 0x16, 0x11, 0x24, 0x79, 0x95, 0x39, 0x18, 0x99, 0x70, 0x0f, 0xc3, 0x4f,
+ 0x87, 0xff, 0x08, 0xe4, 0x82, 0xf4, 0xd1, 0xca, 0x55, 0x19, 0x51, 0xce,
+ 0x2d, 0x4c, 0x0c, 0xe0, 0xa0, 0xbe, 0xe8, 0x48, 0x58, 0xfe, 0x46, 0xc3,
+ 0xed, 0x0e, 0x7c, 0x3c, 0x90, 0xab, 0x07, 0x26, 0x83, 0xf0, 0x62, 0xa9,
+ 0xf3, 0x30, 0x36, 0xb2, 0x5b, 0x56, 0x6e, 0x93, 0xbc, 0xde, 0x65, 0x04,
+ 0x10, 0x4c, 0xb3, 0x89, 0xfa, 0x3b, 0x1c, 0x1c, 0x90, 0x85, 0x2c, 0x37,
+ 0xc3, 0x84, 0x6d, 0xe0, 0x12, 0x0d, 0xc0, 0xc6, 0xdb, 0x69, 0x6d, 0x4e,
+ 0x43, 0x84, 0xb8, 0xea, 0x0d, 0x5c, 0x4f, 0xc0, 0x72, 0xca, 0x06, 0x52,
+ 0x6d, 0x18, 0x9d, 0x2b, 0x88, 0x15, 0xb0, 0x0d, 0x4a, 0xbe, 0x06, 0xb4,
+ 0x18, 0x27, 0xdf, 0x0e, 0xde, 0xf1, 0x75, 0x51, 0x0c, 0x46, 0x4b, 0xe8,
+ 0x65, 0x41, 0x9d, 0x2e, 0xc9, 0xe1, 0x24, 0x75, 0x4d, 0xc0, 0xd4, 0xf0,
+ 0x3d, 0xfb, 0xa3, 0x90, 0x1d, 0x2f, 0x2e, 0x2a, 0xa4, 0x4b, 0x36, 0x81,
+ 0x76, 0x1c, 0xbc, 0x8a, 0xe4, 0x20, 0xf8, 0x02, 0xc2, 0x6e, 0x82, 0xba,
+ 0xc9, 0x2e, 0x5a, 0x70, 0xae, 0x55, 0x5e, 0xe1, 0x59, 0x69, 0x46, 0x5c,
+ 0xd7, 0x0e, 0xef, 0xfe, 0x02, 0x62, 0x42, 0xa6, 0x28, 0xf0, 0x16, 0x4a,
+ 0x6d, 0x89, 0x1b, 0xb7, 0x35, 0x57, 0x96, 0x12, 0x64, 0x88, 0x74, 0x2a,
+ 0x65, 0x3a, 0x56, 0x5e, 0x25, 0x72, 0x98, 0xea, 0x8b, 0x8b, 0x3f, 0x9f,
+ 0x1e, 0xbe, 0xb2, 0x37, 0x1f, 0xda, 0x33, 0x01, 0x4c, 0x43, 0xcc, 0x4c,
+ 0xa6, 0x00, 0xa5, 0x41, 0x6d, 0x6c, 0x22, 0xb2, 0x41, 0x6d, 0xbe, 0x7c,
+ 0xe9, 0x66, 0x90, 0xfc, 0xf0, 0xfa, 0xe8, 0xfc, 0xf4, 0xf8, 0xe4, 0xe0,
+ 0xd5, 0xcb, 0x1f, 0x8c, 0x25, 0x7f, 0xc1, 0x2e, 0x02, 0x91, 0xd3, 0xdc,
+ 0x67, 0x1e, 0xd0, 0x41, 0xdf, 0x7b, 0x77, 0xf8, 0xfd, 0x07, 0xd2, 0x0e,
+ 0x5e, 0x31, 0xac, 0x7b, 0xff, 0x36, 0x9d, 0xea, 0x4b, 0xac, 0x62, 0x75,
+ 0xc8, 0x76, 0xc3, 0x26, 0x02, 0x5f, 0x7b, 0x61, 0x5d, 0x79, 0x52, 0x9f,
+ 0xa7, 0x70, 0x6f, 0x61, 0x74, 0x41, 0x25, 0xaa, 0xb4, 0x91, 0x56, 0xdb,
+ 0x51, 0x4c, 0xd8, 0x5f, 0xff, 0xbd, 0x5a, 0x62, 0x2a, 0x39, 0x84, 0x20,
+ 0xf4, 0xcc, 0x23, 0x6e, 0x55, 0xbf, 0xf1, 0xf1, 0xbc, 0x0a, 0x9f, 0x5c,
+ 0x72, 0x00, 0x8b, 0xc3, 0x9f, 0xd4, 0x0a, 0xd5, 0xf0, 0x79, 0x2b, 0x48,
+ 0xa5, 0x22, 0x2f, 0x71, 0x08, 0xad, 0x45, 0xd3, 0x1b, 0x1f, 0x53, 0x11,
+ 0xc6, 0x8d, 0x25, 0xb5, 0x5a, 0xb9, 0x28, 0xc8, 0x73, 0x7a, 0x78, 0x76,
+ 0x7e, 0x74, 0x7e, 0xc1, 0x6a, 0x94, 0x16, 0x6e, 0x54, 0x1b, 0xb4, 0x55,
+ 0xd5, 0x04, 0x66, 0x43, 0x13, 0x6f, 0x34, 0x2c, 0x16, 0xd2, 0x38, 0xd1,
+ 0x8e, 0xcd, 0x35, 0x93, 0x38, 0xf9, 0x06, 0x90, 0xcc, 0x50, 0x16, 0x44,
+ 0x05, 0x35, 0x37, 0xbd, 0xb4, 0x03, 0x5c, 0x28, 0x69, 0xb4, 0x6a, 0x66,
+ 0xa0, 0xde, 0x0d, 0x76, 0x67, 0x9a, 0x8f, 0x82, 0x4a, 0xd9, 0x4d, 0x17,
+ 0x32, 0x47, 0x27, 0x28, 0x42, 0x47, 0x78, 0x84, 0xcc, 0x1e, 0xee, 0x33,
+ 0xa3, 0xb5, 0x96, 0xaf, 0x5e, 0x6b, 0x9a, 0xd5, 0x18, 0xe6, 0xaf, 0x3a,
+ 0x45, 0x15, 0xca, 0x49, 0x58, 0xb3, 0x1c, 0x9f, 0x06, 0x41, 0xa8, 0x0a,
+ 0xfa, 0x04, 0xbc, 0x5a, 0x65, 0xd9, 0xcc, 0x94, 0x73, 0xc9, 0x44, 0x63,
+ 0x43, 0x0b, 0x49, 0x2d, 0xc8, 0xac, 0x47, 0x9c, 0x90, 0xce, 0x2c, 0x12,
+ 0x41, 0x54, 0x74, 0xbc, 0xe2, 0x14, 0x36, 0x20, 0x6b, 0x4d, 0x58, 0xde,
+ 0x82, 0x05, 0x2e, 0xec, 0xcc, 0xae, 0x53, 0x5e, 0xc1, 0xd1, 0x32, 0xac,
+ 0x04, 0xe7, 0x46, 0x2f, 0x45, 0x49, 0xb0, 0xf0, 0x88, 0x90, 0x4c, 0x4b,
+ 0x40, 0x57, 0xd6, 0x8a, 0x14, 0x6f, 0x8a, 0x8f, 0x86, 0x3b, 0x0e, 0x9b,
+ 0x20, 0x3e, 0x46, 0x97, 0x56, 0xad, 0xf4, 0xa1, 0x15, 0x0d, 0x4a, 0x47,
+ 0x32, 0xf9, 0x96, 0x99, 0xc5, 0x2d, 0x89, 0x99, 0xa1, 0x62, 0x87, 0xc3,
+ 0x7c, 0xec, 0x2e, 0x63, 0x4e, 0x3a, 0x62, 0xff, 0x62, 0xa9, 0x00, 0x49,
+ 0xc4, 0xfe, 0xd8, 0xb2, 0x8c, 0x7a, 0x93, 0x28, 0xc4, 0xcc, 0x5e, 0x37,
+ 0x03, 0xcf, 0xf3, 0x61, 0xdc, 0xb2, 0xdc, 0x01, 0x59, 0x89, 0x79, 0xfd,
+ 0x5e, 0x3b, 0x74, 0x09, 0xf2, 0xb6, 0x59, 0x7d, 0xc9, 0xb7, 0x4a, 0x91,
+ 0xde, 0x63, 0x76, 0xdd, 0x20, 0x4d, 0xb4, 0xd2, 0xe4, 0x5b, 0xe7, 0x9e,
+ 0x06, 0xc3, 0x6b, 0x14, 0xdd, 0xe5, 0xd9, 0x35, 0x5c, 0x83, 0x24, 0x5f,
+ 0x2e, 0x50, 0x41, 0x69, 0xac, 0x10, 0xf2, 0x08, 0xda, 0x75, 0x0d, 0xda,
+ 0x25, 0xe2, 0x17, 0x8b, 0x56, 0xf5, 0xed, 0xfb, 0xe3, 0x8b, 0xa3, 0xd3,
+ 0xd0, 0xfd, 0x98, 0x7c, 0x7f, 0x74, 0xf1, 0x0d, 0x49, 0xed, 0xe7, 0x47,
+ 0xef, 0xbe, 0x3e, 0x66, 0x1f, 0xcf, 0xdb, 0xb7, 0xfb, 0xef, 0x18, 0x5d,
+ 0xe0, 0x1d, 0x22, 0x1b, 0xf7, 0xa1, 0x38, 0x30, 0x3b, 0xa2, 0x25, 0x66,
+ 0xda, 0xe1, 0xbc, 0xf3, 0x7e, 0xec, 0x6a, 0x68, 0x1d, 0x3f, 0x29, 0xaa,
+ 0x3c, 0x6f, 0x2e, 0xd2, 0x1a, 0x4a, 0x64, 0x43, 0x33, 0xb8, 0x67, 0xc3,
+ 0x0e, 0x8e, 0x2d, 0x2b, 0x5b, 0xbc, 0xd0, 0x6d, 0xec, 0x78, 0xe4, 0x38,
+ 0x8a, 0x84, 0x0e, 0x37, 0xba, 0xdc, 0xdd, 0xde, 0x7d, 0x81, 0x1d, 0x75,
+ 0xc8, 0xb3, 0xd0, 0x63, 0x48, 0x66, 0x9a, 0xab, 0x5e, 0x23, 0xf7, 0x65,
+ 0x33, 0xe7, 0x80, 0x7a, 0xc4, 0x90, 0x10, 0x47, 0x50, 0x78, 0x8b, 0x20,
+ 0x6b, 0x9c, 0xac, 0x34, 0x9f, 0x1d, 0x87, 0x17, 0xea, 0xb0, 0x51, 0x72,
+ 0xcc, 0xc2, 0x03, 0xaf, 0x8a, 0xcc, 0x9f, 0xdc, 0xc1, 0x89, 0x35, 0x63,
+ 0xe6, 0x5f, 0xa8, 0x61, 0x72, 0xb9, 0x0c, 0x98, 0xaf, 0x0d, 0x68, 0x4b,
+ 0x36, 0x5d, 0x99, 0x21, 0x35, 0x9f, 0xed, 0x89, 0x58, 0xe9, 0xb0, 0x95,
+ 0xad, 0x3a, 0x1f, 0x35, 0x67, 0x2d, 0x6b, 0x28, 0x0a, 0xe2, 0xb1, 0x35,
+ 0xad, 0x49, 0xe7, 0x0c, 0x6e, 0x69, 0x8f, 0x35, 0xb2, 0xb2, 0xe5, 0xbe,
+ 0x3b, 0x31, 0xd3, 0x9e, 0xa5, 0xb5, 0xb9, 0xba, 0x6f, 0xde, 0x73, 0x8a,
+ 0xca, 0x6a, 0x45, 0x31, 0xcc, 0x3e, 0x66, 0xec, 0xe4, 0xe4, 0x5f, 0xff,
+ 0xb2, 0xb8, 0x0a, 0x33, 0xde, 0xa4, 0xae, 0xf4, 0xa2, 0x6b, 0x67, 0x15,
+ 0xc8, 0x59, 0xc4, 0x22, 0xad, 0x65, 0xd7, 0x18, 0x81, 0x16, 0xa8, 0xdb,
+ 0x59, 0xd5, 0xa1, 0x7e, 0xbf, 0x1b, 0x7f, 0xbf, 0x2b, 0x66, 0xc7, 0xa3,
+ 0xd3, 0xdb, 0xe7, 0x0e, 0x00, 0x55, 0xf2, 0xb8, 0x43, 0xf1, 0xcd, 0x84,
+ 0x02, 0xa6, 0x30, 0x7e, 0x54, 0xee, 0x9c, 0x54, 0x78, 0xa2, 0xd8, 0xfe,
+ 0x39, 0x82, 0x6c, 0x59, 0x22, 0x3f, 0x15, 0x8f, 0xc0, 0x4c, 0x2c, 0x61,
+ 0xbf, 0x08, 0xb2, 0x03, 0x9f, 0xe2, 0xeb, 0x8a, 0x1a, 0xa4, 0xef, 0x9f,
+ 0xba, 0x58, 0x7c, 0xcf, 0xd3, 0x50, 0xa3, 0x4d, 0xb3, 0xa1, 0x06, 0xf9,
+ 0xe2, 0xd6, 0x8a, 0xfc, 0xd2, 0xaf, 0xcf, 0x5d, 0x7d, 0x9e, 0xaa, 0xe1,
+ 0xa3, 0x6a, 0x80, 0x0d, 0x1b, 0xf3, 0xc7, 0xe0, 0x10, 0x16, 0xc9, 0x9c,
+ 0xc1, 0x2b, 0x19, 0xad, 0x71, 0x65, 0xcd, 0x80, 0xec, 0xa0, 0x4a, 0x29,
+ 0x0c, 0xcc, 0x53, 0x64, 0xc6, 0x82, 0x1f, 0x05, 0xcc, 0x25, 0x04, 0xfa,
+ 0xd7, 0x5d, 0xff, 0x71, 0x77, 0x7b, 0x7b, 0x67, 0x6f, 0xe7, 0xf3, 0x17,
+ 0xdb, 0x7b, 0x3b, 0x3b, 0x3b, 0xbb, 0x7b, 0x3b, 0x7b, 0x7b, 0xbb, 0xdb,
+ 0x3f, 0x6f, 0xb1, 0xfd, 0xe8, 0x36, 0xcf, 0xee, 0xcc, 0x31, 0x25, 0xb9,
+ 0x78, 0x20, 0x6b, 0x29, 0xd6, 0xae, 0x1a, 0xbc, 0xea, 0xb9, 0x26, 0xf9,
+ 0x38, 0x54, 0x09, 0x09, 0x99, 0x17, 0x04, 0xb9, 0x85, 0xcf, 0x34, 0xc5,
+ 0x19, 0x0c, 0x50, 0xae, 0x31, 0xaa, 0xbf, 0x2e, 0x79, 0xa6, 0x23, 0x16,
+ 0x07, 0x20, 0xd3, 0x54, 0x2e, 0xaf, 0xef, 0x6a, 0x5a, 0x8c, 0x46, 0xc8,
+ 0x5c, 0x70, 0xa9, 0xad, 0xc3, 0x84, 0xa1, 0x54, 0x6f, 0x84, 0x24, 0xd4,
+ 0x73, 0x80, 0xa0, 0x42, 0x39, 0xe8, 0x7e, 0x75, 0x44, 0xf0, 0xd2, 0x40,
+ 0xea, 0x71, 0xc1, 0x65, 0x05, 0x26, 0xcc, 0x94, 0x68, 0x91, 0x4a, 0x97,
+ 0xf2, 0x92, 0x5c, 0x66, 0x9f, 0x6f, 0xef, 0xed, 0x71, 0xe5, 0x8f, 0xdf,
+ 0xef, 0xf4, 0x35, 0x1e, 0x34, 0x0c, 0x72, 0xef, 0xbb, 0xeb, 0x49, 0xda,
+ 0x60, 0xf5, 0x23, 0x9c, 0xe7, 0x7c, 0x39, 0xcb, 0x4a, 0x52, 0x44, 0xb8,
+ 0x76, 0x2c, 0x02, 0x22, 0x61, 0xf4, 0x16, 0x88, 0x35, 0x00, 0xb2, 0xb4,
+ 0x82, 0xf1, 0xf9, 0x46, 0x10, 0xa8, 0x58, 0x97, 0x84, 0x2e, 0x70, 0x41,
+ 0x7e, 0x8a, 0xae, 0x6d, 0x54, 0xbf, 0x81, 0x1d, 0x5f, 0x52, 0x59, 0x24,
+ 0x89, 0x47, 0xee, 0x5b, 0xe5, 0x0c, 0x38, 0x5c, 0x73, 0xa9, 0x68, 0xca,
+ 0x8f, 0x8b, 0x0c, 0x0f, 0x8b, 0x49, 0x20, 0xdc, 0x6a, 0xfe, 0xce, 0x8f,
+ 0xc1, 0x64, 0x77, 0x9f, 0xed, 0xfc, 0x2c, 0xe1, 0x8a, 0x7c, 0x20, 0xfc,
+ 0xaa, 0x69, 0x35, 0xb8, 0x49, 0x98, 0xa1, 0x61, 0x84, 0xb4, 0x91, 0x0d,
+ 0xaf, 0x86, 0x26, 0x55, 0xa8, 0xb5, 0xb1, 0x1f, 0x06, 0x8d, 0x0b, 0x4c,
+ 0xb9, 0xd4, 0x29, 0x86, 0x9e, 0x66, 0x06, 0x25, 0x33, 0x08, 0x8b, 0x31,
+ 0xb3, 0x51, 0xd6, 0x87, 0x6e, 0x98, 0xc3, 0x8b, 0x7d, 0xba, 0x3c, 0xbe,
+ 0x8d, 0x15, 0xfd, 0xb7, 0x19, 0x69, 0xe5, 0xbc, 0xd9, 0x1b, 0x38, 0x0f,
+ 0xb7, 0x0e, 0x1c, 0x98, 0xd7, 0xee, 0x69, 0xb2, 0xc1, 0x3e, 0x8b, 0x67,
+ 0x9f, 0x3f, 0x7b, 0xba, 0x29, 0x95, 0x18, 0xe4, 0xb5, 0x8c, 0xf3, 0x43,
+ 0x60, 0x95, 0x54, 0x70, 0x1a, 0x36, 0x27, 0x3b, 0x96, 0xf4, 0xfe, 0xec,
+ 0x48, 0x8e, 0xf4, 0xb5, 0x60, 0x08, 0x88, 0xd2, 0xdb, 0x06, 0x93, 0xc3,
+ 0x7d, 0x1b, 0x08, 0x19, 0xb3, 0x9c, 0x81, 0x0e, 0x91, 0x7b, 0xcd, 0x17,
+ 0xa3, 0xcb, 0xfd, 0xc7, 0x0d, 0x4b, 0x07, 0xb4, 0x40, 0x7d, 0x42, 0x2d,
+ 0xfb, 0x84, 0xc1, 0x00, 0x19, 0x91, 0x81, 0x59, 0x95, 0xce, 0x9c, 0x06,
+ 0xc6, 0x7a, 0x90, 0xf0, 0x23, 0xe1, 0xfe, 0x2d, 0x30, 0xee, 0x4d, 0xf1,
+ 0xf8, 0x43, 0x28, 0x64, 0x32, 0xa4, 0x07, 0x2d, 0x74, 0x94, 0x47, 0xdc,
+ 0xc8, 0x46, 0xf3, 0xd2, 0x66, 0x80, 0xe9, 0x64, 0x70, 0x2e, 0xca, 0x8a,
+ 0xdc, 0x12, 0x8a, 0x3b, 0xbb, 0x86, 0x65, 0x31, 0x6f, 0x98, 0x7c, 0x34,
+ 0x97, 0x1e, 0x39, 0xed, 0x08, 0x39, 0x9e, 0xd1, 0x75, 0x54, 0xde, 0xab,
+ 0x84, 0x0d, 0x35, 0xc1, 0x95, 0x53, 0x6b, 0x05, 0x04, 0x08, 0x6a, 0x44,
+ 0x18, 0x49, 0xef, 0x40, 0x53, 0x4c, 0x69, 0x6e, 0x0c, 0xa0, 0xc1, 0xf6,
+ 0x07, 0x33, 0xfb, 0x2a, 0x88, 0x97, 0x09, 0xd3, 0xcb, 0xec, 0x77, 0x7b,
+ 0x2e, 0x08, 0xa5, 0x4c, 0xdb, 0x13, 0x5b, 0x31, 0x34, 0x01, 0xd4, 0x44,
+ 0xf8, 0x94, 0xd3, 0x7e, 0x36, 0x30, 0x92, 0xad, 0xad, 0xcd, 0x15, 0xa3,
+ 0xd1, 0xaf, 0xbb, 0x7a, 0x3f, 0x05, 0x26, 0x49, 0x90, 0xd1, 0x49, 0x7b,
+ 0xde, 0x6c, 0x9c, 0x97, 0x36, 0xaf, 0x78, 0x27, 0x27, 0x1a, 0x17, 0x2b,
+ 0x66, 0x54, 0x53, 0xaf, 0x64, 0xf0, 0xc6, 0xbc, 0x9a, 0x93, 0xd0, 0x50,
+ 0x1c, 0xc3, 0x88, 0x92, 0xa2, 0xd2, 0xe2, 0xde, 0x1c, 0x26, 0xfb, 0x4c,
+ 0x0d, 0x8d, 0x8e, 0x83, 0x21, 0x9b, 0x3d, 0xd7, 0x60, 0xcf, 0x4d, 0x88,
+ 0x75, 0xe6, 0xbc, 0x7e, 0xf0, 0xa5, 0x89, 0x79, 0x06, 0x09, 0xe0, 0x8c,
+ 0xbd, 0xa3, 0x4c, 0xe0, 0x4f, 0x1c, 0xe7, 0x0c, 0xe0, 0x8c, 0xf3, 0x79,
+ 0xa3, 0x4e, 0xa8, 0x36, 0x02, 0x47, 0xb7, 0x9b, 0x04, 0x90, 0x12, 0x4b,
+ 0x43, 0xe0, 0x0d, 0x6b, 0x07, 0x02, 0x81, 0x40, 0x83, 0xda, 0x45, 0xb0,
+ 0x76, 0x44, 0x2c, 0xde, 0xd6, 0x91, 0x90, 0x57, 0x63, 0x3d, 0xfa, 0x42,
+ 0xf1, 0x12, 0xc4, 0x20, 0xf1, 0xb6, 0x74, 0x48, 0x98, 0x61, 0xec, 0x1f,
+ 0x1d, 0x73, 0x54, 0xdc, 0x31, 0xa9, 0x78, 0xe7, 0x26, 0x2a, 0x21, 0x4a,
+ 0x14, 0xf1, 0x7a, 0xf3, 0x9c, 0xc5, 0xf5, 0xbe, 0xab, 0x37, 0x62, 0xc9,
+ 0x52, 0xd0, 0x5b, 0xd8, 0xb9, 0x27, 0xaa, 0xbf, 0x62, 0x04, 0xd2, 0x6e,
+ 0x91, 0xbc, 0x54, 0x89, 0xd1, 0x16, 0xf8, 0xbb, 0x8c, 0x4c, 0x0f, 0x47,
+ 0x2a, 0x54, 0x6a, 0x61, 0xd3, 0x28, 0x77, 0x54, 0x66, 0xd3, 0xec, 0x56,
+ 0xad, 0xab, 0x82, 0x66, 0xfa, 0xb5, 0xfa, 0x30, 0xa5, 0xde, 0x69, 0xed,
+ 0x5d, 0xb1, 0x0d, 0x37, 0x29, 0xf7, 0xb9, 0x25, 0x98, 0x30, 0x1e, 0xea,
+ 0x83, 0xbb, 0xf7, 0x10, 0xfc, 0xe6, 0x32, 0xe6, 0xf7, 0x06, 0xac, 0xe3,
+ 0x6a, 0x68, 0xeb, 0xfb, 0x4a, 0xd1, 0x1c, 0xda, 0xb1, 0xe2, 0x62, 0x2b,
+ 0xb4, 0x8a, 0x79, 0x62, 0x7c, 0xef, 0x1b, 0x48, 0xb2, 0x78, 0x0c, 0xf8,
+ 0xe2, 0xe9, 0xb3, 0xa1, 0x56, 0x2a, 0xc0, 0x93, 0x42, 0xc6, 0xe5, 0x30,
+ 0xfa, 0x92, 0x38, 0x0a, 0xda, 0x28, 0xa6, 0xf4, 0x27, 0xc2, 0xa9, 0x24,
+ 0xc0, 0x92, 0x9e, 0x65, 0x90, 0xd7, 0x20, 0xa2, 0x95, 0xfe, 0x94, 0x64,
+ 0x08, 0xfd, 0x0b, 0x4d, 0x95, 0x4b, 0x60, 0x09, 0xf7, 0xe5, 0x32, 0x64,
+ 0xa7, 0x63, 0x3d, 0x1e, 0xba, 0xd1, 0xab, 0xcf, 0x5f, 0xc6, 0xff, 0xda,
+ 0x5c, 0xd2, 0x26, 0x86, 0x14, 0xa5, 0xad, 0xae, 0xec, 0xc2, 0x48, 0x0a,
+ 0x1c, 0x7e, 0xb5, 0x64, 0x67, 0x98, 0x2b, 0xdf, 0xc3, 0xa3, 0x98, 0xf1,
+ 0x55, 0x94, 0x49, 0x2d, 0x51, 0xd7, 0x38, 0x6b, 0x74, 0x4b, 0xda, 0x5d,
+ 0x69, 0xfd, 0xb8, 0xb8, 0xe3, 0x42, 0xa8, 0x97, 0x97, 0xf9, 0x98, 0xab,
+ 0xdb, 0x78, 0xcc, 0x60, 0x66, 0xf1, 0xf2, 0xe0, 0xcc, 0x6a, 0x2f, 0xd1,
+ 0xdc, 0x92, 0xc5, 0x72, 0x34, 0xa5, 0xbb, 0xda, 0xa2, 0xd9, 0xe9, 0x50,
+ 0x61, 0x95, 0x48, 0xd9, 0x42, 0x73, 0xe2, 0xcb, 0x87, 0xbe, 0xd9, 0x8a,
+ 0xa0, 0xd6, 0xea, 0xf0, 0x2c, 0x81, 0xcf, 0x50, 0x11, 0x96, 0xc3, 0x8c,
+ 0x67, 0xc5, 0xdc, 0x92, 0x61, 0x96, 0x95, 0x80, 0x49, 0x5a, 0x29, 0xf9,
+ 0x35, 0xf1, 0x4c, 0xe4, 0x53, 0x85, 0x6c, 0x57, 0xcd, 0x1c, 0x6f, 0x84,
+ 0x93, 0x99, 0x0c, 0x16, 0xd7, 0x0b, 0xdb, 0x69, 0x93, 0x87, 0x44, 0x58,
+ 0xd2, 0xf4, 0x0b, 0x9c, 0xbc, 0xd3, 0x6f, 0x4e, 0x87, 0xc9, 0x21, 0xb7,
+ 0x24, 0x63, 0x52, 0x39, 0x17, 0x26, 0x1a, 0xfa, 0x8e, 0x26, 0x7b, 0xc5,
+ 0xf7, 0xd7, 0x49, 0xc9, 0x7f, 0xa1, 0x35, 0xfd, 0x52, 0xac, 0xb2, 0xf8,
+ 0xb6, 0xd9, 0x2b, 0x35, 0x64, 0x41, 0xd6, 0xa7, 0xf8, 0x9d, 0x8e, 0x0a,
+ 0x49, 0x5f, 0x6e, 0x9b, 0x7c, 0x0f, 0x45, 0xd9, 0x80, 0xde, 0x91, 0x37,
+ 0x13, 0x12, 0xca, 0x20, 0x5a, 0x2d, 0xee, 0xb1, 0x7f, 0x01, 0x6f, 0x14,
+ 0xf1, 0x53, 0x1a, 0x08, 0x48, 0x4b, 0xc9, 0xcf, 0x85, 0xef, 0xc9, 0xb9,
+ 0x2a, 0x05, 0x74, 0xa6, 0xcc, 0x34, 0xd8, 0xb1, 0x50, 0x2f, 0xa9, 0x18,
+ 0x34, 0xaa, 0xac, 0x75, 0x5c, 0x03, 0xf5, 0xcd, 0xbe, 0x60, 0xad, 0x9b,
+ 0xc7, 0x42, 0x42, 0x0b, 0x6d, 0xc1, 0x70, 0xed, 0xff, 0x06, 0xef, 0x88,
+ 0xd8, 0x9f, 0x70, 0x88, 0x02, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
diff --git a/src/tool_metalink.c b/src/tool_metalink.c
index 3573b058b..5873adf6a 100644
--- a/src/tool_metalink.c
+++ b/src/tool_metalink.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -29,14 +29,9 @@
# include <fcntl.h>
#endif
-#ifdef USE_SSLEAY
-# ifdef USE_OPENSSL
-# include <openssl/md5.h>
-# include <openssl/sha.h>
-# else
-# include <md5.h>
-# include <sha.h>
-# endif
+#ifdef USE_OPENSSL
+# include <openssl/md5.h>
+# include <openssl/sha.h>
#elif defined(USE_GNUTLS_NETTLE)
# include <nettle/md5.h>
# include <nettle/sha.h>
@@ -381,7 +376,7 @@ static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
sha256_finish(ctx, digest);
}
-#elif defined(_WIN32) && !defined(USE_SSLEAY)
+#elif defined(_WIN32) && !defined(USE_OPENSSL)
static void win32_crypto_final(struct win32_crypto_hash *ctx,
unsigned char *digest,
@@ -626,6 +621,10 @@ static int check_hash(const char *filename,
}
result = malloc(digest_def->dparams->digest_resultlen);
+ if(!result) {
+ close(fd);
+ return -1;
+ }
while(1) {
unsigned char buf[4096];
ssize_t len = read(fd, buf, sizeof(buf));
@@ -681,12 +680,17 @@ static metalink_checksum *new_metalink_checksum_from_hex_digest
size_t i;
size_t len = strlen(hex_digest);
digest = malloc(len/2);
+ if(!digest)
+ return 0;
+
for(i = 0; i < len; i += 2) {
digest[i/2] = hex_to_uint(hex_digest+i);
}
chksum = malloc(sizeof(metalink_checksum));
- chksum->digest_def = digest_def;
- chksum->digest = digest;
+ if(chksum) {
+ chksum->digest_def = digest_def;
+ chksum->digest = digest;
+ }
return chksum;
}
@@ -694,8 +698,14 @@ static metalink_resource *new_metalink_resource(const char *url)
{
metalink_resource *res;
res = malloc(sizeof(metalink_resource));
- res->next = NULL;
- res->url = strdup(url);
+ if(res) {
+ res->next = NULL;
+ res->url = strdup(url);
+ if(!res->url) {
+ free(res);
+ return NULL;
+ }
+ }
return res;
}
@@ -720,8 +730,15 @@ static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
{
metalinkfile *f;
f = (metalinkfile*)malloc(sizeof(metalinkfile));
+ if(!f)
+ return NULL;
+
f->next = NULL;
f->filename = strdup(fileinfo->name);
+ if(!f->filename) {
+ free(f);
+ return NULL;
+ }
f->checksum = NULL;
f->resource = NULL;
if(fileinfo->checksums) {
@@ -822,8 +839,10 @@ int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
url = new_getout(config);
if(url) {
- metalinkfile *mlfile;
- mlfile = new_metalinkfile(*files);
+ metalinkfile *mlfile = new_metalinkfile(*files);
+ if(!mlfile)
+ break;
+
if(!mlfile->checksum) {
warnings = TRUE;
fprintf(config->global->errors,
diff --git a/src/tool_msgs.c b/src/tool_msgs.c
index 3311b55f5..38de977aa 100644
--- a/src/tool_msgs.c
+++ b/src/tool_msgs.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -38,9 +38,9 @@
* mute (--silent) was selected.
*/
-void warnf(struct OperationConfig *config, const char *fmt, ...)
+void warnf(struct GlobalConfig *config, const char *fmt, ...)
{
- if(!config->global->mute) {
+ if(!config->mute) {
va_list ap;
int len;
char *ptr;
@@ -52,7 +52,7 @@ void warnf(struct OperationConfig *config, const char *fmt, ...)
ptr = print_buffer;
while(len > 0) {
- fputs(WARN_PREFIX, config->global->errors);
+ fputs(WARN_PREFIX, config->errors);
if(len > (int)WARN_TEXTWIDTH) {
int cut = WARN_TEXTWIDTH-1;
@@ -65,13 +65,13 @@ void warnf(struct OperationConfig *config, const char *fmt, ...)
max text width then! */
cut = WARN_TEXTWIDTH-1;
- (void)fwrite(ptr, cut + 1, 1, config->global->errors);
- fputs("\n", config->global->errors);
+ (void)fwrite(ptr, cut + 1, 1, config->errors);
+ fputs("\n", config->errors);
ptr += cut+1; /* skip the space too */
len -= cut;
}
else {
- fputs(ptr, config->global->errors);
+ fputs(ptr, config->errors);
len = 0;
}
}
diff --git a/src/tool_msgs.h b/src/tool_msgs.h
index 15754690f..bf97bfba7 100644
--- a/src/tool_msgs.h
+++ b/src/tool_msgs.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -23,7 +23,7 @@
***************************************************************************/
#include "tool_setup.h"
-void warnf(struct OperationConfig *config, const char *fmt, ...);
+void warnf(struct GlobalConfig *config, const char *fmt, ...);
void helpf(FILE *errors, const char *fmt, ...);
diff --git a/src/tool_operate.c b/src/tool_operate.c
index a21bbcaf4..ecc0275c3 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -151,7 +151,7 @@ static curl_off_t vms_realfilesize(const char * name,
int ret_stat;
FILE * file;
- file = fopen(name, "r");
+ file = fopen(name, "r"); /* VMS */
if(file == NULL) {
return 0;
}
@@ -320,7 +320,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(!curlx_strequal(config->headerfile, "-")) {
FILE *newfile = fopen(config->headerfile, "wb");
if(!newfile) {
- warnf(config, "Failed to open %s\n", config->headerfile);
+ warnf(config->global, "Failed to open %s\n", config->headerfile);
result = CURLE_WRITE_ERROR;
goto quit_curl;
}
@@ -565,7 +565,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
Curl_safefree(storefile);
if(result) {
/* bad globbing */
- warnf(config, "bad output glob!\n");
+ warnf(config->global, "bad output glob!\n");
goto quit_urls;
}
}
@@ -710,7 +710,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
* we should warn him/her.
*/
if(config->proxyanyauth || (authbits>1)) {
- warnf(config,
+ warnf(config->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");
@@ -722,7 +722,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
set_binmode(stdin);
if(curlx_strequal(uploadfile, ".")) {
if(curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
- warnf(config,
+ warnf(config->global,
"fcntl failed on fd=%d: %s\n", infd, strerror(errno));
}
}
@@ -998,10 +998,6 @@ static CURLcode operate_do(struct GlobalConfig *global,
else
my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, CURL_OFF_T_C(0));
- my_setopt_str(curl, CURLOPT_SSLCERT, config->cert);
- my_setopt_str(curl, CURLOPT_SSLCERTTYPE, config->cert_type);
- my_setopt_str(curl, CURLOPT_SSLKEY, config->key);
- my_setopt_str(curl, CURLOPT_SSLKEYTYPE, config->key_type);
my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd);
if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
@@ -1029,6 +1025,11 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt_str(curl, CURLOPT_PINNEDPUBLICKEY, config->pinnedpubkey);
if(curlinfo->features & CURL_VERSION_SSL) {
+ my_setopt_str(curl, CURLOPT_SSLCERT, config->cert);
+ my_setopt_str(curl, CURLOPT_SSLCERTTYPE, config->cert_type);
+ my_setopt_str(curl, CURLOPT_SSLKEY, config->key);
+ my_setopt_str(curl, CURLOPT_SSLKEYTYPE, config->key_type);
+
if(config->insecure_ok) {
my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
@@ -1038,7 +1039,17 @@ static CURLcode operate_do(struct GlobalConfig *global,
/* libcurl default is strict verifyhost -> 2L */
/* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); */
}
+
+ if(config->verifystatus)
+ my_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L);
+
+ if(config->falsestart)
+ my_setopt(curl, CURLOPT_SSL_FALSESTART, 1L);
+
+ my_setopt_enum(curl, CURLOPT_SSLVERSION, config->ssl_version);
}
+ if(config->path_as_is)
+ my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
if(!config->insecure_ok) {
@@ -1088,13 +1099,12 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
#else
if(config->cookie || config->cookiefile || config->cookiejar) {
- warnf(config, "cookie option(s) used even though cookie support "
- "is disabled!\n");
+ warnf(config->global, "cookie option(s) used even though cookie "
+ "support is disabled!\n");
return CURLE_NOT_BUILT_IN;
}
#endif
- my_setopt_enum(curl, CURLOPT_SSLVERSION, config->ssl_version);
my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
my_setopt(curl, CURLOPT_TIMEVALUE, (long)config->condtime);
my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
@@ -1194,21 +1204,26 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt_enum(curl, CURLOPT_FTP_SSL_CCC,
(long)config->ftp_ssl_ccc_mode);
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
- {
- /* TODO: Make this a run-time check instead of compile-time one. */
+ /* new in curl 7.19.4 */
+ if(config->socks5_gssapi_service)
+ my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE,
+ config->socks5_gssapi_service);
- /* new in curl 7.19.4 */
- if(config->socks5_gssapi_service)
- my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE,
- config->socks5_gssapi_service);
+ /* 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.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);
- /* new in curl 7.19.4 */
- if(config->socks5_gssapi_nec)
- my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_NEC,
- config->socks5_gssapi_nec);
- }
-#endif
/* curl 7.13.0 */
my_setopt_str(curl, CURLOPT_FTP_ACCOUNT, config->ftp_account);
@@ -1247,8 +1262,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
if(config->alivetime != 0) {
#if !defined(TCP_KEEPIDLE) || !defined(TCP_KEEPINTVL)
- warnf(config, "Keep-alive functionality somewhat crippled due to "
- "missing support in your operating system!\n");
+ warnf(config->global, "Keep-alive functionality somewhat crippled "
+ "due to missing support in your operating system!\n");
#endif
my_setopt(curl, CURLOPT_TCP_KEEPIDLE, config->alivetime);
my_setopt(curl, CURLOPT_TCP_KEEPINTVL, config->alivetime);
@@ -1312,9 +1327,13 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt_str(curl, CURLOPT_GSSAPI_DELEGATION,
config->gssapi_delegation);
- /* new in 7.25.0 */
- if(config->ssl_allow_beast)
- my_setopt(curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_ALLOW_BEAST);
+ /* new in 7.25.0 and 7.44.0 */
+ {
+ long mask = (config->ssl_allow_beast ? CURLSSLOPT_ALLOW_BEAST : 0) |
+ (config->ssl_no_revoke ? CURLSSLOPT_NO_REVOKE : 0);
+ if(mask)
+ my_setopt_bitmask(curl, CURLOPT_SSL_OPTIONS, mask);
+ }
if(config->mail_auth)
my_setopt_str(curl, CURLOPT_MAIL_AUTH, config->mail_auth);
@@ -1378,6 +1397,18 @@ static CURLcode operate_do(struct GlobalConfig *global,
#endif
result = curl_easy_perform(curl);
+ if(!result && !outs.stream && !outs.bytes) {
+ /* we have received no data despite the transfer was successful
+ ==> force cration 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))
+ result = CURLE_WRITE_ERROR;
+ }
+
if(outs.is_cd_filename && outs.stream && !global->mute &&
outs.filename)
printf("curl: Saved to filename '%s'\n", outs.filename);
@@ -1451,7 +1482,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
static const char * const m[]={
NULL, "timeout", "HTTP error", "FTP error"
};
- warnf(config, "Transient problem: %s "
+
+ warnf(config->global, "Transient problem: %s "
"Will retry in %ld seconds. "
"%ld retries left.\n",
m[retry], retry_sleep/1000L, retry_numretries);
@@ -1463,7 +1495,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(retry_sleep > RETRY_SLEEP_MAX)
retry_sleep = RETRY_SLEEP_MAX;
}
- if(outs.bytes && outs.filename) {
+ if(outs.bytes && outs.filename && outs.stream) {
/* We have written data to a output file, we truncate file
*/
if(!global->mute)
@@ -1594,7 +1626,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(!result && config->xattr && outs.fopened && outs.stream) {
int rc = fwrite_xattr(curl, fileno(outs.stream));
if(rc)
- warnf(config, "Error setting extended attributes: %s\n",
+ warnf(config->global, "Error setting extended attributes: %s\n",
strerror(errno));
}
@@ -1853,9 +1885,6 @@ CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
/* Cleanup the libcurl source output */
easysrc_cleanup();
- /* set current back to first so that isn't NULL */
- config->current = config->first;
-
/* Dump the libcurl code if previously enabled */
dumpeasysrc(config);
#endif
diff --git a/src/tool_paramhlp.c b/src/tool_paramhlp.c
index 0e05184c3..d4b96e76d 100644
--- a/src/tool_paramhlp.c
+++ b/src/tool_paramhlp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -331,7 +331,7 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
if no protocols are allowed */
if(action == set)
*val = 0;
- warnf(config, "unrecognized protocol '%s'\n", token);
+ warnf(config->global, "unrecognized protocol '%s'\n", token);
}
}
Curl_safefree(buffer);
@@ -449,7 +449,10 @@ int ftpfilemethod(struct OperationConfig *config, const char *str)
return CURLFTPMETHOD_NOCWD;
if(curlx_raw_equal("multicwd", str))
return CURLFTPMETHOD_MULTICWD;
- warnf(config, "unrecognized ftp file method '%s', using default\n", str);
+
+ warnf(config->global, "unrecognized ftp file method '%s', using default\n",
+ str);
+
return CURLFTPMETHOD_MULTICWD;
}
@@ -459,7 +462,10 @@ int ftpcccmethod(struct OperationConfig *config, const char *str)
return CURLFTPSSL_CCC_PASSIVE;
if(curlx_raw_equal("active", str))
return CURLFTPSSL_CCC_ACTIVE;
- warnf(config, "unrecognized ftp CCC method '%s', using default\n", str);
+
+ warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
+ str);
+
return CURLFTPSSL_CCC_PASSIVE;
}
@@ -471,7 +477,10 @@ long delegation(struct OperationConfig *config, char *str)
return CURLGSSAPI_DELEGATION_POLICY_FLAG;
if(curlx_raw_equal("always", str))
return CURLGSSAPI_DELEGATION_FLAG;
- warnf(config, "unrecognized delegation method '%s', using none\n", str);
+
+ warnf(config->global, "unrecognized delegation method '%s', using none\n",
+ str);
+
return CURLGSSAPI_DELEGATION_NONE;
}
diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c
index c5d390b7a..39b43eef4 100644
--- a/src/tool_parsecfg.c
+++ b/src/tool_parsecfg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -69,7 +69,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
/* Check if the file exists - if not, try CURLRC in the same
* directory as our executable
*/
- file = fopen(filebuffer, "r");
+ file = fopen(filebuffer, FOPEN_READTEXT);
if(file != NULL) {
fclose(file);
filename = filebuffer;
@@ -114,8 +114,8 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
#endif
}
- if(strcmp(filename,"-"))
- file = fopen(filename, "r");
+ if(strcmp(filename, "-"))
+ file = fopen(filename, FOPEN_READTEXT);
else
file = stdin;
@@ -187,24 +187,27 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
param = line; /* parameter starts here */
while(*line && !ISSPACE(*line))
line++;
- *line = '\0'; /* zero terminate */
- /* to detect mistakes better, see if there's data following */
- line++;
- /* pass all spaces */
- while(*line && ISSPACE(*line))
- line++;
+ if(*line) {
+ *line = '\0'; /* zero terminate */
- switch(*line) {
- case '\0':
- case '\r':
- case '\n':
- case '#': /* comment */
- break;
- default:
- warnf(operation, "%s:%d: warning: '%s' uses unquoted white space in"
- " the line that may cause side-effects!\n",
- filename, lineno, option);
+ /* 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 "
+ "white space in the line that may cause side-effects!\n",
+ filename, lineno, option);
+ }
}
}
@@ -261,7 +264,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
res != PARAM_VERSION_INFO_REQUESTED &&
res != PARAM_ENGINES_REQUESTED) {
const char *reason = param2text(res);
- warnf(operation, "%s:%d: warning: '%s' %s\n",
+ warnf(operation->global, "%s:%d: warning: '%s' %s\n",
filename, lineno, option, reason);
}
}
diff --git a/src/tool_setopt.c b/src/tool_setopt.c
index a53fdc835..7eb64b039 100644
--- a/src/tool_setopt.c
+++ b/src/tool_setopt.c
@@ -107,6 +107,12 @@ const NameValue setopt_nv_CURLUSESSL[] = {
NVEND,
};
+const NameValueUnsigned setopt_nv_CURLSSLOPT[] = {
+ NV(CURLSSLOPT_ALLOW_BEAST),
+ NV(CURLSSLOPT_NO_REVOKE),
+ NVEND,
+};
+
const NameValue setopt_nv_CURL_NETRC[] = {
NV(CURL_NETRC_IGNORED),
NV(CURL_NETRC_OPTIONAL),
diff --git a/src/tool_setopt.h b/src/tool_setopt.h
index fcba94cb2..b32adf988 100644
--- a/src/tool_setopt.h
+++ b/src/tool_setopt.h
@@ -52,6 +52,7 @@ extern const NameValue setopt_nv_CURL_SSLVERSION[];
extern const NameValue setopt_nv_CURL_TIMECOND[];
extern const NameValue setopt_nv_CURLFTPSSL_CCC[];
extern const NameValue setopt_nv_CURLUSESSL[];
+extern const NameValueUnsigned setopt_nv_CURLSSLOPT[];
extern const NameValue setopt_nv_CURL_NETRC[];
extern const NameValue setopt_nv_CURLPROTO[];
extern const NameValueUnsigned setopt_nv_CURLAUTH[];
@@ -63,6 +64,7 @@ extern const NameValueUnsigned setopt_nv_CURLAUTH[];
#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_NETRC setopt_nv_CURL_NETRC
#define setopt_nv_CURLOPT_PROTOCOLS setopt_nv_CURLPROTO
#define setopt_nv_CURLOPT_REDIR_PROTOCOLS setopt_nv_CURLPROTO
diff --git a/src/tool_strdup.c b/src/tool_strdup.c
index 965675c3d..a0bbe88b2 100644
--- a/src/tool_strdup.c
+++ b/src/tool_strdup.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -39,7 +39,7 @@ char *strdup(const char *str)
if(!newstr)
return (char *)NULL;
- memcpy(newstr,str,(len+1)*sizeof(char));
+ memcpy(newstr, str, (len+1)*sizeof(char));
return newstr;
diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c
index b6d5591ab..133725242 100644
--- a/src/tool_urlglob.c
+++ b/src/tool_urlglob.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -21,9 +21,9 @@
***************************************************************************/
#include "tool_setup.h"
-#define _MPRINTF_REPLACE /* we want curl-functions instead of native ones */
-#include <curl/mprintf.h>
-
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
#include "tool_urlglob.h"
#include "tool_vms.h"
@@ -196,7 +196,7 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
char *endp;
unsigned long lstep;
errno = 0;
- lstep = strtoul(&pattern[3], &endp, 10);
+ lstep = strtoul(&pattern[4], &endp, 10);
if(errno || (*endp != ']'))
step = -1;
else {
@@ -212,7 +212,7 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
*posp += (pattern - *patternp);
if((rc != 2) || (min_c >= max_c) || ((max_c - min_c) > ('z' - 'a')) ||
- (step < 0) )
+ (step <= 0) )
/* the pattern is not well-formed */
return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
@@ -222,7 +222,8 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
pat->content.CharRange.max_c = max_c;
if(multiply(amount, (pat->content.CharRange.max_c -
- pat->content.CharRange.min_c + 1)))
+ pat->content.CharRange.min_c) /
+ pat->content.CharRange.step + 1) )
return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
}
else if(ISDIGIT(*pattern)) {
@@ -276,7 +277,8 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
*posp += (pattern - *patternp);
- if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)))
+ if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)) ||
+ (step_n <= 0) )
/* the pattern is not well-formed */
return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
@@ -287,7 +289,8 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
pat->content.NumRange.step = step_n;
if(multiply(amount, (pat->content.NumRange.max_n -
- pat->content.NumRange.min_n + 1)))
+ pat->content.NumRange.min_n) /
+ pat->content.NumRange.step + 1) )
return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
}
else
@@ -666,4 +669,3 @@ CURLcode glob_match_url(char **result, char *filename, URLGlob *glob)
*result = target;
return CURLE_OK;
}
-
diff --git a/src/tool_urlglob.h b/src/tool_urlglob.h
index 7a9ec5943..62c1abdd6 100644
--- a/src/tool_urlglob.h
+++ b/src/tool_urlglob.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -51,7 +51,7 @@ typedef struct {
int padlength;
unsigned long ptr_n;
unsigned long step;
- } NumRange ;
+ } NumRange;
} content;
} URLPattern;
diff --git a/src/tool_version.h b/src/tool_version.h
index 3627edcbe..2502ce7e7 100644
--- a/src/tool_version.h
+++ b/src/tool_version.h
@@ -25,7 +25,7 @@
#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.40.0"
+#define CURL_VERSION "7.44.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
diff --git a/src/tool_writeenv.c b/src/tool_writeenv.c
index a9462d004..b28f35a8d 100644
--- a/src/tool_writeenv.c
+++ b/src/tool_writeenv.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -27,11 +27,8 @@
# include <kernel.h>
#endif
-#define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h>
-
#include "tool_writeenv.h"
-
#include "memdebug.h" /* keep this as LAST include */
static const struct
diff --git a/src/tool_writeout.c b/src/tool_writeout.c
index f29d1ac33..63db90c96 100644
--- a/src/tool_writeout.c
+++ b/src/tool_writeout.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -20,10 +20,9 @@
*
***************************************************************************/
#include "tool_setup.h"
-
-#define _MPRINTF_REPLACE /* we want curl-functions instead of native ones */
-#include <curl/mprintf.h>
-
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
#include "tool_cfgable.h"
#include "tool_writeout.h"
diff --git a/test-driver b/test-driver
new file mode 100755
index 000000000..d30605660
--- /dev/null
+++ b/test-driver
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error. This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+ echo "$0: $*" >&2
+ print_usage >&2
+ exit 2
+}
+
+print_usage ()
+{
+ cat <<END
+Usage:
+ test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+ [--expect-failure={yes|no}] [--color-tests={yes|no}]
+ [--enable-hard-errors={yes|no}] [--]
+ TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file= # Where to save the output of the test script.
+trs_file= # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+ case $1 in
+ --help) print_usage; exit $?;;
+ --version) echo "test-driver $scriptversion"; exit $?;;
+ --test-name) test_name=$2; shift;;
+ --log-file) log_file=$2; shift;;
+ --trs-file) trs_file=$2; shift;;
+ --color-tests) color_tests=$2; shift;;
+ --expect-failure) expect_failure=$2; shift;;
+ --enable-hard-errors) enable_hard_errors=$2; shift;;
+ --) shift; break;;
+ -*) usage_error "invalid option: '$1'";;
+ *) break;;
+ esac
+ shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file" = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+ usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+ usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+ # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+ red='' # Red.
+ grn='' # Green.
+ lgn='' # Light green.
+ blu='' # Blue.
+ mgn='' # Magenta.
+ std='' # No color.
+else
+ red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+ estatus=1
+fi
+
+case $estatus:$expect_failure in
+ 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+ 0:*) col=$grn res=PASS recheck=no gcopy=no;;
+ 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
+ 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
+ *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
+ *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT
index c234c2250..20ff64a6b 100644
--- a/tests/FILEFORMAT
+++ b/tests/FILEFORMAT
@@ -122,7 +122,7 @@ DELAY [command] [secs]
- Delay responding to this command for the given time
RETRWEIRDO
- Enable the "weirdo" RETR case when multiple response lines appear at once
- when a file is transfered
+ when a file is transferred
RETRNOSIZE
- Make sure the RETR response doesn't contain the size of the file
NOSAVE
@@ -211,8 +211,11 @@ crypto
debug
getrlimit
GnuTLS
+GSS-API
+http2
idn
ipv6
+Kerberos
large_file
libz
Metalink
@@ -220,17 +223,15 @@ NSS
NTLM
OpenSSL
socks
+SPNEGO
SSL
SSLpinning
+SSPI
TLS-SRP
TrackMemory
unittest
-http2
-SSPI
-GSS-API
-Kerberos
-SPNEGO
unix-sockets
+WinSSL
as well as each protocol that curl supports. A protocol only needs to be
specified if it is different from the server (useful when the server
@@ -290,7 +291,7 @@ If there's no test number found above, the HTTP test server will use the
number following the last dot in the given hostname (made so that a CONNECT
can still pass on test number) so that "foo.bar.123" gets treated as test case
123. Alternatively, if an IPv6 address is provided to CONNECT, the last
-hexadecimal group in the address will be used as the test numer! For example
+hexadecimal group in the address will be used as the test number! For example
the address "[1234::ff]" would be treated as test case 255.
Set type="perl" to write the test case as a perl script. It implies that
@@ -340,7 +341,7 @@ Available substitute variables include:
%HTTPTLSPORT - Port number of the HTTP TLS server
%IMAP6PORT - IPv6 port number of the IMAP server
%IMAPPORT - Port number of the IMAP server
-%POP36PORT - IPv6 ort number of the POP3 server
+%POP36PORT - IPv6 port number of the POP3 server
%POP3PORT - Port number of the POP3 server
%PROXYPORT - Port number of the HTTP proxy
%PWD - Current directory
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ca69709da..eac455aee 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -27,7 +27,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl getpart.pm \
FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm \
sshserver.pl sshhelp.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \
serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl \
- CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py
+ CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py extern-scan.pl
DISTCLEANFILES = configurehelp.pm
diff --git a/tests/Makefile.in b/tests/Makefile.in
index c97f11609..589c60602 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -36,7 +36,17 @@
#
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -100,8 +110,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -181,6 +190,7 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -264,7 +274,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -317,6 +327,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -333,7 +344,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -399,7 +409,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl getpart.pm \
FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm \
sshserver.pl sshhelp.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \
serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl \
- CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py
+ CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py extern-scan.pl
DISTCLEANFILES = configurehelp.pm
@BUILD_UNITTESTS_FALSE@BUILD_UNIT =
@@ -437,7 +447,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -734,6 +743,8 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
curl:
@cd $(top_builddir) && $(MAKE)
diff --git a/tests/README b/tests/README
index a8b8adcee..ae8ff25cc 100644
--- a/tests/README
+++ b/tests/README
@@ -100,7 +100,9 @@ The cURL Test Suite
(like "./runtests.pl 3 4" to test 3 and 4 only). It also supports test case
ranges with 'to', as in "./runtests 3 to 9" which runs the seven tests from
3 to 9. Any test numbers starting with ! are disabled, as are any test
- numbers found in the file data/DISABLED (one per line).
+ numbers found in the files data/DISABLED or data/DISABLED.local (one per
+ line). The latter is meant for local temporary disables and will be ignored
+ by git.
When -s is not present, each successful test will display on one line the
test number and description and on the next line a set of flags, the test
@@ -203,25 +205,26 @@ The cURL Test Suite
2.1 Test case numbering
1 - 99 HTTP
- 100 - 199 FTP*
- 200 - 299 FILE*
+ 100 - 199 FTP
+ 200 - 299 FILE
300 - 399 HTTPS
400 - 499 FTPS
500 - 599 libcurl source code tests, not using the curl command tool
600 - 699 SCP/SFTP
700 - 799 SOCKS4 (even numbers) and SOCK5 (odd numbers)
- 800 - 899 POP3, IMAP, SMTP
- 1000 - 1299 miscellaneous*
- 1300 - 1399 unit tests*
- 1400 - 1499 miscellaneous*
+ 800 - 849 IMAP
+ 850 - 899 POP3
+ 900 - 999 SMTP
+ 1000 - 1299 miscellaneous
+ 1300 - 1399 unit tests
+ 1400 - 1499 miscellaneous
1500 - 1599 libcurl source code tests, not using the curl command tool
(same as 5xx)
- 2000 - x multiple sequential protocols per test case*
+ 1600 - 1699 unit tests
+ 2000 - x multiple sequential protocols per test case
- Since 30-apr-2003, there's nothing in the system that requires us to keep
- within these number series, and those sections marked with * actually
- contain tests for a variety of protocols. Each test case now specifies its
- own server requirements, independent of test number.
+ There's nothing in the system that *requires* us to keep within these number
+ series.
3. Write tests
diff --git a/tests/certs/EdelCurlRoot-ca.cacert b/tests/certs/EdelCurlRoot-ca.cacert
index 8bcbc180b..d3ec4d359 100644
--- a/tests/certs/EdelCurlRoot-ca.cacert
+++ b/tests/certs/EdelCurlRoot-ca.cacert
@@ -1,42 +1,41 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:94:f5:ab:a6
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311616 (0xcfa60bc5140)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:36:46 2010 GMT
- Not After : Oct 30 21:36:46 2026 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Aug 24 15:07:11 2031 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
- 00:c1:a9:0a:ef:76:06:7d:fe:78:3a:f1:0e:40:6d:
- c2:5b:ae:8f:8d:7f:f0:d5:89:9e:42:2a:f0:17:94:
- d9:2e:67:c7:2d:01:1c:95:a3:b1:a6:86:d4:12:3c:
- 47:3a:70:e6:7b:1f:11:06:d3:73:ae:df:ca:24:19:
- 03:e4:62:0a:eb:67:d4:dc:ef:9d:2d:e0:82:77:fe:
- 2a:30:5a:fb:57:e5:b8:4f:36:52:4c:2f:57:ad:12:
- 6a:94:3e:e4:48:a7:ad:a5:c0:3a:d0:4e:00:99:88:
- 8f:bd:4a:70:be:3b:5b:6b:ff:5e:6f:29:6d:0c:a7:
- 55:4a:e2:43:e7:49:0f:99:54:59:68:81:34:d8:a9:
- fb:c8:0d:14:5a:40:cb:70:1e:f5:3b:c0:42:39:06:
- f9:63:ad:d9:29:14:53:af:42:10:1d:18:95:b6:15:
- 8a:d8:41:d8:37:31:0a:97:5a:1b:10:90:ac:1d:ff:
- 6e:71:33:6b:7e:88:18:20:ed:be:35:ff:e7:69:48:
- 05:c0:78:2e:04:46:f4:c2:8d:4d:70:6e:42:fa:93:
- eb:ce:12:3b:d1:f5:ce:3f:29:5c:8c:bd:59:83:e4:
- a1:c1:3c:8e:3e:38:55:f3:99:18:b0:df:f6:74:c9:
- 8e:28:f4:38:0d:45:20:d6:db:c0:73:a2:e6:8c:6e:
- 98:9f
+ 00:e1:4c:d9:74:1a:a4:a3:42:57:a4:7a:2e:74:02:
+ 08:49:6a:6a:1d:db:de:c3:43:d6:48:60:12:30:ed:
+ d6:6e:74:16:81:16:4e:50:b9:6c:b9:36:0d:19:a4:
+ f7:85:99:40:46:26:46:33:86:ce:0c:27:71:e4:8f:
+ 0f:b4:3a:99:6d:af:78:48:b7:cb:c4:d3:60:7d:d0:
+ 17:6f:23:bc:89:c0:bc:16:b8:94:f0:b2:10:8d:c8:
+ e0:35:97:ed:8f:c6:db:9b:cd:aa:f6:8c:45:dc:0f:
+ ee:a0:78:12:be:f6:7d:f4:f7:b6:8c:4e:e5:7d:32:
+ e8:f7:f7:1e:04:46:9e:08:cd:cb:ec:e2:9a:c3:35:
+ 3f:ce:a1:01:e3:10:0a:ec:d9:ab:13:09:eb:e6:39:
+ 6b:92:30:c7:08:bd:8a:32:ef:0b:b2:61:6f:11:43:
+ 95:cf:31:ea:19:01:cc:1a:6d:d2:d5:57:35:da:c0:
+ ae:46:39:d3:33:ed:f8:c0:1e:ad:3d:68:6f:a8:53:
+ 24:ac:d6:f9:dd:2b:51:50:77:e4:b7:5d:ad:48:80:
+ 5d:65:57:e5:eb:07:82:7d:cb:72:4f:06:6a:34:d4:
+ 38:c8:6b:ed:8a:3a:68:5e:35:e3:78:14:da:5d:86:
+ 9f:e5:d4:1c:dd:90:c2:7c:a2:00:d4:95:65:04:85:
+ ff:83
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
@@ -44,42 +43,42 @@ Certificate:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Subject Key Identifier:
- AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ 12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
Signature Algorithm: sha1WithRSAEncryption
- 86:1f:9d:dd:45:11:c8:6b:f1:97:1a:f0:25:b2:0c:f7:1f:58:
- c4:6a:a5:56:07:32:cb:2d:7a:8c:ae:47:1e:7d:e7:73:6c:3b:
- 96:1e:75:b4:e5:89:05:a7:7e:b6:52:56:5a:e2:6b:38:e4:18:
- 3c:64:6f:be:bd:d3:01:76:b4:83:7f:7a:1e:9c:cb:40:1b:9a:
- dd:43:cb:9a:db:8a:f8:76:50:ab:ad:85:7f:cf:3a:6f:4b:e2:
- 27:b0:8c:a9:0a:e0:d8:45:00:05:5e:29:ab:a0:8a:78:e5:09:
- 89:48:8a:0d:42:49:1e:ad:c2:85:2f:29:9d:af:2e:c8:ef:b9:
- dc:74:33:eb:e9:45:e9:a2:b3:00:ba:76:0b:74:59:c9:a8:96:
- 4c:f3:cd:9b:34:5a:4a:87:b2:6a:52:74:5b:be:f3:81:f8:32:
- d0:1f:c9:cc:9f:8a:6a:eb:6e:f3:6d:2c:54:20:86:f6:87:62:
- c0:ed:55:03:9d:97:a9:5a:ae:39:a0:7e:e4:a6:95:e9:26:19:
- 91:e6:0f:b6:18:f7:49:6c:a7:ce:fd:c1:04:c2:f9:27:27:4c:
- 59:e9:bf:7a:f6:65:a0:d9:a0:71:a6:54:c6:6f:9a:5d:23:19:
- 57:49:59:2c:06:91:3e:28:9b:c1:6f:f2:2d:9a:24:a7:0b:da:
- cd:cc:f3:bc
+ d4:d0:22:19:78:2e:2e:1d:83:c6:79:89:c1:a8:23:43:4e:86:
+ 76:16:31:bd:b7:c0:44:2c:b9:2c:79:99:2f:02:48:33:1e:a7:
+ d7:0e:d9:f1:cb:ed:39:1a:34:b3:50:af:c9:8d:64:bf:ff:72:
+ 1b:1d:e0:5d:40:3b:b5:00:7c:d1:78:ff:45:ee:d9:05:3f:32:
+ f6:cd:f4:d3:79:58:d8:44:94:65:f5:c3:a9:5d:d8:13:d9:57:
+ e7:13:18:fa:f3:72:0b:cf:a3:4a:f4:6e:5e:74:30:3c:cb:76:
+ 28:f9:44:9a:ba:3e:b7:3e:01:79:3e:cb:5c:df:5a:d4:6c:34:
+ aa:bd:c0:6d:25:85:e5:28:f6:15:e1:9d:af:a7:f7:a7:6c:2a:
+ 1d:1d:93:1e:89:71:66:c7:0b:e4:ce:36:c1:21:c4:73:5d:2b:
+ 24:a9:3d:26:df:1c:e8:60:69:e3:82:98:c3:5b:91:9e:da:bd:
+ 27:ee:e0:fd:64:ea:7d:35:91:fd:5e:1e:33:82:24:39:7b:49:
+ af:23:05:fc:6e:53:7e:07:69:f4:e7:e3:1f:f0:1c:59:87:4c:
+ b6:74:c9:60:ed:f5:ab:a0:31:8a:05:d4:64:9f:1e:16:b6:9f:
+ f8:7e:0d:ac:b7:d9:16:b9:b3:bc:0b:03:6b:24:e9:46:81:dc:
+ d8:52:63:75
-----BEGIN CERTIFICATE-----
-MIIDkDCCAnigAwIBAgIGC5iU9aumMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDkjCCAnqgAwIBAgIGDPpgvFFAMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzY0NloXDTI2MTAzMDIxMzY0NlowZzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-JTAjBgNVBAMMHE5vdGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5C
-KvAXlNkuZ8ctARyVo7GmhtQSPEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3
-/iowWvtX5bhPNlJML1etEmqUPuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK
-4kPnSQ+ZVFlogTTYqfvIDRRaQMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3
-MQqXWhsQkKwd/25xM2t+iBgg7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/
-KVyMvVmD5KHBPI4+OFXzmRiw3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBStPuI5
-B7hcqiaQlEwmaSGD4k42lDANBgkqhkiG9w0BAQUFAAOCAQEAhh+d3UURyGvxlxrw
-JbIM9x9YxGqlVgcyyy16jK5HHn3nc2w7lh51tOWJBad+tlJWWuJrOOQYPGRvvr3T
-AXa0g396HpzLQBua3UPLmtuK+HZQq62Ff886b0viJ7CMqQrg2EUABV4pq6CKeOUJ
-iUiKDUJJHq3ChS8pna8uyO+53HQz6+lF6aKzALp2C3RZyaiWTPPNmzRaSoeyalJ0
-W77zgfgy0B/JzJ+Kautu820sVCCG9odiwO1VA52XqVquOaB+5KaV6SYZkeYPthj3
-SWynzv3BBML5JydMWem/evZloNmgcaZUxm+aXSMZV0lZLAaRPiibwW/yLZokpwva
-zczzvA==
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0zMTA4MjQxNTA3MTFaMGgxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFM2XQapKNCV6R6LnQCCElqah3b3sND
+1khgEjDt1m50FoEWTlC5bLk2DRmk94WZQEYmRjOGzgwnceSPD7Q6mW2veEi3y8TT
+YH3QF28jvInAvBa4lPCyEI3I4DWX7Y/G25vNqvaMRdwP7qB4Er72ffT3toxO5X0y
+6Pf3HgRGngjNy+zimsM1P86hAeMQCuzZqxMJ6+Y5a5Iwxwi9ijLvC7JhbxFDlc8x
+6hkBzBpt0tVXNdrArkY50zPt+MAerT1ob6hTJKzW+d0rUVB35LddrUiAXWVX5esH
+gn3Lck8GajTUOMhr7Yo6aF4143gU2l2Gn+XUHN2QwnyiANSVZQSF/4MCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLK
+uktGBKd1iizoDlSUvBJlpnvOMA0GCSqGSIb3DQEBBQUAA4IBAQDU0CIZeC4uHYPG
+eYnBqCNDToZ2FjG9t8BELLkseZkvAkgzHqfXDtnxy+05GjSzUK/JjWS//3IbHeBd
+QDu1AHzReP9F7tkFPzL2zfTTeVjYRJRl9cOpXdgT2VfnExj683ILz6NK9G5edDA8
+y3Yo+USauj63PgF5Pstc31rUbDSqvcBtJYXlKPYV4Z2vp/enbCodHZMeiXFmxwvk
+zjbBIcRzXSskqT0m3xzoYGnjgpjDW5Ge2r0n7uD9ZOp9NZH9Xh4zgiQ5e0mvIwX8
+blN+B2n05+Mf8BxZh0y2dMlg7fWroDGKBdRknx4Wtp/4fg2st9kWubO8CwNrJOlG
+gdzYUmN1
-----END CERTIFICATE-----
diff --git a/tests/certs/EdelCurlRoot-ca.crt b/tests/certs/EdelCurlRoot-ca.crt
index 8bcbc180b..d3ec4d359 100644
--- a/tests/certs/EdelCurlRoot-ca.crt
+++ b/tests/certs/EdelCurlRoot-ca.crt
@@ -1,42 +1,41 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:94:f5:ab:a6
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311616 (0xcfa60bc5140)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:36:46 2010 GMT
- Not After : Oct 30 21:36:46 2026 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Aug 24 15:07:11 2031 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
- 00:c1:a9:0a:ef:76:06:7d:fe:78:3a:f1:0e:40:6d:
- c2:5b:ae:8f:8d:7f:f0:d5:89:9e:42:2a:f0:17:94:
- d9:2e:67:c7:2d:01:1c:95:a3:b1:a6:86:d4:12:3c:
- 47:3a:70:e6:7b:1f:11:06:d3:73:ae:df:ca:24:19:
- 03:e4:62:0a:eb:67:d4:dc:ef:9d:2d:e0:82:77:fe:
- 2a:30:5a:fb:57:e5:b8:4f:36:52:4c:2f:57:ad:12:
- 6a:94:3e:e4:48:a7:ad:a5:c0:3a:d0:4e:00:99:88:
- 8f:bd:4a:70:be:3b:5b:6b:ff:5e:6f:29:6d:0c:a7:
- 55:4a:e2:43:e7:49:0f:99:54:59:68:81:34:d8:a9:
- fb:c8:0d:14:5a:40:cb:70:1e:f5:3b:c0:42:39:06:
- f9:63:ad:d9:29:14:53:af:42:10:1d:18:95:b6:15:
- 8a:d8:41:d8:37:31:0a:97:5a:1b:10:90:ac:1d:ff:
- 6e:71:33:6b:7e:88:18:20:ed:be:35:ff:e7:69:48:
- 05:c0:78:2e:04:46:f4:c2:8d:4d:70:6e:42:fa:93:
- eb:ce:12:3b:d1:f5:ce:3f:29:5c:8c:bd:59:83:e4:
- a1:c1:3c:8e:3e:38:55:f3:99:18:b0:df:f6:74:c9:
- 8e:28:f4:38:0d:45:20:d6:db:c0:73:a2:e6:8c:6e:
- 98:9f
+ 00:e1:4c:d9:74:1a:a4:a3:42:57:a4:7a:2e:74:02:
+ 08:49:6a:6a:1d:db:de:c3:43:d6:48:60:12:30:ed:
+ d6:6e:74:16:81:16:4e:50:b9:6c:b9:36:0d:19:a4:
+ f7:85:99:40:46:26:46:33:86:ce:0c:27:71:e4:8f:
+ 0f:b4:3a:99:6d:af:78:48:b7:cb:c4:d3:60:7d:d0:
+ 17:6f:23:bc:89:c0:bc:16:b8:94:f0:b2:10:8d:c8:
+ e0:35:97:ed:8f:c6:db:9b:cd:aa:f6:8c:45:dc:0f:
+ ee:a0:78:12:be:f6:7d:f4:f7:b6:8c:4e:e5:7d:32:
+ e8:f7:f7:1e:04:46:9e:08:cd:cb:ec:e2:9a:c3:35:
+ 3f:ce:a1:01:e3:10:0a:ec:d9:ab:13:09:eb:e6:39:
+ 6b:92:30:c7:08:bd:8a:32:ef:0b:b2:61:6f:11:43:
+ 95:cf:31:ea:19:01:cc:1a:6d:d2:d5:57:35:da:c0:
+ ae:46:39:d3:33:ed:f8:c0:1e:ad:3d:68:6f:a8:53:
+ 24:ac:d6:f9:dd:2b:51:50:77:e4:b7:5d:ad:48:80:
+ 5d:65:57:e5:eb:07:82:7d:cb:72:4f:06:6a:34:d4:
+ 38:c8:6b:ed:8a:3a:68:5e:35:e3:78:14:da:5d:86:
+ 9f:e5:d4:1c:dd:90:c2:7c:a2:00:d4:95:65:04:85:
+ ff:83
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
@@ -44,42 +43,42 @@ Certificate:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Subject Key Identifier:
- AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ 12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
Signature Algorithm: sha1WithRSAEncryption
- 86:1f:9d:dd:45:11:c8:6b:f1:97:1a:f0:25:b2:0c:f7:1f:58:
- c4:6a:a5:56:07:32:cb:2d:7a:8c:ae:47:1e:7d:e7:73:6c:3b:
- 96:1e:75:b4:e5:89:05:a7:7e:b6:52:56:5a:e2:6b:38:e4:18:
- 3c:64:6f:be:bd:d3:01:76:b4:83:7f:7a:1e:9c:cb:40:1b:9a:
- dd:43:cb:9a:db:8a:f8:76:50:ab:ad:85:7f:cf:3a:6f:4b:e2:
- 27:b0:8c:a9:0a:e0:d8:45:00:05:5e:29:ab:a0:8a:78:e5:09:
- 89:48:8a:0d:42:49:1e:ad:c2:85:2f:29:9d:af:2e:c8:ef:b9:
- dc:74:33:eb:e9:45:e9:a2:b3:00:ba:76:0b:74:59:c9:a8:96:
- 4c:f3:cd:9b:34:5a:4a:87:b2:6a:52:74:5b:be:f3:81:f8:32:
- d0:1f:c9:cc:9f:8a:6a:eb:6e:f3:6d:2c:54:20:86:f6:87:62:
- c0:ed:55:03:9d:97:a9:5a:ae:39:a0:7e:e4:a6:95:e9:26:19:
- 91:e6:0f:b6:18:f7:49:6c:a7:ce:fd:c1:04:c2:f9:27:27:4c:
- 59:e9:bf:7a:f6:65:a0:d9:a0:71:a6:54:c6:6f:9a:5d:23:19:
- 57:49:59:2c:06:91:3e:28:9b:c1:6f:f2:2d:9a:24:a7:0b:da:
- cd:cc:f3:bc
+ d4:d0:22:19:78:2e:2e:1d:83:c6:79:89:c1:a8:23:43:4e:86:
+ 76:16:31:bd:b7:c0:44:2c:b9:2c:79:99:2f:02:48:33:1e:a7:
+ d7:0e:d9:f1:cb:ed:39:1a:34:b3:50:af:c9:8d:64:bf:ff:72:
+ 1b:1d:e0:5d:40:3b:b5:00:7c:d1:78:ff:45:ee:d9:05:3f:32:
+ f6:cd:f4:d3:79:58:d8:44:94:65:f5:c3:a9:5d:d8:13:d9:57:
+ e7:13:18:fa:f3:72:0b:cf:a3:4a:f4:6e:5e:74:30:3c:cb:76:
+ 28:f9:44:9a:ba:3e:b7:3e:01:79:3e:cb:5c:df:5a:d4:6c:34:
+ aa:bd:c0:6d:25:85:e5:28:f6:15:e1:9d:af:a7:f7:a7:6c:2a:
+ 1d:1d:93:1e:89:71:66:c7:0b:e4:ce:36:c1:21:c4:73:5d:2b:
+ 24:a9:3d:26:df:1c:e8:60:69:e3:82:98:c3:5b:91:9e:da:bd:
+ 27:ee:e0:fd:64:ea:7d:35:91:fd:5e:1e:33:82:24:39:7b:49:
+ af:23:05:fc:6e:53:7e:07:69:f4:e7:e3:1f:f0:1c:59:87:4c:
+ b6:74:c9:60:ed:f5:ab:a0:31:8a:05:d4:64:9f:1e:16:b6:9f:
+ f8:7e:0d:ac:b7:d9:16:b9:b3:bc:0b:03:6b:24:e9:46:81:dc:
+ d8:52:63:75
-----BEGIN CERTIFICATE-----
-MIIDkDCCAnigAwIBAgIGC5iU9aumMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDkjCCAnqgAwIBAgIGDPpgvFFAMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzY0NloXDTI2MTAzMDIxMzY0NlowZzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-JTAjBgNVBAMMHE5vdGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5C
-KvAXlNkuZ8ctARyVo7GmhtQSPEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3
-/iowWvtX5bhPNlJML1etEmqUPuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK
-4kPnSQ+ZVFlogTTYqfvIDRRaQMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3
-MQqXWhsQkKwd/25xM2t+iBgg7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/
-KVyMvVmD5KHBPI4+OFXzmRiw3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBStPuI5
-B7hcqiaQlEwmaSGD4k42lDANBgkqhkiG9w0BAQUFAAOCAQEAhh+d3UURyGvxlxrw
-JbIM9x9YxGqlVgcyyy16jK5HHn3nc2w7lh51tOWJBad+tlJWWuJrOOQYPGRvvr3T
-AXa0g396HpzLQBua3UPLmtuK+HZQq62Ff886b0viJ7CMqQrg2EUABV4pq6CKeOUJ
-iUiKDUJJHq3ChS8pna8uyO+53HQz6+lF6aKzALp2C3RZyaiWTPPNmzRaSoeyalJ0
-W77zgfgy0B/JzJ+Kautu820sVCCG9odiwO1VA52XqVquOaB+5KaV6SYZkeYPthj3
-SWynzv3BBML5JydMWem/evZloNmgcaZUxm+aXSMZV0lZLAaRPiibwW/yLZokpwva
-zczzvA==
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0zMTA4MjQxNTA3MTFaMGgxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFM2XQapKNCV6R6LnQCCElqah3b3sND
+1khgEjDt1m50FoEWTlC5bLk2DRmk94WZQEYmRjOGzgwnceSPD7Q6mW2veEi3y8TT
+YH3QF28jvInAvBa4lPCyEI3I4DWX7Y/G25vNqvaMRdwP7qB4Er72ffT3toxO5X0y
+6Pf3HgRGngjNy+zimsM1P86hAeMQCuzZqxMJ6+Y5a5Iwxwi9ijLvC7JhbxFDlc8x
+6hkBzBpt0tVXNdrArkY50zPt+MAerT1ob6hTJKzW+d0rUVB35LddrUiAXWVX5esH
+gn3Lck8GajTUOMhr7Yo6aF4143gU2l2Gn+XUHN2QwnyiANSVZQSF/4MCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLK
+uktGBKd1iizoDlSUvBJlpnvOMA0GCSqGSIb3DQEBBQUAA4IBAQDU0CIZeC4uHYPG
+eYnBqCNDToZ2FjG9t8BELLkseZkvAkgzHqfXDtnxy+05GjSzUK/JjWS//3IbHeBd
+QDu1AHzReP9F7tkFPzL2zfTTeVjYRJRl9cOpXdgT2VfnExj683ILz6NK9G5edDA8
+y3Yo+USauj63PgF5Pstc31rUbDSqvcBtJYXlKPYV4Z2vp/enbCodHZMeiXFmxwvk
+zjbBIcRzXSskqT0m3xzoYGnjgpjDW5Ge2r0n7uD9ZOp9NZH9Xh4zgiQ5e0mvIwX8
+blN+B2n05+Mf8BxZh0y2dMlg7fWroDGKBdRknx4Wtp/4fg2st9kWubO8CwNrJOlG
+gdzYUmN1
-----END CERTIFICATE-----
diff --git a/tests/certs/EdelCurlRoot-ca.csr b/tests/certs/EdelCurlRoot-ca.csr
index 2df94f575..7d5e3001a 100644
--- a/tests/certs/EdelCurlRoot-ca.csr
+++ b/tests/certs/EdelCurlRoot-ca.csr
@@ -1,17 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
-MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
-cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJTAjBgNVBAMMHE5vdGhlcm4g
-Tm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5CKvAXlNkuZ8ctARyVo7GmhtQS
-PEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3/iowWvtX5bhPNlJML1etEmqU
-PuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK4kPnSQ+ZVFlogTTYqfvIDRRa
-QMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3MQqXWhsQkKwd/25xM2t+iBgg
-7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/KVyMvVmD5KHBPI4+OFXzmRiw
-3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
-eFMy55kFke/e9mrGloRUh1o8dxmzSiVwVCw5DTZQzTFNAMSOZXIId8k2IeHSUd84
-ZyJ1UNyJn2EFcwgaYaMtvZ8xMWR2W0C7lBvOOcjvWmiGze9F2Z5XMQzL8cjkK4jW
-RKIq9b0W6TC8lLO5F2eJpW6BoTQ8cBCDiVIDlCm7xZxPRjHowuyM0Tpewq2PltC1
-p8DbQipZWl5LPaHBSZSmIuUgOBU9porH/Vn0oWXxYfts59103VJY5YKkdz0PiqqA
-5kWYCMFDZyL+nZ2aIol4r8nXkN9MuPOU12aHqPGcDlaGS2i5zfm2Ywsg110k+NCk
-AmqhjnrQjvJhif3rGO4+qw==
+MIICrTCCAZUCAQAwaDELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
+cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAkBgNVBAMMHU5vcnRoZXJu
+IE5vd2hlcmUgVHJ1c3QgQW5jaG9yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEA4UzZdBqko0JXpHoudAIISWpqHdvew0PWSGASMO3WbnQWgRZOULlsuTYN
+GaT3hZlARiZGM4bODCdx5I8PtDqZba94SLfLxNNgfdAXbyO8icC8FriU8LIQjcjg
+NZftj8bbm82q9oxF3A/uoHgSvvZ99Pe2jE7lfTLo9/ceBEaeCM3L7OKawzU/zqEB
+4xAK7NmrEwnr5jlrkjDHCL2KMu8LsmFvEUOVzzHqGQHMGm3S1Vc12sCuRjnTM+34
+wB6tPWhvqFMkrNb53StRUHfkt12tSIBdZVfl6weCfctyTwZqNNQ4yGvtijpoXjXj
+eBTaXYaf5dQc3ZDCfKIA1JVlBIX/gwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEB
+ANpolqnyNQ2zhqURf1ImBOTKLqN77neGe01rdkMrQfNP+ZSr5pxcoOZgMjUGrhyQ
+C6RWexcjwMFvr+16bsEyiBgw/PxTziw6ozvJZkDVQanKZet9+6o8P6AzfjOfwIiU
+8OkLYDaNJ0M807fTNFWdt/yDY1WNfNAxIX3gMMJ1dRvvLvgIJVE4RRAaW/pEMHky
+sQTfExs99Xooqh3E6CWyR1bVHWuid0a02LcD2Q0bKTBmi3xyBjEaq3vXxS6j1fDs
+aWpwznwuuX+J7K+MHYJH9DQIg/QY6rQzxokZ92wJGFdzL3m+kou6++OAPu1plpTL
+im5n/e87gdjerEJgCqoP4S8=
-----END CERTIFICATE REQUEST-----
diff --git a/tests/certs/EdelCurlRoot-ca.der b/tests/certs/EdelCurlRoot-ca.der
index 1eaf42453..3f4ec7b06 100644
--- a/tests/certs/EdelCurlRoot-ca.der
+++ b/tests/certs/EdelCurlRoot-ca.der
Binary files differ
diff --git a/tests/certs/EdelCurlRoot-ca.key b/tests/certs/EdelCurlRoot-ca.key
index 9a1303af8..bf46d1ec5 100644
--- a/tests/certs/EdelCurlRoot-ca.key
+++ b/tests/certs/EdelCurlRoot-ca.key
@@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAwakK73YGff54OvEOQG3CW66PjX/w1YmeQirwF5TZLmfHLQEc
-laOxpobUEjxHOnDmex8RBtNzrt/KJBkD5GIK62fU3O+dLeCCd/4qMFr7V+W4TzZS
-TC9XrRJqlD7kSKetpcA60E4AmYiPvUpwvjtba/9ebyltDKdVSuJD50kPmVRZaIE0
-2Kn7yA0UWkDLcB71O8BCOQb5Y63ZKRRTr0IQHRiVthWK2EHYNzEKl1obEJCsHf9u
-cTNrfogYIO2+Nf/naUgFwHguBEb0wo1NcG5C+pPrzhI70fXOPylcjL1Zg+ShwTyO
-PjhV85kYsN/2dMmOKPQ4DUUg1tvAc6LmjG6YnwIDAQABAoIBAEQculXigwIJYCwK
-4GJUuEkaqi6wUvonvtuy0mLY3VHu+iSgAXe37SGOxkPro3mwf7/J+2kVMdjNqQDt
-M2s9+G03Ray3MecS0ZB2ekwrk78kcqCZkHRvKj0a/xVI0W2kW/SyGX1uEdPuLe/7
-oI+nvM3NMV+TiGEs8Vi3H/7WuX/JiEpBFNtgKqlT1ZdTblj+igrAT30on9FBfOyo
-NtkxIL7YY1TAZ7YjdpZWrAAyo7gBjXAmeslnJ9IHzKPBsuSXQ4A7JjGOAGyv3INi
-D8mwoa/8pNaZTxFCCRnvezA3JvVa4gWigZtb0JX5Z+H1nERZWoJq4Cj4kMa3ERuC
-iyVXijECgYEA4q5bkQTrQ7liRCrNETmbVspmbuBc6XaAFrYwbrxlzvl2nyumCgKg
-GaPeP2Skh5nPz+1x1EXmYAqXsAfLoE4z6kk1D1Ws4FWxxaAuwlWTmoJ2HXl2dcbR
-f0HLgQ/oswYtNVaP7HASmEf5Y3DeGLDrojh1aOE8kq/MpBHsO28qTA0CgYEA2rVV
-eTfj4VV5tpVlfiU5D947qIERVwIQ+FW8Epokwct1VgUeWwXMQFJFX6KWQdkB+Ktj
-vknBSrN+VmwBMMhuUTpMxvaZFL5UCyLUUt2K8azNDdg9FcfH8dSZnnNoo8aH9k6A
-v5gFk+QQ7VgGVBeLv22PG1zknj4SsGZhzx9H0FsCgYB/8uq8cIpbL8jHsWEO1/VW
-h+hJrVrEbJ7gMvYjizPsH+NU9M5D2DeGQXixT52O7MLgGqalqs7eZxw3wC6vzXSA
-SdIpVbK+7Z/qbP/3sVYfYIRLHsQ+tnqJ2hmEP/aZFmNuN+4FBz13tyiNeKfkR/i5
-GCUtjfUi1xgrg/JTmevGAQKBgQC9QEh0Gj7gj9xAeEpYu9ECwCUTjIv6pFkW6ulR
-l3zTDUG9a7R2wy+ZQReyx7gJxsSD75rh4GSYRXW/RrpJAkcjlrU1PdH9Nyz2be8Y
-vYgr1IGjx0gkfrmvs24yxF75ySOBqTCTmfLJpIJZPuBLCAzvWtiIrvtNSx1U82MT
-nVfBHQKBgDJZQmr5lqdo5Zv/VP+w+VtxeX2oCgw7Mn56TW4IzDEL6ly+sKNNs+Ji
-pp/c2XYw24o7318yV70oWVWscay1SOjK7RdoCat590iuTGMSYyY8pMkgK+QuDqDe
-1Hhyb0iPorMS5wZXx/TROS4+4GOIHLAtZOZ8B+20tczp7HGqUIK1
+MIIEpAIBAAKCAQEA4UzZdBqko0JXpHoudAIISWpqHdvew0PWSGASMO3WbnQWgRZO
+ULlsuTYNGaT3hZlARiZGM4bODCdx5I8PtDqZba94SLfLxNNgfdAXbyO8icC8FriU
+8LIQjcjgNZftj8bbm82q9oxF3A/uoHgSvvZ99Pe2jE7lfTLo9/ceBEaeCM3L7OKa
+wzU/zqEB4xAK7NmrEwnr5jlrkjDHCL2KMu8LsmFvEUOVzzHqGQHMGm3S1Vc12sCu
+RjnTM+34wB6tPWhvqFMkrNb53StRUHfkt12tSIBdZVfl6weCfctyTwZqNNQ4yGvt
+ijpoXjXjeBTaXYaf5dQc3ZDCfKIA1JVlBIX/gwIDAQABAoIBAQDGGcWGgjrLVnUr
+qUcZOARDUW9XK9IWjZpn7xlvrmECo8552Lwp3LDNtcoVB2mhLhxG0jad7eVU6IYL
+ewNK7M+lk0lHX1yrh1Trq0I/tgN8eFyp+cj0Tw2hLcR/O0RmTGsi9tdhi/uNQPEI
+ZivNf31HHVyEyIae7FnOVpotFk6022EElQd8F8GeeKpo9pQs8sHAVOUVC8Mf2sr+
+bFyo9nzU0XkSay72ozU9O5Iw2d5aVrN5f3NS+JG9OpzvouNwkaAMOUsLVvZlUTqY
+0ve5CY2rB3D72h4GJfM2aHi8hwj56yBOsyIhBSXNYJM8nXKEbJaK5ulVv/a7KKTk
+KzSdk/mJAoGBAPXPLLJgx0mZKXNXqSvSsvgVzcpLrJh8figoF4rMzq8+5bN9Y6KU
+Lvb2ODIm/oGCIiGDdFTYqBJ0/EpauaAJgdzIwYnMZXmVB97pmwni9KrDPDwWTOqS
+3Yzh0t4C8DAgwZE4X6Ad/fmn7V06dfJZZJynL9exPp8RF7ptJ2yOnlbdAoGBAOqk
+AfRWuPGeZL9rFkd45+j03MDHglE2xKhsbRobHANItHo7r26D/Ov7QkM+lGlqdrNg
+tTPPtHs50Ek+Sb0X31/Fj45IqQroxctpbZAaJchVl88tvKXA8fkk14a9GLiow3Bk
+UGA5DFRmsIMXEengzRJoxcHAbbciGWdeSneH49nfAoGAVMypHcyXU8Ob8ieuu+iP
+R1i2SvC6VUy1dQMHxCGNuBVZxwcd5Ut7vEUK8/pR2LndLnScIF0x9lQXaUtNOHGv
+NEypv/EcnMoWEgfDLbD3OSXrVMtYs6ABAIYzadXXqLLUNFYfXyyZnpQZJg1x/S5r
+sENZFO8XrGaIKg9YB3JYG50CgYBUQweMpmQOKNKHRz6d9hZaOyzXcg4jeiaPUTiw
+6lFaAI8HYk2yw2VdnUKDgYKshJYR/sWz0IBAzFc3Jk42wM7vxrOx5fgGuebmEHtP
+B4TP96TnusYHRE3hKdDYSyoIjlp5Dx0qIPKDkMkMmolNUvRyCvwRgzgjTvSOgXb+
+i+dQQwKBgQCKn04xYbhkMOiHxNP/DUf6+XmV1V7KbpjIySychbxcTKCV98c9q491
+YjF8FJgi2JdV5XOHWaKti2Qg/tYz7CBtqkQdeNjtfKkOUA8ZyZeiNZdPIza9tzmr
+t6mCthH1oT3jyiddhSYxyfUBW3olPhBPj8YBblmq1QHE8y2j3CNjvw==
-----END RSA PRIVATE KEY-----
diff --git a/tests/certs/EdelCurlRoot-ca.prm b/tests/certs/EdelCurlRoot-ca.prm
index 4c53ef515..d0eff4894 100644
--- a/tests/certs/EdelCurlRoot-ca.prm
+++ b/tests/certs/EdelCurlRoot-ca.prm
@@ -10,7 +10,7 @@ countryName_value = NN
organizationName = "Organization Name"
organizationName_value = Edel Curl Arctic Illudium Research Cloud
commonName = "Common Name"
-commonName_value = Nothern Nowhere Trust Anchor
+commonName_value = Northern Nowhere Trust Anchor
[ x509v3 ]
basicConstraints = critical,CA:true
keyUsage = critical,keyCertSign,cRLSign
diff --git a/tests/certs/Makefile.am b/tests/certs/Makefile.am
index ddb5c9fb1..bd0bbbb7c 100644
--- a/tests/certs/Makefile.am
+++ b/tests/certs/Makefile.am
@@ -23,23 +23,26 @@ AUTOMAKE_OPTIONS = foreign
SUBDIRS = scripts
-CERTFILES = \
- EdelCurlRoot-ca.cacert \
+CERTCONFIGS = \
+ EdelCurlRoot-ca.prm \
EdelCurlRoot-ca.cnf \
+ Server-localhost-sv.prm \
+ Server-localhost.nn-sv.prm \
+ Server-localhost0h-sv.prm
+
+GENERATEDCERTS = \
+ EdelCurlRoot-ca.cacert \
EdelCurlRoot-ca.crt \
EdelCurlRoot-ca.csr \
EdelCurlRoot-ca.der \
EdelCurlRoot-ca.key \
- EdelCurlRoot-ca.prm \
Server-localhost-sv.crl \
Server-localhost-sv.crt \
Server-localhost-sv.csr \
Server-localhost-sv.der \
Server-localhost-sv.dhp \
Server-localhost-sv.key \
- Server-localhost-sv.p12 \
Server-localhost-sv.pem \
- Server-localhost-sv.prm \
Server-localhost-sv.pub.der \
Server-localhost-sv.pub.pem \
Server-localhost.nn-sv.crl \
@@ -49,7 +52,6 @@ CERTFILES = \
Server-localhost.nn-sv.dhp \
Server-localhost.nn-sv.key \
Server-localhost.nn-sv.pem \
- Server-localhost.nn-sv.prm \
Server-localhost.nn-sv.pub.der \
Server-localhost.nn-sv.pub.pem \
Server-localhost0h-sv.crl \
@@ -58,9 +60,7 @@ CERTFILES = \
Server-localhost0h-sv.der \
Server-localhost0h-sv.dhp \
Server-localhost0h-sv.key \
- Server-localhost0h-sv.p12 \
Server-localhost0h-sv.pem \
- Server-localhost0h-sv.prm \
Server-localhost0h-sv.pub.der \
Server-localhost0h-sv.pub.pem
@@ -68,5 +68,24 @@ SRPFILES = \
srp-verifier-conf \
srp-verifier-db
-EXTRA_DIST = $(CERTFILES) $(SRPFILES)
+EXTRA_DIST = $(CERTCONFIGS) $(GENERATEDCERTS) $(SRPFILES)
+
+# Rebuild the certificates
+
+clean-certs:
+ cd $(srcdir); rm -f $(GENERATEDCERTS)
+
+build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
+ $(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
+
+$(srcdir)/EdelCurlRoot-ca.cacert:
+ cd $(srcdir); scripts/genroot.sh EdelCurlRoot
+
+$(srcdir)/Server-localhost-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+ cd $(srcdir); scripts/genserv.sh Server-localhost EdelCurlRoot
+
+$(srcdir)/Server-localhost.nn-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+ cd $(srcdir); scripts/genserv.sh Server-localhost.nn EdelCurlRoot
+$(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+ cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
diff --git a/tests/certs/Makefile.in b/tests/certs/Makefile.in
index 0610cae3f..f4c8f0a30 100644
--- a/tests/certs/Makefile.in
+++ b/tests/certs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/certs
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -396,23 +406,26 @@ top_srcdir = @top_srcdir@
###########################################################################
AUTOMAKE_OPTIONS = foreign
SUBDIRS = scripts
-CERTFILES = \
- EdelCurlRoot-ca.cacert \
+CERTCONFIGS = \
+ EdelCurlRoot-ca.prm \
EdelCurlRoot-ca.cnf \
+ Server-localhost-sv.prm \
+ Server-localhost.nn-sv.prm \
+ Server-localhost0h-sv.prm
+
+GENERATEDCERTS = \
+ EdelCurlRoot-ca.cacert \
EdelCurlRoot-ca.crt \
EdelCurlRoot-ca.csr \
EdelCurlRoot-ca.der \
EdelCurlRoot-ca.key \
- EdelCurlRoot-ca.prm \
Server-localhost-sv.crl \
Server-localhost-sv.crt \
Server-localhost-sv.csr \
Server-localhost-sv.der \
Server-localhost-sv.dhp \
Server-localhost-sv.key \
- Server-localhost-sv.p12 \
Server-localhost-sv.pem \
- Server-localhost-sv.prm \
Server-localhost-sv.pub.der \
Server-localhost-sv.pub.pem \
Server-localhost.nn-sv.crl \
@@ -422,7 +435,6 @@ CERTFILES = \
Server-localhost.nn-sv.dhp \
Server-localhost.nn-sv.key \
Server-localhost.nn-sv.pem \
- Server-localhost.nn-sv.prm \
Server-localhost.nn-sv.pub.der \
Server-localhost.nn-sv.pub.pem \
Server-localhost0h-sv.crl \
@@ -431,9 +443,7 @@ CERTFILES = \
Server-localhost0h-sv.der \
Server-localhost0h-sv.dhp \
Server-localhost0h-sv.key \
- Server-localhost0h-sv.p12 \
Server-localhost0h-sv.pem \
- Server-localhost0h-sv.prm \
Server-localhost0h-sv.pub.der \
Server-localhost0h-sv.pub.pem
@@ -441,7 +451,7 @@ SRPFILES = \
srp-verifier-conf \
srp-verifier-db
-EXTRA_DIST = $(CERTFILES) $(SRPFILES)
+EXTRA_DIST = $(CERTCONFIGS) $(GENERATEDCERTS) $(SRPFILES)
all: all-recursive
.SUFFIXES:
@@ -457,7 +467,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/certs/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/certs/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -752,6 +761,28 @@ uninstall-am:
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
+
+# Rebuild the certificates
+
+clean-certs:
+ cd $(srcdir); rm -f $(GENERATEDCERTS)
+
+build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
+ $(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
+
+$(srcdir)/EdelCurlRoot-ca.cacert:
+ cd $(srcdir); scripts/genroot.sh EdelCurlRoot
+
+$(srcdir)/Server-localhost-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+ cd $(srcdir); scripts/genserv.sh Server-localhost EdelCurlRoot
+
+$(srcdir)/Server-localhost.nn-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+ cd $(srcdir); scripts/genserv.sh Server-localhost.nn EdelCurlRoot
+
+$(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+ cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
# 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.
diff --git a/tests/certs/Server-localhost-sv.crl b/tests/certs/Server-localhost-sv.crl
index 804655d00..3e75229ba 100644
--- a/tests/certs/Server-localhost-sv.crl
+++ b/tests/certs/Server-localhost-sv.crl
@@ -1,12 +1,21 @@
-----BEGIN X509 CRL-----
-MIIB2zCBxAIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE
-CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG
-A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzEx
-WhcNMTAwNjI2MjEzNzExWjAZMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWqAOMAww
-CgYDVR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBAFuPZJ/cNNCeAzkSxVvPPPRX
-Wsv9T6Dt61C5Fmq9eSNN2kRf7/dq5A5nqTIlHbXXiLdj3UqNhUHXe2oA1UpbdHz9
-0JlfwWm1Y/gMr1fh1n0oFebEtCuOgDRpd07Uiz8AqOUBykDNDUlMvVwR9raHL8hj
-NRwzugsfIxl0CvLLqrBpUWMxW3qemk4cWW39yrDdZgKo6eOZAOR3FQYlLIrw6Jcr
-Kmm0PjdcJIfRgJvNysgyx1dIIKe7QXvFTR/QzdHWIWTkiYIW7wUKSzSICvDCr094
-eo3nr3n9BtOqT61Z1m6FGCP6Mm0wFl6xLTCNd6ygfFo7pcAdWlUsdBgKzics0Kc=
+MIIDbzCCAlcCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
+BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
+BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
+MTFaFw0xNTA0MjAxNTA3MTFaMIIBqTAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
+FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
+WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
+NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
+NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
+MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
+MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
+MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
+MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
+Fw0xNTAzMjExNTA3MTFaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQUFAAOC
+AQEAllslrhWUoq49PC+KQghVDAeFREP3pKPUlSebVVR8PCtCKrFtc53dUaTl8qhK
+1wOLodr80lfr2kEgzTEDt2CfXryl3orLPeMWe0OWTBsPbuwj+d7m3uq4B43laqJn
+JM5ebRvzHWMJkVNkwiXiadPTW5ZMUqu2Bs97rdcjklUrEcamf9aMLqb6sPGtU4EO
+o/GxGW2eypYwncFmzAc5W3NDRePGPhN5rUDfqm5Id4T9FKmGcNmI7qlLQi+jp23F
+V6RvrqANIemopQQ4kYGy7pzilDYm6+R+fPCIh2H/0eqCDY8NdjygXtWW+pJ58axV
+MPZ2mFPcH5UHiqmi8kRstnA8KQ==
-----END X509 CRL-----
diff --git a/tests/certs/Server-localhost-sv.crt b/tests/certs/Server-localhost-sv.crt
index 9a3d94498..abf69245e 100644
--- a/tests/certs/Server-localhost-sv.crt
+++ b/tests/certs/Server-localhost-sv.crt
@@ -1,16 +1,15 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:94:f9:7c:6a
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311627 (0xcfa60bc514b)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:37:11 2010 GMT
- Not After : Aug 13 21:37:11 2018 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Jun 7 15:07:11 2023 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
@@ -19,63 +18,63 @@ Certificate:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:b0:27:79:26:2c:b9:e4:d1:81:0a:09:d2:76:fe:
- 9a:e1:05:68:01:b3:72:77:97:38:e4:60:1c:71:9d:
- 99:f7:26:7b:21:b5:6d:aa:9f:14:76:07:6c:a4:2a:
- 2d:7d:ee:f6:6f:8a:58:c4:93:de:fe:a1:25:0f:ff:
- 57:49:c0:d9:94:d9:07:79:bf:8c:6d:fa:f1:18:82:
- 67:a0:3f:d7:31:03:82:ec:b9:39:69:07:ec:ec:93:
- 17:5b:1a:72:91:93:b2:6b:98:66:63:fe:61:29:e7:
- ad:86:0e:04:ba:bf:8b:55:57:61:a5:4a:f6:ca:e7:
- c6:d1:b8:65:42:ab:67:64:17
+ 00:ba:5f:4b:69:74:31:99:4d:f4:b4:b7:2a:65:b8:
+ b7:31:c1:38:cf:36:37:bb:5e:18:e3:52:1f:52:aa:
+ 5a:25:2f:0c:66:88:32:b0:ef:b2:2c:90:38:5e:6e:
+ 6f:0e:e4:3b:3f:f0:2e:f1:7a:3d:5e:c3:64:86:3f:
+ 68:b7:cf:0b:b3:ea:0a:ca:94:16:d4:2b:6a:02:e3:
+ a1:b3:c7:d1:d0:06:b8:ff:df:dc:e0:32:2a:e7:dd:
+ 62:cc:71:c4:e8:cf:9d:de:5c:75:69:9d:b6:ce:e2:
+ 42:d8:a7:bd:50:54:78:2d:55:67:7f:00:7b:8f:9c:
+ 11:d1:9e:ce:be:1e:fe:cf:37
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost
X509v3 Key Usage:
- Key Encipherment
+ Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
- BC:69:86:84:70:3A:AD:DE:08:2A:70:C6:3B:47:8C:11:3F:E0:9A:6D
+ 7E:42:8D:AC:2E:93:AD:4C:E0:09:AC:C6:08:F1:82:E0:B7:B7:C6:7F
X509v3 Authority Key Identifier:
- keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
- X509v3 Basic Constraints: critical
+ X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
- 7b:f0:b0:a0:d9:d0:91:38:9b:fe:cf:78:c8:d6:30:5d:87:9d:
- b3:b9:6e:8b:5a:73:74:93:cb:30:49:d1:00:79:9d:5a:c2:71:
- a3:93:5f:de:d3:5a:0c:fb:6d:41:83:89:1b:4f:0d:1c:65:0c:
- 1a:0c:0f:96:79:62:90:e1:74:04:dd:c6:d8:cf:0f:5f:0f:28:
- 87:d7:86:56:90:b4:d0:88:80:f1:a7:cd:fd:0b:13:58:bb:6d:
- e6:ab:44:f6:9b:d6:cc:c7:db:3d:3a:90:c4:20:72:f4:38:38:
- c0:ef:80:1d:60:3f:4e:30:40:11:56:29:70:aa:17:91:90:5f:
- 70:0b:89:51:af:17:a8:ed:20:4e:76:bb:cf:a8:88:9a:25:0f:
- 3a:96:26:17:50:2a:af:f3:8b:21:9c:cf:ff:f9:20:fc:fe:c0:
- 37:95:c7:cd:0d:7a:53:d9:26:12:38:2c:f6:03:95:1b:da:d0:
- 08:f7:32:91:07:a7:35:0c:14:00:44:c7:43:fb:23:2e:14:44:
- e6:ee:a9:c9:20:37:09:b8:ae:21:4f:4b:b7:86:4d:e3:41:84:
- 15:4e:1a:29:00:03:a8:92:99:3c:75:ea:43:0f:e3:2b:f7:17:
- b1:1b:87:80:04:d3:a7:73:b1:5e:85:38:7d:89:01:16:19:f6:
- c4:e1:1b:75
+ 00:fe:c4:fc:4b:28:b8:bc:39:8c:6f:f1:72:d3:76:da:28:27:
+ e2:97:94:bb:ad:2f:91:c4:db:df:33:4b:48:4e:97:5b:4c:4c:
+ be:fc:e4:b7:19:5c:b8:83:6e:ef:2c:b0:d5:7c:fc:0d:cb:7e:
+ 29:ed:fd:4d:ef:05:1c:89:15:31:78:9b:18:29:d3:37:83:c7:
+ 39:f4:78:27:b7:00:75:d1:fb:f0:29:88:79:e4:e9:a7:d4:65:
+ 04:bf:d5:a1:dc:05:b2:17:c4:a9:da:61:10:22:5f:8f:50:fc:
+ 1f:ab:f6:39:dd:ab:35:a6:94:54:63:5c:6d:25:f0:dc:3a:0a:
+ 70:4e:49:ef:be:fa:2c:0a:cd:ce:a6:2d:26:cd:f8:24:89:77:
+ 2c:ea:6e:19:b6:5c:8c:1a:08:ea:a8:9f:2c:1b:c7:fc:13:6c:
+ fe:a7:90:08:e5:98:83:30:52:86:ac:83:0b:cb:25:92:21:94:
+ 80:13:d7:e8:d0:42:56:83:55:d3:09:9b:e8:c5:96:82:15:64:
+ 6b:83:77:eb:99:e5:52:dc:1b:36:29:a0:c9:da:8b:d3:0d:77:
+ 24:f2:c3:df:2e:c4:93:e0:34:47:a9:9b:54:d3:75:d5:c7:de:
+ 88:a1:ef:7b:40:2f:dc:e9:28:8c:69:be:eb:71:4a:c2:30:50:
+ 99:36:52:69
-----BEGIN CERTIFICATE-----
-MIIDQTCCAimgAwIBAgIGC5iU+XxqMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDPzCCAiegAwIBAgIGDPpgvFFLMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcxMVoXDTE4MDgxMzIxMzcxMVowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-sCd5Jiy55NGBCgnSdv6a4QVoAbNyd5c45GAccZ2Z9yZ7IbVtqp8UdgdspCotfe72
-b4pYxJPe/qElD/9XScDZlNkHeb+MbfrxGIJnoD/XMQOC7Lk5aQfs7JMXWxpykZOy
-a5hmY/5hKeethg4Eur+LVVdhpUr2yufG0bhlQqtnZBcCAwEAAaOBiTCBhjAUBgNV
-HREEDTALgglsb2NhbGhvc3QwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUF
-BwMBMB0GA1UdDgQWBBS8aYaEcDqt3ggqcMY7R4wRP+CabTAfBgNVHSMEGDAWgBSt
-PuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUA
-A4IBAQB78LCg2dCROJv+z3jI1jBdh52zuW6LWnN0k8swSdEAeZ1awnGjk1/e01oM
-+21Bg4kbTw0cZQwaDA+WeWKQ4XQE3cbYzw9fDyiH14ZWkLTQiIDxp839CxNYu23m
-q0T2m9bMx9s9OpDEIHL0ODjA74AdYD9OMEARVilwqheRkF9wC4lRrxeo7SBOdrvP
-qIiaJQ86liYXUCqv84shnM//+SD8/sA3lcfNDXpT2SYSOCz2A5Ub2tAI9zKRB6c1
-DBQARMdD+yMuFETm7qnJIDcJuK4hT0u3hk3jQYQVThopAAOokpk8depDD+Mr9xex
-G4eABNOnc7FehTh9iQEWGfbE4Rt1
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+ALpfS2l0MZlN9LS3KmW4tzHBOM82N7teGONSH1KqWiUvDGaIMrDvsiyQOF5ubw7k
+Oz/wLvF6PV7DZIY/aLfPC7PqCsqUFtQragLjobPH0dAGuP/f3OAyKufdYsxxxOjP
+nd5cdWmdts7iQtinvVBUeC1VZ38Ae4+cEdGezr4e/s83AgMBAAGjgYYwgYMwFAYD
+VR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEF
+BQcDATAdBgNVHQ4EFgQUfkKNrC6TrUzgCazGCPGC4Le3xn8wHwYDVR0jBBgwFoAU
+Esq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOC
+AQEAAP7E/EsouLw5jG/xctN22ign4peUu60vkcTb3zNLSE6XW0xMvvzktxlcuINu
+7yyw1Xz8Dct+Ke39Te8FHIkVMXibGCnTN4PHOfR4J7cAddH78CmIeeTpp9RlBL/V
+odwFshfEqdphECJfj1D8H6v2Od2rNaaUVGNcbSXw3DoKcE5J7776LArNzqYtJs34
+JIl3LOpuGbZcjBoI6qifLBvH/BNs/qeQCOWYgzBShqyDC8slkiGUgBPX6NBCVoNV
+0wmb6MWWghVka4N365nlUtwbNimgydqL0w13JPLD3y7Ek+A0R6mbVNN11cfeiKHv
+e0Av3OkojGm+63FKwjBQmTZSaQ==
-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost-sv.csr b/tests/certs/Server-localhost-sv.csr
index a8773f556..f919409b1 100644
--- a/tests/certs/Server-localhost-sv.csr
+++ b/tests/certs/Server-localhost-sv.csr
@@ -1,11 +1,11 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBkzCB/QIBADBUMQswCQYDVQQGEwJOTjExMC8GA1UECgwoRWRlbCBDdXJsIEFy
Y3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDESMBAGA1UEAwwJbG9jYWxob3N0
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgB
-s3J3lzjkYBxxnZn3JnshtW2qnxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5
-v4xt+vEYgmegP9cxA4LsuTlpB+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2Gl
-SvbK58bRuGVCq2dkFwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAlIivGkhU8iph
-eZQAaiwakIwPx1TPA3+Dl4tbStTr3Ludd8rjZMGPRXKU+wjvfhCmDlyk90yOun2C
-lPIT8W/ibXNgRF1vz+eFofjM0hZtNPOX4G18wwD5y0OTr7obyqJPKAZsJZh6L3YE
-aARr27RCoFv92hFwVr181wAU+bVCekA=
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6X0tpdDGZTfS0typluLcxwTjP
+Nje7XhjjUh9SqlolLwxmiDKw77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grK
+lBbUK2oC46Gzx9HQBrj/39zgMirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/
+AHuPnBHRns6+Hv7PNwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAsJ+ypJAE5YiR
+A1niVNXKoqXmIQsXGJv9BA39AjT+cdqvdd+WTKCaZ9QXucDArhG9B9Dp66bfSgvT
+WVz6F85ju5HQekZrS2ZxdR1+muWAFE/vDgi22QwTysXvTWUfsqBQ0ZGEmdzyPJJq
+7AGzbAWx8JDhgGg2jStvQJBLhtYxhoY=
-----END CERTIFICATE REQUEST-----
diff --git a/tests/certs/Server-localhost-sv.der b/tests/certs/Server-localhost-sv.der
index 766cf539c..b76db9ddc 100644
--- a/tests/certs/Server-localhost-sv.der
+++ b/tests/certs/Server-localhost-sv.der
Binary files differ
diff --git a/tests/certs/Server-localhost-sv.dhp b/tests/certs/Server-localhost-sv.dhp
index b61c28b8c..e69de29bb 100644
--- a/tests/certs/Server-localhost-sv.dhp
+++ b/tests/certs/Server-localhost-sv.dhp
@@ -1,5 +0,0 @@
------BEGIN DH PARAMETERS-----
-MIGHAoGBAP5mA7oYimErFUulbvNC8V0HwyB62NCj6TZb6YXJwElCksQc8RyHnkrY
-9Wx2+lduFqHjUWalgVF7Gma7CfR/pt+fiU6Jn2vWR2v7KT6hYeRKsJrONJlth+NK
-V7/d4zyvleJ/VSp0TuuSxmMMQ6hG3i5YhSGXyCh4h0pl4Wu/hdVTAgEC
------END DH PARAMETERS-----
diff --git a/tests/certs/Server-localhost-sv.key b/tests/certs/Server-localhost-sv.key
index 8ade26aab..354017913 100644
--- a/tests/certs/Server-localhost-sv.key
+++ b/tests/certs/Server-localhost-sv.key
@@ -1,15 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgBs3J3lzjkYBxxnZn3JnshtW2q
-nxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5v4xt+vEYgmegP9cxA4LsuTlp
-B+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2GlSvbK58bRuGVCq2dkFwIDAQAB
-AoGBAKa0JHWZHC9MiSa71t5f4qiTGjOJ5AkDJocR4bkv4dZAJ4TmEqvGsnFkY08U
-z0p/i95Q+eLG4eDtFYsHJU8Z343odktK99BUJzkDzqWT9RMzJ5Ykx6LbldJyW5NN
-IwvhDuW3rq8fbCMr+NGe9chc1Rg2lrfeEJDwjki/drBQs7zpAkEA3R6QEcuST7Gq
-JzjfU9uLD2tHLYZFNzS4dm4PvwC2aK7OdEOm7VkXFwUyP97QjwPV7fabrQ2QjwGg
-ek+nVEdH9QJBAMvxFickez9eqgiMfZbfY8t5I+Dxz69ZVGsPvl/6xhiUvgxjREM7
-EnScf86HwlBnteoUtMptAKu7Dbq5inPbkFsCQCV8FuRNZGJKNhQsGf/3Sd21S/21
-s2omb9bz1YuFrWaVq74d8eBup/FpGhmlxilYdx2+Hqn5kLYNiozxj+ZDpzkCQQC8
-7VJAYKNsSR3rXXra0Yd5b3e1Y02qe26g36zU7VOmYeTNRQhv38FxFamwgkOYiPsV
-Jql0/RWqAVburAN+4OARAkB9FwUtKyhs7FM4N9bXi+c8m42hkBv+dSim534tPijS
-UCcCONLEQTv4yjlCOwTKMVDoajkWH1A2e7psTmIR+zwc
+MIICXgIBAAKBgQC6X0tpdDGZTfS0typluLcxwTjPNje7XhjjUh9SqlolLwxmiDKw
+77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grKlBbUK2oC46Gzx9HQBrj/39zg
+Mirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/AHuPnBHRns6+Hv7PNwIDAQAB
+AoGBAJdWRGVIPfJP1BJe3eWl3dRgI2JXk1/pY+pLSDYXMIYbM0Wa+RamPRdksPE1
+WadM+zPLNENP0L+/iERe/wiq7sNxKQLwH5eE3tUxC+iC8GO6gQ2zHaWVNu3R79CM
+t8YZhlmG2o+xC4CGYzuITgPE16m24CYauLZHO/YVDzG6yNApAkEA6K0db5bZmIaU
+TJW/jEnPJSubDx8kE1YncTOAKaAeoJwaaSfFphVKNGNrZHu3jBhKFgVNBNxGUWrW
+0pIkDrb3hQJBAM0N7+ghZ/7vaOoKqYHQI2z8SgPsUjQjmubCBALe/Ys3kg9PPpyz
+umJSAOYjC4X1dSlkAkciJqRS0Y6uKgSH4osCQQCVIWftft1GsnNYxt43t5MKOvGu
+doIz1pN/LcgmZddbj9IptfErqxedjl9lzxnstCDADnO3+ssjIfxAiKSNvd3VAkA3
+3yFMTbXpZ9BdXPRc05qjeoasVPr9C+qMD7dKFPpesZCRrVTxG6OgYJmwG0JriLsY
+wRBB05NV2N8SknAOdfwLAkEAw5Hqxc/Xlh6xhy9tBdJXDtuptV10mg6EbO98x9/7
+gyuAArSguhXna+aRqjLRelCwVB9f9aZ1XVoDKWVCsnfCbQ==
-----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost-sv.p12 b/tests/certs/Server-localhost-sv.p12
deleted file mode 100644
index d7b8441a4..000000000
--- a/tests/certs/Server-localhost-sv.p12
+++ /dev/null
Binary files differ
diff --git a/tests/certs/Server-localhost-sv.pem b/tests/certs/Server-localhost-sv.pem
index 86b48b343..6ef1fd513 100644
--- a/tests/certs/Server-localhost-sv.pem
+++ b/tests/certs/Server-localhost-sv.pem
@@ -1,11 +1,11 @@
extensions = x509v3
[ x509v3 ]
subjectAltName = DNS:localhost
-keyUsage = keyEncipherment
+keyUsage = keyEncipherment,digitalSignature,keyAgreement
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
[ req ]
default_bits = 1024
distinguished_name = req_DN
@@ -24,33 +24,32 @@ commonName_value = localhost
# the certficate
# some dhparam
-----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgBs3J3lzjkYBxxnZn3JnshtW2q
-nxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5v4xt+vEYgmegP9cxA4LsuTlp
-B+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2GlSvbK58bRuGVCq2dkFwIDAQAB
-AoGBAKa0JHWZHC9MiSa71t5f4qiTGjOJ5AkDJocR4bkv4dZAJ4TmEqvGsnFkY08U
-z0p/i95Q+eLG4eDtFYsHJU8Z343odktK99BUJzkDzqWT9RMzJ5Ykx6LbldJyW5NN
-IwvhDuW3rq8fbCMr+NGe9chc1Rg2lrfeEJDwjki/drBQs7zpAkEA3R6QEcuST7Gq
-JzjfU9uLD2tHLYZFNzS4dm4PvwC2aK7OdEOm7VkXFwUyP97QjwPV7fabrQ2QjwGg
-ek+nVEdH9QJBAMvxFickez9eqgiMfZbfY8t5I+Dxz69ZVGsPvl/6xhiUvgxjREM7
-EnScf86HwlBnteoUtMptAKu7Dbq5inPbkFsCQCV8FuRNZGJKNhQsGf/3Sd21S/21
-s2omb9bz1YuFrWaVq74d8eBup/FpGhmlxilYdx2+Hqn5kLYNiozxj+ZDpzkCQQC8
-7VJAYKNsSR3rXXra0Yd5b3e1Y02qe26g36zU7VOmYeTNRQhv38FxFamwgkOYiPsV
-Jql0/RWqAVburAN+4OARAkB9FwUtKyhs7FM4N9bXi+c8m42hkBv+dSim534tPijS
-UCcCONLEQTv4yjlCOwTKMVDoajkWH1A2e7psTmIR+zwc
+MIICXgIBAAKBgQC6X0tpdDGZTfS0typluLcxwTjPNje7XhjjUh9SqlolLwxmiDKw
+77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grKlBbUK2oC46Gzx9HQBrj/39zg
+Mirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/AHuPnBHRns6+Hv7PNwIDAQAB
+AoGBAJdWRGVIPfJP1BJe3eWl3dRgI2JXk1/pY+pLSDYXMIYbM0Wa+RamPRdksPE1
+WadM+zPLNENP0L+/iERe/wiq7sNxKQLwH5eE3tUxC+iC8GO6gQ2zHaWVNu3R79CM
+t8YZhlmG2o+xC4CGYzuITgPE16m24CYauLZHO/YVDzG6yNApAkEA6K0db5bZmIaU
+TJW/jEnPJSubDx8kE1YncTOAKaAeoJwaaSfFphVKNGNrZHu3jBhKFgVNBNxGUWrW
+0pIkDrb3hQJBAM0N7+ghZ/7vaOoKqYHQI2z8SgPsUjQjmubCBALe/Ys3kg9PPpyz
+umJSAOYjC4X1dSlkAkciJqRS0Y6uKgSH4osCQQCVIWftft1GsnNYxt43t5MKOvGu
+doIz1pN/LcgmZddbj9IptfErqxedjl9lzxnstCDADnO3+ssjIfxAiKSNvd3VAkA3
+3yFMTbXpZ9BdXPRc05qjeoasVPr9C+qMD7dKFPpesZCRrVTxG6OgYJmwG0JriLsY
+wRBB05NV2N8SknAOdfwLAkEAw5Hqxc/Xlh6xhy9tBdJXDtuptV10mg6EbO98x9/7
+gyuAArSguhXna+aRqjLRelCwVB9f9aZ1XVoDKWVCsnfCbQ==
-----END RSA PRIVATE KEY-----
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:94:f9:7c:6a
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311627 (0xcfa60bc514b)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:37:11 2010 GMT
- Not After : Aug 13 21:37:11 2018 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Jun 7 15:07:11 2023 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
@@ -59,68 +58,63 @@ Certificate:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:b0:27:79:26:2c:b9:e4:d1:81:0a:09:d2:76:fe:
- 9a:e1:05:68:01:b3:72:77:97:38:e4:60:1c:71:9d:
- 99:f7:26:7b:21:b5:6d:aa:9f:14:76:07:6c:a4:2a:
- 2d:7d:ee:f6:6f:8a:58:c4:93:de:fe:a1:25:0f:ff:
- 57:49:c0:d9:94:d9:07:79:bf:8c:6d:fa:f1:18:82:
- 67:a0:3f:d7:31:03:82:ec:b9:39:69:07:ec:ec:93:
- 17:5b:1a:72:91:93:b2:6b:98:66:63:fe:61:29:e7:
- ad:86:0e:04:ba:bf:8b:55:57:61:a5:4a:f6:ca:e7:
- c6:d1:b8:65:42:ab:67:64:17
+ 00:ba:5f:4b:69:74:31:99:4d:f4:b4:b7:2a:65:b8:
+ b7:31:c1:38:cf:36:37:bb:5e:18:e3:52:1f:52:aa:
+ 5a:25:2f:0c:66:88:32:b0:ef:b2:2c:90:38:5e:6e:
+ 6f:0e:e4:3b:3f:f0:2e:f1:7a:3d:5e:c3:64:86:3f:
+ 68:b7:cf:0b:b3:ea:0a:ca:94:16:d4:2b:6a:02:e3:
+ a1:b3:c7:d1:d0:06:b8:ff:df:dc:e0:32:2a:e7:dd:
+ 62:cc:71:c4:e8:cf:9d:de:5c:75:69:9d:b6:ce:e2:
+ 42:d8:a7:bd:50:54:78:2d:55:67:7f:00:7b:8f:9c:
+ 11:d1:9e:ce:be:1e:fe:cf:37
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost
X509v3 Key Usage:
- Key Encipherment
+ Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
- BC:69:86:84:70:3A:AD:DE:08:2A:70:C6:3B:47:8C:11:3F:E0:9A:6D
+ 7E:42:8D:AC:2E:93:AD:4C:E0:09:AC:C6:08:F1:82:E0:B7:B7:C6:7F
X509v3 Authority Key Identifier:
- keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
- X509v3 Basic Constraints: critical
+ X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
- 7b:f0:b0:a0:d9:d0:91:38:9b:fe:cf:78:c8:d6:30:5d:87:9d:
- b3:b9:6e:8b:5a:73:74:93:cb:30:49:d1:00:79:9d:5a:c2:71:
- a3:93:5f:de:d3:5a:0c:fb:6d:41:83:89:1b:4f:0d:1c:65:0c:
- 1a:0c:0f:96:79:62:90:e1:74:04:dd:c6:d8:cf:0f:5f:0f:28:
- 87:d7:86:56:90:b4:d0:88:80:f1:a7:cd:fd:0b:13:58:bb:6d:
- e6:ab:44:f6:9b:d6:cc:c7:db:3d:3a:90:c4:20:72:f4:38:38:
- c0:ef:80:1d:60:3f:4e:30:40:11:56:29:70:aa:17:91:90:5f:
- 70:0b:89:51:af:17:a8:ed:20:4e:76:bb:cf:a8:88:9a:25:0f:
- 3a:96:26:17:50:2a:af:f3:8b:21:9c:cf:ff:f9:20:fc:fe:c0:
- 37:95:c7:cd:0d:7a:53:d9:26:12:38:2c:f6:03:95:1b:da:d0:
- 08:f7:32:91:07:a7:35:0c:14:00:44:c7:43:fb:23:2e:14:44:
- e6:ee:a9:c9:20:37:09:b8:ae:21:4f:4b:b7:86:4d:e3:41:84:
- 15:4e:1a:29:00:03:a8:92:99:3c:75:ea:43:0f:e3:2b:f7:17:
- b1:1b:87:80:04:d3:a7:73:b1:5e:85:38:7d:89:01:16:19:f6:
- c4:e1:1b:75
+ 00:fe:c4:fc:4b:28:b8:bc:39:8c:6f:f1:72:d3:76:da:28:27:
+ e2:97:94:bb:ad:2f:91:c4:db:df:33:4b:48:4e:97:5b:4c:4c:
+ be:fc:e4:b7:19:5c:b8:83:6e:ef:2c:b0:d5:7c:fc:0d:cb:7e:
+ 29:ed:fd:4d:ef:05:1c:89:15:31:78:9b:18:29:d3:37:83:c7:
+ 39:f4:78:27:b7:00:75:d1:fb:f0:29:88:79:e4:e9:a7:d4:65:
+ 04:bf:d5:a1:dc:05:b2:17:c4:a9:da:61:10:22:5f:8f:50:fc:
+ 1f:ab:f6:39:dd:ab:35:a6:94:54:63:5c:6d:25:f0:dc:3a:0a:
+ 70:4e:49:ef:be:fa:2c:0a:cd:ce:a6:2d:26:cd:f8:24:89:77:
+ 2c:ea:6e:19:b6:5c:8c:1a:08:ea:a8:9f:2c:1b:c7:fc:13:6c:
+ fe:a7:90:08:e5:98:83:30:52:86:ac:83:0b:cb:25:92:21:94:
+ 80:13:d7:e8:d0:42:56:83:55:d3:09:9b:e8:c5:96:82:15:64:
+ 6b:83:77:eb:99:e5:52:dc:1b:36:29:a0:c9:da:8b:d3:0d:77:
+ 24:f2:c3:df:2e:c4:93:e0:34:47:a9:9b:54:d3:75:d5:c7:de:
+ 88:a1:ef:7b:40:2f:dc:e9:28:8c:69:be:eb:71:4a:c2:30:50:
+ 99:36:52:69
-----BEGIN CERTIFICATE-----
-MIIDQTCCAimgAwIBAgIGC5iU+XxqMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDPzCCAiegAwIBAgIGDPpgvFFLMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcxMVoXDTE4MDgxMzIxMzcxMVowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-sCd5Jiy55NGBCgnSdv6a4QVoAbNyd5c45GAccZ2Z9yZ7IbVtqp8UdgdspCotfe72
-b4pYxJPe/qElD/9XScDZlNkHeb+MbfrxGIJnoD/XMQOC7Lk5aQfs7JMXWxpykZOy
-a5hmY/5hKeethg4Eur+LVVdhpUr2yufG0bhlQqtnZBcCAwEAAaOBiTCBhjAUBgNV
-HREEDTALgglsb2NhbGhvc3QwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUF
-BwMBMB0GA1UdDgQWBBS8aYaEcDqt3ggqcMY7R4wRP+CabTAfBgNVHSMEGDAWgBSt
-PuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUA
-A4IBAQB78LCg2dCROJv+z3jI1jBdh52zuW6LWnN0k8swSdEAeZ1awnGjk1/e01oM
-+21Bg4kbTw0cZQwaDA+WeWKQ4XQE3cbYzw9fDyiH14ZWkLTQiIDxp839CxNYu23m
-q0T2m9bMx9s9OpDEIHL0ODjA74AdYD9OMEARVilwqheRkF9wC4lRrxeo7SBOdrvP
-qIiaJQ86liYXUCqv84shnM//+SD8/sA3lcfNDXpT2SYSOCz2A5Ub2tAI9zKRB6c1
-DBQARMdD+yMuFETm7qnJIDcJuK4hT0u3hk3jQYQVThopAAOokpk8depDD+Mr9xex
-G4eABNOnc7FehTh9iQEWGfbE4Rt1
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+ALpfS2l0MZlN9LS3KmW4tzHBOM82N7teGONSH1KqWiUvDGaIMrDvsiyQOF5ubw7k
+Oz/wLvF6PV7DZIY/aLfPC7PqCsqUFtQragLjobPH0dAGuP/f3OAyKufdYsxxxOjP
+nd5cdWmdts7iQtinvVBUeC1VZ38Ae4+cEdGezr4e/s83AgMBAAGjgYYwgYMwFAYD
+VR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEF
+BQcDATAdBgNVHQ4EFgQUfkKNrC6TrUzgCazGCPGC4Le3xn8wHwYDVR0jBBgwFoAU
+Esq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOC
+AQEAAP7E/EsouLw5jG/xctN22ign4peUu60vkcTb3zNLSE6XW0xMvvzktxlcuINu
+7yyw1Xz8Dct+Ke39Te8FHIkVMXibGCnTN4PHOfR4J7cAddH78CmIeeTpp9RlBL/V
+odwFshfEqdphECJfj1D8H6v2Od2rNaaUVGNcbSXw3DoKcE5J7776LArNzqYtJs34
+JIl3LOpuGbZcjBoI6qifLBvH/BNs/qeQCOWYgzBShqyDC8slkiGUgBPX6NBCVoNV
+0wmb6MWWghVka4N365nlUtwbNimgydqL0w13JPLD3y7Ek+A0R6mbVNN11cfeiKHv
+e0Av3OkojGm+63FKwjBQmTZSaQ==
-----END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MIGHAoGBAP5mA7oYimErFUulbvNC8V0HwyB62NCj6TZb6YXJwElCksQc8RyHnkrY
-9Wx2+lduFqHjUWalgVF7Gma7CfR/pt+fiU6Jn2vWR2v7KT6hYeRKsJrONJlth+NK
-V7/d4zyvleJ/VSp0TuuSxmMMQ6hG3i5YhSGXyCh4h0pl4Wu/hdVTAgEC
------END DH PARAMETERS-----
diff --git a/tests/certs/Server-localhost-sv.prm b/tests/certs/Server-localhost-sv.prm
index 6351025dd..97e64cec2 100644
--- a/tests/certs/Server-localhost-sv.prm
+++ b/tests/certs/Server-localhost-sv.prm
@@ -1,11 +1,11 @@
extensions = x509v3
[ x509v3 ]
subjectAltName = DNS:localhost
-keyUsage = keyEncipherment
+keyUsage = keyEncipherment,digitalSignature,keyAgreement
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
[ req ]
default_bits = 1024
distinguished_name = req_DN
diff --git a/tests/certs/Server-localhost-sv.pub.der b/tests/certs/Server-localhost-sv.pub.der
index 7e89b51a1..e954839ea 100644
--- a/tests/certs/Server-localhost-sv.pub.der
+++ b/tests/certs/Server-localhost-sv.pub.der
Binary files differ
diff --git a/tests/certs/Server-localhost-sv.pub.pem b/tests/certs/Server-localhost-sv.pub.pem
index 2384643d6..d119616b3 100644
--- a/tests/certs/Server-localhost-sv.pub.pem
+++ b/tests/certs/Server-localhost-sv.pub.pem
@@ -1,6 +1,6 @@
-----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgB
-s3J3lzjkYBxxnZn3JnshtW2qnxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5
-v4xt+vEYgmegP9cxA4LsuTlpB+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2Gl
-SvbK58bRuGVCq2dkFwIDAQAB
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6X0tpdDGZTfS0typluLcxwTjP
+Nje7XhjjUh9SqlolLwxmiDKw77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grK
+lBbUK2oC46Gzx9HQBrj/39zgMirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/
+AHuPnBHRns6+Hv7PNwIDAQAB
-----END PUBLIC KEY-----
diff --git a/tests/certs/Server-localhost.nn-sv.crl b/tests/certs/Server-localhost.nn-sv.crl
index db408315d..0676f731a 100644
--- a/tests/certs/Server-localhost.nn-sv.crl
+++ b/tests/certs/Server-localhost.nn-sv.crl
@@ -1,13 +1,21 @@
-----BEGIN X509 CRL-----
-MIIB9DCB3QIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE
-CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG
-A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzI0
-WhcNMTAwNjI2MjEzNzI0WjAyMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWjAXAgYL
-mJT7eF8XDTEwMDUyNzIxMzcyNFqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEB
-BQUAA4IBAQCo8mBpkZqiYWJMkJsZ1qqqOqVRne4iWhPOJSDGDgxoCTA4RgN1sQUv
-/MxO2LgSEyo9GopCpgWlhig+wzQmYCUf7HDw8sLzClUG4XUKRSW2Uq6q5BF5fwIu
-vHksi/RIPdcMx/+3dGIFeoccZZd5o7xgryGySAN6wHy6lY7LeeW7acpaDU43D7yi
-wQipBczrlH/jJDy6ja5FFBrAvvyRc4zC2X1/Rh3f0vNqnX9PLC524HxRmasCKYM8
-vgcPbvJ7Z/HRGOYRu9vTp5X0+lPPj24WE8vX3AZdjyI6qpinHzrsYen/qs6c0v3k
-FKYuzuVlUAy+5aZDhx+GHr+KW+y2T/ol
+MIIDiDCCAnACAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
+BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
+BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
+MTFaFw0xNTA0MjAxNTA3MTFaMIIBwjAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
+FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
+WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
+NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
+NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
+MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
+MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
+MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
+MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
+Fw0xNTAzMjExNTA3MTFaMBcCBgz6YLxRXBcNMTUwMzIxMTUwNzExWqAOMAwwCgYD
+VR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBANd1Fp3lPmLALcGvEB4kB4Uo6vhM
+ZWcAUE96oerpW0OnZ6v7o8ghLvs/pJfIoD+7hV3RuAgUUBqv2N8VTaL2IYarom/H
+CK78oLrIwwej/7K1pIfG53bJuaYyim5Lpl/YzGwhdC2vO2kBXHC1gVj5hN3uM/2A
++cFPTDMsDU7szGq1bHObEKumXXzG5LfwGJGaHNGdvglV7zKthRjk/plYKE4/F0Ah
+jRQys6crClCKC5vug1GbzKbQue/Pbw1e3Rm/e0DVeOCREdvcHat43SIPf5yUYLsz
+b7P7pIOIoSgiIgEdbmj2pi1xdtxrYRyJJk0H7XQJHDehkyZsy6l62mKam/E=
-----END X509 CRL-----
diff --git a/tests/certs/Server-localhost.nn-sv.crt b/tests/certs/Server-localhost.nn-sv.crt
index 722aeeb11..69bd40d25 100644
--- a/tests/certs/Server-localhost.nn-sv.crt
+++ b/tests/certs/Server-localhost.nn-sv.crt
@@ -1,16 +1,15 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:94:fb:78:5f
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311644 (0xcfa60bc515c)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:37:24 2010 GMT
- Not After : Aug 13 21:37:24 2018 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Jun 7 15:07:11 2023 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
@@ -19,63 +18,63 @@ Certificate:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:d3:d4:4e:db:63:5c:3f:3a:3a:5e:38:09:94:e6:
- 4d:70:9d:0d:af:49:e6:82:5d:07:b7:f5:cd:a0:df:
- af:71:f1:cf:bf:d5:9a:bd:af:7c:78:5d:55:3f:14:
- bd:bb:2c:0e:73:9d:d6:82:9a:d5:e6:f6:21:5d:08:
- 92:a2:71:5f:80:5f:5c:ce:f0:c2:37:37:79:0f:4d:
- 3d:d4:f2:80:6d:47:36:45:d1:d2:8b:7a:2e:12:71:
- 4b:47:86:f5:8c:99:af:e7:0e:cf:b5:c9:4d:7a:75:
- f7:b2:74:0c:41:e3:ab:bb:2c:9d:6f:54:08:13:5a:
- 3a:ef:7c:27:f7:3f:0b:0b:71
+ 00:ac:cc:11:70:74:29:ed:7b:00:44:8a:c0:47:03:
+ 50:9d:6f:51:b7:c9:7b:dd:7e:ee:29:67:5b:91:9b:
+ c7:c5:e6:9d:59:3e:6b:33:25:b7:7c:39:7c:84:79:
+ dd:15:98:e7:27:63:93:10:3a:3a:40:a0:dd:d0:1e:
+ 6e:60:f4:1e:a4:f7:1e:0a:0b:84:44:77:e7:05:16:
+ 39:aa:de:bd:1e:c7:bc:c9:e1:4e:8c:86:1c:3f:d6:
+ cd:e3:f2:68:02:5b:17:53:49:51:29:a8:89:f3:d0:
+ e1:5e:71:07:9f:15:47:08:40:e9:ac:49:e4:21:ac:
+ 65:29:09:ca:a2:dc:9e:ab:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost.nn
X509v3 Key Usage:
- Key Encipherment
+ Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
- 81:26:F9:75:CC:9C:2D:3C:36:64:68:41:F7:07:3C:66:86:E5:4A:C1
+ 12:AF:44:46:B1:04:69:61:64:83:39:A2:BD:5D:97:2B:F4:1D:D4:6C
X509v3 Authority Key Identifier:
- keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
- X509v3 Basic Constraints: critical
+ X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
- 65:05:8c:48:14:58:8c:1a:d4:95:67:1c:29:52:ed:5a:6e:14:
- 41:bc:2b:16:20:c4:89:3a:6e:cb:c1:ff:ab:61:79:5f:ce:27:
- 93:3c:ff:29:7a:25:68:00:27:04:f3:68:17:30:f0:fd:ff:09:
- 0e:15:2a:25:b1:45:18:93:ab:12:8e:0c:13:11:9a:b8:a4:75:
- d0:17:1b:ca:f2:66:6b:73:15:dd:8b:bb:34:d6:70:dc:34:1b:
- e7:7a:30:ea:50:50:2f:88:67:b3:f8:b3:55:62:44:7e:3e:df:
- 59:4f:a8:57:83:40:9f:bf:52:bf:fd:2c:18:6e:bd:0c:41:b7:
- 78:1c:9b:fa:c4:ff:c3:2b:46:a4:8f:0c:19:a7:3d:75:81:29:
- 6b:cf:07:f0:1d:65:d4:0e:19:51:87:92:a8:3d:7e:80:04:84:
- ad:5e:4e:b6:ef:9a:02:c3:84:95:ec:c3:e8:a1:69:1f:42:cb:
- da:63:1a:35:6f:d0:ba:62:9e:73:36:63:58:0f:cc:25:c8:59:
- 73:df:3b:c2:b9:5a:da:3d:e1:3f:0a:1f:0f:41:c4:88:2d:92:
- 06:88:d4:54:81:e1:12:57:53:ab:6b:f8:c8:90:3e:30:4c:f5:
- 72:cf:f0:d4:18:70:c1:78:85:30:9c:fe:94:f4:1b:c2:6c:14:
- 49:7a:0e:27
+ 44:54:d7:d7:75:14:60:a5:1a:1d:1e:a9:dc:6f:b1:b1:d8:13:
+ e2:10:22:9a:f5:ca:b6:38:3c:d9:ac:2e:dc:ce:38:bc:cc:38:
+ a1:cc:a8:9c:73:37:f9:b6:a8:42:87:d9:80:21:45:81:43:9d:
+ 73:3c:67:cf:cd:c5:c3:91:df:60:6b:6d:69:f9:be:a1:92:cc:
+ 5d:ea:bc:67:f3:c7:bc:ea:41:d1:11:7b:e3:f1:b8:a7:8d:9a:
+ d0:23:6c:df:0e:2a:35:98:50:c1:a6:8b:d2:07:aa:a6:2f:cb:
+ 98:a9:a3:8d:a0:8c:87:ab:ec:e1:c5:0b:25:e2:e9:a9:08:13:
+ 30:86:1b:e5:b6:ac:03:85:35:0c:9a:5d:5b:82:c4:04:6a:05:
+ 4c:f3:f7:b3:b5:ac:92:3b:46:71:a8:7f:54:c7:96:37:dc:38:
+ 2c:a2:18:23:10:00:de:f8:21:40:52:99:94:ad:b2:b6:e5:87:
+ 8e:29:0b:3b:b3:8a:52:67:54:dc:0a:e9:75:60:33:ff:13:9a:
+ 61:a4:15:0c:d0:6f:de:0d:06:23:a8:44:ad:f0:68:60:93:6b:
+ 75:06:24:5b:47:9a:b9:3a:ef:d9:4f:df:31:d5:65:3a:e2:94:
+ 03:be:88:94:49:7c:6a:d0:da:c0:d0:62:81:f5:61:50:96:5a:
+ d0:ee:22:39
-----BEGIN CERTIFICATE-----
-MIIDRzCCAi+gAwIBAgIGC5iU+3hfMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDRTCCAi2gAwIBAgIGDPpgvFFcMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcyNFoXDTE4MDgxMzIxMzcyNFowVzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-FTATBgNVBAMMDGxvY2FsaG9zdC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
-gYEA09RO22NcPzo6XjgJlOZNcJ0Nr0nmgl0Ht/XNoN+vcfHPv9Wava98eF1VPxS9
-uywOc53WgprV5vYhXQiSonFfgF9czvDCNzd5D0091PKAbUc2RdHSi3ouEnFLR4b1
-jJmv5w7PtclNenX3snQMQeOruyydb1QIE1o673wn9z8LC3ECAwEAAaOBjDCBiTAX
-BgNVHREEEDAOggxsb2NhbGhvc3Qubm4wCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoG
-CCsGAQUFBwMBMB0GA1UdDgQWBBSBJvl1zJwtPDZkaEH3BzxmhuVKwTAfBgNVHSME
-GDAWgBStPuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3
-DQEBBQUAA4IBAQBlBYxIFFiMGtSVZxwpUu1abhRBvCsWIMSJOm7Lwf+rYXlfzieT
-PP8peiVoACcE82gXMPD9/wkOFSolsUUYk6sSjgwTEZq4pHXQFxvK8mZrcxXdi7s0
-1nDcNBvnejDqUFAviGez+LNVYkR+Pt9ZT6hXg0Cfv1K//SwYbr0MQbd4HJv6xP/D
-K0akjwwZpz11gSlrzwfwHWXUDhlRh5KoPX6ABIStXk6275oCw4SV7MPooWkfQsva
-Yxo1b9C6Yp5zNmNYD8wlyFlz3zvCuVraPeE/Ch8PQcSILZIGiNRUgeESV1Ora/jI
-kD4wTPVyz/DUGHDBeIUwnP6U9BvCbBRJeg4n
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAKzMEXB0Ke17AESKwEcDUJ1vUbfJe91+7ilnW5Gbx8XmnVk+azMlt3w5fIR5
+3RWY5ydjkxA6OkCg3dAebmD0HqT3HgoLhER35wUWOarevR7HvMnhToyGHD/WzePy
+aAJbF1NJUSmoifPQ4V5xB58VRwhA6axJ5CGsZSkJyqLcnquJAgMBAAGjgYkwgYYw
+FwYDVR0RBBAwDoIMbG9jYWxob3N0Lm5uMAsGA1UdDwQEAwIDqDATBgNVHSUEDDAK
+BggrBgEFBQcDATAdBgNVHQ4EFgQUEq9ERrEEaWFkgzmivV2XK/Qd1GwwHwYDVR0j
+BBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0B
+AQUFAAOCAQEARFTX13UUYKUaHR6p3G+xsdgT4hAimvXKtjg82awu3M44vMw4ocyo
+nHM3+baoQofZgCFFgUOdczxnz83Fw5HfYGttafm+oZLMXeq8Z/PHvOpB0RF74/G4
+p42a0CNs3w4qNZhQwaaL0geqpi/LmKmjjaCMh6vs4cULJeLpqQgTMIYb5basA4U1
+DJpdW4LEBGoFTPP3s7WskjtGcah/VMeWN9w4LKIYIxAA3vghQFKZlK2ytuWHjikL
+O7OKUmdU3ArpdWAz/xOaYaQVDNBv3g0GI6hErfBoYJNrdQYkW0eauTrv2U/fMdVl
+OuKUA76IlEl8atDawNBigfVhUJZa0O4iOQ==
-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost.nn-sv.csr b/tests/certs/Server-localhost.nn-sv.csr
index 642434347..7f2fa7738 100644
--- a/tests/certs/Server-localhost.nn-sv.csr
+++ b/tests/certs/Server-localhost.nn-sv.csr
@@ -1,11 +1,11 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
-dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA09RO22NcPzo6XjgJlOZN
-cJ0Nr0nmgl0Ht/XNoN+vcfHPv9Wava98eF1VPxS9uywOc53WgprV5vYhXQiSonFf
-gF9czvDCNzd5D0091PKAbUc2RdHSi3ouEnFLR4b1jJmv5w7PtclNenX3snQMQeOr
-uyydb1QIE1o673wn9z8LC3ECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBAM5PenDC
-AtDhzdVKrX6DcJINWck5XFEnvWQksSYU7iDeiQVycQxR+LYKGZiy04u+9C+MN7eq
-JmHAIi+88r7/ZaGJLujqSUOJn8ocZ+vwhJOwh2XBhhLaCjIW/H05g0aNlk80Ye6m
-OA9DCIZUINF0lDQaJCpKXxwNVcz4Rifp5/9T
+dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArMwRcHQp7XsARIrARwNQ
+nW9Rt8l73X7uKWdbkZvHxeadWT5rMyW3fDl8hHndFZjnJ2OTEDo6QKDd0B5uYPQe
+pPceCguERHfnBRY5qt69Hse8yeFOjIYcP9bN4/JoAlsXU0lRKaiJ89DhXnEHnxVH
+CEDprEnkIaxlKQnKotyeq4kCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBADnob1ds
+8MytEcgSZdkgP4iQ2L+aPXTPBqTThaV7Zto1mAhwG/D6rTiGq6t+IlZQNoDdZPp3
+r1WDQJj6ed54xUY4Im4m1Np8oURamt5NJMKURDbv0xOQHW8EOoN+F8rfKyu2Hk1O
+hJulv+cBz75yi3+LVu+IEuSFQIQUZiy6V+Il
-----END CERTIFICATE REQUEST-----
diff --git a/tests/certs/Server-localhost.nn-sv.der b/tests/certs/Server-localhost.nn-sv.der
index 08cf02f40..9bb4ff356 100644
--- a/tests/certs/Server-localhost.nn-sv.der
+++ b/tests/certs/Server-localhost.nn-sv.der
Binary files differ
diff --git a/tests/certs/Server-localhost.nn-sv.dhp b/tests/certs/Server-localhost.nn-sv.dhp
index 5d54840bb..e69de29bb 100644
--- a/tests/certs/Server-localhost.nn-sv.dhp
+++ b/tests/certs/Server-localhost.nn-sv.dhp
@@ -1,5 +0,0 @@
------BEGIN DH PARAMETERS-----
-MIGHAoGBAPrtEVPhZfEczB9JnWXbln79YnTh/V6ehXMWe414wyn/VT1ow25sLEev
-H2+eT84aDp5e+TfBSFjA6or96/lyQvsgAE+cE6f6uuw9ApVG2MK+BCn4snxHBb6G
-LFQf+9qHZ4BEkpBL60p1fkGu8BM1wXGXEaeYhgGumNA9fm5YJrl7AgEC
------END DH PARAMETERS-----
diff --git a/tests/certs/Server-localhost.nn-sv.key b/tests/certs/Server-localhost.nn-sv.key
index bf1cc7ec3..6a75071b6 100644
--- a/tests/certs/Server-localhost.nn-sv.key
+++ b/tests/certs/Server-localhost.nn-sv.key
@@ -1,15 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2vSeaCXQe39c2g369x8c+/1Zq9
-r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO8MI3N3kPTT3U8oBtRzZF0dKL
-ei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1vVAgTWjrvfCf3PwsLcQIDAQAB
-AoGBALr1HQxAq8AaMj3KE5rZkOudkeBtxwaz+QYB6hTcl8pnc8aKTmKwKZlKNtzP
-/4zdG3wriJII+lU4UsX7tP+uNGxKxALrDQRuBPyi8XQfUT1nJth6qkp8g3V/ixfE
-Yah3od9dL3+xsOH28RKKUC5kjmnNupO9KQZ6/CyYfUHAEG+pAkEA+PP+7FIvpPQ+
-7bbG4IIqn7QKVxGbtaFY8pdLnsUkrnIqwEIbZoU12iEKm5qMoXNv30GknXrvxU53
-tdIZU5Z28wJBANnTTMb/jac+Q1SaqmWQnrpcmvuPZ/8xRM6xeSJh+MDpK768WpYe
-nivHvinQjQZBQmNM3IPYbJ33nTAdJylmFQsCQQCn4crATPAKOheRsJdO4RijWAM9
-EgfCJUtZVMPPDr0c0qqXujzGFwDo1y1TH5bEbZc8pATBmhzFHpRFzaf8oVQXAkAX
-Hch5GefDhuUIVn2c17MwneFIrxhfSbA+qzDqyDDo8BXXYQ/P/KHWjZUNxPciYcyU
-0zRXvaERRpTk5UMhrpavAkEAy4ZyhH1UViuWsmTQaRjc5mDs8aXkd2y85A7jnfWA
-8r7CL+sOe4TU1/CVyJf2FJaqHfD/GG6fqqeFoHuaqwTyiw==
+MIICXQIBAAKBgQCszBFwdCntewBEisBHA1Cdb1G3yXvdfu4pZ1uRm8fF5p1ZPmsz
+Jbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4KC4REd+cFFjmq3r0ex7zJ4U6M
+hhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOmsSeQhrGUpCcqi3J6riQIDAQAB
+AoGAK7nYD+TVV0rw3mdeEJo+JBivTRqnRX2BNuj4uvf4rZOV7adl6SN6Mu05HSzZ
+TUXL+KOx60FQzFnox2lr9QzRU/LelLQ3H9fgVTVmGUCEAoDVRoWas8XlYGZsiHZ/
+yJn+9Z3yQYpufSb0LQiSt73sgrTNPu50gMxe/ZSAbSscyyECQQDV8juKzWmizlTh
++wVs/pihE0+BX1BRCsezs7FCdDEWle3XidBtYlYyUIm5wx6v8xM/F7Q/nwgymOnV
+A62PtfyjAkEAzsM3DsuJ9dG5n+EPTH3kDdfr0eYy76XPYz4HK8/FgiKPWy55BRCH
+biLcbDAe06olJiCzEvwggFigthrIqj0t4wJBALDTUi74c3SiADn+FI/vJQsMQMv2
+kRVKSZ/WxozcJ645IKjiOKgPfJp9QjeMcxKNXrzoxItIz6eyBqGONqbujO0CQQCh
+b6azdJR5TJEklfL+BGVlsas8rgIjP1FX6Xxr5sQNwbIwvW5cV/WGNs3n4wKOvZBX
+3rwzHIy76XdB+FOpKC+FAkBDVbicC19LE6+tBzOyx4uTEm3N7N8vh566VaOpok02
+Io7F/WYL7WSCXAtvmueWV+FJyVUMN1f2nWfWqaEXP2ag
-----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost.nn-sv.pem b/tests/certs/Server-localhost.nn-sv.pem
index b5c253120..b3712f74f 100644
--- a/tests/certs/Server-localhost.nn-sv.pem
+++ b/tests/certs/Server-localhost.nn-sv.pem
@@ -1,11 +1,11 @@
extensions = x509v3
[ x509v3 ]
subjectAltName = DNS:localhost.nn
-keyUsage = keyEncipherment
+keyUsage = keyEncipherment,digitalSignature,keyAgreement
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
[ req ]
default_bits = 1024
distinguished_name = req_DN
@@ -24,33 +24,32 @@ commonName_value = localhost.nn
# the certficate
# some dhparam
-----BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2vSeaCXQe39c2g369x8c+/1Zq9
-r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO8MI3N3kPTT3U8oBtRzZF0dKL
-ei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1vVAgTWjrvfCf3PwsLcQIDAQAB
-AoGBALr1HQxAq8AaMj3KE5rZkOudkeBtxwaz+QYB6hTcl8pnc8aKTmKwKZlKNtzP
-/4zdG3wriJII+lU4UsX7tP+uNGxKxALrDQRuBPyi8XQfUT1nJth6qkp8g3V/ixfE
-Yah3od9dL3+xsOH28RKKUC5kjmnNupO9KQZ6/CyYfUHAEG+pAkEA+PP+7FIvpPQ+
-7bbG4IIqn7QKVxGbtaFY8pdLnsUkrnIqwEIbZoU12iEKm5qMoXNv30GknXrvxU53
-tdIZU5Z28wJBANnTTMb/jac+Q1SaqmWQnrpcmvuPZ/8xRM6xeSJh+MDpK768WpYe
-nivHvinQjQZBQmNM3IPYbJ33nTAdJylmFQsCQQCn4crATPAKOheRsJdO4RijWAM9
-EgfCJUtZVMPPDr0c0qqXujzGFwDo1y1TH5bEbZc8pATBmhzFHpRFzaf8oVQXAkAX
-Hch5GefDhuUIVn2c17MwneFIrxhfSbA+qzDqyDDo8BXXYQ/P/KHWjZUNxPciYcyU
-0zRXvaERRpTk5UMhrpavAkEAy4ZyhH1UViuWsmTQaRjc5mDs8aXkd2y85A7jnfWA
-8r7CL+sOe4TU1/CVyJf2FJaqHfD/GG6fqqeFoHuaqwTyiw==
+MIICXQIBAAKBgQCszBFwdCntewBEisBHA1Cdb1G3yXvdfu4pZ1uRm8fF5p1ZPmsz
+Jbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4KC4REd+cFFjmq3r0ex7zJ4U6M
+hhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOmsSeQhrGUpCcqi3J6riQIDAQAB
+AoGAK7nYD+TVV0rw3mdeEJo+JBivTRqnRX2BNuj4uvf4rZOV7adl6SN6Mu05HSzZ
+TUXL+KOx60FQzFnox2lr9QzRU/LelLQ3H9fgVTVmGUCEAoDVRoWas8XlYGZsiHZ/
+yJn+9Z3yQYpufSb0LQiSt73sgrTNPu50gMxe/ZSAbSscyyECQQDV8juKzWmizlTh
++wVs/pihE0+BX1BRCsezs7FCdDEWle3XidBtYlYyUIm5wx6v8xM/F7Q/nwgymOnV
+A62PtfyjAkEAzsM3DsuJ9dG5n+EPTH3kDdfr0eYy76XPYz4HK8/FgiKPWy55BRCH
+biLcbDAe06olJiCzEvwggFigthrIqj0t4wJBALDTUi74c3SiADn+FI/vJQsMQMv2
+kRVKSZ/WxozcJ645IKjiOKgPfJp9QjeMcxKNXrzoxItIz6eyBqGONqbujO0CQQCh
+b6azdJR5TJEklfL+BGVlsas8rgIjP1FX6Xxr5sQNwbIwvW5cV/WGNs3n4wKOvZBX
+3rwzHIy76XdB+FOpKC+FAkBDVbicC19LE6+tBzOyx4uTEm3N7N8vh566VaOpok02
+Io7F/WYL7WSCXAtvmueWV+FJyVUMN1f2nWfWqaEXP2ag
-----END RSA PRIVATE KEY-----
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:94:fb:78:5f
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311644 (0xcfa60bc515c)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:37:24 2010 GMT
- Not After : Aug 13 21:37:24 2018 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Jun 7 15:07:11 2023 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
@@ -59,68 +58,63 @@ Certificate:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:d3:d4:4e:db:63:5c:3f:3a:3a:5e:38:09:94:e6:
- 4d:70:9d:0d:af:49:e6:82:5d:07:b7:f5:cd:a0:df:
- af:71:f1:cf:bf:d5:9a:bd:af:7c:78:5d:55:3f:14:
- bd:bb:2c:0e:73:9d:d6:82:9a:d5:e6:f6:21:5d:08:
- 92:a2:71:5f:80:5f:5c:ce:f0:c2:37:37:79:0f:4d:
- 3d:d4:f2:80:6d:47:36:45:d1:d2:8b:7a:2e:12:71:
- 4b:47:86:f5:8c:99:af:e7:0e:cf:b5:c9:4d:7a:75:
- f7:b2:74:0c:41:e3:ab:bb:2c:9d:6f:54:08:13:5a:
- 3a:ef:7c:27:f7:3f:0b:0b:71
+ 00:ac:cc:11:70:74:29:ed:7b:00:44:8a:c0:47:03:
+ 50:9d:6f:51:b7:c9:7b:dd:7e:ee:29:67:5b:91:9b:
+ c7:c5:e6:9d:59:3e:6b:33:25:b7:7c:39:7c:84:79:
+ dd:15:98:e7:27:63:93:10:3a:3a:40:a0:dd:d0:1e:
+ 6e:60:f4:1e:a4:f7:1e:0a:0b:84:44:77:e7:05:16:
+ 39:aa:de:bd:1e:c7:bc:c9:e1:4e:8c:86:1c:3f:d6:
+ cd:e3:f2:68:02:5b:17:53:49:51:29:a8:89:f3:d0:
+ e1:5e:71:07:9f:15:47:08:40:e9:ac:49:e4:21:ac:
+ 65:29:09:ca:a2:dc:9e:ab:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost.nn
X509v3 Key Usage:
- Key Encipherment
+ Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
- 81:26:F9:75:CC:9C:2D:3C:36:64:68:41:F7:07:3C:66:86:E5:4A:C1
+ 12:AF:44:46:B1:04:69:61:64:83:39:A2:BD:5D:97:2B:F4:1D:D4:6C
X509v3 Authority Key Identifier:
- keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
- X509v3 Basic Constraints: critical
+ X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
- 65:05:8c:48:14:58:8c:1a:d4:95:67:1c:29:52:ed:5a:6e:14:
- 41:bc:2b:16:20:c4:89:3a:6e:cb:c1:ff:ab:61:79:5f:ce:27:
- 93:3c:ff:29:7a:25:68:00:27:04:f3:68:17:30:f0:fd:ff:09:
- 0e:15:2a:25:b1:45:18:93:ab:12:8e:0c:13:11:9a:b8:a4:75:
- d0:17:1b:ca:f2:66:6b:73:15:dd:8b:bb:34:d6:70:dc:34:1b:
- e7:7a:30:ea:50:50:2f:88:67:b3:f8:b3:55:62:44:7e:3e:df:
- 59:4f:a8:57:83:40:9f:bf:52:bf:fd:2c:18:6e:bd:0c:41:b7:
- 78:1c:9b:fa:c4:ff:c3:2b:46:a4:8f:0c:19:a7:3d:75:81:29:
- 6b:cf:07:f0:1d:65:d4:0e:19:51:87:92:a8:3d:7e:80:04:84:
- ad:5e:4e:b6:ef:9a:02:c3:84:95:ec:c3:e8:a1:69:1f:42:cb:
- da:63:1a:35:6f:d0:ba:62:9e:73:36:63:58:0f:cc:25:c8:59:
- 73:df:3b:c2:b9:5a:da:3d:e1:3f:0a:1f:0f:41:c4:88:2d:92:
- 06:88:d4:54:81:e1:12:57:53:ab:6b:f8:c8:90:3e:30:4c:f5:
- 72:cf:f0:d4:18:70:c1:78:85:30:9c:fe:94:f4:1b:c2:6c:14:
- 49:7a:0e:27
+ 44:54:d7:d7:75:14:60:a5:1a:1d:1e:a9:dc:6f:b1:b1:d8:13:
+ e2:10:22:9a:f5:ca:b6:38:3c:d9:ac:2e:dc:ce:38:bc:cc:38:
+ a1:cc:a8:9c:73:37:f9:b6:a8:42:87:d9:80:21:45:81:43:9d:
+ 73:3c:67:cf:cd:c5:c3:91:df:60:6b:6d:69:f9:be:a1:92:cc:
+ 5d:ea:bc:67:f3:c7:bc:ea:41:d1:11:7b:e3:f1:b8:a7:8d:9a:
+ d0:23:6c:df:0e:2a:35:98:50:c1:a6:8b:d2:07:aa:a6:2f:cb:
+ 98:a9:a3:8d:a0:8c:87:ab:ec:e1:c5:0b:25:e2:e9:a9:08:13:
+ 30:86:1b:e5:b6:ac:03:85:35:0c:9a:5d:5b:82:c4:04:6a:05:
+ 4c:f3:f7:b3:b5:ac:92:3b:46:71:a8:7f:54:c7:96:37:dc:38:
+ 2c:a2:18:23:10:00:de:f8:21:40:52:99:94:ad:b2:b6:e5:87:
+ 8e:29:0b:3b:b3:8a:52:67:54:dc:0a:e9:75:60:33:ff:13:9a:
+ 61:a4:15:0c:d0:6f:de:0d:06:23:a8:44:ad:f0:68:60:93:6b:
+ 75:06:24:5b:47:9a:b9:3a:ef:d9:4f:df:31:d5:65:3a:e2:94:
+ 03:be:88:94:49:7c:6a:d0:da:c0:d0:62:81:f5:61:50:96:5a:
+ d0:ee:22:39
-----BEGIN CERTIFICATE-----
-MIIDRzCCAi+gAwIBAgIGC5iU+3hfMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDRTCCAi2gAwIBAgIGDPpgvFFcMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcyNFoXDTE4MDgxMzIxMzcyNFowVzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-FTATBgNVBAMMDGxvY2FsaG9zdC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
-gYEA09RO22NcPzo6XjgJlOZNcJ0Nr0nmgl0Ht/XNoN+vcfHPv9Wava98eF1VPxS9
-uywOc53WgprV5vYhXQiSonFfgF9czvDCNzd5D0091PKAbUc2RdHSi3ouEnFLR4b1
-jJmv5w7PtclNenX3snQMQeOruyydb1QIE1o673wn9z8LC3ECAwEAAaOBjDCBiTAX
-BgNVHREEEDAOggxsb2NhbGhvc3Qubm4wCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoG
-CCsGAQUFBwMBMB0GA1UdDgQWBBSBJvl1zJwtPDZkaEH3BzxmhuVKwTAfBgNVHSME
-GDAWgBStPuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3
-DQEBBQUAA4IBAQBlBYxIFFiMGtSVZxwpUu1abhRBvCsWIMSJOm7Lwf+rYXlfzieT
-PP8peiVoACcE82gXMPD9/wkOFSolsUUYk6sSjgwTEZq4pHXQFxvK8mZrcxXdi7s0
-1nDcNBvnejDqUFAviGez+LNVYkR+Pt9ZT6hXg0Cfv1K//SwYbr0MQbd4HJv6xP/D
-K0akjwwZpz11gSlrzwfwHWXUDhlRh5KoPX6ABIStXk6275oCw4SV7MPooWkfQsva
-Yxo1b9C6Yp5zNmNYD8wlyFlz3zvCuVraPeE/Ch8PQcSILZIGiNRUgeESV1Ora/jI
-kD4wTPVyz/DUGHDBeIUwnP6U9BvCbBRJeg4n
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAKzMEXB0Ke17AESKwEcDUJ1vUbfJe91+7ilnW5Gbx8XmnVk+azMlt3w5fIR5
+3RWY5ydjkxA6OkCg3dAebmD0HqT3HgoLhER35wUWOarevR7HvMnhToyGHD/WzePy
+aAJbF1NJUSmoifPQ4V5xB58VRwhA6axJ5CGsZSkJyqLcnquJAgMBAAGjgYkwgYYw
+FwYDVR0RBBAwDoIMbG9jYWxob3N0Lm5uMAsGA1UdDwQEAwIDqDATBgNVHSUEDDAK
+BggrBgEFBQcDATAdBgNVHQ4EFgQUEq9ERrEEaWFkgzmivV2XK/Qd1GwwHwYDVR0j
+BBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0B
+AQUFAAOCAQEARFTX13UUYKUaHR6p3G+xsdgT4hAimvXKtjg82awu3M44vMw4ocyo
+nHM3+baoQofZgCFFgUOdczxnz83Fw5HfYGttafm+oZLMXeq8Z/PHvOpB0RF74/G4
+p42a0CNs3w4qNZhQwaaL0geqpi/LmKmjjaCMh6vs4cULJeLpqQgTMIYb5basA4U1
+DJpdW4LEBGoFTPP3s7WskjtGcah/VMeWN9w4LKIYIxAA3vghQFKZlK2ytuWHjikL
+O7OKUmdU3ArpdWAz/xOaYaQVDNBv3g0GI6hErfBoYJNrdQYkW0eauTrv2U/fMdVl
+OuKUA76IlEl8atDawNBigfVhUJZa0O4iOQ==
-----END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MIGHAoGBAPrtEVPhZfEczB9JnWXbln79YnTh/V6ehXMWe414wyn/VT1ow25sLEev
-H2+eT84aDp5e+TfBSFjA6or96/lyQvsgAE+cE6f6uuw9ApVG2MK+BCn4snxHBb6G
-LFQf+9qHZ4BEkpBL60p1fkGu8BM1wXGXEaeYhgGumNA9fm5YJrl7AgEC
------END DH PARAMETERS-----
diff --git a/tests/certs/Server-localhost.nn-sv.prm b/tests/certs/Server-localhost.nn-sv.prm
index e515ea15b..399e38a4e 100644
--- a/tests/certs/Server-localhost.nn-sv.prm
+++ b/tests/certs/Server-localhost.nn-sv.prm
@@ -1,11 +1,11 @@
extensions = x509v3
[ x509v3 ]
subjectAltName = DNS:localhost.nn
-keyUsage = keyEncipherment
+keyUsage = keyEncipherment,digitalSignature,keyAgreement
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
[ req ]
default_bits = 1024
distinguished_name = req_DN
diff --git a/tests/certs/Server-localhost.nn-sv.pub.der b/tests/certs/Server-localhost.nn-sv.pub.der
index b67ab96ed..68b64eb4f 100644
--- a/tests/certs/Server-localhost.nn-sv.pub.der
+++ b/tests/certs/Server-localhost.nn-sv.pub.der
Binary files differ
diff --git a/tests/certs/Server-localhost.nn-sv.pub.pem b/tests/certs/Server-localhost.nn-sv.pub.pem
index 3131e9539..a59a0e6ee 100644
--- a/tests/certs/Server-localhost.nn-sv.pub.pem
+++ b/tests/certs/Server-localhost.nn-sv.pub.pem
@@ -1,6 +1,6 @@
-----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2v
-SeaCXQe39c2g369x8c+/1Zq9r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO
-8MI3N3kPTT3U8oBtRzZF0dKLei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1v
-VAgTWjrvfCf3PwsLcQIDAQAB
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCszBFwdCntewBEisBHA1Cdb1G3
+yXvdfu4pZ1uRm8fF5p1ZPmszJbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4K
+C4REd+cFFjmq3r0ex7zJ4U6Mhhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOms
+SeQhrGUpCcqi3J6riQIDAQAB
-----END PUBLIC KEY-----
diff --git a/tests/certs/Server-localhost0h-sv.crl b/tests/certs/Server-localhost0h-sv.crl
index 87a185900..319af89ba 100644
--- a/tests/certs/Server-localhost0h-sv.crl
+++ b/tests/certs/Server-localhost0h-sv.crl
@@ -1,14 +1,22 @@
-----BEGIN X509 CRL-----
-MIICDTCB9gIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE
-CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG
-A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzU0
-WhcNMTAwNjI2MjEzNzU0WjBLMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWjAXAgYL
-mJT7eF8XDTEwMDUyNzIxMzcyNFowFwIGC5iVAAx+Fw0xMDA1MjcyMTM3NTRaoA4w
-DDAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQUFAAOCAQEAWBL4VhArwJkUv91oyMIo
-xyyRmVl+1oY5IjEpLGd+mNIgqXuljQmbp8cS8A+jWinJPOWZqvsHa+mLCl4OuwhP
-JbAtIQ22OQRaVqWRuguG2T1sh3Dd7a1GcupIGKc/zgnY45D4pY4UNZv+KmY3bF0S
-83zn6YoQtBTzF9y2Nq5R0UTdxl6+j5swpo1ttvQPz40yqIlmjmW/llkaD4UBaegl
-zSxmnR5xCjAR7nYm+HyWW9SLSWGptUOd32B9TPJPLDhJa9lfBb8H9l5k7kx9ECJG
-LyujleeXIucfqOgE2cB0zCjExqrGWRp8ZgEWfpdSkDEpXBCDo88TA3dIr2f3Zxwp
-QA==
+MIIDoTCCAokCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
+BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
+BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
+MTFaFw0xNTA0MjAxNTA3MTFaMIIB2zAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
+FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
+WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
+NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
+NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
+MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
+MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
+MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
+MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
+Fw0xNTAzMjExNTA3MTFaMBcCBgz6YLxRXBcNMTUwMzIxMTUwNzExWjAXAgYM+mC8
+UW4XDTE1MDMyMTE1MDcxMVqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBBQUA
+A4IBAQDER99gBe9w8a9X1pQQnzC87kYnW7R0K8wFr4KqCYP0De8tKxhCGrXaoQDK
+AvHQcT3RpCR5PAK5J1InxlCumJJjvo39OLTsaCbSyoynmAMGCXS0earSL83biquG
+jJ29ROXukT3fGE6HO+cKAaHyHeJa6OZEibmCvCls/YvvQTW2jlceOZmi22AL3jYN
+w6UVHRpbHDHupF5YxhwFG1GVTOd9cuik8CqVxPkOfIxeQbEV+qEiDWzjyy2aU3X7
+dLhZE47P5tYgb8nIsXb5PATqiK9vdv4EOyVKiiCmyFemrGGU7MqbTtTjJVB9nS2R
+QMWLS24xr3IcHt7FOX1w8UF/GXiP
-----END X509 CRL-----
diff --git a/tests/certs/Server-localhost0h-sv.crt b/tests/certs/Server-localhost0h-sv.crt
index 0dcb5df23..b00859a5c 100644
--- a/tests/certs/Server-localhost0h-sv.crt
+++ b/tests/certs/Server-localhost0h-sv.crt
@@ -1,16 +1,15 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:95:00:0c:7e
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311662 (0xcfa60bc516e)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:37:54 2010 GMT
- Not After : Aug 13 21:37:54 2018 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Jun 7 15:07:11 2023 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
@@ -19,63 +18,63 @@ Certificate:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:cc:a9:91:2b:22:e8:90:2b:e5:4c:dc:ae:6d:da:
- 4c:f3:32:cc:a5:68:67:5a:3b:b9:86:a3:95:88:3e:
- e8:63:c3:ed:00:60:19:03:2b:5d:5b:56:8a:da:21:
- 5e:71:5c:d1:e3:de:51:18:c1:17:14:b1:33:90:00:
- 5c:9a:e5:73:0b:a8:88:9c:d0:0b:54:bc:ea:3a:39:
- dd:f6:65:81:4b:29:99:4c:71:d3:f7:69:7f:80:e8:
- e8:6d:61:41:83:87:eb:ac:2c:bd:0f:eb:1b:fd:a2:
- 37:97:6d:31:56:ba:4b:51:dd:b1:01:eb:89:f8:25:
- de:5b:a3:e5:b2:3f:4c:77:53
+ 00:e3:c7:52:fb:7d:02:b1:a7:0b:4c:2d:a6:2a:b0:
+ 57:6b:5e:0b:f9:9e:4b:e7:d0:ac:55:43:47:fa:b1:
+ e0:fc:b0:63:30:84:31:f5:95:44:90:9a:b7:22:01:
+ 6f:c7:17:16:be:5a:19:ee:47:35:90:a5:5e:27:ba:
+ 86:47:3b:c5:63:d2:f2:c6:a1:db:ac:be:b1:2f:4c:
+ c2:98:86:19:72:d5:f9:12:45:09:bc:23:e2:00:eb:
+ 4d:ba:99:71:b5:4a:fb:49:8c:4d:f3:0b:4e:cf:48:
+ 7b:c8:06:37:92:35:ff:bb:4f:ea:98:af:13:ac:a8:
+ cd:9f:a7:e0:78:db:15:bc:3b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost
X509v3 Key Usage:
- Key Encipherment
+ Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
- 3B:2B:84:0D:23:3C:46:F9:9B:E5:C2:FA:B7:30:E7:AC:E3:ED:09:C3
+ 23:D7:CE:D8:B2:D0:F8:8E:3C:82:26:6C:F1:F5:2A:8A:48:90:58:66
X509v3 Authority Key Identifier:
- keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
- X509v3 Basic Constraints: critical
+ X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
- a2:fa:61:4e:c0:10:1f:f8:38:2c:fd:a6:74:85:df:8e:ee:41:
- 90:a1:d7:c9:32:65:5d:61:d5:13:51:3b:11:1c:7b:01:06:70:
- 9f:93:52:54:15:bd:93:3a:f8:40:e3:e2:ab:01:96:fb:73:c5:
- 42:2c:ad:ce:e8:52:57:db:b6:15:90:75:e3:e5:75:99:b0:83:
- ed:b0:fc:f2:d0:d9:3d:68:1c:d9:b4:cd:a1:a9:40:19:44:46:
- 14:8b:11:6e:2e:1c:65:85:73:45:f0:8b:4f:ea:01:2d:61:0f:
- ae:0d:70:0c:d3:3c:1c:1f:24:66:a3:0b:62:d1:87:1e:8e:96:
- f6:43:cf:1c:24:e7:94:d0:7e:b0:ee:1b:6f:14:1f:04:35:e8:
- fc:3c:c8:9e:e3:6e:0e:4c:7d:a9:23:97:2d:6e:b1:4d:e3:05:
- 1b:ce:86:2f:2f:b3:c9:60:47:58:ac:ea:4c:cb:c2:7b:0f:08:
- b8:a7:90:e7:22:32:70:f6:09:3e:f9:54:94:b0:37:50:22:60:
- 49:1c:84:9e:1a:22:0c:3e:a9:16:7c:5e:b1:50:13:6b:82:14:
- d3:8a:3d:4d:ed:18:ca:40:59:d6:b9:72:9f:64:e5:0b:e7:a6:
- b8:ee:29:b5:6a:ec:82:b2:94:56:36:e3:87:b3:07:aa:69:b8:
- 2c:ef:0c:14
+ 28:b9:77:ea:4a:8d:d6:a5:fb:72:5b:d6:cd:60:40:33:56:bf:
+ dd:23:ff:bf:e8:2e:10:cd:30:ab:24:a4:43:d8:98:71:e3:59:
+ 66:3e:38:bd:b8:fb:19:1a:13:8f:a1:c8:39:93:b5:83:8d:62:
+ 52:a9:7a:5b:0d:69:47:40:5c:51:4c:3a:be:a7:c9:5f:7b:93:
+ 49:20:59:23:30:7c:d9:4a:dd:29:2c:ed:96:fd:cb:b8:13:ff:
+ 36:2c:27:ce:28:c3:a6:d0:d8:ba:8c:38:9f:78:ff:54:c7:76:
+ 05:37:47:f5:d3:55:9c:2c:12:41:81:14:ca:48:a2:b7:6d:05:
+ 49:2b:c5:f5:7b:63:6d:6f:cd:3f:f4:8d:74:51:07:ff:e1:40:
+ d5:96:60:d8:c8:38:5a:15:f9:c5:fd:e1:5e:a3:02:95:90:4b:
+ fc:8a:42:de:72:31:72:3d:dd:a2:df:19:42:c8:fa:a8:77:11:
+ 67:e6:64:8c:d0:fd:45:fd:f0:49:8c:e1:85:e6:f5:1f:47:c6:
+ ae:f2:70:c3:e8:99:d0:cd:9d:88:6b:33:ba:b9:65:3d:f4:b1:
+ f4:d0:3c:76:9c:18:9e:9e:c8:62:29:43:8e:f7:2f:2c:12:37:
+ 39:02:26:4e:4b:b0:14:30:80:bb:2d:cc:fc:93:dc:c9:8b:c0:
+ 69:12:71:36
-----BEGIN CERTIFICATE-----
-MIIDQzCCAiugAwIBAgIGC5iVAAx+MA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDQTCCAimgAwIBAgIGDPpgvFFuMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzc1NFoXDTE4MDgxMzIxMzc1NFowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zKmRKyLokCvlTNyubdpM8zLMpWhnWju5hqOViD7oY8PtAGAZAytdW1aK2iFecVzR
-495RGMEXFLEzkABcmuVzC6iInNALVLzqOjnd9mWBSymZTHHT92l/gOjobWFBg4fr
-rCy9D+sb/aI3l20xVrpLUd2xAeuJ+CXeW6Plsj9Md1MCAwEAAaOBizCBiDAWBgNV
-HREEDzANggtsb2NhbGhvc3QAaDALBgNVHQ8EBAMCBSAwEwYDVR0lBAwwCgYIKwYB
-BQUHAwEwHQYDVR0OBBYEFDsrhA0jPEb5m+XC+rcw56zj7QnDMB8GA1UdIwQYMBaA
-FK0+4jkHuFyqJpCUTCZpIYPiTjaUMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF
-BQADggEBAKL6YU7AEB/4OCz9pnSF347uQZCh18kyZV1h1RNROxEcewEGcJ+TUlQV
-vZM6+EDj4qsBlvtzxUIsrc7oUlfbthWQdePldZmwg+2w/PLQ2T1oHNm0zaGpQBlE
-RhSLEW4uHGWFc0Xwi0/qAS1hD64NcAzTPBwfJGajC2LRhx6OlvZDzxwk55TQfrDu
-G28UHwQ16Pw8yJ7jbg5Mfakjly1usU3jBRvOhi8vs8lgR1is6kzLwnsPCLinkOci
-MnD2CT75VJSwN1AiYEkchJ4aIgw+qRZ8XrFQE2uCFNOKPU3tGMpAWda5cp9k5Qvn
-prjuKbVq7IKylFY244ezB6ppuCzvDBQ=
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+AOPHUvt9ArGnC0wtpiqwV2teC/meS+fQrFVDR/qx4PywYzCEMfWVRJCatyIBb8cX
+Fr5aGe5HNZClXie6hkc7xWPS8sah26y+sS9MwpiGGXLV+RJFCbwj4gDrTbqZcbVK
++0mMTfMLTs9Ie8gGN5I1/7tP6pivE6yozZ+n4HjbFbw7AgMBAAGjgYgwgYUwFgYD
+VR0RBA8wDYILbG9jYWxob3N0AGgwCwYDVR0PBAQDAgOoMBMGA1UdJQQMMAoGCCsG
+AQUFBwMBMB0GA1UdDgQWBBQj187YstD4jjyCJmzx9SqKSJBYZjAfBgNVHSMEGDAW
+gBQSyrpLRgSndYos6A5UlLwSZaZ7zjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA
+A4IBAQAouXfqSo3WpftyW9bNYEAzVr/dI/+/6C4QzTCrJKRD2Jhx41lmPji9uPsZ
+GhOPocg5k7WDjWJSqXpbDWlHQFxRTDq+p8lfe5NJIFkjMHzZSt0pLO2W/cu4E/82
+LCfOKMOm0Ni6jDifeP9Ux3YFN0f101WcLBJBgRTKSKK3bQVJK8X1e2Ntb80/9I10
+UQf/4UDVlmDYyDhaFfnF/eFeowKVkEv8ikLecjFyPd2i3xlCyPqodxFn5mSM0P1F
+/fBJjOGF5vUfR8au8nDD6JnQzZ2IazO6uWU99LH00Dx2nBienshiKUOO9y8sEjc5
+AiZOS7AUMIC7Lcz8k9zJi8BpEnE2
-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost0h-sv.csr b/tests/certs/Server-localhost0h-sv.csr
index edf776f3f..d075157da 100644
--- a/tests/certs/Server-localhost0h-sv.csr
+++ b/tests/certs/Server-localhost0h-sv.csr
@@ -1,11 +1,11 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBkzCB/QIBADBUMQswCQYDVQQGEwJOTjExMC8GA1UECgwoRWRlbCBDdXJsIEFy
Y3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDESMBAGA1UEAwwJbG9jYWxob3N0
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMqZErIuiQK+VM3K5t2kzzMsyl
-aGdaO7mGo5WIPuhjw+0AYBkDK11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic
-0AtUvOo6Od32ZYFLKZlMcdP3aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB
-64n4Jd5bo+WyP0x3UwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAPor+2apn3kPJ
-ZdjyyT/iXETRTrN87PuBaujcV+oVeVSWW+YgGUzDHi+RkEKTxWdz3leW2goE41X9
-2D/n66ASQGs1x8wXwIMIX83MjkWtjqdfcrJVi1l6T7NjzZt6EyJdvreRntCUu8zc
-J5tK3rl/tIeudKUE2COc0Ngu9JUB1j8=
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5
+nkvn0KxVQ0f6seD8sGMwhDH1lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLG
+odusvrEvTMKYhhly1fkSRQm8I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qY
+rxOsqM2fp+B42xW8OwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAC6NxWuiENuj/
+oPsopZy/tVZzbioXZP/S9ECCbdgy33bg9zKwQYLeHOSgXxJzES+RhJwQCliFV17j
+jM1CH7heggwkPAx5KelyZ20DeoeaYOi/xv7TjozrZ+EkmivHKBJi3+qNjNYH0ul9
+HhQBO5+sSDAGLMkWL/nAfYKbf/8KSvA=
-----END CERTIFICATE REQUEST-----
diff --git a/tests/certs/Server-localhost0h-sv.der b/tests/certs/Server-localhost0h-sv.der
index 14be0ba63..93642f42e 100644
--- a/tests/certs/Server-localhost0h-sv.der
+++ b/tests/certs/Server-localhost0h-sv.der
Binary files differ
diff --git a/tests/certs/Server-localhost0h-sv.dhp b/tests/certs/Server-localhost0h-sv.dhp
index 99e6107e8..e69de29bb 100644
--- a/tests/certs/Server-localhost0h-sv.dhp
+++ b/tests/certs/Server-localhost0h-sv.dhp
@@ -1,5 +0,0 @@
------BEGIN DH PARAMETERS-----
-MIGHAoGBAL/3hRxvWX+Mdyu/aBPU1JeeA5sg4nXtA7B24eCql9Tq53Lks1/HJ5B+
-xSapGAFd+22xhBsNkJihf74oiPEVr9nNoLjFV/DZe259+JYgs+pBTFN+Cp13ALUi
-CeZxX2mlxlstD1SBRTKgxA/j4ttR1Chn8knn+RVdFE9YFKCYPyLrAgEC
------END DH PARAMETERS-----
diff --git a/tests/certs/Server-localhost0h-sv.key b/tests/certs/Server-localhost0h-sv.key
index 95c4666ad..5fcc9c582 100644
--- a/tests/certs/Server-localhost0h-sv.key
+++ b/tests/certs/Server-localhost0h-sv.key
@@ -1,15 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMqZErIuiQK+VM3K5t2kzzMsylaGdaO7mGo5WIPuhjw+0AYBkD
-K11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic0AtUvOo6Od32ZYFLKZlMcdP3
-aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB64n4Jd5bo+WyP0x3UwIDAQAB
-AoGAGT+OBilPUYHoztumtSyqM5J/xqQjo/EcSSzjJKTGHJCuK06vp0FxSfRaOuDE
-+u09g4QIsyoXA9l8h/ZTdlR6Jax5nc+iRFs/21isrgKAsZYj4DghjgXJ9LWGHXnb
-7xstVFkFBGnOaeY7dVr54907TYUQwtJg4fk7Vror05gb1qECQQDykAxr2D/CxLk9
-RjWDi/P6JnfF0ZxZzCe0yATvuZ89+rpWQ5uxEJDq5FqwW4QXX+0G2aWDv64YExPS
-JmWQTlojAkEA2AAHDv2KBWFcXeTlWnKZTdzUOniE8PzS5zipi2ssiqXScrj9NX2U
-yCCOkv/42blPXBKbaVnfWBEhtj7pQxHJEQJBAOTvXjnfVXafs/IINPPegLyF2B/G
-EZqTXJp8+mPEP28BGSPYFbdN2mlIc+vlxEtHh3AitdweatNgFiIPiWZk/R8CQEIf
-EAoYtw2alknv7f3YIvHg7d7QUfHrkyxQ/iW9sy7mQBv6YRjkzozM2phJX4ZW4eJP
-l9+SMXqmE+nULFfps+ECQFVkjPDF065x++Fh3BVtNJ0goYStTJM6IcmYKflap+Ux
-cORZUWJ8tvDavlSSwQQYK8kOVTINC6iFwwEQ41HlYLE=
+MIICXAIBAAKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5nkvn0KxVQ0f6seD8sGMwhDH1
+lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLGodusvrEvTMKYhhly1fkSRQm8
+I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qYrxOsqM2fp+B42xW8OwIDAQAB
+AoGAHdkk2qfLDpShOl5RBA8PpZYxY4iG0d3ad2HVsNhWb0Z9+QGZumDRF1Hu5Zni
+l+hCprcP5tWWA1poODSNHBCNEQRYZcHrfZlh+sDiV6ZmexBg7x9D5azyRbn20vr1
+79UxmisRxnDQQHCfOmgZtgs1EZXnFOs0OotoZAHFr+GLtQECQQD+R2TaWMCEPKJc
+IswGBqLGL8cyy+v2d5Glt5l+xzb/KCdY9cbOR/B9wq//0Nvqyiq1I1jUBVw9NJi/
+eBx/OYxhAkEA5VIC6uMpIck0Qxpbj7/H3k2pBf1HROgmLEq+cVLFgY62CIpTgleO
+SAzTmn0vDXir0jQHJn+JTokvn0PxyNquGwJBAJW+77rSl5WIq8j8yRAnakayrmnQ
+w8ZjBggExsVthorfV8TBAPJMVWmKdOF/W3O62UnRZid+fKKize28S3P1LSECQDF8
+3FJSSWsYH6YnhwDjkz9fJQ281eeB7dL7IlQUV7kY0iHPsCvdtz/HPNcHEuNmWjYX
+sj9VoI0JP/Sv1frRbmcCQDPaeWowPGf1Xtj0oTSlA6KQsKZPO7t15nivgX/AnZWQ
+01l8q6GPHeYwyG/caD3BZwAavsVLg9nhKx0lf0wExM0=
-----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost0h-sv.p12 b/tests/certs/Server-localhost0h-sv.p12
deleted file mode 100644
index 82e03c785..000000000
--- a/tests/certs/Server-localhost0h-sv.p12
+++ /dev/null
Binary files differ
diff --git a/tests/certs/Server-localhost0h-sv.pem b/tests/certs/Server-localhost0h-sv.pem
index 45be9c35e..a953370e6 100644
--- a/tests/certs/Server-localhost0h-sv.pem
+++ b/tests/certs/Server-localhost0h-sv.pem
@@ -2,11 +2,11 @@ extensions = x509v3
[ x509v3 ]
#subjectAltName = DNS:localhost\0h
subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
-keyUsage = keyEncipherment
+keyUsage = keyEncipherment,digitalSignature,keyAgreement
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
[ req ]
default_bits = 1024
distinguished_name = req_DN
@@ -25,33 +25,32 @@ commonName_value = localhost
# the certificate
# some dhparam
-----BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMqZErIuiQK+VM3K5t2kzzMsylaGdaO7mGo5WIPuhjw+0AYBkD
-K11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic0AtUvOo6Od32ZYFLKZlMcdP3
-aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB64n4Jd5bo+WyP0x3UwIDAQAB
-AoGAGT+OBilPUYHoztumtSyqM5J/xqQjo/EcSSzjJKTGHJCuK06vp0FxSfRaOuDE
-+u09g4QIsyoXA9l8h/ZTdlR6Jax5nc+iRFs/21isrgKAsZYj4DghjgXJ9LWGHXnb
-7xstVFkFBGnOaeY7dVr54907TYUQwtJg4fk7Vror05gb1qECQQDykAxr2D/CxLk9
-RjWDi/P6JnfF0ZxZzCe0yATvuZ89+rpWQ5uxEJDq5FqwW4QXX+0G2aWDv64YExPS
-JmWQTlojAkEA2AAHDv2KBWFcXeTlWnKZTdzUOniE8PzS5zipi2ssiqXScrj9NX2U
-yCCOkv/42blPXBKbaVnfWBEhtj7pQxHJEQJBAOTvXjnfVXafs/IINPPegLyF2B/G
-EZqTXJp8+mPEP28BGSPYFbdN2mlIc+vlxEtHh3AitdweatNgFiIPiWZk/R8CQEIf
-EAoYtw2alknv7f3YIvHg7d7QUfHrkyxQ/iW9sy7mQBv6YRjkzozM2phJX4ZW4eJP
-l9+SMXqmE+nULFfps+ECQFVkjPDF065x++Fh3BVtNJ0goYStTJM6IcmYKflap+Ux
-cORZUWJ8tvDavlSSwQQYK8kOVTINC6iFwwEQ41HlYLE=
+MIICXAIBAAKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5nkvn0KxVQ0f6seD8sGMwhDH1
+lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLGodusvrEvTMKYhhly1fkSRQm8
+I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qYrxOsqM2fp+B42xW8OwIDAQAB
+AoGAHdkk2qfLDpShOl5RBA8PpZYxY4iG0d3ad2HVsNhWb0Z9+QGZumDRF1Hu5Zni
+l+hCprcP5tWWA1poODSNHBCNEQRYZcHrfZlh+sDiV6ZmexBg7x9D5azyRbn20vr1
+79UxmisRxnDQQHCfOmgZtgs1EZXnFOs0OotoZAHFr+GLtQECQQD+R2TaWMCEPKJc
+IswGBqLGL8cyy+v2d5Glt5l+xzb/KCdY9cbOR/B9wq//0Nvqyiq1I1jUBVw9NJi/
+eBx/OYxhAkEA5VIC6uMpIck0Qxpbj7/H3k2pBf1HROgmLEq+cVLFgY62CIpTgleO
+SAzTmn0vDXir0jQHJn+JTokvn0PxyNquGwJBAJW+77rSl5WIq8j8yRAnakayrmnQ
+w8ZjBggExsVthorfV8TBAPJMVWmKdOF/W3O62UnRZid+fKKize28S3P1LSECQDF8
+3FJSSWsYH6YnhwDjkz9fJQ281eeB7dL7IlQUV7kY0iHPsCvdtz/HPNcHEuNmWjYX
+sj9VoI0JP/Sv1frRbmcCQDPaeWowPGf1Xtj0oTSlA6KQsKZPO7t15nivgX/AnZWQ
+01l8q6GPHeYwyG/caD3BZwAavsVLg9nhKx0lf0wExM0=
-----END RSA PRIVATE KEY-----
Certificate:
Data:
Version: 3 (0x2)
- Serial Number:
- 0b:98:95:00:0c:7e
- Signature Algorithm: sha1WithRSAEncryption
+ Serial Number: 14269504311662 (0xcfa60bc516e)
+ Signature Algorithm: sha1WithRSAEncryption
Issuer:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
- commonName = Nothern Nowhere Trust Anchor
+ commonName = Northern Nowhere Trust Anchor
Validity
- Not Before: May 27 21:37:54 2010 GMT
- Not After : Aug 13 21:37:54 2018 GMT
+ Not Before: Mar 21 15:07:11 2015 GMT
+ Not After : Jun 7 15:07:11 2023 GMT
Subject:
countryName = NN
organizationName = Edel Curl Arctic Illudium Research Cloud
@@ -60,68 +59,63 @@ Certificate:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:cc:a9:91:2b:22:e8:90:2b:e5:4c:dc:ae:6d:da:
- 4c:f3:32:cc:a5:68:67:5a:3b:b9:86:a3:95:88:3e:
- e8:63:c3:ed:00:60:19:03:2b:5d:5b:56:8a:da:21:
- 5e:71:5c:d1:e3:de:51:18:c1:17:14:b1:33:90:00:
- 5c:9a:e5:73:0b:a8:88:9c:d0:0b:54:bc:ea:3a:39:
- dd:f6:65:81:4b:29:99:4c:71:d3:f7:69:7f:80:e8:
- e8:6d:61:41:83:87:eb:ac:2c:bd:0f:eb:1b:fd:a2:
- 37:97:6d:31:56:ba:4b:51:dd:b1:01:eb:89:f8:25:
- de:5b:a3:e5:b2:3f:4c:77:53
+ 00:e3:c7:52:fb:7d:02:b1:a7:0b:4c:2d:a6:2a:b0:
+ 57:6b:5e:0b:f9:9e:4b:e7:d0:ac:55:43:47:fa:b1:
+ e0:fc:b0:63:30:84:31:f5:95:44:90:9a:b7:22:01:
+ 6f:c7:17:16:be:5a:19:ee:47:35:90:a5:5e:27:ba:
+ 86:47:3b:c5:63:d2:f2:c6:a1:db:ac:be:b1:2f:4c:
+ c2:98:86:19:72:d5:f9:12:45:09:bc:23:e2:00:eb:
+ 4d:ba:99:71:b5:4a:fb:49:8c:4d:f3:0b:4e:cf:48:
+ 7b:c8:06:37:92:35:ff:bb:4f:ea:98:af:13:ac:a8:
+ cd:9f:a7:e0:78:db:15:bc:3b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost
X509v3 Key Usage:
- Key Encipherment
+ Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
- 3B:2B:84:0D:23:3C:46:F9:9B:E5:C2:FA:B7:30:E7:AC:E3:ED:09:C3
+ 23:D7:CE:D8:B2:D0:F8:8E:3C:82:26:6C:F1:F5:2A:8A:48:90:58:66
X509v3 Authority Key Identifier:
- keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+ keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
- X509v3 Basic Constraints: critical
+ X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
- a2:fa:61:4e:c0:10:1f:f8:38:2c:fd:a6:74:85:df:8e:ee:41:
- 90:a1:d7:c9:32:65:5d:61:d5:13:51:3b:11:1c:7b:01:06:70:
- 9f:93:52:54:15:bd:93:3a:f8:40:e3:e2:ab:01:96:fb:73:c5:
- 42:2c:ad:ce:e8:52:57:db:b6:15:90:75:e3:e5:75:99:b0:83:
- ed:b0:fc:f2:d0:d9:3d:68:1c:d9:b4:cd:a1:a9:40:19:44:46:
- 14:8b:11:6e:2e:1c:65:85:73:45:f0:8b:4f:ea:01:2d:61:0f:
- ae:0d:70:0c:d3:3c:1c:1f:24:66:a3:0b:62:d1:87:1e:8e:96:
- f6:43:cf:1c:24:e7:94:d0:7e:b0:ee:1b:6f:14:1f:04:35:e8:
- fc:3c:c8:9e:e3:6e:0e:4c:7d:a9:23:97:2d:6e:b1:4d:e3:05:
- 1b:ce:86:2f:2f:b3:c9:60:47:58:ac:ea:4c:cb:c2:7b:0f:08:
- b8:a7:90:e7:22:32:70:f6:09:3e:f9:54:94:b0:37:50:22:60:
- 49:1c:84:9e:1a:22:0c:3e:a9:16:7c:5e:b1:50:13:6b:82:14:
- d3:8a:3d:4d:ed:18:ca:40:59:d6:b9:72:9f:64:e5:0b:e7:a6:
- b8:ee:29:b5:6a:ec:82:b2:94:56:36:e3:87:b3:07:aa:69:b8:
- 2c:ef:0c:14
+ 28:b9:77:ea:4a:8d:d6:a5:fb:72:5b:d6:cd:60:40:33:56:bf:
+ dd:23:ff:bf:e8:2e:10:cd:30:ab:24:a4:43:d8:98:71:e3:59:
+ 66:3e:38:bd:b8:fb:19:1a:13:8f:a1:c8:39:93:b5:83:8d:62:
+ 52:a9:7a:5b:0d:69:47:40:5c:51:4c:3a:be:a7:c9:5f:7b:93:
+ 49:20:59:23:30:7c:d9:4a:dd:29:2c:ed:96:fd:cb:b8:13:ff:
+ 36:2c:27:ce:28:c3:a6:d0:d8:ba:8c:38:9f:78:ff:54:c7:76:
+ 05:37:47:f5:d3:55:9c:2c:12:41:81:14:ca:48:a2:b7:6d:05:
+ 49:2b:c5:f5:7b:63:6d:6f:cd:3f:f4:8d:74:51:07:ff:e1:40:
+ d5:96:60:d8:c8:38:5a:15:f9:c5:fd:e1:5e:a3:02:95:90:4b:
+ fc:8a:42:de:72:31:72:3d:dd:a2:df:19:42:c8:fa:a8:77:11:
+ 67:e6:64:8c:d0:fd:45:fd:f0:49:8c:e1:85:e6:f5:1f:47:c6:
+ ae:f2:70:c3:e8:99:d0:cd:9d:88:6b:33:ba:b9:65:3d:f4:b1:
+ f4:d0:3c:76:9c:18:9e:9e:c8:62:29:43:8e:f7:2f:2c:12:37:
+ 39:02:26:4e:4b:b0:14:30:80:bb:2d:cc:fc:93:dc:c9:8b:c0:
+ 69:12:71:36
-----BEGIN CERTIFICATE-----
-MIIDQzCCAiugAwIBAgIGC5iVAAx+MA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDQTCCAimgAwIBAgIGDPpgvFFuMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzc1NFoXDTE4MDgxMzIxMzc1NFowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zKmRKyLokCvlTNyubdpM8zLMpWhnWju5hqOViD7oY8PtAGAZAytdW1aK2iFecVzR
-495RGMEXFLEzkABcmuVzC6iInNALVLzqOjnd9mWBSymZTHHT92l/gOjobWFBg4fr
-rCy9D+sb/aI3l20xVrpLUd2xAeuJ+CXeW6Plsj9Md1MCAwEAAaOBizCBiDAWBgNV
-HREEDzANggtsb2NhbGhvc3QAaDALBgNVHQ8EBAMCBSAwEwYDVR0lBAwwCgYIKwYB
-BQUHAwEwHQYDVR0OBBYEFDsrhA0jPEb5m+XC+rcw56zj7QnDMB8GA1UdIwQYMBaA
-FK0+4jkHuFyqJpCUTCZpIYPiTjaUMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF
-BQADggEBAKL6YU7AEB/4OCz9pnSF347uQZCh18kyZV1h1RNROxEcewEGcJ+TUlQV
-vZM6+EDj4qsBlvtzxUIsrc7oUlfbthWQdePldZmwg+2w/PLQ2T1oHNm0zaGpQBlE
-RhSLEW4uHGWFc0Xwi0/qAS1hD64NcAzTPBwfJGajC2LRhx6OlvZDzxwk55TQfrDu
-G28UHwQ16Pw8yJ7jbg5Mfakjly1usU3jBRvOhi8vs8lgR1is6kzLwnsPCLinkOci
-MnD2CT75VJSwN1AiYEkchJ4aIgw+qRZ8XrFQE2uCFNOKPU3tGMpAWda5cp9k5Qvn
-prjuKbVq7IKylFY244ezB6ppuCzvDBQ=
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+AOPHUvt9ArGnC0wtpiqwV2teC/meS+fQrFVDR/qx4PywYzCEMfWVRJCatyIBb8cX
+Fr5aGe5HNZClXie6hkc7xWPS8sah26y+sS9MwpiGGXLV+RJFCbwj4gDrTbqZcbVK
++0mMTfMLTs9Ie8gGN5I1/7tP6pivE6yozZ+n4HjbFbw7AgMBAAGjgYgwgYUwFgYD
+VR0RBA8wDYILbG9jYWxob3N0AGgwCwYDVR0PBAQDAgOoMBMGA1UdJQQMMAoGCCsG
+AQUFBwMBMB0GA1UdDgQWBBQj187YstD4jjyCJmzx9SqKSJBYZjAfBgNVHSMEGDAW
+gBQSyrpLRgSndYos6A5UlLwSZaZ7zjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA
+A4IBAQAouXfqSo3WpftyW9bNYEAzVr/dI/+/6C4QzTCrJKRD2Jhx41lmPji9uPsZ
+GhOPocg5k7WDjWJSqXpbDWlHQFxRTDq+p8lfe5NJIFkjMHzZSt0pLO2W/cu4E/82
+LCfOKMOm0Ni6jDifeP9Ux3YFN0f101WcLBJBgRTKSKK3bQVJK8X1e2Ntb80/9I10
+UQf/4UDVlmDYyDhaFfnF/eFeowKVkEv8ikLecjFyPd2i3xlCyPqodxFn5mSM0P1F
+/fBJjOGF5vUfR8au8nDD6JnQzZ2IazO6uWU99LH00Dx2nBienshiKUOO9y8sEjc5
+AiZOS7AUMIC7Lcz8k9zJi8BpEnE2
-----END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MIGHAoGBAL/3hRxvWX+Mdyu/aBPU1JeeA5sg4nXtA7B24eCql9Tq53Lks1/HJ5B+
-xSapGAFd+22xhBsNkJihf74oiPEVr9nNoLjFV/DZe259+JYgs+pBTFN+Cp13ALUi
-CeZxX2mlxlstD1SBRTKgxA/j4ttR1Chn8knn+RVdFE9YFKCYPyLrAgEC
------END DH PARAMETERS-----
diff --git a/tests/certs/Server-localhost0h-sv.prm b/tests/certs/Server-localhost0h-sv.prm
index 5e8944b31..619d82552 100644
--- a/tests/certs/Server-localhost0h-sv.prm
+++ b/tests/certs/Server-localhost0h-sv.prm
@@ -2,11 +2,11 @@ extensions = x509v3
[ x509v3 ]
#subjectAltName = DNS:localhost\0h
subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
-keyUsage = keyEncipherment
+keyUsage = keyEncipherment,digitalSignature,keyAgreement
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
[ req ]
default_bits = 1024
distinguished_name = req_DN
diff --git a/tests/certs/Server-localhost0h-sv.pub.der b/tests/certs/Server-localhost0h-sv.pub.der
index 2b071d3ad..1b079f425 100644
--- a/tests/certs/Server-localhost0h-sv.pub.der
+++ b/tests/certs/Server-localhost0h-sv.pub.der
Binary files differ
diff --git a/tests/certs/Server-localhost0h-sv.pub.pem b/tests/certs/Server-localhost0h-sv.pub.pem
index c403ac575..c34cc776f 100644
--- a/tests/certs/Server-localhost0h-sv.pub.pem
+++ b/tests/certs/Server-localhost0h-sv.pub.pem
@@ -1,6 +1,6 @@
-----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMqZErIuiQK+VM3K5t2kzzMsyl
-aGdaO7mGo5WIPuhjw+0AYBkDK11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic
-0AtUvOo6Od32ZYFLKZlMcdP3aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB
-64n4Jd5bo+WyP0x3UwIDAQAB
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5
+nkvn0KxVQ0f6seD8sGMwhDH1lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLG
+odusvrEvTMKYhhly1fkSRQm8I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qY
+rxOsqM2fp+B42xW8OwIDAQAB
-----END PUBLIC KEY-----
diff --git a/tests/certs/scripts/Makefile.in b/tests/certs/scripts/Makefile.in
index c899d7089..0c9cb7ce4 100644
--- a/tests/certs/scripts/Makefile.in
+++ b/tests/certs/scripts/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/certs/scripts
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -355,7 +365,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/certs/scripts/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/certs/scripts/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -530,6 +539,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/tests/certs/scripts/genroot.sh b/tests/certs/scripts/genroot.sh
index 6ac138873..4d2118aae 100755
--- a/tests/certs/scripts/genroot.sh
+++ b/tests/certs/scripts/genroot.sh
@@ -50,15 +50,15 @@ echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-ca.prm -days $DURATION -
$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-ca.prm -days $DURATION -req -signkey $PREFIX-ca.key -in $PREFIX-ca.csr -out $PREFIX-$SERIAL-ca.cacert -sha1
-echo "openssl x509 -text -hash -out $PREFIX-ca.cacert -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline"
-$OPENSSL x509 -text -hash -out $PREFIX-ca.cacert -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline
+echo "openssl x509 -text -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline > $PREFIX-ca.cacert "
+$OPENSSL x509 -text -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline > $PREFIX-ca.cacert
echo "openssl x509 -in $PREFIX-ca.cacert -outform der -out $PREFIX-ca.der "
$OPENSSL x509 -in $PREFIX-ca.cacert -outform der -out $PREFIX-ca.der
-echo "openssl x509 -in $PREFIX-ca.cacert -text -out $PREFIX-ca.crt -nameopt multiline"
+echo "openssl x509 -in $PREFIX-ca.cacert -text -nameopt multiline > $PREFIX-ca.crt "
-$OPENSSL x509 -in $PREFIX-ca.cacert -text -out $PREFIX-ca.crt -nameopt multiline
+$OPENSSL x509 -in $PREFIX-ca.cacert -text -nameopt multiline > $PREFIX-ca.crt
echo "openssl x509 -noout -text -in $PREFIX-ca.cacert -nameopt multiline"
$OPENSSL x509 -noout -text -in $PREFIX-ca.cacert -nameopt multiline
diff --git a/tests/certs/scripts/genserv.sh b/tests/certs/scripts/genserv.sh
index 80876ec51..e7845c5c1 100755
--- a/tests/certs/scripts/genserv.sh
+++ b/tests/certs/scripts/genserv.sh
@@ -81,9 +81,9 @@ $OPENSSL rsa -in $PREFIX-sv.key -pubout -outform DER -out $PREFIX-sv.pub.der
echo "openssl rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem"
$OPENSSL rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem
-echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1"
+echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -text -nameopt multiline -sha1 > $PREFIX-sv.crt "
-$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1
+$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -text -nameopt multiline -sha1 > $PREFIX-sv.crt
if [ "$P12." = YES. ] ; then
diff --git a/tests/data/CMakeLists.txt b/tests/data/CMakeLists.txt
new file mode 100644
index 000000000..dec92e544
--- /dev/null
+++ b/tests/data/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Loads 'TESTCASES' from for the 'make show' target in runtests.pl
+transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+
+# Prints all available test cases. Do not quote TESTCASES, it must be displayed
+# as a space-separated string rather than comma-separated (a list in CMake).
+add_custom_target(show COMMAND echo ${TESTCASES})
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index a4b281f3c..4ec0364ba 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -5,7 +5,7 @@ test:
# TESTCASES are taken from Makefile.inc
include Makefile.inc
-EXTRA_DIST = $(TESTCASES) DISABLED
+EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
filecheck:
@mkdir test-place; \
diff --git a/tests/data/Makefile.in b/tests/data/Makefile.in
index 99229d9f8..25917d6c4 100644
--- a/tests/data/Makefile.in
+++ b/tests/data/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -36,7 +36,17 @@
#
###########################################################################
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -99,8 +109,6 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs
subdir = tests/data
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -147,6 +156,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -205,7 +215,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -258,6 +268,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -274,7 +285,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -401,18 +411,20 @@ test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
-test836 \
+test836 test837 test838 test839 test840 \
\
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
test859 test860 test861 test862 test863 test864 test865 test866 test867 \
test868 test869 test870 test871 test872 test873 test874 test875 test876 \
-test877 test878 test879 test880 test881 test882 \
+test877 test878 test879 test880 test881 test882 test883 test884 test885 \
+test886 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
-test936 test937 test938 test939 test940 test941 \
+test936 test937 test938 test939 test940 test941 test942 test943 test944 \
+test945 \
\
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -430,14 +442,14 @@ test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
-test1128 test1129 test1130 test1131 test1132 test1133 test1134 \
+test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
-test1236 test1237 test1238 test1239 test1240 \
+test1236 test1237 test1238 test1239 test1240 test1241 \
\
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
@@ -455,8 +467,8 @@ test1396 test1397 test1398 \
\
test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
-test1416 test1417 test1418 test1419 test1420 \
-\
+test1416 test1417 test1418 test1419 test1420 test1421 test1422 test1423 \
+test1424 \
test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
test1436 \
\
@@ -466,7 +478,9 @@ test1516 \
\
test1520 \
\
-test1525 test1526 test1527 test1528 test1529 \
+test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
+\
+test1600 test1601 test1602 \
\
test1800 test1801 \
\
@@ -476,11 +490,12 @@ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
-test2032 test2033 test2034 test2035 test2036 test2037 test2038
+test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
+test2040 test2041 test2042 test2043
# TESTCASES are taken from Makefile.inc
-EXTRA_DIST = $(TESTCASES) DISABLED
+EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
all: all-am
.SUFFIXES:
@@ -496,7 +511,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/data/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -505,7 +519,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -671,6 +685,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
iall:
install:
test:
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 6467ca0bb..f39db40da 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -86,18 +86,20 @@ test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
-test836 \
+test836 test837 test838 test839 test840 \
\
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
test859 test860 test861 test862 test863 test864 test865 test866 test867 \
test868 test869 test870 test871 test872 test873 test874 test875 test876 \
-test877 test878 test879 test880 test881 test882 \
+test877 test878 test879 test880 test881 test882 test883 test884 test885 \
+test886 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
-test936 test937 test938 test939 test940 test941 \
+test936 test937 test938 test939 test940 test941 test942 test943 test944 \
+test945 \
\
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -115,14 +117,14 @@ test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
-test1128 test1129 test1130 test1131 test1132 test1133 test1134 \
+test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
-test1236 test1237 test1238 test1239 test1240 \
+test1236 test1237 test1238 test1239 test1240 test1241 \
\
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
@@ -140,8 +142,8 @@ test1396 test1397 test1398 \
\
test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
-test1416 test1417 test1418 test1419 test1420 \
-\
+test1416 test1417 test1418 test1419 test1420 test1421 test1422 test1423 \
+test1424 \
test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
test1436 \
\
@@ -151,7 +153,9 @@ test1516 \
\
test1520 \
\
-test1525 test1526 test1527 test1528 test1529 \
+test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
+\
+test1600 test1601 test1602 \
\
test1800 test1801 \
\
@@ -161,4 +165,5 @@ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
-test2032 test2033 test2034 test2035 test2036 test2037 test2038
+test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
+test2040 test2041 test2042 test2043
diff --git a/tests/data/test1001 b/tests/data/test1001
index 4adbd89ad..91b13203e 100644
--- a/tests/data/test1001
+++ b/tests/data/test1001
@@ -85,17 +85,17 @@ test
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1001", response="6af4d89c952f4dd4cc215a6878dc499d"
Content-Range: bytes 2-4/5
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
diff --git a/tests/data/test1002 b/tests/data/test1002
index 4c3bf1619..83cce6e44 100644
--- a/tests/data/test1002
+++ b/tests/data/test1002
@@ -84,17 +84,17 @@ test
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 2-4/5
User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"
Content-Range: bytes 2-4/5
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
@@ -102,10 +102,10 @@ Expect: 100-continue
st
GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload2", response="d711f0d2042786d930de635ba0d1a1d0"
Content-Range: bytes 2-4/5
User-Agent: curl/7.16.1
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
diff --git a/tests/data/test1030 b/tests/data/test1030
index a0f215da3..5a8ed4cd6 100644
--- a/tests/data/test1030
+++ b/tests/data/test1030
@@ -94,9 +94,9 @@ a second line
line three
four is the number of lines
PUT /1030 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1030", response="01cb59db1ddaac246b072d5f5f0716d9"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
diff --git a/tests/data/test1032 b/tests/data/test1032
index 56918645e..b0b6834cc 100644
--- a/tests/data/test1032
+++ b/tests/data/test1032
@@ -47,8 +47,8 @@ HTTP HEAD with --range
</strip>
<protocol>
HEAD /1032 HTTP/1.1
-Range: bytes=1-3
Host: %HOSTIP:%HTTPPORT
+Range: bytes=1-3
Accept: */*
</protocol>
diff --git a/tests/data/test1040 b/tests/data/test1040
index 2466e7050..e21ed8199 100644
--- a/tests/data/test1040
+++ b/tests/data/test1040
@@ -70,8 +70,8 @@ http://%HOSTIP:%HTTPPORT/1040 -C -
</strip>
<protocol>
GET /1040 HTTP/1.1
-Range: bytes=100-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=100-
Accept: */*
</protocol>
diff --git a/tests/data/test1041 b/tests/data/test1041
index c0d23c660..c77d616a8 100644
--- a/tests/data/test1041
+++ b/tests/data/test1041
@@ -57,8 +57,8 @@ http://%HOSTIP:%HTTPPORT/1041 -Tlog/test1041.txt -C -
# it can skip part of the file or not. Instead, it sends the entire file.
<protocol>
PUT /1041 HTTP/1.1
-Content-Range: bytes 0-99/100
Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 0-99/100
Accept: */*
Content-Length: 100
Expect: 100-continue
diff --git a/tests/data/test1042 b/tests/data/test1042
index f9a2255e1..dfebaa152 100644
--- a/tests/data/test1042
+++ b/tests/data/test1042
@@ -85,8 +85,8 @@ http://%HOSTIP:%HTTPPORT/1042 -C 200
</strip>
<protocol>
GET /1042 HTTP/1.1
-Range: bytes=200-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=200-
Accept: */*
</protocol>
diff --git a/tests/data/test1043 b/tests/data/test1043
index f9bd1057b..4ab498762 100644
--- a/tests/data/test1043
+++ b/tests/data/test1043
@@ -75,8 +75,8 @@ http://%HOSTIP:%HTTPPORT/1043 -C -
</strip>
<protocol>
GET /1043 HTTP/1.1
-Range: bytes=40-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=40-
Accept: */*
</protocol>
diff --git a/tests/data/test1058 b/tests/data/test1058
index 0731778e0..4eb34da73 100644
--- a/tests/data/test1058
+++ b/tests/data/test1058
@@ -44,8 +44,8 @@ http://%HOSTIP:%HTTPPORT/want/1058 -r -101
</strip>
<protocol>
GET /want/1058 HTTP/1.1
-Range: bytes=-101
Host: %HOSTIP:%HTTPPORT
+Range: bytes=-101
Accept: */*
</protocol>
diff --git a/tests/data/test1071 b/tests/data/test1071
index d338e2ca3..4352e6111 100644
--- a/tests/data/test1071
+++ b/tests/data/test1071
@@ -100,8 +100,8 @@ a second line
line three
four is the number of lines
PUT /1071 HTTP/1.0
-Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1071", response="df4cef6b52a30e65d472dd848d2055a1"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1071", response="df4cef6b52a30e65d472dd848d2055a1"
Accept: */*
Content-Length: 85
diff --git a/tests/data/test1075 b/tests/data/test1075
index 5b8f186a0..4b30c593a 100644
--- a/tests/data/test1075
+++ b/tests/data/test1075
@@ -79,8 +79,8 @@ a second line
line three
four is the number of lines
PUT /1075 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
Content-Length: 85
Expect: 100-continue
diff --git a/tests/data/test1079 b/tests/data/test1079
index 24cd20d2e..ac7b899fb 100644
--- a/tests/data/test1079
+++ b/tests/data/test1079
@@ -67,8 +67,8 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1079 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1079", response="e340c7cdca0950462070f46ee139e9f7"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1079", response="e340c7cdca0950462070f46ee139e9f7"
Accept: */*
</protocol>
diff --git a/tests/data/test1087 b/tests/data/test1087
index d3bec0c84..d228976ac 100644
--- a/tests/data/test1087
+++ b/tests/data/test1087
@@ -95,8 +95,8 @@ Accept: */*
Proxy-Connection: Keep-Alive
GET http://first.host.it.is/we/want/that/page/10871000 HTTP/1.1
-Authorization: Basic aWFtOm15c2VsZg==
Host: first.host.it.is
+Authorization: Basic aWFtOm15c2VsZg==
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1088 b/tests/data/test1088
index 13e7d03cb..a807ce9e5 100644
--- a/tests/data/test1088
+++ b/tests/data/test1088
@@ -96,14 +96,14 @@ Accept: */*
Proxy-Connection: Keep-Alive
GET http://first.host.it.is/we/want/that/page/10881000 HTTP/1.1
-Authorization: Basic aWFtOm15c2VsZg==
Host: first.host.it.is
+Authorization: Basic aWFtOm15c2VsZg==
Accept: */*
Proxy-Connection: Keep-Alive
GET http://goto.second.host.now/10881002 HTTP/1.1
-Authorization: Basic aWFtOm15c2VsZg==
Host: goto.second.host.now
+Authorization: Basic aWFtOm15c2VsZg==
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1095 b/tests/data/test1095
index a4421208e..6bfe54f33 100644
--- a/tests/data/test1095
+++ b/tests/data/test1095
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1095 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/1095", response="a1c7931ece9e8617bae2715045e4f49f"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test1100 b/tests/data/test1100
index 10fa25d45..cd6169181 100644
--- a/tests/data/test1100
+++ b/tests/data/test1100
@@ -93,24 +93,24 @@ chkhostname curlhost
</strip>
<protocol>
POST /1100 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST /1100 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 18
Content-Type: application/x-www-form-urlencoded
stuff to send awayGET /1100 HTTP/1.1
-User-Agent: curl/7.19.5-CVS (i686-pc-linux-gnu) libcurl/7.19.5-CVS GnuTLS/2.6.6 zlib/1.2.3.3 c-ares/1.6.1-CVS libidn/1.14 libssh2/1.1
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.19.5-CVS (i686-pc-linux-gnu) libcurl/7.19.5-CVS GnuTLS/2.6.6 zlib/1.2.3.3 c-ares/1.6.1-CVS libidn/1.14 libssh2/1.1
Accept: */*
</protocol>
diff --git a/tests/data/test1101 b/tests/data/test1101
index 63887c4bb..75c66195e 100644
--- a/tests/data/test1101
+++ b/tests/data/test1101
@@ -45,8 +45,8 @@ http://user:secret@%HOSTIP:%HTTPPORT/gimme/1101
</strip>
<protocol>
GET /gimme/1101 HTTP/1.1
-Authorization: Basic dXNlcjpzZWNyZXQ=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dXNlcjpzZWNyZXQ=
Accept: */*
</protocol>
diff --git a/tests/data/test1117 b/tests/data/test1117
index 5b696112b..963f1efec 100644
--- a/tests/data/test1117
+++ b/tests/data/test1117
@@ -73,13 +73,13 @@ partial body
</strip>
<protocol>
GET /want/1117 HTTP/1.1
-Range: bytes=10-22
Host: %HOSTIP:%HTTPPORT
+Range: bytes=10-22
Accept: */*
GET /wantmore/11170001 HTTP/1.1
-Range: bytes=10-22
Host: %HOSTIP:%HTTPPORT
+Range: bytes=10-22
Accept: */*
</protocol>
diff --git a/tests/data/test1121 b/tests/data/test1121
index e704e05fa..405066ff6 100644
--- a/tests/data/test1121
+++ b/tests/data/test1121
@@ -39,10 +39,8 @@ HTTP multiple provided Host: headers
</strip>
<protocol>
GET /1121 HTTP/1.1
-Accept: */*
Host: host1
-Host: host2
-Host: host3
+Accept: */*
</protocol>
</verify>
diff --git a/tests/data/test1134 b/tests/data/test1134
index f8db6ebd2..e290b5369 100644
--- a/tests/data/test1134
+++ b/tests/data/test1134
@@ -50,13 +50,13 @@ http://%HOSTIP:%HTTPPORT/1134 -u user1:password1 --next http://%HOSTIP:%HTTPPORT
</strip>
<protocol>
GET /1134 HTTP/1.1
-Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Accept: */*
GET /11340001 HTTP/1.1
-Authorization: Basic MnVzZXI6cGFzc3dvcmQy
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic MnVzZXI6cGFzc3dvcmQy
Accept: */*
[DISCONNECT]
diff --git a/tests/data/test1135 b/tests/data/test1135
new file mode 100644
index 000000000..960aade8d
--- /dev/null
+++ b/tests/data/test1135
@@ -0,0 +1,95 @@
+<testcase>
+<info>
+<keywords>
+source analysis
+CURL_EXTERN
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+
+# The VMS and OS/400 builds extract the CURL_EXTERN protos and use in
+# the build. We break binary compatibility by changing order. Only add
+# new entries last or bump the SONAME.
+#
+ <name>
+Verify CURL_EXTERN order
+ </name>
+
+<command type="perl">
+%SRCDIR/extern-scan.pl %SRCDIR/..
+</command>
+</client>
+
+<verify>
+<stdout>
+CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
+CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);
+CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
+CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
+CURL_EXTERN void curl_formfree(struct curl_httppost *form);
+CURL_EXTERN char *curl_getenv(const char *variable);
+CURL_EXTERN char *curl_version(void);
+CURL_EXTERN char *curl_easy_escape(CURL *handle,
+CURL_EXTERN char *curl_escape(const char *string,
+CURL_EXTERN char *curl_easy_unescape(CURL *handle,
+CURL_EXTERN char *curl_unescape(const char *string,
+CURL_EXTERN void curl_free(void *p);
+CURL_EXTERN CURLcode curl_global_init(long flags);
+CURL_EXTERN CURLcode curl_global_init_mem(long flags,
+CURL_EXTERN void curl_global_cleanup(void);
+CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
+CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
+CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
+CURL_EXTERN CURLSH *curl_share_init(void);
+CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
+CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
+CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
+CURL_EXTERN const char *curl_easy_strerror(CURLcode);
+CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
+CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
+CURL_EXTERN CURL *curl_easy_init(void);
+CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
+CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
+CURL_EXTERN void curl_easy_cleanup(CURL *curl);
+CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
+CURL_EXTERN CURL* curl_easy_duphandle(CURL *curl);
+CURL_EXTERN void curl_easy_reset(CURL *curl);
+CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
+CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
+CURL_EXTERN int curl_mprintf(const char *format, ...);
+CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
+CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
+CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
+CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
+CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
+CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
+CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
+CURL_EXTERN char *curl_maprintf(const char *format, ...);
+CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
+CURL_EXTERN CURLM *curl_multi_init(void);
+CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
+CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
+CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
+CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
+CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
+CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
+CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+</stdout>
+</verify>
+
+</testcase>
diff --git a/tests/data/test12 b/tests/data/test12
index 95b891aca..06dbdf56f 100644
--- a/tests/data/test12
+++ b/tests/data/test12
@@ -47,8 +47,8 @@ http://%HOSTIP:%HTTPPORT/want/12 -r 100-200
</strip>
<protocol>
GET /want/12 HTTP/1.1
-Range: bytes=100-200
Host: %HOSTIP:%HTTPPORT
+Range: bytes=100-200
Accept: */*
</protocol>
diff --git a/tests/data/test1204 b/tests/data/test1204
index 02502fb8e..d2f06b68e 100644
--- a/tests/data/test1204
+++ b/tests/data/test1204
@@ -70,8 +70,8 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1204 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
</protocol>
diff --git a/tests/data/test1212 b/tests/data/test1212
index 3fd8fdd85..a50601f78 100644
--- a/tests/data/test1212
+++ b/tests/data/test1212
@@ -42,8 +42,8 @@ http://user:secret@%HOSTIP:%HTTPPORT/ulion/1212 --socks5 non-existing-host.haxx.
</strip>
<protocol>
GET /ulion/1212 HTTP/1.1
-Authorization: Basic dXNlcjpzZWNyZXQ=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dXNlcjpzZWNyZXQ=
Accept: */*
</protocol>
diff --git a/tests/data/test1215 b/tests/data/test1215
index d49f71f53..f8c52a9a1 100644
--- a/tests/data/test1215
+++ b/tests/data/test1215
@@ -88,16 +88,16 @@ chkhostname curlhost
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.30.0-DEV
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.30.0-DEV
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1229 b/tests/data/test1229
index 77e7e8cc7..225ba3cc4 100644
--- a/tests/data/test1229
+++ b/tests/data/test1229
@@ -74,8 +74,8 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1229 HTTP/1.1
-Authorization: Digest username="\\user\"", realm="testrealm", nonce="1053604145", uri="/1229", response="f2694d426040712584c156d3de72b8d6"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="\\user\"", realm="testrealm", nonce="1053604145", uri="/1229", response="f2694d426040712584c156d3de72b8d6"
Accept: */*
</protocol>
diff --git a/tests/data/test1237 b/tests/data/test1237
index 68f023d38..21da17dcf 100644
--- a/tests/data/test1237
+++ b/tests/data/test1237
@@ -38,8 +38,8 @@ URL with 1000+ letter user name + password
</strip>
<protocol>
GET /1237 HTTP/1.1
-Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=
Accept: */*
</protocol>
diff --git a/tests/data/test1241 b/tests/data/test1241
new file mode 100644
index 000000000..aaa568868
--- /dev/null
+++ b/tests/data/test1241
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+# verify that dotdot removal can be disabled!
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+
+<data1>
+HTTP/1.1 200 OK
+Content-Length: 7
+Connection: close
+
+-cool-
+</data1>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP _without_ dotdot removal
+ </name>
+ <command>
+--path-as-is --proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241 HTTP/1.1
+Host: test.remote.haxx.se.1241:8990
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001 HTTP/1.1
+Host: test.remote.haxx.se.1241:8990
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test130 b/tests/data/test130
index 827b1a0a2..6e6d9c164 100644
--- a/tests/data/test130
+++ b/tests/data/test130
@@ -43,6 +43,7 @@ FTP (optional .netrc; no user/pass) dir list PASV
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
+default login userdef password passwddef
</file>
</client>
diff --git a/tests/data/test1310 b/tests/data/test1310
index 840f3c5fa..9ffe0d586 100644
--- a/tests/data/test1310
+++ b/tests/data/test1310
@@ -91,15 +91,15 @@ chkhostname curlhost
</strip>
<protocol>
GET /1310 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAA
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1310 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAE8AAAAYABgAZwAAAAAAAABAAAAACAAIAEAAAAAHAAcASAAAAAAAAAAAAAAAggEAAHRlc3R1c2VyVU5LTk9XTlpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOQ==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test1331 b/tests/data/test1331
index 689685692..3299df469 100644
--- a/tests/data/test1331
+++ b/tests/data/test1331
@@ -78,8 +78,8 @@ Accept: */*
Proxy-Connection: Keep-Alive
GET http://z.x.com/1331 HTTP/1.1
-Proxy-Authorization: Basic bXluYW1lOm15cGFzc3dvcmQ=
Host: z.x.com
+Proxy-Authorization: Basic bXluYW1lOm15cGFzc3dvcmQ=
Accept: */*
Proxy-Connection: Keep-Alive
Cookie: proxycookie=weirdo
diff --git a/tests/data/test1401 b/tests/data/test1401
index e709c8e08..d10cac26d 100644
--- a/tests/data/test1401
+++ b/tests/data/test1401
@@ -43,9 +43,9 @@ http://%HOSTIP:%HTTPPORT/we/want/1401 --libcurl log/test1401.c --basic -u fake:u
</strip>
<protocol>
GET /we/want/1401 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
User-Agent: stripped
Authorization: Basic ZmFrZTp1c2Vy
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Cookie: chocolate=chip
X-Files: Mulder
diff --git a/tests/data/test1412 b/tests/data/test1412
index 971aac865..ae63290e9 100644
--- a/tests/data/test1412
+++ b/tests/data/test1412
@@ -102,15 +102,15 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1412 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1412", response="0390dbe89e31adca0413d11f91f30e7f"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /14120001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/14120001", response="0085df91870374c8bf4e94415e7fbf8e"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test1418 b/tests/data/test1418
index de133af34..b3a2f23b2 100644
--- a/tests/data/test1418
+++ b/tests/data/test1418
@@ -93,13 +93,13 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1418 HTTP/1.1
-Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/1418", response="986238b7e0077754944c966f56d9bc77"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/1418", response="986238b7e0077754944c966f56d9bc77"
Accept: */*
GET /14180003 HTTP/1.1
-Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"
Accept: */*
[DISCONNECT]
diff --git a/tests/data/test1421 b/tests/data/test1421
new file mode 100644
index 000000000..6c59b2160
--- /dev/null
+++ b/tests/data/test1421
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Uknown-header: blrub
+Content-Length: 6
+
+-foo-
+</data>
+
+<servercmd>
+connection-monitor
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Re-using HTTP proxy connection for two different host names
+ </name>
+ <command>
+--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+HTTP/1.1 200 OK
+Uknown-header: blrub
+Content-Length: 6
+
+-foo-
+HTTP/1.1 200 OK
+Uknown-header: blrub
+Content-Length: 6
+
+-foo-
+</stdout>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://test.remote.haxx.se.1421:8990/ HTTP/1.1
+Host: test.remote.haxx.se.1421:8990
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://different.remote.haxx.se.1421:8990/ HTTP/1.1
+Host: different.remote.haxx.se.1421:8990
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+[DISCONNECT]
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1422 b/tests/data/test1422
new file mode 100644
index 000000000..9b436cc4e
--- /dev/null
+++ b/tests/data/test1422
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-J
+</keywords>
+</info>
+
+#
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Content-Disposition: filename=name1422; charset=funny; option=strange
+
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+# this relies on the debug feature to allow us to set directory to store the
+# -O and -J output in, using the CURL_TESTDIR variable
+<features>
+debug
+</features>
+<server>
+http
+</server>
+<name>
+HTTP GET with -O -J and Content-Disposition (empty file)
+</name>
+<setenv>
+CURL_TESTDIR=%PWD/log
+</setenv>
+<command option="no-output,no-include">
+http://%HOSTIP:%HTTPPORT/1422 -J -O file://%PWD/log/name1422
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1422 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+
+<file1 name="log/name1422">
+</file1>
+
+</verify>
+</testcase>
diff --git a/tests/data/test1423 b/tests/data/test1423
new file mode 100644
index 000000000..908ff8c29
--- /dev/null
+++ b/tests/data/test1423
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+file
+</server>
+<name>
+HTTP GET -o fname without Content-Disposition (empty file)
+</name>
+<command option="no-output,no-include">
+http://%HOSTIP:%HTTPPORT/1423 -o log/outfile1423 file://%PWD/log/outfile1423
+</command>
+<postcheck>
+perl %SRCDIR/libtest/notexists.pl log/1423
+</postcheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1423 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+
+<file1 name="log/outfile1423">
+</file1>
+
+</verify>
+</testcase>
diff --git a/tests/data/test1424 b/tests/data/test1424
new file mode 100644
index 000000000..17bc46a1d
--- /dev/null
+++ b/tests/data/test1424
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+If-Modified-Since
+-z
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+<datacheck>
+HTTP/1.1 200 OK
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+HTTP GET -o fname without Content-Disposition (unmet time condition)
+</name>
+<file name="log/outfile1424">
+original contents
+</file>
+<command option="no-output,no-include">
+http://%HOSTIP:%HTTPPORT/1424 -z "dec 12 11:00:00 1999 GMT" -o log/outfile1424
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1424 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT
+
+</protocol>
+
+<file1 name="log/outfile1424">
+original contents
+</file1>
+
+</verify>
+</testcase>
diff --git a/tests/data/test1428 b/tests/data/test1428
index f976569ef..59041ec96 100644
--- a/tests/data/test1428
+++ b/tests/data/test1428
@@ -62,17 +62,17 @@ http://test.1428:%HTTPPORT/we/want/that/page/1428 -p -x %HOSTIP:%PROXYPORT --use
</strip>
<proxy>
CONNECT test.1428:%HTTPPORT HTTP/1.1
-User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
Host: test.1428:%HTTPPORT
+User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
Proxy-Connection: Keep-Alive
header-type: proxy
</proxy>
<protocol>
GET /we/want/that/page/1428 HTTP/1.1
+Host: test.1428:%HTTPPORT
Authorization: Basic aWFtOm15OjtzZWxm
User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
-Host: test.1428:%HTTPPORT
Accept: */*
header-type: server
diff --git a/tests/data/test1434 b/tests/data/test1434
index fba104b83..0b33bb958 100644
--- a/tests/data/test1434
+++ b/tests/data/test1434
@@ -81,8 +81,8 @@ http://%HOSTIP:%HTTPPORT/1434 -C 100
</strip>
<protocol>
GET /1434 HTTP/1.1
-Range: bytes=100-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=100-
Accept: */*
</protocol>
diff --git a/tests/data/test150 b/tests/data/test150
index f846fd079..69c5835c6 100644
--- a/tests/data/test150
+++ b/tests/data/test150
@@ -87,15 +87,15 @@ chkhostname curlhost
</strip>
<protocol>
GET /150 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /150 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test1510 b/tests/data/test1510
index fdf6c7dbd..2767f600d 100644
--- a/tests/data/test1510
+++ b/tests/data/test1510
@@ -3,6 +3,7 @@
<keywords>
HTTP
verbose logs
+flaky
</keywords>
</info>
diff --git a/tests/data/test1513 b/tests/data/test1513
index 4a63f1806..8abb96fa6 100644
--- a/tests/data/test1513
+++ b/tests/data/test1513
@@ -7,16 +7,20 @@ PROGRESSFUNCTION
# Server-side
<reply>
+<data nocheck="yes">
+HTTP/1.1 204 PARTIAL
+X-Comment: partial response to keep the client waiting
+</data>
+<postcmd>
+wait 10
+</postcmd>
</reply>
# Client-side
<client>
<server>
-none
-</server>
-<features>
http
-</features>
+</server>
<tool>
lib1513
</tool>
@@ -26,7 +30,7 @@ return failure immediately from progress callback
# this server/host won't be used for real
<command>
-http://localhost/1513
+http://%HOSTIP:%HTTPPORT/1513
</command>
</client>
diff --git a/tests/data/test1527 b/tests/data/test1527
index ee4887ac5..e8d52794b 100644
--- a/tests/data/test1527
+++ b/tests/data/test1527
@@ -45,7 +45,7 @@ http-proxy
lib1527
</tool>
<name>
-Check same headers are generated without CURLOPT_PROXYHEADER
+Check same headers are generated with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED
</name>
<command>
http://the.old.moo.1527:%HTTPPORT/1527 %HOSTIP:%PROXYPORT
diff --git a/tests/data/test153 b/tests/data/test153
index 89560f81a..fc1d812de 100644
--- a/tests/data/test153
+++ b/tests/data/test153
@@ -86,21 +86,21 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1530001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530001", response="f4f83139396995bac665f24a1f1055c7"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1530002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530002", response="f84511b014fdd0ba6494f42871079c32"
User-Agent: curl/7.11.0-CVS (i686-pc-linux-gnu) libcurl/7.11.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1530002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/1530002", cnonce="MTA4MzIy", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm="MD5"
User-Agent: curl/7.11.0-CVS (i686-pc-linux-gnu) libcurl/7.11.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test1530 b/tests/data/test1530
new file mode 100644
index 000000000..8372d29ef
--- /dev/null
+++ b/tests/data/test1530
@@ -0,0 +1,30 @@
+<testcase>
+<info>
+<keywords>
+CURLOPT_OPENSOCKETFUNCTION
+</keywords>
+</info>
+
+<client>
+<server>
+none
+</server>
+<features>
+http
+</features>
+<tool>
+lib1530
+</tool>
+ <name>
+CURLOPT_OPENSOCKETFUNCTION returns bad socket
+ </name>
+</client>
+
+# it should be detected and an error should be reported
+<verify>
+# 7 == CURLE_COULDNT_CONNECT
+<errorcode>
+7
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1531 b/tests/data/test1531
new file mode 100644
index 000000000..d58deb6e0
--- /dev/null
+++ b/tests/data/test1531
Binary files differ
diff --git a/tests/data/test154 b/tests/data/test154
index aa7989ef7..3d693f4b3 100644
--- a/tests/data/test154
+++ b/tests/data/test154
@@ -93,9 +93,9 @@ Content-Length: 85
Expect: 100-continue
PUT /154 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/154", response="b71551e12d1c456e47d8388ecb2edeca"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
diff --git a/tests/data/test155 b/tests/data/test155
index 4e0870afa..46f890fca 100644
--- a/tests/data/test155
+++ b/tests/data/test155
@@ -118,15 +118,15 @@ Content-Length: 85
Expect: 100-continue
PUT /155 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
Content-Length: 0
PUT /155 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
diff --git a/tests/data/test159 b/tests/data/test159
index e05ceef27..5a062176e 100644
--- a/tests/data/test159
+++ b/tests/data/test159
@@ -21,34 +21,20 @@ Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
+Connection: close
This is not the real page either!
</data1001>
-# This is supposed to be returned when the server gets the second
-# Authorization: NTLM line passed-in from the client
-<data1002>
-HTTP/1.1 200 Things are fine in server land swsclose
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 32
-
-Finally, this is the real page!
-</data1002>
-
<datacheck>
HTTP/1.1 401 Now gimme that second request of crap
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 34
WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
+Connection: close
-HTTP/1.1 200 Things are fine in server land swsclose
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 32
-
-Finally, this is the real page!
+This is not the real page either!
</datacheck>
</reply>
@@ -64,7 +50,7 @@ debug
http
</server>
<name>
-HTTP with NTLM authorization when talking HTTP/1.0
+HTTP with NTLM authorization when talking HTTP/1.0 (known to fail)
</name>
<setenv>
# we force our own host name, in order to make the test machine independent
@@ -87,15 +73,9 @@ chkhostname curlhost
</strip>
<protocol>
GET /159 HTTP/1.0
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
-Accept: */*
-
-GET /159 HTTP/1.0
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test16 b/tests/data/test16
index 98539bebd..5cbde59ad 100644
--- a/tests/data/test16
+++ b/tests/data/test16
@@ -42,8 +42,8 @@ HTTP with proxy authorization
</strip>
<protocol>
GET http://we.want.that.site.com/16 HTTP/1.1
-Proxy-Authorization: Basic ZmFrZUB1c2VyOqenp2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==
Host: we.want.that.site.com
+Proxy-Authorization: Basic ZmFrZUB1c2VyOqenp2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1600 b/tests/data/test1600
new file mode 100644
index 000000000..88040747a
--- /dev/null
+++ b/tests/data/test1600
@@ -0,0 +1,27 @@
+<testcase>
+<info>
+<keywords>
+unittest
+NTLM
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+NTLM
+</features>
+ <name>
+NTLM unit tests
+ </name>
+<tool>
+unit1600
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test1601 b/tests/data/test1601
new file mode 100644
index 000000000..125493bb0
--- /dev/null
+++ b/tests/data/test1601
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+MD5
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+MD5 unit tests
+ </name>
+<tool>
+unit1601
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test1602 b/tests/data/test1602
new file mode 100644
index 000000000..4717058ce
--- /dev/null
+++ b/tests/data/test1602
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+hash
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+Internal hash create/add/destroy testing, exercising clean functions
+ </name>
+<tool>
+unit1602
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test162 b/tests/data/test162
index 828c2a5e6..ee2f40aa7 100644
--- a/tests/data/test162
+++ b/tests/data/test162
@@ -47,9 +47,9 @@ http://%HOSTIP:%HTTPPORT/162 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:b
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/162 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled)
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test164 b/tests/data/test164
index 227bd7170..9240611dd 100644
--- a/tests/data/test164
+++ b/tests/data/test164
@@ -59,8 +59,8 @@ http://%HOSTIP:%HTTPPORT/want/164 -r 0-10,12-15
</strip>
<protocol>
GET /want/164 HTTP/1.1
-Range: bytes=0-10,12-15
Host: %HOSTIP:%HTTPPORT
+Range: bytes=0-10,12-15
Accept: */*
</protocol>
diff --git a/tests/data/test167 b/tests/data/test167
index 550803a4d..0b14996a3 100644
--- a/tests/data/test167
+++ b/tests/data/test167
@@ -61,17 +61,17 @@ http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://%HOSTIP:%
</strip>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Basic Zm9vOmJhcg==
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Basic Zm9vOmJhcg==
Authorization: Digest username="digest", realm="weirdorealm", nonce="12345", uri="/167", response="13c7c02a252cbe1c46d8669898a3be26"
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test168 b/tests/data/test168
index e46b726e4..20e0b6d9c 100644
--- a/tests/data/test168
+++ b/tests/data/test168
@@ -75,23 +75,23 @@ http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://%HOSTIP:%
</strip>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1
-User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
Host: data.from.server.requiring.digest.hohoho.com
+User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
Accept: */*
Proxy-Connection: Keep-Alive
GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976"
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976"
Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/168", response="ca87f2d768a231e2d637a55698d5c416"
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test169 b/tests/data/test169
index f236a8900..73ca9bd20 100644
--- a/tests/data/test169
+++ b/tests/data/test169
@@ -104,23 +104,23 @@ chkhostname curlhost
</strip>
<protocol>
GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
Authorization: Digest username="digest", realm="r e a l m", nonce="abcdef", uri="/169", response="95d48591985a03c4b49cb962aa7bd3e6"
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3
-Host: data.from.server.requiring.digest.hohoho.com
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test17 b/tests/data/test17
index 259580bf5..de03c1de0 100644
--- a/tests/data/test17
+++ b/tests/data/test17
@@ -45,8 +45,8 @@ request MOOO
<verify>
<protocol>
MOOO /that.site.com/17 HTTP/1.1
-User-Agent: agent007 license to drill
Host: %HOSTIP:%HTTPPORT
+User-Agent: agent007 license to drill
Accept: */*
</protocol>
diff --git a/tests/data/test170 b/tests/data/test170
index f0e596b79..8ce7774f9 100644
--- a/tests/data/test170
+++ b/tests/data/test170
@@ -36,9 +36,9 @@ http://a.galaxy.far.far.away/170 --proxy http://%HOSTIP:%HTTPPORT --proxy-user f
</strip>
<protocol>
POST http://a.galaxy.far.far.away/170 HTTP/1.1
+Host: a.galaxy.far.far.away
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 libidn/0.4.3
-Host: a.galaxy.far.far.away
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
diff --git a/tests/data/test176 b/tests/data/test176
index ffff82c2c..73c53ca87 100644
--- a/tests/data/test176
+++ b/tests/data/test176
@@ -68,16 +68,16 @@ http://%HOSTIP:%HTTPPORT/176 -u auser:apasswd --ntlm -d "junkelijunk"
</strip>
<protocol nonewline="yes">
POST /176 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST /176 HTTP/1.1
-User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded
diff --git a/tests/data/test1801 b/tests/data/test1801
index 3e069f585..0aedfed51 100644
--- a/tests/data/test1801
+++ b/tests/data/test1801
@@ -23,7 +23,6 @@ lies!
<datacheck>
HTTP/1.1 101 Switching!
-
</datacheck>
# listen to the upgrade request!
@@ -62,5 +61,9 @@ Upgrade: %H2CVER
HTTP2-Settings: AAMAAABkAAQAAP__
</protocol>
+# CURLE_HTTP2: Send failure: Broken pipe
+<errorcode>
+16
+</errorcode>
</verify>
</testcase>
diff --git a/tests/data/test184 b/tests/data/test184
index e42a393ea..8b09dde28 100644
--- a/tests/data/test184
+++ b/tests/data/test184
@@ -59,10 +59,10 @@ http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.st
</strip>
<protocol>
GET http://deathstar.another.galaxy/184 HTTP/1.1
+Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.6b zlib/1.1.4 libidn/0.4.6
Accept: */*
Proxy-Connection: Keep-Alive
-Host: another.visitor.stay.a.while.stay.foreeeeeever
GET http://yet.another.host/184 HTTP/1.1
Host: yet.another.host
diff --git a/tests/data/test185 b/tests/data/test185
index 01a66f6db..298dd49ce 100644
--- a/tests/data/test185
+++ b/tests/data/test185
@@ -59,15 +59,15 @@ http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.st
</strip>
<protocol>
GET http://deathstar.another.galaxy/185 HTTP/1.1
+Host: another.visitor.stay.a.while.stay.foreeeeeever
User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.6b zlib/1.1.4 libidn/0.4.6
Accept: */*
Proxy-Connection: Keep-Alive
-Host: another.visitor.stay.a.while.stay.foreeeeeever
GET http://deathstar.another.galaxy/go/west/185 HTTP/1.1
+Host: another.visitor.stay.a.while.stay.foreeeeeever
Accept: */*
Proxy-Connection: Keep-Alive
-Host: another.visitor.stay.a.while.stay.foreeeeeever
</protocol>
diff --git a/tests/data/test188 b/tests/data/test188
index 030354414..a23a2a11e 100644
--- a/tests/data/test188
+++ b/tests/data/test188
@@ -62,15 +62,15 @@ http://%HOSTIP:%HTTPPORT/188 -C 50 -L
</strip>
<protocol>
GET /188 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /188 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.7d zlib/1.2.1.2 libidn/0.5.2
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test189 b/tests/data/test189
index deb6e894e..f82b4ad90 100644
--- a/tests/data/test189
+++ b/tests/data/test189
@@ -56,15 +56,15 @@ http://%HOSTIP:%HTTPPORT/189 -C 50 -L
</strip>
<protocol>
GET /189 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /189 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Range: bytes=50-
User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.7d zlib/1.2.1.2 libidn/0.5.2
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test1902 b/tests/data/test1902
index 555b4863b..533ed55a8 100644
--- a/tests/data/test1902
+++ b/tests/data/test1902
@@ -48,11 +48,11 @@ http://%HOSTIP:%HTTPPIPEPORT/
<file name="log/urls.txt">
0 1k.txt
1000 connection_close.txt
-0 1k.txt
-0 1k.txt
-0 1k.txt
-0 1k.txt
-0 1k.txt
+1 1k.txt
+2 1k.txt
+3 1k.txt
+4 1k.txt
+5 1k.txt
</file>
</client>
diff --git a/tests/data/test194 b/tests/data/test194
index 26f7f17bb..730446f79 100644
--- a/tests/data/test194
+++ b/tests/data/test194
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/want/194 -C 87 --fail
</strip>
<protocol>
GET /want/194 HTTP/1.1
-Range: bytes=87-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=87-
Accept: */*
</protocol>
diff --git a/tests/data/test2 b/tests/data/test2
index 22b4f1860..9f9c50618 100644
--- a/tests/data/test2
+++ b/tests/data/test2
@@ -41,8 +41,8 @@ HTTP GET with user and password
</strip>
<protocol>
GET /2 HTTP/1.1
-Authorization: Basic ZmFrZTp1c2Vy
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic ZmFrZTp1c2Vy
Accept: */*
</protocol>
diff --git a/tests/data/test2023 b/tests/data/test2023
index 9b04ff3dd..382b6cb8a 100644
--- a/tests/data/test2023
+++ b/tests/data/test2023
@@ -133,28 +133,28 @@ chkhostname curlhost
</strip>
<protocol>
GET /20230100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20230200 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20230300 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20230400 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20230500 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
</protocol>
diff --git a/tests/data/test2024 b/tests/data/test2024
index 9c155a2ef..cd06b7c9f 100644
--- a/tests/data/test2024
+++ b/tests/data/test2024
@@ -147,28 +147,28 @@ chkhostname curlhost
</strip>
<protocol>
GET /20240100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20240200 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20240200", response="ed646c565f79e2dd9fa37cb5a621213c"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20240200", response="ed646c565f79e2dd9fa37cb5a621213c"
Accept: */*
GET /20240300 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20240400 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20240400", response="9741ced8caacc6124770187b36f007c5"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20240400", response="9741ced8caacc6124770187b36f007c5"
Accept: */*
GET /20240500 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20240500", response="5bc77ec8c2d443b27a1b55f1fd8fbb13"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20240500", response="5bc77ec8c2d443b27a1b55f1fd8fbb13"
Accept: */*
</protocol>
diff --git a/tests/data/test2025 b/tests/data/test2025
index 03b6b1417..1eae4826d 100644
--- a/tests/data/test2025
+++ b/tests/data/test2025
@@ -228,43 +228,43 @@ chkhostname curlhost
</strip>
<protocol>
GET /20250100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20250200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20250200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20250300 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20250400 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20250400 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20250500 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20250500 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
</protocol>
diff --git a/tests/data/test2026 b/tests/data/test2026
index b1d234115..afbd4f31e 100644
--- a/tests/data/test2026
+++ b/tests/data/test2026
@@ -187,13 +187,13 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /20260100 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b"
Accept: */*
GET /20260200 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20260300 HTTP/1.1
@@ -201,18 +201,18 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /20260300 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae"
Accept: */*
GET /20260400 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20260500 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
</protocol>
diff --git a/tests/data/test2027 b/tests/data/test2027
index e9a62d64f..3302a155d 100644
--- a/tests/data/test2027
+++ b/tests/data/test2027
@@ -210,13 +210,13 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /20270100 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20270100", response="f7fd60eefaff5225971bf9b3d80d6ba6"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20270100", response="f7fd60eefaff5225971bf9b3d80d6ba6"
Accept: */*
GET /20270200 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20270200", response="785ca3ef511999f7e9c178195f5b388c"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20270200", response="785ca3ef511999f7e9c178195f5b388c"
Accept: */*
GET /20270300 HTTP/1.1
@@ -224,23 +224,23 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /20270300 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20270300", response="4c735d2360fd6848e7cb32a11ae3612b"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20270300", response="4c735d2360fd6848e7cb32a11ae3612b"
Accept: */*
GET /20270400 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"
Accept: */*
GET /20270400 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"
Accept: */*
GET /20270500 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20270500", response="8ef4d935fd964a46c3965c0863b52cf1"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20270500", response="8ef4d935fd964a46c3965c0863b52cf1"
Accept: */*
</protocol>
diff --git a/tests/data/test2028 b/tests/data/test2028
index 2a03836b3..1ae1faeaf 100644
--- a/tests/data/test2028
+++ b/tests/data/test2028
@@ -268,18 +268,18 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /20280100 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20280100", response="53c80666f5e3a4a55f92a66aaf0078bb"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20280100", response="53c80666f5e3a4a55f92a66aaf0078bb"
Accept: */*
GET /20280200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20280200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20280300 HTTP/1.1
@@ -287,28 +287,28 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /20280300 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20280300", response="1aa5d90da9803ca12d04b24e0f19476e"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20280300", response="1aa5d90da9803ca12d04b24e0f19476e"
Accept: */*
GET /20280400 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20280400 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20280500 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20280500 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
</protocol>
diff --git a/tests/data/test2029 b/tests/data/test2029
index 7c697e3d4..42866a31b 100644
--- a/tests/data/test2029
+++ b/tests/data/test2029
@@ -201,38 +201,38 @@ chkhostname curlhost
</strip>
<protocol>
GET /20290100 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20290100 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20290200 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20290300 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20290300 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20290400 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
Accept: */*
GET /20290500 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
</protocol>
diff --git a/tests/data/test2030 b/tests/data/test2030
index a80c15ece..5c2754c19 100644
--- a/tests/data/test2030
+++ b/tests/data/test2030
@@ -253,43 +253,43 @@ chkhostname curlhost
</strip>
<protocol>
GET /20300100 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20300100 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20300200 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20300200", response="2f2d784ba53a0a307758a90e98d25c27"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20300200", response="2f2d784ba53a0a307758a90e98d25c27"
Accept: */*
GET /20300300 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20300300 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20300400 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"
Accept: */*
GET /20300400 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"
Accept: */*
GET /20300500 HTTP/1.1
-Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20300500", response="198757e61163a779cf24ed4c49c1ad7d"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20300500", response="198757e61163a779cf24ed4c49c1ad7d"
Accept: */*
</protocol>
diff --git a/tests/data/test2031 b/tests/data/test2031
index 0df841b77..bd5aa0745 100644
--- a/tests/data/test2031
+++ b/tests/data/test2031
@@ -267,53 +267,53 @@ chkhostname curlhost
</strip>
<protocol>
GET /20310100 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20310100 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20310200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20310200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20310300 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20310300 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20310400 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20310400 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
Accept: */*
GET /20310500 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20310500 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
</protocol>
diff --git a/tests/data/test2032 b/tests/data/test2032
index 23f44e638..f708665e6 100644
--- a/tests/data/test2032
+++ b/tests/data/test2032
@@ -123,23 +123,23 @@ chkhostname curlhost
</strip>
<protocol>
GET /20320100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: 127.0.0.1:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20320100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: 127.0.0.1:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20320200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: 127.0.0.1:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20320200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: 127.0.0.1:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
</protocol>
diff --git a/tests/data/test2033 b/tests/data/test2033
index aacbe5e08..6c41700a6 100644
--- a/tests/data/test2033
+++ b/tests/data/test2033
@@ -124,23 +124,23 @@ chkhostname curlhost
</strip>
<protocol>
GET /20320100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: 127.0.0.1:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20320100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: 127.0.0.1:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Accept: */*
GET /20320200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Host: 127.0.0.1:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Accept: */*
GET /20320200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Host: 127.0.0.1:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
Accept: */*
</protocol>
diff --git a/tests/data/test2039 b/tests/data/test2039
new file mode 100644
index 000000000..1595ded05
--- /dev/null
+++ b/tests/data/test2039
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+LIST
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# When doing LIST, we get the default list output hard-coded in the test
+# FTP server
+<datacheck mode="text">
+total 20
+drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
+drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
+drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
+-r--r--r-- 1 0 1 35 Jul 16 1996 README
+lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
+dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
+drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
+dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
+drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
+dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+ftp
+</server>
+ <name>
+FTP (optional .netrc with 'default' override; no user/pass) dir list PASV
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc2039 ftp://%HOSTIP:%FTPPORT/
+</command>
+<file name="log/netrc2039" >
+# the following two lines were created while testing curl
+default login userdef password passwddef
+machine %HOSTIP login user1 password passwd1
+machine %HOSTIP login user2 password passwd2
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER userdef
+PASS passwddef
+PWD
+EPSV
+TYPE A
+LIST
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2040 b/tests/data/test2040
new file mode 100644
index 000000000..ac600174e
--- /dev/null
+++ b/tests/data/test2040
@@ -0,0 +1,69 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP Basic auth
+</keywords>
+</info>
+# Server-side
+<reply>
+
+<!-- First request has Basic auth, right password -->
+<data100>
+HTTP/1.1 200 Things are fine in server land
+Server: Microsoft-IIS/5.0
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 32
+
+Finally, this is the real page!
+</data100>
+
+<!-- Second request with Basic auth disabled -->
+<data200>
+HTTP/1.1 401 Sorry wrong password (2)
+Server: Microsoft-IIS/5.0
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 29
+WWW-Authenticate: Basic realm="testrealm"
+
+This is a bad password page!
+</data200>
+
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+HTTP Basic authorization, then without authorization
+</name>
+<command option="no-output,no-include">
+-u testuser:testpass http://%HOSTIP:%HTTPPORT/20400100 --next --no-basic http://%HOSTIP:%HTTPPORT/20400200
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /20400100 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
+Accept: */*
+
+GET /20400200 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+<stdout>
+Finally, this is the real page!
+This is a bad password page!
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test2041 b/tests/data/test2041
new file mode 100644
index 000000000..dcad2fdc3
--- /dev/null
+++ b/tests/data/test2041
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+
+MooMoo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+simple HTTPS GET with base64-sha256 public key pinning
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//pyh+fICi9M8MFEZvherIT0cs3MN+cXNGoU9Giwyx1so= https://localhost:%HTTPSPORT/2041
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /2041 HTTP/1.1
+Host: localhost:%HTTPSPORT
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2042 b/tests/data/test2042
new file mode 100644
index 000000000..2181e5322
--- /dev/null
+++ b/tests/data/test2042
@@ -0,0 +1,44 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+HTTPS wrong base64-sha256 pinnedpubkey but right CN
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//bSIggTf+ikMG0CtmDlpMVBd7yi7H1md4URogRPqerso= https://localhost:%HTTPSPORT/2042
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+90
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2043 b/tests/data/test2043
new file mode 100644
index 000000000..7a91f5b60
--- /dev/null
+++ b/tests/data/test2043
@@ -0,0 +1,33 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<features>
+WinSSL
+</features>
+<server>
+none
+</server>
+ <name>
+Disable certificate revocation checks
+ </name>
+ <command>
+--ssl-no-revoke -I https://revoked.grc.com/
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test208 b/tests/data/test208
index a7a99b900..afb2566b5 100644
--- a/tests/data/test208
+++ b/tests/data/test208
@@ -54,8 +54,8 @@ the
</strip>
<protocol>
PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1
-Authorization: Basic ZGFuaWVsOm15c2VjcmV0
Host: host.com:21
+Authorization: Basic ZGFuaWVsOm15c2VjcmV0
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 78
diff --git a/tests/data/test233 b/tests/data/test233
index d165da952..b631e52cf 100644
--- a/tests/data/test233
+++ b/tests/data/test233
@@ -77,15 +77,15 @@ http://first.host.it.is/we/want/that/page/233 -x %HOSTIP:%HTTPPORT --user iam:my
</strip>
<protocol>
GET http://first.host.it.is/we/want/that/page/233 HTTP/1.1
+Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
-Host: first.host.it.is
Accept: */*
Proxy-Connection: Keep-Alive
GET http://goto.second.host.now/2330002 HTTP/1.1
-Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Host: goto.second.host.now
+Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test234 b/tests/data/test234
index d8c708109..1d2e05b39 100644
--- a/tests/data/test234
+++ b/tests/data/test234
@@ -79,16 +79,16 @@ http://first.host.it.is/we/want/that/page/234 -x %HOSTIP:%HTTPPORT --user iam:my
</strip>
<protocol>
GET http://first.host.it.is/we/want/that/page/234 HTTP/1.1
+Host: first.host.it.is
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
-Host: first.host.it.is
Accept: */*
Proxy-Connection: Keep-Alive
GET http://goto.second.host.now/2340002 HTTP/1.1
+Host: goto.second.host.now
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
-Host: goto.second.host.now
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test239 b/tests/data/test239
index 89ccaefb9..6b92f07f7 100644
--- a/tests/data/test239
+++ b/tests/data/test239
@@ -79,18 +79,18 @@ chkhostname curlhost
</strip>
<protocol nonewline="yes">
POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
diff --git a/tests/data/test242 b/tests/data/test242
index 01d40bdd7..9457c58c3 100644
--- a/tests/data/test242
+++ b/tests/data/test242
@@ -45,8 +45,8 @@ HTTP-IPv6 GET with username+password in URL
</strip>
<protocol>
GET /242 HTTP/1.1
-Authorization: Basic Zm9vYmFyOmJhcmZvbw==
Host: %HOST6IP:%HTTP6PORT
+Authorization: Basic Zm9vYmFyOmJhcmZvbw==
Accept: */*
</protocol>
diff --git a/tests/data/test243 b/tests/data/test243
index 0ac4222a4..3496055d1 100644
--- a/tests/data/test243
+++ b/tests/data/test243
@@ -100,26 +100,26 @@ chkhostname curlhost
</strip>
<protocol nonewline="yes">
POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
Content-Type: application/x-www-form-urlencoded
postitPOST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 6
diff --git a/tests/data/test245 b/tests/data/test245
index 02a277291..cbb5ee31d 100644
--- a/tests/data/test245
+++ b/tests/data/test245
@@ -68,16 +68,16 @@ http://%HOSTIP:%HTTPPORT/245 -u auser:apasswd --digest -d "junkelijunk"
</strip>
<protocol nonewline="yes">
POST /245 HTTP/1.1
-User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST /245 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/245", response="379a439b1737ba257c1d2f103914b18b"
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded
diff --git a/tests/data/test246 b/tests/data/test246
index cfa31dbb8..acf47da5d 100644
--- a/tests/data/test246
+++ b/tests/data/test246
@@ -78,16 +78,16 @@ http://%HOSTIP:%HTTPPORT/246 -u auser:apasswd --digest -d "junkelijunk"
</strip>
<protocol nonewline="yes">
POST /246 HTTP/1.1
-User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Accept: */*
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST /246 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/246", response="761e6fc9a760c39d587092e8d840e740"
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded
diff --git a/tests/data/test256 b/tests/data/test256
index 5f8323b67..2b96ecf3d 100644
--- a/tests/data/test256
+++ b/tests/data/test256
@@ -47,9 +47,9 @@ download on.
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/want/256 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic ZGFuaWVsOnN0ZW5iZXJn
Range: bytes=78-
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test257 b/tests/data/test257
index 45642d571..502448ddb 100644
--- a/tests/data/test257
+++ b/tests/data/test257
@@ -88,22 +88,22 @@ machine anotherone.com login user2 password passwd2
</strip>
<protocol>
GET http://supersite.com/want/257 HTTP/1.1
+Host: supersite.com
Authorization: Basic dXNlcjE6cGFzc3dkMQ==
User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: supersite.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://anotherone.com/2570002 HTTP/1.1
+Host: anotherone.com
Authorization: Basic dXNlcjI6cGFzc3dkMg==
User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: anotherone.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://athird.com/2570003 HTTP/1.1
-User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Host: athird.com
+User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test258 b/tests/data/test258
index 1173707c7..98c340141 100644
--- a/tests/data/test258
+++ b/tests/data/test258
@@ -80,8 +80,8 @@ bar
</strip>
<protocol>
POST http://remotehost:54321/we/want/258 HTTP/1.1
-User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: remotehost:54321
+User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
@@ -105,9 +105,9 @@ bar
------------------------------7c633d5c27ce--
POST http://remotehost:54321/we/want/258 HTTP/1.1
+Host: remotehost:54321
User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/258", response="2501654ca391f0b5c8c12a1da77e34cd"
-Host: remotehost:54321
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
diff --git a/tests/data/test259 b/tests/data/test259
index d4a82270f..9532887a9 100644
--- a/tests/data/test259
+++ b/tests/data/test259
@@ -76,8 +76,8 @@ bar
</strip>
<protocol>
POST http://remotehost:54321/we/want/259 HTTP/1.1
-User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: remotehost:54321
+User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
@@ -102,9 +102,9 @@ bar
------------------------------7c633d5c27ce--
POST http://remotehost:54321/we/want/259 HTTP/1.1
+Host: remotehost:54321
User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/259", response="b479994d13e60f3aa192a67c5892ddc5"
-Host: remotehost:54321
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 409
diff --git a/tests/data/test264 b/tests/data/test264
index 3cfb4d88d..f4d171a16 100644
--- a/tests/data/test264
+++ b/tests/data/test264
@@ -39,8 +39,8 @@ http://we.want.that.site.com/264 -x http://f%61ke:user@%HOSTIP:%HTTPPORT
</strip>
<protocol>
GET http://we.want.that.site.com/264 HTTP/1.1
-Proxy-Authorization: Basic ZmFrZTp1c2Vy
Host: we.want.that.site.com
+Proxy-Authorization: Basic ZmFrZTp1c2Vy
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test267 b/tests/data/test267
index ea4a9cf13..7cc8375a5 100644
--- a/tests/data/test267
+++ b/tests/data/test267
@@ -86,9 +86,9 @@ chkhostname curlhost
</strip>
<protocol nonewline="yes">
POST /267 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Header1: yes
Header2: no
@@ -96,9 +96,9 @@ Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST /267 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Header1: yes
Header2: no
diff --git a/tests/data/test273 b/tests/data/test273
index c8010d9f3..ce0be331e 100644
--- a/tests/data/test273
+++ b/tests/data/test273
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /273 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/273", response="576ae57b1db0039f8c0de43ef58e49e3"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test275 b/tests/data/test275
index ac54e2594..802c4bbcc 100644
--- a/tests/data/test275
+++ b/tests/data/test275
@@ -74,13 +74,13 @@ Proxy-Connection: Keep-Alive
</proxy>
<protocol>
GET /we/want/that/page/275 HTTP/1.1
-Authorization: Basic aWFtOm15c2VsZg==
Host: remotesite.com.275:%HTTPPORT
+Authorization: Basic aWFtOm15c2VsZg==
Accept: */*
GET /we/want/that/page/275 HTTP/1.1
-Authorization: Basic aWFtOm15c2VsZg==
Host: remotesite.com.275:%HTTPPORT
+Authorization: Basic aWFtOm15c2VsZg==
Accept: */*
</protocol>
diff --git a/tests/data/test278 b/tests/data/test278
index 6c57822b7..3112264a3 100644
--- a/tests/data/test278
+++ b/tests/data/test278
@@ -39,8 +39,8 @@ http://we.want.that.site.com/278 -x http://f%61ke:@%HOSTIP:%HTTPPORT
</strip>
<protocol>
GET http://we.want.that.site.com/278 HTTP/1.1
-Proxy-Authorization: Basic ZmFrZTo=
Host: we.want.that.site.com
+Proxy-Authorization: Basic ZmFrZTo=
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test279 b/tests/data/test279
index 5a1938cb3..47f8b687e 100644
--- a/tests/data/test279
+++ b/tests/data/test279
@@ -40,8 +40,8 @@ http://we.want.that.site.com/279 -x http://f%61ke@%HOSTIP:%HTTPPORT
</strip>
<protocol>
GET http://we.want.that.site.com/279 HTTP/1.1
-Proxy-Authorization: Basic ZmFrZTo=
Host: we.want.that.site.com
+Proxy-Authorization: Basic ZmFrZTo=
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test287 b/tests/data/test287
index ec4dfeb05..6772e220f 100644
--- a/tests/data/test287
+++ b/tests/data/test287
@@ -28,7 +28,7 @@ http
HTTP proxy CONNECT with custom User-Agent header
</name>
<command>
-http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2007" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel
+http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2015" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel --proxy-header "User-Agent: looser/2007"
</command>
</client>
diff --git a/tests/data/test299 b/tests/data/test299
index a557a14c7..4daaea47d 100644
--- a/tests/data/test299
+++ b/tests/data/test299
@@ -43,8 +43,8 @@ FTP over HTTP proxy with user:pass not in url
</strip>
<protocol>
GET ftp://michal:aybabtu@host.com/we/want/299 HTTP/1.1
-Authorization: Basic bWljaGFsOmF5YmFidHU=
Host: host.com:21
+Authorization: Basic bWljaGFsOmF5YmFidHU=
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test3 b/tests/data/test3
index 2167b2a49..0fe276467 100644
--- a/tests/data/test3
+++ b/tests/data/test3
@@ -48,8 +48,8 @@ HTTP POST with auth and contents but with content-length set to 0
</strip>
<protocol nonewline="yes">
POST /3 HTTP/1.1
-Authorization: Basic ZmFrZTotdXNlcg==
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic ZmFrZTotdXNlcg==
Accept: */*
Content-Length: 37
Content-Type: application/x-www-form-urlencoded
diff --git a/tests/data/test301 b/tests/data/test301
index d5974ce69..c40469578 100644
--- a/tests/data/test301
+++ b/tests/data/test301
@@ -45,8 +45,8 @@ HTTPS GET with user and password
</strip>
<protocol>
GET /301 HTTP/1.1
-Authorization: Basic ZmFrZTp1c2Vy
Host: %HOSTIP:%HTTPSPORT
+Authorization: Basic ZmFrZTp1c2Vy
Accept: */*
</protocol>
diff --git a/tests/data/test31 b/tests/data/test31
index dfcac0458..7cf556c0c 100644
--- a/tests/data/test31
+++ b/tests/data/test31
@@ -53,6 +53,10 @@ Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: magic=yessir; path=/silly/; HttpOnly
Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad;
Set-Cookie: partialip=nono; domain=.0.0.1;
+Set-Cookie: withspaces= yes within and around ;
+Set-Cookie: withspaces2 =before equals;
+Set-Cookie: prespace= yes before;
+Set-Cookie: securewithspace=after ; secure =
boo
</data>
@@ -124,6 +128,10 @@ Accept: */*
127.0.0.1 FALSE /we/want/ FALSE 2054030187 nodomain value
#HttpOnly_127.0.0.1 FALSE /silly/ FALSE 0 magic yessir
127.0.0.1 FALSE /we/want/ FALSE 0 blexp yesyes
+127.0.0.1 FALSE /we/want/ FALSE 0 withspaces yes within and around
+127.0.0.1 FALSE /we/want/ FALSE 0 withspaces2 before equals
+127.0.0.1 FALSE /we/want/ FALSE 0 prespace yes before
+127.0.0.1 FALSE /we/want/ TRUE 0 securewithspace after
</file>
</verify>
</testcase>
diff --git a/tests/data/test320 b/tests/data/test320
index 8f6df05c9..4b6f833ac 100644
--- a/tests/data/test320
+++ b/tests/data/test320
@@ -28,8 +28,8 @@ Content-type: text/html
<TR><TD>Cipher</TD><TD>AES-NNN-CBC</TD></TR>
<TR><TD>MAC</TD><TD>SHA1</TD></TR>
<TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_NNN_CBC_SHA1</TD></TR></p></TABLE>
-<hr><P>Your HTTP header was:<PRE>User-Agent: curl/7.21.4-DEV (x86_64-apple-darwin10.5.0) libcurl/7.21.4-DEV GnuTLS/2.10.4 zlib/1.2.5 libidn/1.19
-Host: localhost:9011
+<hr><P>Your HTTP header was:<PRE>Host: localhost:9011
+User-Agent: curl-test-suite
Accept: */*
</PRE></P>
@@ -50,7 +50,7 @@ TLS-SRP
simple TLS-SRP HTTPS GET, check user in response
</name>
<command>
---insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT
+--insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword abc -A curl-test-suite https://%HOSTIP:%HTTPTLSPORT
</command>
</client>
@@ -77,8 +77,8 @@ Content-type: text/html
<TR><TD>Cipher</TD><TD>AES-NNN-CBC</TD></TR>
<TR><TD>MAC</TD><TD>SHA1</TD></TR>
<TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_NNN_CBC_SHA1</TD></TR></p></TABLE>
-<PRE>
-Host: %HOSTIP:%HTTPTLSPORT
+<hr><P>Your HTTP header was:<PRE>Host: %HOSTIP:%HTTPTLSPORT
+User-Agent: curl-test-suite
Accept: */*
</PRE></P>
@@ -87,7 +87,6 @@ Accept: */*
</file>
<stripfile>
s/^<p>Session ID:.*//
-s/^<hr><P>Your HTTP header was:<PRE>.*/<PRE>/
s/Protocol version:.*[0-9]//
s/GNUTLS/GnuTLS/
s/(AES[-_])\d\d\d([-_]CBC)/$1NNN$2/
diff --git a/tests/data/test33 b/tests/data/test33
index 9b86cd3a9..9f7c31fb1 100644
--- a/tests/data/test33
+++ b/tests/data/test33
@@ -47,9 +47,9 @@ http://%HOSTIP:%HTTPPORT/33 -Tlog/test33.txt -C 50
</strip>
<protocol>
PUT /33 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Content-Range: bytes 50-99/100
User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 50
Expect: 100-continue
diff --git a/tests/data/test38 b/tests/data/test38
index 75155866d..848150a33 100644
--- a/tests/data/test38
+++ b/tests/data/test38
@@ -46,8 +46,8 @@ download on.
</strip>
<protocol>
GET /want/38 HTTP/1.1
-Range: bytes=78-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=78-
Accept: */*
</protocol>
diff --git a/tests/data/test46 b/tests/data/test46
index b6f8f83ef..b6ebe802e 100644
--- a/tests/data/test46
+++ b/tests/data/test46
@@ -51,8 +51,8 @@ TZ=GMT
www.fake.come FALSE / FALSE 1022144953 cookiecliente si
www.loser.com FALSE / FALSE 1139150993 UID 99
-%HOSTIP FALSE / FALSE 1439150993 mooo indeed
-#HttpOnly_%HOSTIP FALSE /want FALSE 1439150993 mooo2 indeed2
+%HOSTIP FALSE / FALSE 1739150993 mooo indeed
+#HttpOnly_%HOSTIP FALSE /want FALSE 1739150993 mooo2 indeed2
%HOSTIP FALSE /want FALSE 0 empty
</file>
</client>
@@ -76,8 +76,8 @@ Cookie: empty=; mooo2=indeed2; mooo=indeed
www.fake.come FALSE / FALSE 1022144953 cookiecliente si
www.loser.com FALSE / FALSE 1139150993 UID 99
-%HOSTIP FALSE / FALSE 1439150993 mooo indeed
-#HttpOnly_%HOSTIP FALSE /want FALSE 1439150993 mooo2 indeed2
+%HOSTIP FALSE / FALSE 1739150993 mooo indeed
+#HttpOnly_%HOSTIP FALSE /want FALSE 1739150993 mooo2 indeed2
%HOSTIP FALSE /want FALSE 0 empty
%HOSTIP FALSE / FALSE 2054030187 ckyPersistent permanent
%HOSTIP FALSE / FALSE 0 ckySession temporary
diff --git a/tests/data/test503 b/tests/data/test503
index ea3148300..e8dc21e8d 100644
--- a/tests/data/test503
+++ b/tests/data/test503
@@ -77,8 +77,8 @@ Proxy-Connection: Keep-Alive
</proxy>
<protocol>
GET /503 HTTP/1.1
-Authorization: Basic dGVzdDppbmc=
Host: machine.503:%HTTPPORT
+Authorization: Basic dGVzdDppbmc=
Accept: */*
[DISCONNECT]
diff --git a/tests/data/test519 b/tests/data/test519
index b8ca9ab23..976056067 100644
--- a/tests/data/test519
+++ b/tests/data/test519
@@ -64,13 +64,13 @@ http://%HOSTIP:%HTTPPORT/519
<verify>
<protocol>
GET /519 HTTP/1.1
-Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA==
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA==
Accept: */*
GET /519 HTTP/1.1
-Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ==
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ==
Accept: */*
</protocol>
diff --git a/tests/data/test522 b/tests/data/test522
index 56d1f3be9..89a0dbf51 100644
--- a/tests/data/test522
+++ b/tests/data/test522
@@ -48,8 +48,8 @@ http://%HOSTIP/522 %HTTPPORT
</strip>
<protocol>
GET /522 HTTP/1.1
-Authorization: Basic eHh4Onl5eQ==
Host: %HOSTIP:%HTTPPORT
+Authorization: Basic eHh4Onl5eQ==
Accept: */*
</protocol>
diff --git a/tests/data/test523 b/tests/data/test523
index 7d3db38ef..9abe0ed22 100644
--- a/tests/data/test523
+++ b/tests/data/test523
@@ -51,8 +51,8 @@ http://www.example.com:999/523 http://%HOSTIP:%HTTPPORT
</strip>
<protocol>
GET HTTP://www.example.com:19999/523 HTTP/1.1
-Authorization: Basic eHh4Onl5eQ==
Host: www.example.com:19999
+Authorization: Basic eHh4Onl5eQ==
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test540 b/tests/data/test540
index a2f7364ca..8decaea9d 100644
--- a/tests/data/test540
+++ b/tests/data/test540
@@ -76,21 +76,21 @@ http://test.remote.example.com/path/540 http://%HOSTIP:%HTTPPORT silly:person cu
</strip>
<protocol>
GET http://test.remote.example.com/path/540 HTTP/1.1
+Host: custom.set.host.name
Accept: */*
Proxy-Connection: Keep-Alive
-Host: custom.set.host.name
GET http://test.remote.example.com/path/540 HTTP/1.1
+Host: custom.set.host.name
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"
Accept: */*
Proxy-Connection: Keep-Alive
-Host: custom.set.host.name
GET http://test.remote.example.com/path/540 HTTP/1.1
+Host: custom.set.host.name
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"
Accept: */*
Proxy-Connection: Keep-Alive
-Host: custom.set.host.name
</protocol>
</verify>
diff --git a/tests/data/test547 b/tests/data/test547
index f4802e29d..cee22c6f7 100644
--- a/tests/data/test547
+++ b/tests/data/test547
@@ -103,8 +103,8 @@ chkhostname curlhost
</strip>
<protocol>
POST http://test.remote.example.com/path/547 HTTP/1.1
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Host: test.remote.example.com
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
@@ -112,18 +112,18 @@ Content-Type: application/x-www-form-urlencoded
this is the blurb we want to upload
POST http://test.remote.example.com/path/547 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST http://test.remote.example.com/path/547 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test548 b/tests/data/test548
index 54f242f98..34cf5e2ea 100644
--- a/tests/data/test548
+++ b/tests/data/test548
@@ -103,8 +103,8 @@ chkhostname curlhost
</strip>
<protocol>
POST http://test.remote.example.com/path/548 HTTP/1.1
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Host: test.remote.example.com
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
@@ -112,18 +112,18 @@ Content-Type: application/x-www-form-urlencoded
this is the blurb we want to upload
POST http://test.remote.example.com/path/548 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST http://test.remote.example.com/path/548 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test551 b/tests/data/test551
index 5776303e5..ed6aee264 100644
--- a/tests/data/test551
+++ b/tests/data/test551
@@ -87,8 +87,8 @@ Content-Type: application/x-www-form-urlencoded
this is the blurb we want to upload
POST http://test.remote.example.com/path/551 HTTP/1.1
-Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c"
Host: test.remote.example.com
+Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c"
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test552 b/tests/data/test552
index 61de9fe24..b44ca3455 100644
--- a/tests/data/test552
+++ b/tests/data/test552
Binary files differ
diff --git a/tests/data/test555 b/tests/data/test555
index c802feac6..0f3bb07fc 100644
--- a/tests/data/test555
+++ b/tests/data/test555
@@ -112,8 +112,8 @@ s/^(this is the blurb we want to upload)\r\n/$1\n/ if($has_charconv)
</strippart>
<protocol>
POST http://test.remote.example.com/path/555 HTTP/1.1
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Host: test.remote.example.com
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
@@ -121,18 +121,18 @@ Content-Type: application/x-www-form-urlencoded
this is the blurb we want to upload
POST http://test.remote.example.com/path/555 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
POST http://test.remote.example.com/path/555 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test56 b/tests/data/test56
index a97b3650e..f221981c4 100644
--- a/tests/data/test56
+++ b/tests/data/test56
@@ -46,8 +46,8 @@ header "Transfer-Encoding: chunked"
<verify>
<protocol>
POST /that.site.com/56 HTTP/1.1
-User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Host: %HOSTIP:%HTTPPORT
+User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
diff --git a/tests/data/test565 b/tests/data/test565
index 90fa4d1c9..6e215a24d 100644
--- a/tests/data/test565
+++ b/tests/data/test565
@@ -86,8 +86,8 @@ Content-Type: application/x-www-form-urlencoded
0
POST /565 HTTP/1.1
-Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b"
Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b"
Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
diff --git a/tests/data/test590 b/tests/data/test590
index 0712c162a..55ea4f0e9 100644
--- a/tests/data/test590
+++ b/tests/data/test590
@@ -101,22 +101,22 @@ chkhostname curlhost
</strip>
<protocol>
GET http://test.remote.example.com/path/590 HTTP/1.1
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Host: test.remote.example.com
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
Accept: */*
Proxy-Connection: Keep-Alive
GET http://test.remote.example.com/path/590 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
GET http://test.remote.example.com/path/590 HTTP/1.1
+Host: test.remote.example.com
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAAAgACAPYAAAAIAAgA+AAAAAAAAAAAAAAABoKBAB3Hr6SDn3NDNkgebbaP88ExMjM0MjIzNFIW4N7aYT44bAIg1jt2blUBAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAbWVjdXJsaG9zdA==
User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: test.remote.example.com
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test598 b/tests/data/test598
index 11a0dbc3c..89b8e6f58 100644
--- a/tests/data/test598
+++ b/tests/data/test598
@@ -65,8 +65,8 @@ http://%HOSTIP:%HTTPPORT/598
<verify>
<protocol>
GET /598 HTTP/1.1
-User-Agent: the-moo agent next generation
Host: %HOSTIP:%HTTPPORT
+User-Agent: the-moo agent next generation
Accept: */*
Referer: http://example.com/the-moo
Cookie: name=moo
diff --git a/tests/data/test61 b/tests/data/test61
index e6dbbb901..abc97895a 100644
--- a/tests/data/test61
+++ b/tests/data/test61
@@ -56,8 +56,8 @@ http://%HOSTIP:%HTTPPORT/we/want/61 -c log/jar61.txt -H "Host: www.host.foo.com"
</strip>
<protocol>
GET /we/want/61 HTTP/1.1
-Accept: */*
Host: www.host.foo.com
+Accept: */*
</protocol>
<file name="log/jar61.txt" mode="text">
diff --git a/tests/data/test62 b/tests/data/test62
index 2e5d1db03..51b88709e 100644
--- a/tests/data/test62
+++ b/tests/data/test62
@@ -51,14 +51,14 @@ http://%HOSTIP:%HTTPPORT/we/want/62 http://%HOSTIP:%HTTPPORT/we/want?hoge=fuga -
</strip>
<protocol>
GET /we/want/62 HTTP/1.1
+Host: www.host.foo.com
Accept: */*
Cookie: test2=yes; test=yes
-Host: www.host.foo.com
GET /we/want?hoge=fuga HTTP/1.1
+Host: www.host.foo.com
Accept: */*
Cookie: test2=yes; test=yes
-Host: www.host.foo.com
</protocol>
</verify>
diff --git a/tests/data/test63 b/tests/data/test63
index 66ed1d86b..ccc19dd24 100644
--- a/tests/data/test63
+++ b/tests/data/test63
@@ -42,8 +42,8 @@ http://we.want.that.site.com/63
</strip>
<protocol>
GET http://we.want.that.site.com/63 HTTP/1.1
-Proxy-Authorization: Basic ZmFrZTp1c2Vy
Host: we.want.that.site.com
+Proxy-Authorization: Basic ZmFrZTp1c2Vy
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test64 b/tests/data/test64
index 7a2e3d072..804a6fa80 100644
--- a/tests/data/test64
+++ b/tests/data/test64
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /64 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test65 b/tests/data/test65
index 001d598a6..f0b974213 100644
--- a/tests/data/test65
+++ b/tests/data/test65
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /65 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/65", response="66d68d3251f1839576ba7c766cf9205b"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test67 b/tests/data/test67
index 58d35e6a1..b3431111c 100644
--- a/tests/data/test67
+++ b/tests/data/test67
@@ -86,15 +86,15 @@ chkhostname curlhost
</strip>
<protocol>
GET /67 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /67 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test68 b/tests/data/test68
index 92a915b69..acd710fea 100644
--- a/tests/data/test68
+++ b/tests/data/test68
@@ -85,15 +85,15 @@ chkhostname curlhost
</strip>
<protocol>
GET /68 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /68 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test69 b/tests/data/test69
index 50603b05a..887a4603f 100644
--- a/tests/data/test69
+++ b/tests/data/test69
@@ -102,20 +102,20 @@ chkhostname curlhost
</strip>
<protocol>
GET /69 HTTP/1.1
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
GET /69 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /69 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test70 b/tests/data/test70
index 74f70e1be..9057d6a4b 100644
--- a/tests/data/test70
+++ b/tests/data/test70
@@ -73,14 +73,14 @@ http://%HOSTIP:%HTTPPORT/70 -u testuser:testpass --anyauth
</strip>
<protocol>
GET /70 HTTP/1.1
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
GET /70 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/70", response="2c9a6f00af0d86497b177b90e90c688a"
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test72 b/tests/data/test72
index b90e19c84..8e3adaa50 100644
--- a/tests/data/test72
+++ b/tests/data/test72
@@ -72,14 +72,14 @@ http://%HOSTIP:%HTTPPORT/72 -u testuser:testpass --anyauth
</strip>
<protocol>
GET /72 HTTP/1.1
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
GET /72 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/72", response="9fcd1330377365a09bbcb33b2cbb25bd"
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test73 b/tests/data/test73
index d60ee62ad..a23546d42 100644
--- a/tests/data/test73
+++ b/tests/data/test73
@@ -40,8 +40,8 @@ http://%HOSTIP:%HTTPPORT/we/want/73 -c log/jar73.txt -H "Host: host.NOT_DISCLOSE
</strip>
<protocol>
GET /we/want/73 HTTP/1.1
-Accept: */*
Host: host.NOT_DISCLOSED.se
+Accept: */*
</protocol>
<file name="log/jar73.txt" mode="text">
diff --git a/tests/data/test80 b/tests/data/test80
index 16805cabb..147a6aa12 100644
--- a/tests/data/test80
+++ b/tests/data/test80
@@ -73,9 +73,9 @@ Proxy-Connection: Keep-Alive
</proxy>
<protocol>
GET /we/want/that/page/80 HTTP/1.1
+Host: test.80:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
-Host: test.80:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test81 b/tests/data/test81
index ff258edbd..dc054d293 100644
--- a/tests/data/test81
+++ b/tests/data/test81
@@ -85,16 +85,16 @@ chkhostname curlhost
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test82 b/tests/data/test82
index 9e800bb73..8b58f75da 100644
--- a/tests/data/test82
+++ b/tests/data/test82
@@ -45,9 +45,9 @@ http://%HOSTIP:%HTTPPORT/82 --proxy-user testuser:testpass -x http://%HOSTIP:%HT
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/82 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test83 b/tests/data/test83
index e00a28893..120bcc6a1 100644
--- a/tests/data/test83
+++ b/tests/data/test83
@@ -62,16 +62,16 @@ http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user 'i
</strip>
<proxy>
CONNECT test.83:%HTTPPORT HTTP/1.1
-User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
Host: test.83:%HTTPPORT
+User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
Proxy-Connection: Keep-Alive
</proxy>
<protocol>
GET /we/want/that/page/83 HTTP/1.1
+Host: test.83:%HTTPPORT
Authorization: Basic aWFtOm15OjtzZWxm
User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
-Host: test.83:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test837 b/tests/data/test837
new file mode 100644
index 000000000..d5974634e
--- /dev/null
+++ b/tests/data/test837
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTHENTICATE +
+REPLY dXNlcg== A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication
+ </name>
+ <command>
+'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/837/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY
+A002 AUTHENTICATE EXTERNAL
+dXNlcg==
+A003 SELECT 837
+A004 FETCH 1 BODY[]
+A005 LOGOUT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test838 b/tests/data/test838
new file mode 100644
index 000000000..da2d28d05
--- /dev/null
+++ b/tests/data/test838
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTHENTICATE +
+REPLY = A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication without credentials
+ </name>
+ <command>
+'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/838/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY
+A002 AUTHENTICATE EXTERNAL
+=
+A003 SELECT 838
+A004 FETCH 1 BODY[]
+A005 LOGOUT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test839 b/tests/data/test839
new file mode 100644
index 000000000..2a544c1cf
--- /dev/null
+++ b/tests/data/test839
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+CAPA SASL-IR
+REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication with initial response
+ </name>
+ <command>
+'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/839/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY
+A002 AUTHENTICATE EXTERNAL dXNlcg==
+A003 SELECT 839
+A004 FETCH 1 BODY[]
+A005 LOGOUT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test84 b/tests/data/test84
index 4dbf16432..629dae2fc 100644
--- a/tests/data/test84
+++ b/tests/data/test84
@@ -43,9 +43,9 @@ http://%HOSTIP:%HTTPPORT/we/want/that/page/84 -x %HOSTIP:%HTTPPORT --user iam:my
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/84 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test840 b/tests/data/test840
new file mode 100644
index 000000000..eaf1aeea4
--- /dev/null
+++ b/tests/data/test840
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+CAPA SASL-IR
+REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication with initial response without credentials
+ </name>
+ <command>
+'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/840/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY
+A002 AUTHENTICATE EXTERNAL =
+A003 SELECT 840
+A004 FETCH 1 BODY[]
+A005 LOGOUT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test85 b/tests/data/test85
index a5d1a3bca..cb5e6e052 100644
--- a/tests/data/test85
+++ b/tests/data/test85
@@ -46,10 +46,10 @@ http://%HOSTIP:%HTTPPORT/we/want/that/page/85 -x %HOSTIP:%HTTPPORT --user iam:my
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/we/want/that/page/85 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Proxy-Authorization: Basic dGVzdGluZzp0aGlz
Authorization: Basic aWFtOm15c2VsZg==
User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test88 b/tests/data/test88
index 253b4202f..e2d019c06 100644
--- a/tests/data/test88
+++ b/tests/data/test88
@@ -85,9 +85,9 @@ Accept: */*
Content-Length: 0
PUT /88 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
diff --git a/tests/data/test883 b/tests/data/test883
new file mode 100644
index 000000000..5d5a756a9
--- /dev/null
+++ b/tests/data/test883
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +
+REPLY dXNlcg== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication
+ </name>
+ <command>
+'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/883'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA
+AUTH EXTERNAL
+dXNlcg==
+RETR 883
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test884 b/tests/data/test884
new file mode 100644
index 000000000..34fd94d13
--- /dev/null
+++ b/tests/data/test884
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +
+REPLY = +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication without credentials
+ </name>
+ <command>
+'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/884'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA
+AUTH EXTERNAL
+=
+RETR 884
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test885 b/tests/data/test885
new file mode 100644
index 000000000..581e9b24f
--- /dev/null
+++ b/tests/data/test885
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication with initial response
+ </name>
+ <command>
+'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/885' --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA
+AUTH EXTERNAL dXNlcg==
+RETR 885
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test886 b/tests/data/test886
new file mode 100644
index 000000000..3aca2f18f
--- /dev/null
+++ b/tests/data/test886
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication with initial response without credentials
+ </name>
+ <command>
+'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/886' --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA
+AUTH EXTERNAL =
+RETR 886
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test89 b/tests/data/test89
index cbabe8e7e..c7f69a2b0 100644
--- a/tests/data/test89
+++ b/tests/data/test89
@@ -119,27 +119,27 @@ chkhostname curlhost
</strip>
<protocol>
GET /89 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /89 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /you/890010 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /you/890010 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBALIBPdoGahtQQ8gQ7TJrKTYzMjM0NDIzNBFnpKw8B1BLcb456sVeozgBAQAAAAAAAACAPtXesZ0BMzIzNDQyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test90 b/tests/data/test90
index 90dae2c0b..3b1231a31 100644
--- a/tests/data/test90
+++ b/tests/data/test90
@@ -161,15 +161,15 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /90 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /90 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /you/900010 HTTP/1.1
@@ -177,15 +177,15 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /you/900010 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /you/900010 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBALIBPdoGahtQQ8gQ7TJrKTYzMjM0NDIzNBFnpKw8B1BLcb456sVeozgBAQAAAAAAAACAPtXesZ0BMzIzNDQyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==
User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test91 b/tests/data/test91
index 26ee318b9..35195ad37 100644
--- a/tests/data/test91
+++ b/tests/data/test91
@@ -103,20 +103,20 @@ chkhostname curlhost
</strip>
<protocol>
GET /91 HTTP/1.1
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
GET /91 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /91 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAgACAD2AAAABgAGAP4AAAAIAAgABAEAAAAAAAAAAAAABoKBAI9byKoy6qyyS+1JCYN1XYoxMjM0MjIzNEYCr85trkciZ2j/7/T8MmUBAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAbXlkb21haW5teXNlbGZjdXJsaG9zdA==
User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3
-Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
diff --git a/tests/data/test92 b/tests/data/test92
index bf7827651..1304c81ec 100644
--- a/tests/data/test92
+++ b/tests/data/test92
@@ -45,8 +45,8 @@ http://%HOSTIP:%HTTPPORT/want/92 -C 87
</strip>
<protocol>
GET /want/92 HTTP/1.1
-Range: bytes=87-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=87-
Accept: */*
</protocol>
diff --git a/tests/data/test938 b/tests/data/test938
index 7299d34c4..7931d0aaa 100644
--- a/tests/data/test938
+++ b/tests/data/test938
@@ -61,3 +61,5 @@ QUIT
mail body
.
</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test942 b/tests/data/test942
new file mode 100644
index 000000000..26740f7b6
--- /dev/null
+++ b/tests/data/test942
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 334 EXTERNAL supported
+REPLY dXNlcg== 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication
+ </name>
+<stdin>
+mail body
+</stdin>
+ <command>
+'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/942' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 942
+AUTH EXTERNAL
+dXNlcg==
+MAIL FROM:<sender@example.com>
+RCPT TO:<recipient@example.com>
+DATA
+QUIT
+</protocol>
+<upload>
+mail body
+.
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test943 b/tests/data/test943
new file mode 100644
index 000000000..aef2c6228
--- /dev/null
+++ b/tests/data/test943
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 334 EXTERNAL supported
+REPLY = 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication without credentials
+ </name>
+<stdin>
+mail body
+</stdin>
+ <command>
+'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/943' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 943
+AUTH EXTERNAL
+=
+MAIL FROM:<sender@example.com>
+RCPT TO:<recipient@example.com>
+DATA
+QUIT
+</protocol>
+<upload>
+mail body
+.
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test944 b/tests/data/test944
new file mode 100644
index 000000000..4b60f120f
--- /dev/null
+++ b/tests/data/test944
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication with initial response
+ </name>
+<stdin>
+mail body
+</stdin>
+ <command>
+'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/944' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 944
+AUTH EXTERNAL dXNlcg==
+MAIL FROM:<sender@example.com>
+RCPT TO:<recipient@example.com>
+DATA
+QUIT
+</protocol>
+<upload>
+mail body
+.
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test945 b/tests/data/test945
new file mode 100644
index 000000000..3526408d3
--- /dev/null
+++ b/tests/data/test945
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication with initial response without credentials
+ </name>
+<stdin>
+mail body
+</stdin>
+ <command>
+'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/945' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 945
+AUTH EXTERNAL =
+MAIL FROM:<sender@example.com>
+RCPT TO:<recipient@example.com>
+DATA
+QUIT
+</protocol>
+<upload>
+mail body
+.
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test96 b/tests/data/test96
index 3d9a933a0..27044bc99 100644
--- a/tests/data/test96
+++ b/tests/data/test96
@@ -37,7 +37,7 @@ MEM tool_cfgable.c
MEM tool_cfgable.c
</file>
<stripfile>
-$_ = '' if (($_ !~ /tool_paramhlp/) && ($_ !~ /tool_cfgable/))
+$_ = '' if ((($_ !~ /tool_paramhlp/) && ($_ !~ /tool_cfgable/)) || ($_ =~ /free\(\(nil\)\)/))
s/:\d+.*//
s:^(MEM )(.*/)(.*):$1$3:
</stripfile>
diff --git a/tests/data/test99 b/tests/data/test99
index 2517002f7..9797600cf 100644
--- a/tests/data/test99
+++ b/tests/data/test99
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/99 -C 9999999999
</strip>
<protocol>
GET /99 HTTP/1.1
-Range: bytes=9999999999-
Host: %HOSTIP:%HTTPPORT
+Range: bytes=9999999999-
Accept: */*
</protocol>
diff --git a/tests/extern-scan.pl b/tests/extern-scan.pl
new file mode 100755
index 000000000..49d0c86b0
--- /dev/null
+++ b/tests/extern-scan.pl
@@ -0,0 +1,60 @@
+#!/usr/bin/env perl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2010-2015, 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 http://curl.haxx.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.
+#
+###########################################################################
+#
+#
+
+use strict;
+use warnings;
+
+# we may get the dir root pointed out
+my $root=$ARGV[0] || ".";
+
+my @incs = (
+ "$root/include/curl/curl.h",
+ "$root/include/curl/easy.h",
+ "$root/include/curl/mprintf.h",
+ "$root/include/curl/multi.h",
+ );
+
+my $verbose=0;
+my $summary=0;
+my $misses=0;
+
+my @syms;
+my %doc;
+my %rem;
+
+sub scanheader {
+ my ($f)=@_;
+ open H, "<$f" || die;
+ while(<H>) {
+ if (/^(CURL_EXTERN.*)/) {
+ print "$1\n";
+ }
+ }
+ close H;
+}
+
+foreach my $i (@incs) {
+ scanheader($i);
+}
diff --git a/tests/libtest/CMakeLists.txt b/tests/libtest/CMakeLists.txt
new file mode 100644
index 000000000..cc9d7e1f8
--- /dev/null
+++ b/tests/libtest/CMakeLists.txt
@@ -0,0 +1,122 @@
+set(TARGET_LABEL_PREFIX "Test ")
+
+function(SETUP_TEST TEST_NAME) # ARGN are the files in the test
+ add_executable( ${TEST_NAME} ${ARGN} )
+ string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)
+
+ 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/curlbuild.h"
+ )
+ if(USE_ARES)
+ include_directories(${CARES_INCLUDE_DIR})
+ endif()
+
+ target_link_libraries( ${TEST_NAME} libcurl ${CURL_LIBS})
+
+ set_target_properties(${TEST_NAME}
+ PROPERTIES COMPILE_DEFINITIONS ${UPPER_TEST_NAME})
+ set_target_properties(${TEST_NAME}
+ PROPERTIES PROJECT_LABEL "${TARGET_LABEL_PREFIX}${TEST_NAME}")
+
+ # Add the postfix to the executable since it is
+ # not added automatically as for modules and shared libraries
+ set_target_properties(${TEST_NAME}
+ PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+
+endfunction()
+
+
+transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
+
+foreach(TEST_NAME ${noinst_PROGRAMS})
+ setup_test(${TEST_NAME} ${${TEST_NAME}_SOURCES})
+endforeach()
+
+# Allows for hostname override to make tests machine independent.
+# TODO this cmake build assumes a shared build, detect static linking here!
+if(NOT WIN32)
+ add_library(hostname MODULE sethostname.c sethostname.h)
+ # Output to .libs for compatibility with autotools, the test data expects a
+ # library at (tests)/libtest/.libs/libhostname.so
+ set_target_properties(hostname PROPERTIES
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.libs)
+endif()
+
+# # files used only in some libcurl test programs
+# SET(TESTUTIL testutil.c testutil.h)
+
+# # these files are used in every single test program below
+# SET(SUPPORTFILES first.c test.h)
+
+# # These are all libcurl test programs
+# SET(noinst_PROGRAMS
+# lib500 lib501 lib502 lib503 lib504 lib505 lib506
+# lib507 lib508 lib510 lib511 lib512 lib513 lib514 lib515 lib516
+# lib517 lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526
+# #lib527
+# #lib529
+# lib530
+# #lib532
+# lib533 lib536 lib537 lib540 lib541 lib542 lib543
+# lib544
+# #lib545
+# lib547
+# #lib548
+# lib549 lib552 lib553 lib554 lib555 lib556
+# lib539 lib557
+# lib560
+# )
+
+# SET(noinst_PROGRAMS_USE_TESTUTIL
+# lib502 lib503 lib504
+# lib507
+# lib525 lib526 lib527
+# lib529
+# lib530
+# lib532
+# lib533 lib536
+# lib555
+# )
+
+# MACRO(ADD_TESTUTIL_IF_NECESSARY TEST_NAME)
+# LIST(FIND noinst_PROGRAMS_USE_TESTUTIL ${TEST_NAME} USES_TESTUTIL)
+# IF(NOT ${USES_TESTUTIL} EQUAL -1)
+# LIST(APPEND SOURCE ${TESTUTIL}) # Need TestUtil
+# ENDIF()
+# ENDMACRO()
+
+# # General case
+# FOREACH(TEST_NAME ${noinst_PROGRAMS})
+# SET(SOURCE "${TEST_NAME}.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+# ENDFOREACH()
+
+# # Special cases
+# SET(TEST_NAME lib527)
+# SET(SOURCE "lib526.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib529)
+# SET(SOURCE "lib525.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib532)
+# SET(SOURCE "lib526.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib545)
+# SET(SOURCE "lib544.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib548)
+# SET(SOURCE "lib547.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am
index 80707b165..d255b222b 100644
--- a/tests/libtest/Makefile.am
+++ b/tests/libtest/Makefile.am
@@ -51,7 +51,7 @@ AM_CPPFLAGS = -I$(top_builddir)/include/curl \
endif
EXTRA_DIST = test75.pl test307.pl test610.pl test613.pl test1013.pl \
-test1022.pl Makefile.inc notexists.pl
+test1022.pl Makefile.inc notexists.pl CMakeLists.txt
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
@@ -62,8 +62,8 @@ if USE_EXPLICIT_LIB_DEPS
SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
else
-SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@
-TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@
+SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@ @NSS_LIBS@
+TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@ @NSS_LIBS@
endif
# Dependencies (may need to be overriden)
diff --git a/tests/libtest/Makefile.in b/tests/libtest/Makefile.in
index bc276f571..6561963d5 100644
--- a/tests/libtest/Makefile.in
+++ b/tests/libtest/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -79,9 +89,6 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
- $(top_srcdir)/depcomp
noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
libntlmconnect$(EXEEXT) lib500$(EXEEXT) lib501$(EXEEXT) \
lib502$(EXEEXT) lib503$(EXEEXT) lib504$(EXEEXT) \
@@ -116,7 +123,8 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
lib1512$(EXEEXT) lib1513$(EXEEXT) lib1514$(EXEEXT) \
lib1515$(EXEEXT) lib1520$(EXEEXT) lib1525$(EXEEXT) \
lib1526$(EXEEXT) lib1527$(EXEEXT) lib1528$(EXEEXT) \
- lib1529$(EXEEXT) lib1900$(EXEEXT) lib2033$(EXEEXT)
+ lib1529$(EXEEXT) lib1530$(EXEEXT) lib1531$(EXEEXT) \
+ lib1900$(EXEEXT) lib2033$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@@ -143,7 +151,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -320,473 +329,487 @@ am_lib1529_OBJECTS = lib1529-lib1529.$(OBJEXT) $(am__objects_61) \
$(am__objects_62) $(am__objects_63)
lib1529_OBJECTS = $(am_lib1529_OBJECTS)
lib1529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_64 = lib1900-first.$(OBJEXT)
-am__objects_65 = lib1900-testutil.$(OBJEXT)
-am__objects_66 = ../../lib/lib1900-warnless.$(OBJEXT)
-am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_64) \
+am__objects_64 = lib1530-first.$(OBJEXT)
+am__objects_65 = lib1530-testutil.$(OBJEXT)
+am__objects_66 = ../../lib/lib1530-warnless.$(OBJEXT)
+am_lib1530_OBJECTS = lib1530-lib1530.$(OBJEXT) $(am__objects_64) \
$(am__objects_65) $(am__objects_66)
+lib1530_OBJECTS = $(am_lib1530_OBJECTS)
+lib1530_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_67 = lib1531-first.$(OBJEXT)
+am__objects_68 = lib1531-testutil.$(OBJEXT)
+am__objects_69 = ../../lib/lib1531-warnless.$(OBJEXT)
+am_lib1531_OBJECTS = lib1531-lib1531.$(OBJEXT) $(am__objects_67) \
+ $(am__objects_68) $(am__objects_69)
+lib1531_OBJECTS = $(am_lib1531_OBJECTS)
+lib1531_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_70 = lib1900-first.$(OBJEXT)
+am__objects_71 = lib1900-testutil.$(OBJEXT)
+am__objects_72 = ../../lib/lib1900-warnless.$(OBJEXT)
+am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_70) \
+ $(am__objects_71) $(am__objects_72)
lib1900_OBJECTS = $(am_lib1900_OBJECTS)
lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_67 = lib2033-first.$(OBJEXT)
-am__objects_68 = lib2033-testutil.$(OBJEXT)
-am__objects_69 = ../../lib/lib2033-warnless.$(OBJEXT)
+am__objects_73 = lib2033-first.$(OBJEXT)
+am__objects_74 = lib2033-testutil.$(OBJEXT)
+am__objects_75 = ../../lib/lib2033-warnless.$(OBJEXT)
am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
- $(am__objects_67) $(am__objects_68) $(am__objects_69)
+ $(am__objects_73) $(am__objects_74) $(am__objects_75)
lib2033_OBJECTS = $(am_lib2033_OBJECTS)
lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_70 = lib500-first.$(OBJEXT)
-am__objects_71 = lib500-testutil.$(OBJEXT)
-am__objects_72 = lib500-testtrace.$(OBJEXT)
-am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_70) \
- $(am__objects_71) $(am__objects_72)
+am__objects_76 = lib500-first.$(OBJEXT)
+am__objects_77 = lib500-testutil.$(OBJEXT)
+am__objects_78 = lib500-testtrace.$(OBJEXT)
+am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_76) \
+ $(am__objects_77) $(am__objects_78)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_73 = lib501-first.$(OBJEXT)
-am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_73)
+am__objects_79 = lib501-first.$(OBJEXT)
+am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_79)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_74 = lib502-first.$(OBJEXT)
-am__objects_75 = lib502-testutil.$(OBJEXT)
-am__objects_76 = ../../lib/lib502-warnless.$(OBJEXT)
-am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_74) \
- $(am__objects_75) $(am__objects_76)
+am__objects_80 = lib502-first.$(OBJEXT)
+am__objects_81 = lib502-testutil.$(OBJEXT)
+am__objects_82 = ../../lib/lib502-warnless.$(OBJEXT)
+am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_80) \
+ $(am__objects_81) $(am__objects_82)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_77 = lib503-first.$(OBJEXT)
-am__objects_78 = lib503-testutil.$(OBJEXT)
-am__objects_79 = ../../lib/lib503-warnless.$(OBJEXT)
-am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_77) \
- $(am__objects_78) $(am__objects_79)
+am__objects_83 = lib503-first.$(OBJEXT)
+am__objects_84 = lib503-testutil.$(OBJEXT)
+am__objects_85 = ../../lib/lib503-warnless.$(OBJEXT)
+am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_83) \
+ $(am__objects_84) $(am__objects_85)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_80 = lib504-first.$(OBJEXT)
-am__objects_81 = lib504-testutil.$(OBJEXT)
-am__objects_82 = ../../lib/lib504-warnless.$(OBJEXT)
-am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_80) \
- $(am__objects_81) $(am__objects_82)
+am__objects_86 = lib504-first.$(OBJEXT)
+am__objects_87 = lib504-testutil.$(OBJEXT)
+am__objects_88 = ../../lib/lib504-warnless.$(OBJEXT)
+am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_86) \
+ $(am__objects_87) $(am__objects_88)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_83 = lib505-first.$(OBJEXT)
-am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_83)
+am__objects_89 = lib505-first.$(OBJEXT)
+am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_89)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_84 = lib506-first.$(OBJEXT)
-am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_84)
+am__objects_90 = lib506-first.$(OBJEXT)
+am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_90)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_85 = lib507-first.$(OBJEXT)
-am__objects_86 = lib507-testutil.$(OBJEXT)
-am__objects_87 = ../../lib/lib507-warnless.$(OBJEXT)
-am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_85) \
- $(am__objects_86) $(am__objects_87)
+am__objects_91 = lib507-first.$(OBJEXT)
+am__objects_92 = lib507-testutil.$(OBJEXT)
+am__objects_93 = ../../lib/lib507-warnless.$(OBJEXT)
+am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_91) \
+ $(am__objects_92) $(am__objects_93)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_88 = lib508-first.$(OBJEXT)
-am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_88)
+am__objects_94 = lib508-first.$(OBJEXT)
+am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_94)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_89 = lib509-first.$(OBJEXT)
-am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_89)
+am__objects_95 = lib509-first.$(OBJEXT)
+am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_95)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_90 = lib510-first.$(OBJEXT)
-am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_90)
+am__objects_96 = lib510-first.$(OBJEXT)
+am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_96)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_91 = lib511-first.$(OBJEXT)
-am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_91)
+am__objects_97 = lib511-first.$(OBJEXT)
+am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_97)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_92 = lib512-first.$(OBJEXT)
-am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_92)
+am__objects_98 = lib512-first.$(OBJEXT)
+am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_98)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_93 = lib513-first.$(OBJEXT)
-am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_93)
+am__objects_99 = lib513-first.$(OBJEXT)
+am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_99)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_94 = lib514-first.$(OBJEXT)
-am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_94)
+am__objects_100 = lib514-first.$(OBJEXT)
+am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_100)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_95 = lib515-first.$(OBJEXT)
-am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_95)
+am__objects_101 = lib515-first.$(OBJEXT)
+am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_101)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_96 = lib516-first.$(OBJEXT)
-am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_96)
+am__objects_102 = lib516-first.$(OBJEXT)
+am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_102)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_97 = lib517-first.$(OBJEXT)
-am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_97)
+am__objects_103 = lib517-first.$(OBJEXT)
+am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_103)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_98 = lib518-first.$(OBJEXT)
-am__objects_99 = ../../lib/lib518-warnless.$(OBJEXT)
-am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_98) \
- $(am__objects_99)
+am__objects_104 = lib518-first.$(OBJEXT)
+am__objects_105 = ../../lib/lib518-warnless.$(OBJEXT)
+am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_104) \
+ $(am__objects_105)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_100 = lib519-first.$(OBJEXT)
-am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_100)
+am__objects_106 = lib519-first.$(OBJEXT)
+am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_106)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_101 = lib520-first.$(OBJEXT)
-am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_101)
+am__objects_107 = lib520-first.$(OBJEXT)
+am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_107)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_102 = lib521-first.$(OBJEXT)
-am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_102)
+am__objects_108 = lib521-first.$(OBJEXT)
+am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_108)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_103 = lib523-first.$(OBJEXT)
-am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_103)
+am__objects_109 = lib523-first.$(OBJEXT)
+am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_109)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_104 = lib524-first.$(OBJEXT)
-am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_104)
+am__objects_110 = lib524-first.$(OBJEXT)
+am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_110)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_105 = lib525-first.$(OBJEXT)
-am__objects_106 = lib525-testutil.$(OBJEXT)
-am__objects_107 = ../../lib/lib525-warnless.$(OBJEXT)
-am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_105) \
- $(am__objects_106) $(am__objects_107)
+am__objects_111 = lib525-first.$(OBJEXT)
+am__objects_112 = lib525-testutil.$(OBJEXT)
+am__objects_113 = ../../lib/lib525-warnless.$(OBJEXT)
+am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_111) \
+ $(am__objects_112) $(am__objects_113)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_108 = lib526-first.$(OBJEXT)
-am__objects_109 = lib526-testutil.$(OBJEXT)
-am__objects_110 = ../../lib/lib526-warnless.$(OBJEXT)
-am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_108) \
- $(am__objects_109) $(am__objects_110)
+am__objects_114 = lib526-first.$(OBJEXT)
+am__objects_115 = lib526-testutil.$(OBJEXT)
+am__objects_116 = ../../lib/lib526-warnless.$(OBJEXT)
+am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_114) \
+ $(am__objects_115) $(am__objects_116)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_111 = lib527-first.$(OBJEXT)
-am__objects_112 = lib527-testutil.$(OBJEXT)
-am__objects_113 = ../../lib/lib527-warnless.$(OBJEXT)
-am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_111) \
- $(am__objects_112) $(am__objects_113)
+am__objects_117 = lib527-first.$(OBJEXT)
+am__objects_118 = lib527-testutil.$(OBJEXT)
+am__objects_119 = ../../lib/lib527-warnless.$(OBJEXT)
+am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_117) \
+ $(am__objects_118) $(am__objects_119)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_114 = lib529-first.$(OBJEXT)
-am__objects_115 = lib529-testutil.$(OBJEXT)
-am__objects_116 = ../../lib/lib529-warnless.$(OBJEXT)
-am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_114) \
- $(am__objects_115) $(am__objects_116)
+am__objects_120 = lib529-first.$(OBJEXT)
+am__objects_121 = lib529-testutil.$(OBJEXT)
+am__objects_122 = ../../lib/lib529-warnless.$(OBJEXT)
+am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_120) \
+ $(am__objects_121) $(am__objects_122)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_117 = lib530-first.$(OBJEXT)
-am__objects_118 = lib530-testutil.$(OBJEXT)
-am__objects_119 = ../../lib/lib530-warnless.$(OBJEXT)
-am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_117) \
- $(am__objects_118) $(am__objects_119)
+am__objects_123 = lib530-first.$(OBJEXT)
+am__objects_124 = lib530-testutil.$(OBJEXT)
+am__objects_125 = ../../lib/lib530-warnless.$(OBJEXT)
+am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_123) \
+ $(am__objects_124) $(am__objects_125)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_120 = lib532-first.$(OBJEXT)
-am__objects_121 = lib532-testutil.$(OBJEXT)
-am__objects_122 = ../../lib/lib532-warnless.$(OBJEXT)
-am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_120) \
- $(am__objects_121) $(am__objects_122)
+am__objects_126 = lib532-first.$(OBJEXT)
+am__objects_127 = lib532-testutil.$(OBJEXT)
+am__objects_128 = ../../lib/lib532-warnless.$(OBJEXT)
+am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_126) \
+ $(am__objects_127) $(am__objects_128)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_123 = lib533-first.$(OBJEXT)
-am__objects_124 = lib533-testutil.$(OBJEXT)
-am__objects_125 = ../../lib/lib533-warnless.$(OBJEXT)
-am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_123) \
- $(am__objects_124) $(am__objects_125)
+am__objects_129 = lib533-first.$(OBJEXT)
+am__objects_130 = lib533-testutil.$(OBJEXT)
+am__objects_131 = ../../lib/lib533-warnless.$(OBJEXT)
+am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_129) \
+ $(am__objects_130) $(am__objects_131)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_126 = lib536-first.$(OBJEXT)
-am__objects_127 = lib536-testutil.$(OBJEXT)
-am__objects_128 = ../../lib/lib536-warnless.$(OBJEXT)
-am_lib536_OBJECTS = lib536-lib536.$(OBJEXT) $(am__objects_126) \
- $(am__objects_127) $(am__objects_128)
+am__objects_132 = lib536-first.$(OBJEXT)
+am__objects_133 = lib536-testutil.$(OBJEXT)
+am__objects_134 = ../../lib/lib536-warnless.$(OBJEXT)
+am_lib536_OBJECTS = lib536-lib536.$(OBJEXT) $(am__objects_132) \
+ $(am__objects_133) $(am__objects_134)
lib536_OBJECTS = $(am_lib536_OBJECTS)
lib536_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_129 = lib537-first.$(OBJEXT)
-am__objects_130 = ../../lib/lib537-warnless.$(OBJEXT)
-am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_129) \
- $(am__objects_130)
+am__objects_135 = lib537-first.$(OBJEXT)
+am__objects_136 = ../../lib/lib537-warnless.$(OBJEXT)
+am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_135) \
+ $(am__objects_136)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_131 = lib539-first.$(OBJEXT)
-am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_131)
+am__objects_137 = lib539-first.$(OBJEXT)
+am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_137)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_132 = lib540-first.$(OBJEXT)
-am__objects_133 = lib540-testutil.$(OBJEXT)
-am__objects_134 = ../../lib/lib540-warnless.$(OBJEXT)
-am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_132) \
- $(am__objects_133) $(am__objects_134)
+am__objects_138 = lib540-first.$(OBJEXT)
+am__objects_139 = lib540-testutil.$(OBJEXT)
+am__objects_140 = ../../lib/lib540-warnless.$(OBJEXT)
+am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_138) \
+ $(am__objects_139) $(am__objects_140)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_135 = lib541-first.$(OBJEXT)
-am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_135)
+am__objects_141 = lib541-first.$(OBJEXT)
+am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_141)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_136 = lib542-first.$(OBJEXT)
-am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_136)
+am__objects_142 = lib542-first.$(OBJEXT)
+am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_142)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_137 = lib543-first.$(OBJEXT)
-am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_137)
+am__objects_143 = lib543-first.$(OBJEXT)
+am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_143)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_138 = lib544-first.$(OBJEXT)
-am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_138)
+am__objects_144 = lib544-first.$(OBJEXT)
+am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_144)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_139 = lib545-first.$(OBJEXT)
-am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_139)
+am__objects_145 = lib545-first.$(OBJEXT)
+am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_145)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_140 = lib547-first.$(OBJEXT)
-am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_140)
+am__objects_146 = lib547-first.$(OBJEXT)
+am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_146)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_141 = lib548-first.$(OBJEXT)
-am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_141)
+am__objects_147 = lib548-first.$(OBJEXT)
+am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_147)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_142 = lib549-first.$(OBJEXT)
-am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_142)
+am__objects_148 = lib549-first.$(OBJEXT)
+am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_148)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_143 = lib552-first.$(OBJEXT)
-am__objects_144 = ../../lib/lib552-warnless.$(OBJEXT)
-am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_143) \
- $(am__objects_144)
+am__objects_149 = lib552-first.$(OBJEXT)
+am__objects_150 = ../../lib/lib552-warnless.$(OBJEXT)
+am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_149) \
+ $(am__objects_150)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_145 = lib553-first.$(OBJEXT)
-am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_145)
+am__objects_151 = lib553-first.$(OBJEXT)
+am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_151)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_146 = lib554-first.$(OBJEXT)
-am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_146)
+am__objects_152 = lib554-first.$(OBJEXT)
+am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_152)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_147 = lib555-first.$(OBJEXT)
-am__objects_148 = lib555-testutil.$(OBJEXT)
-am__objects_149 = ../../lib/lib555-warnless.$(OBJEXT)
-am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_147) \
- $(am__objects_148) $(am__objects_149)
+am__objects_153 = lib555-first.$(OBJEXT)
+am__objects_154 = lib555-testutil.$(OBJEXT)
+am__objects_155 = ../../lib/lib555-warnless.$(OBJEXT)
+am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_153) \
+ $(am__objects_154) $(am__objects_155)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_150 = lib556-first.$(OBJEXT)
-am__objects_151 = ../../lib/lib556-warnless.$(OBJEXT)
-am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_150) \
- $(am__objects_151)
+am__objects_156 = lib556-first.$(OBJEXT)
+am__objects_157 = ../../lib/lib556-warnless.$(OBJEXT)
+am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_156) \
+ $(am__objects_157)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_152 = lib557-first.$(OBJEXT)
-am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_152)
+am__objects_158 = lib557-first.$(OBJEXT)
+am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_158)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_153 = lib558-first.$(OBJEXT)
-am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_153)
+am__objects_159 = lib558-first.$(OBJEXT)
+am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_159)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_154 = lib560-first.$(OBJEXT)
-am__objects_155 = lib560-testutil.$(OBJEXT)
-am__objects_156 = ../../lib/lib560-warnless.$(OBJEXT)
-am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_154) \
- $(am__objects_155) $(am__objects_156)
+am__objects_160 = lib560-first.$(OBJEXT)
+am__objects_161 = lib560-testutil.$(OBJEXT)
+am__objects_162 = ../../lib/lib560-warnless.$(OBJEXT)
+am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_160) \
+ $(am__objects_161) $(am__objects_162)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_157 = lib562-first.$(OBJEXT)
-am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_157)
+am__objects_163 = lib562-first.$(OBJEXT)
+am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_163)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_158 = lib564-first.$(OBJEXT)
-am__objects_159 = lib564-testutil.$(OBJEXT)
-am__objects_160 = ../../lib/lib564-warnless.$(OBJEXT)
-am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_158) \
- $(am__objects_159) $(am__objects_160)
+am__objects_164 = lib564-first.$(OBJEXT)
+am__objects_165 = lib564-testutil.$(OBJEXT)
+am__objects_166 = ../../lib/lib564-warnless.$(OBJEXT)
+am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_164) \
+ $(am__objects_165) $(am__objects_166)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_161 = lib565-first.$(OBJEXT)
-am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_161)
+am__objects_167 = lib565-first.$(OBJEXT)
+am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_167)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_162 = lib566-first.$(OBJEXT)
-am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_162)
+am__objects_168 = lib566-first.$(OBJEXT)
+am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_168)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_163 = lib567-first.$(OBJEXT)
-am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_163)
+am__objects_169 = lib567-first.$(OBJEXT)
+am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_169)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_164 = lib568-first.$(OBJEXT)
-am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_164)
+am__objects_170 = lib568-first.$(OBJEXT)
+am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_170)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_165 = lib569-first.$(OBJEXT)
-am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_165)
+am__objects_171 = lib569-first.$(OBJEXT)
+am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_171)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_166 = lib570-first.$(OBJEXT)
-am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_166)
+am__objects_172 = lib570-first.$(OBJEXT)
+am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_172)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_167 = lib571-first.$(OBJEXT)
-am__objects_168 = ../../lib/lib571-warnless.$(OBJEXT)
-am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_167) \
- $(am__objects_168)
+am__objects_173 = lib571-first.$(OBJEXT)
+am__objects_174 = ../../lib/lib571-warnless.$(OBJEXT)
+am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_173) \
+ $(am__objects_174)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_169 = lib572-first.$(OBJEXT)
-am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_169)
+am__objects_175 = lib572-first.$(OBJEXT)
+am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_175)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_170 = lib573-first.$(OBJEXT)
-am__objects_171 = lib573-testutil.$(OBJEXT)
-am__objects_172 = ../../lib/lib573-warnless.$(OBJEXT)
-am__objects_173 = lib573-testtrace.$(OBJEXT)
-am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_170) \
- $(am__objects_171) $(am__objects_172) $(am__objects_173)
+am__objects_176 = lib573-first.$(OBJEXT)
+am__objects_177 = lib573-testutil.$(OBJEXT)
+am__objects_178 = ../../lib/lib573-warnless.$(OBJEXT)
+am__objects_179 = lib573-testtrace.$(OBJEXT)
+am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_176) \
+ $(am__objects_177) $(am__objects_178) $(am__objects_179)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_174 = lib574-first.$(OBJEXT)
-am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_174)
+am__objects_180 = lib574-first.$(OBJEXT)
+am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_180)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_175 = lib575-first.$(OBJEXT)
-am__objects_176 = lib575-testutil.$(OBJEXT)
-am__objects_177 = ../../lib/lib575-warnless.$(OBJEXT)
-am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_175) \
- $(am__objects_176) $(am__objects_177)
+am__objects_181 = lib575-first.$(OBJEXT)
+am__objects_182 = lib575-testutil.$(OBJEXT)
+am__objects_183 = ../../lib/lib575-warnless.$(OBJEXT)
+am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_181) \
+ $(am__objects_182) $(am__objects_183)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_178 = lib576-first.$(OBJEXT)
-am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_178)
+am__objects_184 = lib576-first.$(OBJEXT)
+am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_184)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_179 = lib578-first.$(OBJEXT)
-am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_179)
+am__objects_185 = lib578-first.$(OBJEXT)
+am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_185)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_180 = lib579-first.$(OBJEXT)
-am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_180)
+am__objects_186 = lib579-first.$(OBJEXT)
+am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_186)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_181 = lib582-first.$(OBJEXT)
-am__objects_182 = lib582-testutil.$(OBJEXT)
-am__objects_183 = ../../lib/lib582-warnless.$(OBJEXT)
-am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_181) \
- $(am__objects_182) $(am__objects_183)
+am__objects_187 = lib582-first.$(OBJEXT)
+am__objects_188 = lib582-testutil.$(OBJEXT)
+am__objects_189 = ../../lib/lib582-warnless.$(OBJEXT)
+am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_187) \
+ $(am__objects_188) $(am__objects_189)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_184 = lib583-first.$(OBJEXT)
-am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_184)
+am__objects_190 = lib583-first.$(OBJEXT)
+am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_190)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_185 = lib585-first.$(OBJEXT)
-am__objects_186 = lib585-testutil.$(OBJEXT)
-am__objects_187 = lib585-testtrace.$(OBJEXT)
-am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_185) \
- $(am__objects_186) $(am__objects_187)
+am__objects_191 = lib585-first.$(OBJEXT)
+am__objects_192 = lib585-testutil.$(OBJEXT)
+am__objects_193 = lib585-testtrace.$(OBJEXT)
+am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_191) \
+ $(am__objects_192) $(am__objects_193)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_188 = lib586-first.$(OBJEXT)
-am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_188)
+am__objects_194 = lib586-first.$(OBJEXT)
+am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_194)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_189 = lib587-first.$(OBJEXT)
-am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_189)
+am__objects_195 = lib587-first.$(OBJEXT)
+am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_195)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_190 = lib590-first.$(OBJEXT)
-am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_190)
+am__objects_196 = lib590-first.$(OBJEXT)
+am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_196)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_191 = lib591-first.$(OBJEXT)
-am__objects_192 = lib591-testutil.$(OBJEXT)
-am__objects_193 = ../../lib/lib591-warnless.$(OBJEXT)
-am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_191) \
- $(am__objects_192) $(am__objects_193)
+am__objects_197 = lib591-first.$(OBJEXT)
+am__objects_198 = lib591-testutil.$(OBJEXT)
+am__objects_199 = ../../lib/lib591-warnless.$(OBJEXT)
+am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_197) \
+ $(am__objects_198) $(am__objects_199)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_194 = lib597-first.$(OBJEXT)
-am__objects_195 = lib597-testutil.$(OBJEXT)
-am__objects_196 = ../../lib/lib597-warnless.$(OBJEXT)
-am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_194) \
- $(am__objects_195) $(am__objects_196)
+am__objects_200 = lib597-first.$(OBJEXT)
+am__objects_201 = lib597-testutil.$(OBJEXT)
+am__objects_202 = ../../lib/lib597-warnless.$(OBJEXT)
+am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_200) \
+ $(am__objects_201) $(am__objects_202)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_197 = lib598-first.$(OBJEXT)
-am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_197)
+am__objects_203 = lib598-first.$(OBJEXT)
+am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_203)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_198 = lib599-first.$(OBJEXT)
-am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_198)
+am__objects_204 = lib599-first.$(OBJEXT)
+am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_204)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_199 = libauthretry-first.$(OBJEXT)
+am__objects_205 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
- $(am__objects_199)
+ $(am__objects_205)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_200 = libntlmconnect-first.$(OBJEXT)
-am__objects_201 = libntlmconnect-testutil.$(OBJEXT)
-am__objects_202 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
+am__objects_206 = libntlmconnect-first.$(OBJEXT)
+am__objects_207 = libntlmconnect-testutil.$(OBJEXT)
+am__objects_208 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
- $(am__objects_200) $(am__objects_201) $(am__objects_202)
+ $(am__objects_206) $(am__objects_207) $(am__objects_208)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
@@ -831,33 +854,34 @@ SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
$(lib1512_SOURCES) $(lib1513_SOURCES) $(lib1514_SOURCES) \
$(lib1515_SOURCES) $(lib1520_SOURCES) $(lib1525_SOURCES) \
$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
- $(lib1529_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
- $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
- $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
- $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
- $(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
- $(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
- $(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
- $(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
- $(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
- $(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
- $(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
- $(lib533_SOURCES) $(lib536_SOURCES) $(lib537_SOURCES) \
- $(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
- $(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
- $(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
- $(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
- $(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
- $(lib557_SOURCES) $(lib558_SOURCES) $(lib560_SOURCES) \
- $(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
- $(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
- $(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
- $(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
- $(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
- $(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
- $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
- $(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
- $(lib598_SOURCES) $(lib599_SOURCES) $(libauthretry_SOURCES) \
+ $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+ $(lib1900_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
+ $(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+ $(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+ $(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+ $(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+ $(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+ $(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+ $(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+ $(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+ $(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+ $(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+ $(lib536_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
+ $(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
+ $(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
+ $(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
+ $(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
+ $(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
+ $(lib558_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+ $(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+ $(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+ $(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+ $(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+ $(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+ $(lib582_SOURCES) $(lib583_SOURCES) $(lib585_SOURCES) \
+ $(lib586_SOURCES) $(lib587_SOURCES) $(lib590_SOURCES) \
+ $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
+ $(lib599_SOURCES) $(libauthretry_SOURCES) \
$(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
$(lib1500_SOURCES) $(lib1501_SOURCES) $(lib1502_SOURCES) \
@@ -867,33 +891,34 @@ DIST_SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
$(lib1512_SOURCES) $(lib1513_SOURCES) $(lib1514_SOURCES) \
$(lib1515_SOURCES) $(lib1520_SOURCES) $(lib1525_SOURCES) \
$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
- $(lib1529_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
- $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
- $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
- $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
- $(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
- $(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
- $(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
- $(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
- $(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
- $(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
- $(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
- $(lib533_SOURCES) $(lib536_SOURCES) $(lib537_SOURCES) \
- $(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
- $(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
- $(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
- $(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
- $(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
- $(lib557_SOURCES) $(lib558_SOURCES) $(lib560_SOURCES) \
- $(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
- $(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
- $(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
- $(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
- $(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
- $(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
- $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
- $(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
- $(lib598_SOURCES) $(lib599_SOURCES) $(libauthretry_SOURCES) \
+ $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+ $(lib1900_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
+ $(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+ $(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+ $(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+ $(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+ $(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+ $(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+ $(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+ $(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+ $(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+ $(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+ $(lib536_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
+ $(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
+ $(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
+ $(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
+ $(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
+ $(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
+ $(lib558_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+ $(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+ $(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+ $(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+ $(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+ $(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+ $(lib582_SOURCES) $(lib583_SOURCES) $(lib585_SOURCES) \
+ $(lib586_SOURCES) $(lib587_SOURCES) $(lib590_SOURCES) \
+ $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
+ $(lib599_SOURCES) $(libauthretry_SOURCES) \
$(libntlmconnect_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
@@ -919,6 +944,8 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -977,7 +1004,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -1032,6 +1059,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -1048,7 +1076,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -1157,11 +1184,11 @@ AUTOMAKE_OPTIONS = foreign nostdinc
@USE_EMBEDDED_ARES_TRUE@ -I$(top_builddir)/ares \
@USE_EMBEDDED_ARES_TRUE@ -I$(top_srcdir)/ares $(am__append_1)
EXTRA_DIST = test75.pl test307.pl test610.pl test613.pl test1013.pl \
-test1022.pl Makefile.inc notexists.pl
+test1022.pl Makefile.inc notexists.pl CMakeLists.txt
-@USE_EXPLICIT_LIB_DEPS_FALSE@SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@
+@USE_EXPLICIT_LIB_DEPS_FALSE@SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@ @NSS_LIBS@
@USE_EXPLICIT_LIB_DEPS_TRUE@SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
-@USE_EXPLICIT_LIB_DEPS_FALSE@TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@
+@USE_EXPLICIT_LIB_DEPS_FALSE@TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@ @NSS_LIBS@
@USE_EXPLICIT_LIB_DEPS_TRUE@TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
# Dependencies (may need to be overriden)
@@ -1430,6 +1457,12 @@ lib1528_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1528
lib1529_SOURCES = lib1529.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1529_LDADD = $(TESTUTIL_LIBS)
lib1529_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1529
+lib1530_SOURCES = lib1530.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1530_LDADD = $(TESTUTIL_LIBS)
+lib1530_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1530
+lib1531_SOURCES = lib1531.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1531_LDADD = $(TESTUTIL_LIBS)
+lib1531_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1531
lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1900_LDADD = $(TESTUTIL_LIBS)
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
@@ -1472,7 +1505,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/libtest/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/libtest/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -1481,7 +1513,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1654,6 +1686,18 @@ lib1528$(EXEEXT): $(lib1528_OBJECTS) $(lib1528_DEPENDENCIES) $(EXTRA_lib1528_DEP
lib1529$(EXEEXT): $(lib1529_OBJECTS) $(lib1529_DEPENDENCIES) $(EXTRA_lib1529_DEPENDENCIES)
@rm -f lib1529$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1529_OBJECTS) $(lib1529_LDADD) $(LIBS)
+../../lib/lib1530-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1530$(EXEEXT): $(lib1530_OBJECTS) $(lib1530_DEPENDENCIES) $(EXTRA_lib1530_DEPENDENCIES)
+ @rm -f lib1530$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1530_OBJECTS) $(lib1530_LDADD) $(LIBS)
+../../lib/lib1531-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1531$(EXEEXT): $(lib1531_OBJECTS) $(lib1531_DEPENDENCIES) $(EXTRA_lib1531_DEPENDENCIES)
+ @rm -f lib1531$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1531_OBJECTS) $(lib1531_LDADD) $(LIBS)
../../lib/lib1900-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -2065,6 +2109,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-warnless.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-warnless.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1530-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1531-warnless.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@
@@ -2160,6 +2206,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-first.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-lib1529.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1530-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1530-lib1530.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1530-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1531-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1531-lib1531.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1531-testutil.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@
@@ -3602,6 +3654,118 @@ lib1529-testutil.obj: testutil.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+lib1530-lib1530.o: lib1530.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-lib1530.o -MD -MP -MF $(DEPDIR)/lib1530-lib1530.Tpo -c -o lib1530-lib1530.o `test -f 'lib1530.c' || echo '$(srcdir)/'`lib1530.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-lib1530.Tpo $(DEPDIR)/lib1530-lib1530.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1530.c' object='lib1530-lib1530.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-lib1530.o `test -f 'lib1530.c' || echo '$(srcdir)/'`lib1530.c
+
+lib1530-lib1530.obj: lib1530.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-lib1530.obj -MD -MP -MF $(DEPDIR)/lib1530-lib1530.Tpo -c -o lib1530-lib1530.obj `if test -f 'lib1530.c'; then $(CYGPATH_W) 'lib1530.c'; else $(CYGPATH_W) '$(srcdir)/lib1530.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-lib1530.Tpo $(DEPDIR)/lib1530-lib1530.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1530.c' object='lib1530-lib1530.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-lib1530.obj `if test -f 'lib1530.c'; then $(CYGPATH_W) 'lib1530.c'; else $(CYGPATH_W) '$(srcdir)/lib1530.c'; fi`
+
+lib1530-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-first.o -MD -MP -MF $(DEPDIR)/lib1530-first.Tpo -c -o lib1530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-first.Tpo $(DEPDIR)/lib1530-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1530-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1530-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-first.obj -MD -MP -MF $(DEPDIR)/lib1530-first.Tpo -c -o lib1530-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-first.Tpo $(DEPDIR)/lib1530-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1530-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1530-testutil.o: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-testutil.o -MD -MP -MF $(DEPDIR)/lib1530-testutil.Tpo -c -o lib1530-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-testutil.Tpo $(DEPDIR)/lib1530-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1530-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1530-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-testutil.obj -MD -MP -MF $(DEPDIR)/lib1530-testutil.Tpo -c -o lib1530-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-testutil.Tpo $(DEPDIR)/lib1530-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1530-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1530-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-warnless.Tpo -c -o ../../lib/lib1530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-warnless.Tpo ../../lib/$(DEPDIR)/lib1530-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1530-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1530-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-warnless.Tpo -c -o ../../lib/lib1530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-warnless.Tpo ../../lib/$(DEPDIR)/lib1530-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1530-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1531-lib1531.o: lib1531.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-lib1531.o -MD -MP -MF $(DEPDIR)/lib1531-lib1531.Tpo -c -o lib1531-lib1531.o `test -f 'lib1531.c' || echo '$(srcdir)/'`lib1531.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-lib1531.Tpo $(DEPDIR)/lib1531-lib1531.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1531.c' object='lib1531-lib1531.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-lib1531.o `test -f 'lib1531.c' || echo '$(srcdir)/'`lib1531.c
+
+lib1531-lib1531.obj: lib1531.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-lib1531.obj -MD -MP -MF $(DEPDIR)/lib1531-lib1531.Tpo -c -o lib1531-lib1531.obj `if test -f 'lib1531.c'; then $(CYGPATH_W) 'lib1531.c'; else $(CYGPATH_W) '$(srcdir)/lib1531.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-lib1531.Tpo $(DEPDIR)/lib1531-lib1531.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1531.c' object='lib1531-lib1531.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-lib1531.obj `if test -f 'lib1531.c'; then $(CYGPATH_W) 'lib1531.c'; else $(CYGPATH_W) '$(srcdir)/lib1531.c'; fi`
+
+lib1531-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-first.o -MD -MP -MF $(DEPDIR)/lib1531-first.Tpo -c -o lib1531-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-first.Tpo $(DEPDIR)/lib1531-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1531-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1531-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-first.obj -MD -MP -MF $(DEPDIR)/lib1531-first.Tpo -c -o lib1531-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-first.Tpo $(DEPDIR)/lib1531-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1531-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1531-testutil.o: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-testutil.o -MD -MP -MF $(DEPDIR)/lib1531-testutil.Tpo -c -o lib1531-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-testutil.Tpo $(DEPDIR)/lib1531-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1531-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1531-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-testutil.obj -MD -MP -MF $(DEPDIR)/lib1531-testutil.Tpo -c -o lib1531-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-testutil.Tpo $(DEPDIR)/lib1531-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1531-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1531-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-warnless.Tpo -c -o ../../lib/lib1531-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-warnless.Tpo ../../lib/$(DEPDIR)/lib1531-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1531-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1531-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-warnless.Tpo -c -o ../../lib/lib1531-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-warnless.Tpo ../../lib/$(DEPDIR)/lib1531-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1531-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
lib1900-lib1900.o: lib1900.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-lib1900.o -MD -MP -MF $(DEPDIR)/lib1900-lib1900.Tpo -c -o lib1900-lib1900.o `test -f 'lib1900.c' || echo '$(srcdir)/'`lib1900.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1900-lib1900.Tpo $(DEPDIR)/lib1900-lib1900.Po
@@ -6893,6 +7057,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index 3508b8047..27d5ee98c 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -23,7 +23,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515 \
lib1520 \
- lib1525 lib1526 lib1527 lib1528 lib1529 \
+ lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 \
lib1900 \
lib2033
@@ -380,6 +380,14 @@ lib1529_SOURCES = lib1529.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1529_LDADD = $(TESTUTIL_LIBS)
lib1529_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1529
+lib1530_SOURCES = lib1530.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1530_LDADD = $(TESTUTIL_LIBS)
+lib1530_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1530
+
+lib1531_SOURCES = lib1531.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1531_LDADD = $(TESTUTIL_LIBS)
+lib1531_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1531
+
lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1900_LDADD = $(TESTUTIL_LIBS)
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/libtest/first.c b/tests/libtest/first.c
index 5851faf62..d693173f1 100644
--- a/tests/libtest/first.c
+++ b/tests/libtest/first.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -33,6 +33,10 @@
# include <fcntl.h> /* for setmode() */
#endif
+#ifdef USE_NSS
+#include <nspr.h>
+#endif
+
#ifdef CURLDEBUG
# define MEMDEBUG_NODEFINES
# include "memdebug.h"
@@ -111,9 +115,24 @@ static void memory_tracking_init(void)
# define memory_tracking_init() Curl_nop_stmt
#endif
+/* returns a hexdump in a static memory area */
+char *hexdump(unsigned char *buffer, size_t len)
+{
+ static char dump[200*3+1];
+ char *p = dump;
+ size_t i;
+ if(len > 200)
+ return NULL;
+ for(i=0; i<len; i++, p += 3)
+ snprintf(p, 4, "%02x ", buffer[i]);
+ return dump;
+}
+
+
int main(int argc, char **argv)
{
char *URL;
+ int result;
#ifdef O_BINARY
# ifdef __HIGHC__
@@ -152,5 +171,13 @@ int main(int argc, char **argv)
fprintf(stderr, "URL: %s\n", URL);
- return test(URL);
+ result = test(URL);
+
+#ifdef USE_NSS
+ if(PR_Initialized())
+ /* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
+ PR_Cleanup();
+#endif
+
+ return result;
}
diff --git a/tests/libtest/lib1515.c b/tests/libtest/lib1515.c
index 4ac9fcfdc..d5c8f7d08 100644
--- a/tests/libtest/lib1515.c
+++ b/tests/libtest/lib1515.c
@@ -39,9 +39,6 @@
#define sleep(s) Sleep(s * 1000)
#endif
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
static int debug_callback(CURL *curl, curl_infotype info, char *msg, size_t len, void *ptr)
{
(void)curl;
diff --git a/tests/libtest/lib1527.c b/tests/libtest/lib1527.c
index 280c947e3..1122d8ec0 100644
--- a/tests/libtest/lib1527.c
+++ b/tests/libtest/lib1527.c
@@ -83,6 +83,7 @@ int test(char *URL)
test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
test_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
test_setopt(curl, CURLOPT_INFILESIZE, strlen(data));
+ test_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_UNIFIED);
res = curl_easy_perform(curl);
diff --git a/tests/libtest/lib1530.c b/tests/libtest/lib1530.c
new file mode 100644
index 000000000..76231c97f
--- /dev/null
+++ b/tests/libtest/lib1530.c
@@ -0,0 +1,67 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static curl_socket_t opensocket(void *clientp,
+ curlsocktype purpose,
+ struct curl_sockaddr *address)
+{
+ (void)purpose;
+ (void)address;
+ (void)clientp;
+ fprintf(stderr, "opensocket() returns CURL_SOCKET_BAD\n");
+ return CURL_SOCKET_BAD;
+}
+
+int test(char *URL)
+{
+ CURL *curl = NULL;
+ CURLcode res = CURLE_FAILED_INIT;
+ (void)URL;
+
+ if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+ fprintf(stderr, "curl_global_init() failed\n");
+ return TEST_ERR_MAJOR_BAD;
+ }
+
+ if((curl = curl_easy_init()) == NULL) {
+ fprintf(stderr, "curl_easy_init() failed\n");
+ curl_global_cleanup();
+ return TEST_ERR_MAJOR_BAD;
+ }
+
+ test_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
+ test_setopt(curl, CURLOPT_VERBOSE, 1L);
+ test_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket);
+
+ res = curl_easy_perform(curl);
+
+test_cleanup:
+
+ curl_easy_cleanup(curl);
+ curl_global_cleanup();
+
+ return (int)res;
+}
diff --git a/tests/libtest/lib1531.c b/tests/libtest/lib1531.c
new file mode 100644
index 000000000..5df34814b
--- /dev/null
+++ b/tests/libtest/lib1531.c
@@ -0,0 +1,144 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+#define TEST_HANG_TIMEOUT 60 * 1000
+
+char const testData[] = ".abc\0xyz";
+off_t const testDataSize = sizeof(testData) - 1;
+
+int test(char *URL)
+{
+ CURL *easy;
+ CURLM *multi_handle;
+ int still_running; /* keep number of running handles */
+ CURLMsg *msg; /* for picking up messages with the transfer status */
+ int msgs_left; /* how many messages are left */
+
+ /* Allocate one CURL handle per transfer */
+ easy = curl_easy_init();
+
+ /* init a multi stack */
+ multi_handle = curl_multi_init();
+
+ /* add the individual transfer */
+ curl_multi_add_handle(multi_handle, easy);
+
+ /* set the options (I left out a few, you'll get the point anyway) */
+ curl_easy_setopt(easy, CURLOPT_URL, URL);
+ curl_easy_setopt(easy, CURLOPT_POSTFIELDSIZE_LARGE, testDataSize);
+ curl_easy_setopt(easy, CURLOPT_POSTFIELDS, testData);
+
+ /* we start some action by calling perform right away */
+ curl_multi_perform(multi_handle, &still_running);
+
+ do {
+ struct timeval timeout;
+ int rc; /* select() return code */
+ CURLMcode mc; /* curl_multi_fdset() return code */
+
+ fd_set fdread;
+ fd_set fdwrite;
+ fd_set fdexcep;
+ int maxfd = -1;
+
+ long curl_timeo = -1;
+
+ FD_ZERO(&fdread);
+ FD_ZERO(&fdwrite);
+ FD_ZERO(&fdexcep);
+
+ /* set a suitable timeout to play around with */
+ timeout.tv_sec = 1;
+ timeout.tv_usec = 0;
+
+ curl_multi_timeout(multi_handle, &curl_timeo);
+ if(curl_timeo >= 0) {
+ timeout.tv_sec = curl_timeo / 1000;
+ if(timeout.tv_sec > 1)
+ timeout.tv_sec = 1;
+ else
+ timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ }
+
+ /* get file descriptors from the transfers */
+ mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+ if(mc != CURLM_OK)
+ {
+ fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ break;
+ }
+
+ /* On success the value of maxfd is guaranteed to be >= -1. We call
+ select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+ no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+ to sleep 100ms, which is the minimum suggested value in the
+ curl_multi_fdset() doc. */
+
+ if(maxfd == -1) {
+#ifdef _WIN32
+ Sleep(100);
+ rc = 0;
+#else
+ /* Portable sleep for platforms other than Windows. */
+ struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+ rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+ }
+ else {
+ /* Note that on some platforms 'timeout' may be modified by select().
+ If you need access to the original value save a copy beforehand. */
+ rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+ }
+
+ switch(rc) {
+ case -1:
+ /* select error */
+ break;
+ case 0: /* timeout */
+ default: /* action */
+ curl_multi_perform(multi_handle, &still_running);
+ break;
+ }
+ } while(still_running);
+
+ /* See how the transfers went */
+ while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
+ if (msg->msg == CURLMSG_DONE) {
+ printf("HTTP transfer completed with status %d\n", msg->data.result);
+ break;
+ }
+ }
+
+ curl_multi_cleanup(multi_handle);
+
+ /* Free the CURL handles */
+ curl_easy_cleanup(easy);
+
+ return 0;
+}
+
diff --git a/tests/libtest/lib506.c b/tests/libtest/lib506.c
index 4dad0d98a..6dcc36d3c 100644
--- a/tests/libtest/lib506.c
+++ b/tests/libtest/lib506.c
@@ -20,9 +20,6 @@
*
***************************************************************************/
#include "test.h"
-
-#include <curl/mprintf.h>
-
#include "memdebug.h"
static const char *HOSTHEADER = "Host: www.host.foo.com";
diff --git a/tests/libtest/lib530.c b/tests/libtest/lib530.c
index 06a846439..e60d11729 100644
--- a/tests/libtest/lib530.c
+++ b/tests/libtest/lib530.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -83,13 +83,15 @@ int test(char *URL)
abort_on_test_timeout();
- if(!running && handles_added >= NUM_HANDLES)
- break; /* done */
+ if(!running) {
+ if(handles_added >= NUM_HANDLES)
+ break; /* done */
- /* Add the rest of the handles now that the first handle has sent the
- request. */
- while(handles_added < NUM_HANDLES)
- multi_add_handle(m, curl[handles_added++]);
+ /* Add the rest of the handles now that the first handle has completed
+ its request. */
+ while(handles_added < NUM_HANDLES)
+ multi_add_handle(m, curl[handles_added++]);
+ }
FD_ZERO(&rd);
FD_ZERO(&wr);
diff --git a/tests/libtest/lib539.c b/tests/libtest/lib539.c
index 923893fb2..053d29806 100644
--- a/tests/libtest/lib539.c
+++ b/tests/libtest/lib539.c
@@ -83,8 +83,7 @@ int test(char *URL)
test_cleanup:
curl_slist_free_all(slist);
- if(newURL)
- free(newURL);
+ free(newURL);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib557.c b/tests/libtest/lib557.c
index 7e5f9e94f..b88285217 100644
--- a/tests/libtest/lib557.c
+++ b/tests/libtest/lib557.c
@@ -26,9 +26,6 @@
*/
#include "test.h"
-
-#include <curl/mprintf.h>
-
#include "memdebug.h"
diff --git a/tests/libtest/lib568.c b/tests/libtest/lib568.c
index 4b15821f2..b6f5ab7ca 100644
--- a/tests/libtest/lib568.c
+++ b/tests/libtest/lib568.c
@@ -28,8 +28,6 @@
#include <fcntl.h>
#endif
-#include <curl/mprintf.h>
-
#include "memdebug.h"
/* build request url */
@@ -161,8 +159,7 @@ test_cleanup:
if(sdpf)
fclose(sdpf);
- if(stream_uri)
- free(stream_uri);
+ free(stream_uri);
if(custom_headers)
curl_slist_free_all(custom_headers);
diff --git a/tests/libtest/lib569.c b/tests/libtest/lib569.c
index a434d7459..bc4887276 100644
--- a/tests/libtest/lib569.c
+++ b/tests/libtest/lib569.c
@@ -20,9 +20,6 @@
*
***************************************************************************/
#include "test.h"
-
-#include <curl/mprintf.h>
-
#include "memdebug.h"
/* build request url */
@@ -118,9 +115,7 @@ test_cleanup:
if(idfile)
fclose(idfile);
- if(stream_uri)
- free(stream_uri);
-
+ free(stream_uri);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib570.c b/tests/libtest/lib570.c
index fe10de54a..178f58f96 100644
--- a/tests/libtest/lib570.c
+++ b/tests/libtest/lib570.c
@@ -20,9 +20,6 @@
*
***************************************************************************/
#include "test.h"
-
-#include <curl/mprintf.h>
-
#include "memdebug.h"
/* build request url */
@@ -105,9 +102,7 @@ int test(char *URL)
}
test_cleanup:
-
- if(stream_uri)
- free(stream_uri);
+ free(stream_uri);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib571.c b/tests/libtest/lib571.c
index 78c1c95a3..d8dad396b 100644
--- a/tests/libtest/lib571.c
+++ b/tests/libtest/lib571.c
@@ -37,8 +37,6 @@
# include <fcntl.h>
#endif
-#include <curl/mprintf.h>
-
#include "warnless.h"
#include "memdebug.h"
@@ -197,9 +195,7 @@ int test(char *URL)
}
test_cleanup:
-
- if(stream_uri)
- free(stream_uri);
+ free(stream_uri);
if(protofile)
fclose(protofile);
diff --git a/tests/libtest/lib572.c b/tests/libtest/lib572.c
index 3df4d036a..fd547b8b3 100644
--- a/tests/libtest/lib572.c
+++ b/tests/libtest/lib572.c
@@ -28,8 +28,6 @@
#include <fcntl.h>
#endif
-#include <curl/mprintf.h>
-
#include "memdebug.h"
/* build request url */
@@ -167,8 +165,7 @@ test_cleanup:
if(paramsf)
fclose(paramsf);
- if(stream_uri)
- free(stream_uri);
+ free(stream_uri);
if(custom_headers)
curl_slist_free_all(custom_headers);
diff --git a/tests/libtest/lib582.c b/tests/libtest/lib582.c
index 952efb4ed..4c3ea6f60 100644
--- a/tests/libtest/lib582.c
+++ b/tests/libtest/lib582.c
@@ -357,10 +357,8 @@ test_cleanup:
fclose(hd_src);
/* free local memory */
- if(sockets.read.sockets)
- free(sockets.read.sockets);
- if(sockets.write.sockets)
- free(sockets.write.sockets);
+ free(sockets.read.sockets);
+ free(sockets.write.sockets);
return res;
}
diff --git a/tests/libtest/lib586.c b/tests/libtest/lib586.c
index 4ee0ad31c..a1412b5f3 100644
--- a/tests/libtest/lib586.c
+++ b/tests/libtest/lib586.c
@@ -20,9 +20,6 @@
*
***************************************************************************/
#include "test.h"
-
-#include <curl/mprintf.h>
-
#include "memdebug.h"
#define THREADS 2
diff --git a/tests/libtest/test.h b/tests/libtest/test.h
index 4186c4f26..468eda98a 100644
--- a/tests/libtest/test.h
+++ b/tests/libtest/test.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -40,6 +40,10 @@
# include "select.h"
#endif
+#define _MPRINTF_REPLACE
+#include <curl/mprintf.h>
+
+
#define test_setopt(A,B,C) \
if((res = curl_easy_setopt((A),(B),(C))) != CURLE_OK) goto test_cleanup
@@ -63,6 +67,8 @@ extern void wait_ms(int ms); /* wait this many milliseconds */
extern int test(char *URL); /* the actual test function provided by each
individual libXXX.c file */
+extern char *hexdump(unsigned char *buffer, size_t len);
+
#ifdef UNITTESTS
extern int unitfail;
#endif
diff --git a/tests/libtest/testtrace.c b/tests/libtest/testtrace.c
index c977d2105..8d9c6b814 100644
--- a/tests/libtest/testtrace.c
+++ b/tests/libtest/testtrace.c
@@ -21,10 +21,6 @@
***************************************************************************/
#include "test.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
#include "testutil.h"
#include "testtrace.h"
#include "memdebug.h"
@@ -34,7 +30,7 @@ struct libtest_trace_cfg libtest_debug_config;
static time_t epoch_offset; /* for test time tracing */
static int known_offset; /* for test time tracing */
-static
+static
void libtest_debug_dump(const char *timebuf, const char *text, FILE *stream,
const unsigned char *ptr, size_t size, int nohex)
{
diff --git a/tests/memanalyze.pl b/tests/memanalyze.pl
index 54117f8ea..701cf161c 100755
--- a/tests/memanalyze.pl
+++ b/tests/memanalyze.pl
@@ -108,9 +108,12 @@ while(<FILE>) {
$linenum = $2;
$function = $3;
- if($function =~ /free\(0x([0-9a-f]*)/) {
- $addr = $1;
- if(!exists $sizeataddr{$addr}) {
+ if($function =~ /free\((\(nil\)|0x([0-9a-f]*))/) {
+ $addr = $2;
+ if($1 eq "(nil)") {
+ ; # do nothing when free(NULL)
+ }
+ elsif(!exists $sizeataddr{$addr}) {
print "FREE ERROR: No memory allocated: $line\n";
}
elsif(-1 == $sizeataddr{$addr}) {
diff --git a/tests/runtests.html b/tests/runtests.html
index 6a02b9294..7dcde484f 100644
--- a/tests/runtests.html
+++ b/tests/runtests.html
@@ -4,15 +4,20 @@
<title>runtests.pl man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
diff --git a/tests/runtests.pdf b/tests/runtests.pdf
index 994123a52..6eaaf0a63 100644
--- a/tests/runtests.pdf
+++ b/tests/runtests.pdf
Binary files differ
diff --git a/tests/runtests.pl b/tests/runtests.pl
index 846687cb3..3ff318719 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -226,7 +226,7 @@ my $has_cares; # set if built with c-ares
my $has_threadedres;# set if built with threaded resolver
# this version is decided by the particular nghttp2 library that is being used
-my $h2cver = "h2c-14";
+my $h2cver = "h2c";
my $has_openssl; # built with a lib using an OpenSSL-like API
my $has_gnutls; # built with GnuTLS
@@ -235,7 +235,9 @@ my $has_yassl; # built with yassl
my $has_polarssl; # built with polarssl
my $has_axtls; # built with axTLS
my $has_winssl; # built with WinSSL (Secure Channel aka Schannel)
-my $has_darwinssl; # build with DarwinSSL (Secure Transport)
+my $has_darwinssl; # built with DarwinSSL (Secure Transport)
+my $has_boringssl; # built with BoringSSL
+my $has_libressl; # built with libressl
my $has_sslpinning; # built with a TLS backend that supports pinning
@@ -601,7 +603,7 @@ sub torture {
my $ret = 0;
if($gdbthis) {
- runclient($gdbline)
+ runclient($gdbline);
}
else {
$ret = runclient($testcmd);
@@ -2344,10 +2346,12 @@ sub checksystem {
}
elsif ($libcurl =~ /nss/i) {
$has_nss=1;
+ $has_sslpinning=1;
$ssllib="NSS";
}
- elsif ($libcurl =~ /yassl/i) {
+ elsif ($libcurl =~ /(yassl|wolfssl)/i) {
$has_yassl=1;
+ $has_sslpinning=1;
$ssllib="yassl";
}
elsif ($libcurl =~ /polarssl/i) {
@@ -2362,6 +2366,14 @@ sub checksystem {
$has_darwinssl=1;
$ssllib="DarwinSSL";
}
+ elsif ($libcurl =~ /BoringSSL/i) {
+ $has_boringssl=1;
+ $ssllib="BoringSSL";
+ }
+ elsif ($libcurl =~ /libressl/i) {
+ $has_libressl=1;
+ $ssllib="libressl";
+ }
if ($libcurl =~ /ares/i) {
$has_cares=1;
$resolver="c-ares";
@@ -4722,7 +4734,7 @@ while(@ARGV) {
}
elsif ($ARGV[0] eq "-c") {
# use this path to curl instead of default
- $DBGCURL=$CURL=$ARGV[1];
+ $DBGCURL=$CURL="\"$ARGV[1]\"";
shift @ARGV;
}
elsif ($ARGV[0] eq "-vc") {
@@ -4990,19 +5002,29 @@ if(!$listonly) {
# Fetch all disabled tests, if there are any
#
-if(open(D, "<$TESTDIR/DISABLED")) {
- while(<D>) {
- if(/^ *\#/) {
- # allow comments
- next;
- }
- if($_ =~ /(\d+)/) {
- $disabled{$1}=$1; # disable this test number
+sub disabledtests {
+ my ($file) = @_;
+
+ if(open(D, "<$file")) {
+ while(<D>) {
+ if(/^ *\#/) {
+ # allow comments
+ next;
+ }
+ if($_ =~ /(\d+)/) {
+ $disabled{$1}=$1; # disable this test number
+ }
}
+ close(D);
}
- close(D);
}
+# globally disabled tests
+disabledtests("$TESTDIR/DISABLED");
+
+# locally disabled tests, ignored by git etc
+disabledtests("$TESTDIR/DISABLED.local");
+
#######################################################################
# If 'all' tests are requested, find out all test numbers
#
diff --git a/tests/server/CMakeLists.txt b/tests/server/CMakeLists.txt
new file mode 100644
index 000000000..00f5242f9
--- /dev/null
+++ b/tests/server/CMakeLists.txt
@@ -0,0 +1,62 @@
+set(TARGET_LABEL_PREFIX "Test server ")
+
+function(SETUP_EXECUTABLE TEST_NAME) # ARGN are the files in the test
+ add_executable( ${TEST_NAME} ${ARGN} )
+ string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)
+
+ 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/curlbuild.h"
+ )
+ if(USE_ARES)
+ include_directories(${CARES_INCLUDE_DIR})
+ endif()
+
+ target_link_libraries(${TEST_NAME} ${CURL_LIBS})
+
+ # Test servers simply are standalone programs that do not use libcurl
+ # library. For convinience and to ease portability of these servers,
+ # some source code files from the libcurl subdirectory are also used
+ # to build the servers. In order to achieve proper linkage of these
+ # files on Win32 targets it is necessary to build the test servers
+ # with CURL_STATICLIB defined, independently of how libcurl is built.
+ if(NOT CURL_STATICLIB)
+ set_target_properties(${TEST_NAME} PROPERTIES
+ COMPILE_DEFINITIONS CURL_STATICLIB) # ${UPPER_TEST_NAME}
+ endif()
+ set_target_properties(${TEST_NAME} PROPERTIES
+ PROJECT_LABEL "${TARGET_LABEL_PREFIX}${TEST_NAME}")
+
+ # Add the postfix to the executable since it is not added
+ # automatically as for modules and shared libraries
+ set_target_properties(${TEST_NAME} PROPERTIES
+ DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+
+endfunction()
+
+
+transform_makefile_inc("Makefile.inc"
+ "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
+
+foreach(EXECUTABLE_NAME ${noinst_PROGRAMS})
+ setup_executable(${EXECUTABLE_NAME} ${${EXECUTABLE_NAME}_SOURCES})
+endforeach()
+
+
+# SET(useful
+# getpart.c getpart.h
+# ${CURL_SOURCE_DIR}/lib/strequal.c
+# ${CURL_SOURCE_DIR}/lib/base64.c
+# ${CURL_SOURCE_DIR}/lib/mprintf.c
+# ${CURL_SOURCE_DIR}/lib/memdebug.c
+# ${CURL_SOURCE_DIR}/lib/timeval.c
+# )
+
+# SETUP_EXECUTABLE(sws sws.c util.c util.h ${useful})
+# SETUP_EXECUTABLE(resolve resolve.c util.c util.h ${useful})
+# SETUP_EXECUTABLE(sockfilt sockfilt.c util.c util.h ${useful} ${CURL_SOURCE_DIR}/lib/inet_pton.c)
+# SETUP_EXECUTABLE(getpart testpart.c ${useful})
+# SETUP_EXECUTABLE(tftpd tftpd.c util.c util.h ${useful} tftp.h)
+
diff --git a/tests/server/Makefile.am b/tests/server/Makefile.am
index 7533a98b7..ab5802025 100644
--- a/tests/server/Makefile.am
+++ b/tests/server/Makefile.am
@@ -60,5 +60,5 @@ endif
# Makefile.inc provides neat definitions
include Makefile.inc
-EXTRA_DIST = base64.pl Makefile.inc
+EXTRA_DIST = base64.pl Makefile.inc CMakeLists.txt
diff --git a/tests/server/Makefile.in b/tests/server/Makefile.in
index f63718a21..f5f486fee 100644
--- a/tests/server/Makefile.in
+++ b/tests/server/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -79,9 +89,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@DOING_NATIVE_WINDOWS_TRUE@am__append_1 = -DCURL_STATICLIB
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
- $(top_srcdir)/depcomp
noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \
sockfilt$(EXEEXT) sws$(EXEEXT) tftpd$(EXEEXT) \
fake_ntlm$(EXEEXT)
@@ -106,7 +113,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -303,6 +311,8 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -361,7 +371,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -416,6 +426,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -432,7 +443,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -613,7 +623,7 @@ fake_ntlm_LDADD = @CURL_NETWORK_AND_TIME_LIBS@
fake_ntlm_CFLAGS = $(AM_CFLAGS)
# Makefile.inc provides neat definitions
-EXTRA_DIST = base64.pl Makefile.inc
+EXTRA_DIST = base64.pl Makefile.inc CMakeLists.txt
all: all-am
.SUFFIXES:
@@ -630,7 +640,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/server/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/server/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -639,7 +648,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -2222,6 +2231,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/tests/server/getpart.c b/tests/server/getpart.c
index fb86596e7..f773dd058 100644
--- a/tests/server/getpart.c
+++ b/tests/server/getpart.c
@@ -209,8 +209,7 @@ static int decodedata(char **buf, /* dest buffer */
** let's just assume it is an OOM condition, currently we have
** no input for this function that decodes to zero length data.
*/
- if(buf64)
- free(buf64);
+ free(buf64);
return GPE_OUT_OF_MEMORY;
}
@@ -435,15 +434,13 @@ int getpart(char **outbuf, size_t *outlen,
} /* while */
- if(buffer)
- free(buffer);
+ free(buffer);
if(error != GPE_OK) {
if(error == GPE_END_OF_FILE)
error = GPE_OK;
else {
- if(*outbuf)
- free(*outbuf);
+ free(*outbuf);
*outbuf = NULL;
*outlen = 0;
}
diff --git a/tests/server/rtspd.c b/tests/server/rtspd.c
index 72422ecf5..0293f59cf 100644
--- a/tests/server/rtspd.c
+++ b/tests/server/rtspd.c
@@ -523,8 +523,7 @@ static int ProcessRequest(struct httprequest *req)
} while(ptr && *ptr);
logmsg("Done parsing server commands");
}
- if(cmd)
- free(cmd);
+ free(cmd);
}
}
else {
@@ -993,8 +992,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
}
if(got_exit_signal) {
- if(ptr)
- free(ptr);
+ free(ptr);
return -1;
}
@@ -1005,8 +1003,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
logmsg("fopen() failed with error: %d %s", error, strerror(error));
logmsg("Error opening file: %s", filename);
logmsg("Couldn't open test file");
- if(ptr)
- free(ptr);
+ free(ptr);
return 0;
}
else {
@@ -1015,18 +1012,15 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
fclose(stream);
if(error) {
logmsg("getpart() failed with error: %d", error);
- if(ptr)
- free(ptr);
+ free(ptr);
return 0;
}
}
}
if(got_exit_signal) {
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
@@ -1050,10 +1044,8 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
logmsg("fopen() failed with error: %d %s", error, strerror(error));
logmsg("Error opening file: %s", RESPONSE_DUMP);
logmsg("couldn't create logfile: " RESPONSE_DUMP);
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
@@ -1110,28 +1102,22 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
RESPONSE_DUMP, error, strerror(error));
if(got_exit_signal) {
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
if(sendfailure) {
logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) were sent",
responsesize-count, responsesize);
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
logmsg("Response sent (%zu bytes) and written to " RESPONSE_DUMP,
responsesize);
-
- if(ptr)
- free(ptr);
+ free(ptr);
if(cmdsize > 0 ) {
char command[32];
@@ -1169,9 +1155,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
ptr = NULL;
} while(ptr && *ptr);
}
- if(cmd)
- free(cmd);
-
+ free(cmd);
req->open = persistant;
prevtestno = req->testno;
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 8cd30c5a5..9ad54e4a8 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -442,8 +442,7 @@ static int parse_servercmd(struct httprequest *req)
else
break;
}
- if(orgcmd)
- free(orgcmd);
+ free(orgcmd);
}
return 0; /* OK! */
@@ -914,6 +913,8 @@ static void init_httprequest(struct httprequest *req)
req->callcount = 0;
req->connect_port = 0;
req->done_processing = 0;
+ req->upgrade = 0;
+ req->upgrade_request = 0;
}
/* returns 1 if the connection should be serviced again immediately, 0 if there
@@ -1126,8 +1127,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
}
if(got_exit_signal) {
- if(ptr)
- free(ptr);
+ free(ptr);
return -1;
}
@@ -1137,8 +1137,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
error = errno;
logmsg("fopen() failed with error: %d %s", error, strerror(error));
logmsg(" [4] Error opening file: %s", filename);
- if(ptr)
- free(ptr);
+ free(ptr);
return 0;
}
else {
@@ -1147,18 +1146,15 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
fclose(stream);
if(error) {
logmsg("getpart() failed with error: %d", error);
- if(ptr)
- free(ptr);
+ free(ptr);
return 0;
}
}
}
if(got_exit_signal) {
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
@@ -1181,10 +1177,8 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
error = errno;
logmsg("fopen() failed with error: %d %s", error, strerror(error));
logmsg(" [5] Error opening file: %s", responsedump);
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
@@ -1228,28 +1222,22 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
responsedump, error, strerror(error));
if(got_exit_signal) {
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
if(sendfailure) {
logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) were sent",
responsesize-count, responsesize);
- if(ptr)
- free(ptr);
- if(cmd)
- free(cmd);
+ free(ptr);
+ free(cmd);
return -1;
}
logmsg("Response sent (%zu bytes) and written to %s",
responsesize, responsedump);
-
- if(ptr)
- free(ptr);
+ free(ptr);
if(cmdsize > 0 ) {
char command[32];
@@ -1285,9 +1273,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
ptr = NULL;
} while(ptr && *ptr);
}
- if(cmd)
- free(cmd);
-
+ free(cmd);
req->open = use_gopher?FALSE:persistant;
prevtestno = req->testno;
@@ -1334,8 +1320,6 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
if(0 != setsockopt(serverfd, IPPROTO_TCP, TCP_NODELAY,
(void *)&flag, sizeof(flag)))
logmsg("====> TCP_NODELAY for server conection failed");
- else
- logmsg("TCP_NODELAY set for server conection");
}
#endif
@@ -1429,6 +1413,7 @@ static void http_connect(curl_socket_t *infdp,
int max_tunnel_idx; /* CTRL or DATA */
int loop;
int i;
+ int timeout_count=0;
/* primary tunnel client endpoint already connected */
clientfd[CTRL] = *infdp;
@@ -1457,7 +1442,7 @@ static void http_connect(curl_socket_t *infdp,
fd_set input;
fd_set output;
- struct timeval timeout = {0, 250000L}; /* 250 ms */
+ struct timeval timeout = {1, 0}; /* 1000 ms */
ssize_t rc;
curl_socket_t maxfd = (curl_socket_t)-1;
@@ -1518,6 +1503,7 @@ static void http_connect(curl_socket_t *infdp,
if(rc > 0) {
/* socket action */
bool tcp_fin_wr;
+ timeout_count=0;
if(got_exit_signal)
break;
@@ -1543,8 +1529,6 @@ static void http_connect(curl_socket_t *infdp,
if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY,
(void *)&flag, sizeof(flag)))
logmsg("====> TCP_NODELAY for client DATA conection failed");
- else
- logmsg("TCP_NODELAY set for client DATA conection");
}
#endif
req2.pipelining = FALSE;
@@ -1761,7 +1745,13 @@ static void http_connect(curl_socket_t *infdp,
break;
} /* (rc > 0) */
-
+ else {
+ timeout_count++;
+ if(timeout_count > 5) {
+ logmsg("CONNECT proxy timeout after %d idle seconds!", timeout_count);
+ break;
+ }
+ }
}
http_connect_cleanup:
@@ -1867,8 +1857,6 @@ static curl_socket_t accept_connection(curl_socket_t sock)
if(0 != setsockopt(msgsock, IPPROTO_TCP, TCP_NODELAY,
(void *)&flag, sizeof(flag)))
logmsg("====> TCP_NODELAY failed");
- else
- logmsg("TCP_NODELAY set");
}
#endif
diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c
index 25557932f..cef129f2e 100644
--- a/tests/server/tftpd.c
+++ b/tests/server/tftpd.c
@@ -876,8 +876,7 @@ int main(int argc, char **argv)
memset(&test, 0, sizeof(test));
if (do_tftp(&test, tp, n) < 0)
break;
- if(test.buffer)
- free(test.buffer);
+ free(test.buffer);
}
sclose(peer);
peer = CURL_SOCKET_BAD;
@@ -1089,8 +1088,7 @@ static int parse_servercmd(struct testcase *req)
else
break;
}
- if(orgcmd)
- free(orgcmd);
+ free(orgcmd);
}
return 0; /* OK! */
diff --git a/tests/testcurl.html b/tests/testcurl.html
index 4a5853f24..c13f0bd2e 100644
--- a/tests/testcurl.html
+++ b/tests/testcurl.html
@@ -4,15 +4,20 @@
<title>testcurl.pl man page</title>
<meta name="generator" content="roffit">
<STYLE type="text/css">
-P.level0 {
+pre {
+ overflow: auto;
+ margin: 0;
+}
+
+P.level0, pre.level0 {
padding-left: 2em;
}
-P.level1 {
+P.level1, pre.level1 {
padding-left: 4em;
}
-P.level2 {
+P.level2, pre.level2 {
padding-left: 6em;
}
@@ -76,40 +81,42 @@ p.roffit {
<p class="level0"><a name="--targetyour"></a><span class="nroffip">--target=[your os]</span>
<p class="level1">Specify your target environment. Recognized strings include 'vc', 'mingw32', 'borland' and 'netware'. <a name="INITIAL"></a><h2 class="nroffsh">INITIAL SETUP</h2>
<p class="level0">First you make a checkout from git (or you write a script that downloads daily snapshots automatically, find inspiration at <a href="http://curl.haxx.se/auto/autocurl.txt">http://curl.haxx.se/auto/autocurl.txt</a>):
-<p class="level0"><pre>
-<p class="level0">&nbsp; $ mkdir daily-curl
- &nbsp; $ cd daily-curl
- &nbsp; $ git clone git://github.com/bagder/curl.git
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; $ mkdir daily-curl
+&nbsp; $ cd daily-curl
+&nbsp; $ git clone git://github.com/bagder/curl.git
+</pre>
<p class="level0">
<p class="level0">With the curl sources checked out, or downloaded, you can start testing right away. If you want to use <span Class="emphasis">testcurl.pl</span> without command line arguments and to have it store and remember the config in its 'setup' file, then start it manually now and fill in the answers to the questions it prompts you for:
-<p class="level0"><pre>
-<p class="level0">&nbsp; $ ./curl/tests/testcurl.pl
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; $ ./curl/tests/testcurl.pl
+</pre>
<p class="level0">
<p class="level0">Now you are ready to go. If you let the script run, it will perform a full cycle and spit out lots of output. Mail us that output as described above. <a name="CRONTAB"></a><h2 class="nroffsh">CRONTAB EXAMPLE</h2>
<p class="level0">The crontab could include something like this:
-<p class="level0"><pre>
-<p class="level0"># autobuild curl:
- 0 4 * * * cd daily-curl && ./testit.sh
- </pre>
+<p class="level0"><pre class="level0">
+#35; autobuild curl:
+0 4 * * * cd daily-curl && ./testit.sh
+</pre>
<p class="level0">
<p class="level0">Where testit.sh is a shell script that could look similar to this:
-<p class="level0"><pre>
-<p class="level0">mail="mail -s autobuild curl-autocompile@haxx.se"
- name="--name=whoami"
- email="--email=iamme@nowhere"
- desc='"--desc=supermachine Turbo 2000"'
- testprog="perl ./curl/tests/testcurl.pl $name $email $desc"
- opts1="--configure=--enable-debug"
- opts2="--configure=--enable-ipv6"
- <p class="level0"># run first test
- $testprog $opts1 | $mail
- <p class="level0"># run second test
- $testprog $opts2 | $mail
- <p class="roffit">
+<p class="level0"><pre class="level0">
+mail="mail -s autobuild curl-autocompile@haxx.se"
+name="--name=whoami"
+email="--email=iamme@nowhere"
+desc='"--desc=supermachine Turbo 2000"'
+testprog="perl ./curl/tests/testcurl.pl $name $email $desc"
+opts1="--configure=--enable-debug"
+opts2="--configure=--enable-ipv6"
+
+&#35; run first test
+$testprog $opts1 | $mail
+
+&#35; run second test
+$testprog $opts2 | $mail
+<p class="roffit">
This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
</body></html>
diff --git a/tests/testcurl.pdf b/tests/testcurl.pdf
index 993ee5c85..2fca2ac18 100644
--- a/tests/testcurl.pdf
+++ b/tests/testcurl.pdf
Binary files differ
diff --git a/tests/testcurl.pl b/tests/testcurl.pl
index 8c804e4cb..2b9e0831c 100755
--- a/tests/testcurl.pl
+++ b/tests/testcurl.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, 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
@@ -46,6 +46,7 @@
# --extvercmd=[command] Command to use for displaying version with cross compiles.
# --mktarball=[command] Command to run after completed test
# --name=[name] Set name to report as
+# --notes=[notes] More human-readable information about this configuration
# --nocvsup Don't pull from git even though it is a git tree
# --nogitpull Don't pull from git even though it is a git tree
# --nobuildconf Don't run buildconf
@@ -60,6 +61,7 @@
use strict;
use Cwd;
+use File::Spec;
# Turn on warnings (equivalent to -w, which can't be used with /usr/bin/env)
#BEGIN { $^W = 1; }
@@ -88,25 +90,28 @@ $setupfile = 'setup';
$configurebuild = 1;
while ($ARGV[0]) {
if ($ARGV[0] =~ /--target=/) {
- $targetos = (split(/=/, shift @ARGV))[1];
+ $targetos = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--setup=/) {
- $setupfile = (split(/=/, shift @ARGV))[1];
+ $setupfile = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--extvercmd=/) {
- $extvercmd = (split(/=/, shift @ARGV))[1];
+ $extvercmd = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--mktarball=/) {
- $mktarball = (split(/=/, shift @ARGV))[1];
+ $mktarball = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--name=/) {
- $name = (split(/=/, shift @ARGV))[1];
+ $name = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--email=/) {
- $email = (split(/=/, shift @ARGV))[1];
+ $email = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--desc=/) {
- $desc = (split(/=/, shift @ARGV))[1];
+ $desc = (split(/=/, shift @ARGV, 2))[1];
+ }
+ elsif ($ARGV[0] =~ /--notes=/) {
+ $notes = (split(/=/, shift @ARGV, 2))[1];
}
elsif ($ARGV[0] =~ /--configure=(.*)/) {
$confopts = $1;
@@ -383,6 +388,10 @@ if (-d $CURLDIR) {
mydie "$CURLDIR is not a daily source dir or checked out from git!"
}
}
+
+# make the path absolute so we can use it everywhere
+$CURLDIR = File::Spec->rel2abs("$CURLDIR");
+
$build="build-$$";
$buildlogname="buildlog-$$";
$buildlog="$pwd/$buildlogname";
@@ -455,7 +464,7 @@ if ($git) {
logit " $_";
}
- chdir "$pwd/$CURLDIR";
+ chdir "$CURLDIR";
}
if($nobuildconf) {
@@ -554,7 +563,7 @@ chdir "$pwd/$build";
if ($configurebuild) {
# run configure script
- print `../$CURLDIR/configure $confopts 2>&1`;
+ print `$CURLDIR/configure $confopts 2>&1`;
if (-f "lib/Makefile") {
logit "configure seems to have finished fine";
@@ -564,26 +573,26 @@ if ($configurebuild) {
} else {
logit "copying files to build dir ...";
if (($^O eq 'MSWin32') && ($targetos !~ /netware/)) {
- system("xcopy /s /q ..\\$CURLDIR .");
+ system("xcopy /s /q \"$CURLDIR\" .");
system("buildconf.bat");
}
elsif ($targetos =~ /netware/) {
- system("cp -afr ../$CURLDIR/* .");
- system("cp -af ../$CURLDIR/Makefile.dist Makefile");
+ system("cp -afr $CURLDIR/* .");
+ system("cp -af $CURLDIR/Makefile.dist Makefile");
system("$make -i -C lib -f Makefile.netware prebuild");
system("$make -i -C src -f Makefile.netware prebuild");
- if (-d "../$CURLDIR/ares") {
+ if (-d "$CURLDIR/ares") {
system("$make -i -C ares -f Makefile.netware prebuild");
}
}
elsif ($^O eq 'linux') {
- system("cp -afr ../$CURLDIR/* .");
- system("cp -af ../$CURLDIR/Makefile.dist Makefile");
- system("cp -af ../$CURLDIR/include/curl/curlbuild.h.dist ./include/curl/curlbuild.h");
+ system("cp -afr $CURLDIR/* .");
+ system("cp -af $CURLDIR/Makefile.dist Makefile");
+ system("cp -af $CURLDIR/include/curl/curlbuild.h.dist ./include/curl/curlbuild.h");
system("$make -i -C lib -f Makefile.$targetos prebuild");
system("$make -i -C src -f Makefile.$targetos prebuild");
- if (-d "../$CURLDIR/ares") {
- system("cp -af ../$CURLDIR/ares/ares_build.h.dist ./ares/ares_build.h");
+ if (-d "$CURLDIR/ares") {
+ system("cp -af $CURLDIR/ares/ares_build.h.dist ./ares/ares_build.h");
system("$make -i -C ares -f Makefile.$targetos prebuild");
}
}
diff --git a/tests/unit/Makefile.in b/tests/unit/Makefile.in
index cd2ed53b2..7b0a10cc0 100644
--- a/tests/unit/Makefile.in
+++ b/tests/unit/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
# these files are used in every single unit test program
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+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 \
?) ;; \
@@ -80,9 +90,6 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
- $(top_srcdir)/depcomp README
@BUILD_UNITTESTS_TRUE@noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = tests/unit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -105,7 +112,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
@@ -114,7 +122,8 @@ am__EXEEXT_1 = unit1300$(EXEEXT) unit1301$(EXEEXT) unit1302$(EXEEXT) \
unit1303$(EXEEXT) unit1304$(EXEEXT) unit1305$(EXEEXT) \
unit1307$(EXEEXT) unit1308$(EXEEXT) unit1309$(EXEEXT) \
unit1330$(EXEEXT) unit1394$(EXEEXT) unit1395$(EXEEXT) \
- unit1396$(EXEEXT) unit1397$(EXEEXT) unit1398$(EXEEXT)
+ unit1396$(EXEEXT) unit1397$(EXEEXT) unit1398$(EXEEXT) \
+ unit1600$(EXEEXT) unit1601$(EXEEXT) unit1602$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
@@ -212,6 +221,24 @@ unit1398_OBJECTS = $(am_unit1398_OBJECTS)
unit1398_LDADD = $(LDADD)
unit1398_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
+am__objects_16 = ../libtest/unit1600-first.$(OBJEXT)
+am_unit1600_OBJECTS = unit1600-unit1600.$(OBJEXT) $(am__objects_16)
+unit1600_OBJECTS = $(am_unit1600_OBJECTS)
+unit1600_LDADD = $(LDADD)
+unit1600_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+ $(top_builddir)/lib/libcurlu.la
+am__objects_17 = ../libtest/unit1601-first.$(OBJEXT)
+am_unit1601_OBJECTS = unit1601-unit1601.$(OBJEXT) $(am__objects_17)
+unit1601_OBJECTS = $(am_unit1601_OBJECTS)
+unit1601_LDADD = $(LDADD)
+unit1601_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+ $(top_builddir)/lib/libcurlu.la
+am__objects_18 = ../libtest/unit1602-first.$(OBJEXT)
+am_unit1602_OBJECTS = unit1602-unit1602.$(OBJEXT) $(am__objects_18)
+unit1602_OBJECTS = $(am_unit1602_OBJECTS)
+unit1602_LDADD = $(LDADD)
+unit1602_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+ $(top_builddir)/lib/libcurlu.la
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -250,13 +277,15 @@ SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) $(unit1302_SOURCES) \
$(unit1303_SOURCES) $(unit1304_SOURCES) $(unit1305_SOURCES) \
$(unit1307_SOURCES) $(unit1308_SOURCES) $(unit1309_SOURCES) \
$(unit1330_SOURCES) $(unit1394_SOURCES) $(unit1395_SOURCES) \
- $(unit1396_SOURCES) $(unit1397_SOURCES) $(unit1398_SOURCES)
+ $(unit1396_SOURCES) $(unit1397_SOURCES) $(unit1398_SOURCES) \
+ $(unit1600_SOURCES) $(unit1601_SOURCES) $(unit1602_SOURCES)
DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
$(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
$(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
$(unit1309_SOURCES) $(unit1330_SOURCES) $(unit1394_SOURCES) \
$(unit1395_SOURCES) $(unit1396_SOURCES) $(unit1397_SOURCES) \
- $(unit1398_SOURCES)
+ $(unit1398_SOURCES) $(unit1600_SOURCES) $(unit1601_SOURCES) \
+ $(unit1602_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -281,6 +310,8 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(top_srcdir)/depcomp README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -339,7 +370,7 @@ GREP = @GREP@
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
IDN_ENABLED = @IDN_ENABLED@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -394,6 +425,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -410,7 +442,6 @@ USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_POLARSSL = @USE_POLARSSL@
USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
@@ -538,8 +569,9 @@ UNITFILES = curlcheck.h \
# These are all unit test programs
-UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
- unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398
+UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
+ unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
+ unit1600 unit1601 unit1602
unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -574,6 +606,12 @@ unit1397_SOURCES = unit1397.c $(UNITFILES)
unit1397_CPPFLAGS = $(AM_CPPFLAGS)
unit1398_SOURCES = unit1398.c $(UNITFILES)
unit1398_CPPFLAGS = $(AM_CPPFLAGS)
+unit1600_SOURCES = unit1600.c $(UNITFILES)
+unit1600_CPPFLAGS = $(AM_CPPFLAGS)
+unit1601_SOURCES = unit1601.c $(UNITFILES)
+unit1601_CPPFLAGS = $(AM_CPPFLAGS)
+unit1602_SOURCES = unit1602.c $(UNITFILES)
+unit1602_CPPFLAGS = $(AM_CPPFLAGS)
all: all-am
.SUFFIXES:
@@ -590,7 +628,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/unit/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/unit/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -599,7 +636,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -714,6 +751,24 @@ unit1397$(EXEEXT): $(unit1397_OBJECTS) $(unit1397_DEPENDENCIES) $(EXTRA_unit1397
unit1398$(EXEEXT): $(unit1398_OBJECTS) $(unit1398_DEPENDENCIES) $(EXTRA_unit1398_DEPENDENCIES)
@rm -f unit1398$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(unit1398_OBJECTS) $(unit1398_LDADD) $(LIBS)
+../libtest/unit1600-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+ ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1600$(EXEEXT): $(unit1600_OBJECTS) $(unit1600_DEPENDENCIES) $(EXTRA_unit1600_DEPENDENCIES)
+ @rm -f unit1600$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unit1600_OBJECTS) $(unit1600_LDADD) $(LIBS)
+../libtest/unit1601-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+ ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1601$(EXEEXT): $(unit1601_OBJECTS) $(unit1601_DEPENDENCIES) $(EXTRA_unit1601_DEPENDENCIES)
+ @rm -f unit1601$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unit1601_OBJECTS) $(unit1601_LDADD) $(LIBS)
+../libtest/unit1602-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+ ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1602$(EXEEXT): $(unit1602_OBJECTS) $(unit1602_DEPENDENCIES) $(EXTRA_unit1602_DEPENDENCIES)
+ @rm -f unit1602$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unit1602_OBJECTS) $(unit1602_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -737,6 +792,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1396-first.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1397-first.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1398-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1600-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1601-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1602-first.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-unit1300.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-unit1301.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-unit1302.Po@am__quote@
@@ -752,6 +810,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1396-unit1396.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1397-unit1397.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1398-unit1398.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1600-unit1600.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1601-unit1601.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1602-unit1602.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -1197,6 +1258,90 @@ unit1398-unit1398.obj: unit1398.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1398-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+unit1600-unit1600.o: unit1600.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1600-unit1600.o -MD -MP -MF $(DEPDIR)/unit1600-unit1600.Tpo -c -o unit1600-unit1600.o `test -f 'unit1600.c' || echo '$(srcdir)/'`unit1600.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1600-unit1600.Tpo $(DEPDIR)/unit1600-unit1600.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1600.c' object='unit1600-unit1600.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1600-unit1600.o `test -f 'unit1600.c' || echo '$(srcdir)/'`unit1600.c
+
+unit1600-unit1600.obj: unit1600.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1600-unit1600.obj -MD -MP -MF $(DEPDIR)/unit1600-unit1600.Tpo -c -o unit1600-unit1600.obj `if test -f 'unit1600.c'; then $(CYGPATH_W) 'unit1600.c'; else $(CYGPATH_W) '$(srcdir)/unit1600.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1600-unit1600.Tpo $(DEPDIR)/unit1600-unit1600.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1600.c' object='unit1600-unit1600.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1600-unit1600.obj `if test -f 'unit1600.c'; then $(CYGPATH_W) 'unit1600.c'; else $(CYGPATH_W) '$(srcdir)/unit1600.c'; fi`
+
+../libtest/unit1600-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1600-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1600-first.Tpo -c -o ../libtest/unit1600-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1600-first.Tpo ../libtest/$(DEPDIR)/unit1600-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1600-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1600-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1600-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1600-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1600-first.Tpo -c -o ../libtest/unit1600-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1600-first.Tpo ../libtest/$(DEPDIR)/unit1600-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1600-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1600-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
+unit1601-unit1601.o: unit1601.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1601-unit1601.o -MD -MP -MF $(DEPDIR)/unit1601-unit1601.Tpo -c -o unit1601-unit1601.o `test -f 'unit1601.c' || echo '$(srcdir)/'`unit1601.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1601-unit1601.Tpo $(DEPDIR)/unit1601-unit1601.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1601.c' object='unit1601-unit1601.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1601-unit1601.o `test -f 'unit1601.c' || echo '$(srcdir)/'`unit1601.c
+
+unit1601-unit1601.obj: unit1601.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1601-unit1601.obj -MD -MP -MF $(DEPDIR)/unit1601-unit1601.Tpo -c -o unit1601-unit1601.obj `if test -f 'unit1601.c'; then $(CYGPATH_W) 'unit1601.c'; else $(CYGPATH_W) '$(srcdir)/unit1601.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1601-unit1601.Tpo $(DEPDIR)/unit1601-unit1601.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1601.c' object='unit1601-unit1601.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1601-unit1601.obj `if test -f 'unit1601.c'; then $(CYGPATH_W) 'unit1601.c'; else $(CYGPATH_W) '$(srcdir)/unit1601.c'; fi`
+
+../libtest/unit1601-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1601-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1601-first.Tpo -c -o ../libtest/unit1601-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1601-first.Tpo ../libtest/$(DEPDIR)/unit1601-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1601-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1601-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1601-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1601-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1601-first.Tpo -c -o ../libtest/unit1601-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1601-first.Tpo ../libtest/$(DEPDIR)/unit1601-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1601-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1601-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
+unit1602-unit1602.o: unit1602.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1602-unit1602.o -MD -MP -MF $(DEPDIR)/unit1602-unit1602.Tpo -c -o unit1602-unit1602.o `test -f 'unit1602.c' || echo '$(srcdir)/'`unit1602.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1602-unit1602.Tpo $(DEPDIR)/unit1602-unit1602.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1602.c' object='unit1602-unit1602.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1602-unit1602.o `test -f 'unit1602.c' || echo '$(srcdir)/'`unit1602.c
+
+unit1602-unit1602.obj: unit1602.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1602-unit1602.obj -MD -MP -MF $(DEPDIR)/unit1602-unit1602.Tpo -c -o unit1602-unit1602.obj `if test -f 'unit1602.c'; then $(CYGPATH_W) 'unit1602.c'; else $(CYGPATH_W) '$(srcdir)/unit1602.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1602-unit1602.Tpo $(DEPDIR)/unit1602-unit1602.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1602.c' object='unit1602-unit1602.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1602-unit1602.obj `if test -f 'unit1602.c'; then $(CYGPATH_W) 'unit1602.c'; else $(CYGPATH_W) '$(srcdir)/unit1602.c'; fi`
+
+../libtest/unit1602-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1602-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1602-first.Tpo -c -o ../libtest/unit1602-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1602-first.Tpo ../libtest/$(DEPDIR)/unit1602-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1602-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1602-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1602-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1602-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1602-first.Tpo -c -o ../libtest/unit1602-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1602-first.Tpo ../libtest/$(DEPDIR)/unit1602-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1602-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1602-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
mostlyclean-libtool:
-rm -f *.lo
@@ -1408,6 +1553,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff --git a/tests/unit/Makefile.inc b/tests/unit/Makefile.inc
index 526ec1fbd..9073b34e6 100644
--- a/tests/unit/Makefile.inc
+++ b/tests/unit/Makefile.inc
@@ -5,8 +5,9 @@ UNITFILES = curlcheck.h \
../libtest/first.c
# These are all unit test programs
-UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
- unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398
+UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
+ unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
+ unit1600 unit1601 unit1602
unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -56,3 +57,12 @@ unit1397_CPPFLAGS = $(AM_CPPFLAGS)
unit1398_SOURCES = unit1398.c $(UNITFILES)
unit1398_CPPFLAGS = $(AM_CPPFLAGS)
+unit1600_SOURCES = unit1600.c $(UNITFILES)
+unit1600_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1601_SOURCES = unit1601.c $(UNITFILES)
+unit1601_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1602_SOURCES = unit1602.c $(UNITFILES)
+unit1602_CPPFLAGS = $(AM_CPPFLAGS)
+
diff --git a/tests/unit/curlcheck.h b/tests/unit/curlcheck.h
index 96203e075..2e3746bdc 100644
--- a/tests/unit/curlcheck.h
+++ b/tests/unit/curlcheck.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -36,11 +36,13 @@
unitfail++; \
}
-#define verify_memory(dynamic, check, len) \
- if(dynamic && memcmp(dynamic, check, len)) { \
- fprintf(stderr, "%s:%d The dynamic string didn't match '%s'\n", \
- __FILE__, __LINE__, check); \
- unitfail++; \
+#define verify_memory(dynamic, check, len) \
+ if(dynamic && memcmp(dynamic, check, len)) { \
+ fprintf(stderr, "%s:%d Memory buffer mismatch size %d. '%s' is not\n", \
+ __FILE__, __LINE__, len, hexdump((unsigned char *)check, len)); \
+ fprintf(stderr, "%s:%d the same as '%s'\n", \
+ __FILE__, __LINE__, hexdump((unsigned char *)dynamic, len)); \
+ unitfail++; \
}
/* fail() is for when the test case figured out by itself that a check
diff --git a/tests/unit/unit1305.c b/tests/unit/unit1305.c
index 91e3b0b27..96913f1fa 100644
--- a/tests/unit/unit1305.c
+++ b/tests/unit/unit1305.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, 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
@@ -40,18 +40,19 @@
#include "memdebug.h" /* LAST include file */
static struct SessionHandle *data;
-static struct curl_hash *hp;
+static struct curl_hash hp;
static char *data_key;
static struct Curl_dns_entry *data_node;
static CURLcode unit_setup( void )
{
+ int rc;
data = curl_easy_init();
if (!data)
return CURLE_OUT_OF_MEMORY;
- hp = Curl_mk_dnscache();
- if(!hp) {
+ rc = Curl_mk_dnscache(&hp);
+ if(rc) {
curl_easy_cleanup(data);
curl_global_cleanup();
return CURLE_OUT_OF_MEMORY;
@@ -65,10 +66,8 @@ static void unit_stop( void )
Curl_freeaddrinfo(data_node->addr);
free(data_node);
}
- if (data_key)
- free(data_key);
-
- Curl_hash_destroy(hp);
+ free(data_key);
+ Curl_hash_destroy(&hp);
curl_easy_cleanup(data);
curl_global_cleanup();
@@ -130,7 +129,8 @@ UNITTEST_START
abort_unless(rc == CURLE_OK, "data node creation failed");
key_len = strlen(data_key);
- nodep = Curl_hash_add(hp, data_key, key_len+1, data_node);
+ data_node->inuse = 1; /* hash will hold the reference */
+ nodep = Curl_hash_add(&hp, data_key, key_len+1, data_node);
abort_unless(nodep, "insertion into hash failed");
/* Freeing will now be done by Curl_hash_destroy */
data_node = NULL;
diff --git a/tests/unit/unit1397.c b/tests/unit/unit1397.c
index fd60c2315..c05c119db 100644
--- a/tests/unit/unit1397.c
+++ b/tests/unit/unit1397.c
@@ -15,7 +15,7 @@ static void unit_stop( void )
UNITTEST_START
/* only these backends define the tested functions */
-#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_GSKIT)
+#if defined(USE_OPENSSL) || defined(USE_AXTLS) || defined(USE_GSKIT)
/* here you start doing things and checking that the results are good */
diff --git a/tests/unit/unit1600.c b/tests/unit/unit1600.c
new file mode 100644
index 000000000..6803cf336
--- /dev/null
+++ b/tests/unit/unit1600.c
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "urldata.h"
+#include "curl_ntlm_core.h"
+
+CURL *easy;
+
+static CURLcode unit_setup(void)
+{
+ easy = curl_easy_init();
+ return CURLE_OK;
+}
+
+static void unit_stop(void)
+{
+ curl_easy_cleanup(easy);
+}
+
+UNITTEST_START
+
+#if defined(USE_NTLM) && (!defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO))
+ unsigned char output[21];
+ unsigned char *testp = output;
+ Curl_ntlm_core_mk_nt_hash(easy, "1", output);
+
+ verify_memory(testp,
+ "\x69\x94\x3c\x5e\x63\xb4\xd2\xc1\x04\xdb"
+ "\xbc\xc1\x51\x38\xb7\x2b\x00\x00\x00\x00\x00", 21);
+
+ Curl_ntlm_core_mk_nt_hash(easy, "hello-you-fool", output);
+
+ verify_memory(testp,
+ "\x39\xaf\x87\xa6\x75\x0a\x7a\x00\xba\xa0"
+ "\xd3\x4f\x04\x9e\xc1\xd0\x00\x00\x00\x00\x00", 21);
+
+ Curl_ntlm_core_mk_nt_hash(easy, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
+
+ verify_memory(testp,
+ "\x36\x9d\xae\x06\x84\x7e\xe1\xc1\x4a\x94\x39\xea\x6f\x44\x8c\x65\x00\x00\x00\x00\x00", 21);
+#endif
+
+UNITTEST_STOP
diff --git a/lib/bundles.h b/tests/unit/unit1601.c
index 3816c4065..17aba05f5 100644
--- a/lib/bundles.h
+++ b/tests/unit/unit1601.c
@@ -1,5 +1,3 @@
-#ifndef HEADER_CURL_BUNDLES_H
-#define HEADER_CURL_BUNDLES_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 1998 - 2015, 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
@@ -21,25 +19,33 @@
* KIND, either express or implied.
*
***************************************************************************/
+#include "curlcheck.h"
-struct connectbundle {
- bool server_supports_pipelining; /* TRUE if server supports pipelining,
- set after first response */
- size_t num_connections; /* Number of connections in the bundle */
- struct curl_llist *conn_list; /* The connectdata members of the bundle */
-};
+#include "curl_md5.h"
-CURLcode Curl_bundle_create(struct SessionHandle *data,
- struct connectbundle **cb_ptr);
+static CURLcode unit_setup(void)
+{
+ return CURLE_OK;
+}
-void Curl_bundle_destroy(struct connectbundle *cb_ptr);
+static void unit_stop(void)
+{
-CURLcode Curl_bundle_add_conn(struct connectbundle *cb_ptr,
- struct connectdata *conn);
+}
-int Curl_bundle_remove_conn(struct connectbundle *cb_ptr,
- struct connectdata *conn);
+UNITTEST_START
+ unsigned char output[16];
+ unsigned char *testp = output;
+ Curl_md5it(output, (const unsigned char *)"1");
-#endif /* HEADER_CURL_BUNDLES_H */
+ verify_memory(testp,
+ "\xc4\xca\x42\x38\xa0\xb9\x23\x82\x0d\xcc\x50\x9a\x6f\x75\x84\x9b", 16);
+ Curl_md5it(output, (const unsigned char *)"hello-you-fool");
+
+ verify_memory(testp,
+ "\x88\x67\x0b\x6d\x5d\x74\x2f\xad\xa5\xcd\xf9\xb6\x82\x87\x5f\x22", 16);
+
+
+UNITTEST_STOP
diff --git a/tests/unit/unit1602.c b/tests/unit/unit1602.c
new file mode 100644
index 000000000..3b25556bf
--- /dev/null
+++ b/tests/unit/unit1602.c
@@ -0,0 +1,80 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2011, 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 http://curl.haxx.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.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#define ENABLE_CURLX_PRINTF
+#include "curlx.h"
+
+#include "hash.h"
+
+#include "memdebug.h" /* LAST include file */
+
+ static CURLcode unit_setup( void )
+{
+ return CURLE_OK;
+}
+
+static void unit_stop( void )
+{
+
+}
+
+static void mydtor(void *p)
+{
+ int *ptr = (int*)p;
+ free(ptr);
+}
+
+UNITTEST_START
+ int *value;
+ int *value2;
+ size_t klen = sizeof(int);
+
+ struct curl_hash hash_static;
+ int key = 20;
+ int key2 = 25;
+ int rc = 0;
+
+ rc = Curl_hash_init(&hash_static, 7, Curl_hash_str,
+ Curl_str_key_compare, mydtor);
+
+ if(rc)
+ {
+ fail("Curl_hash_init failed to initialize static hash!");
+ goto unit_test_abort;
+ }
+
+ value = malloc(sizeof(int));
+ value2 = malloc(sizeof(int));
+
+ *value = 199;
+ *value2 = 204;
+ Curl_hash_add(&hash_static, &key, klen, value);
+
+ Curl_hash_clean(&hash_static);
+
+ /* Attempt to add another key/value pair */
+ Curl_hash_add(&hash_static, &key2, klen, value2);
+
+ Curl_hash_destroy(&hash_static);
+
+UNITTEST_STOP
diff --git a/winbuild/BUILD.WINDOWS.txt b/winbuild/BUILD.WINDOWS.txt
index 757c41f57..1556fe654 100644
--- a/winbuild/BUILD.WINDOWS.txt
+++ b/winbuild/BUILD.WINDOWS.txt
@@ -1,5 +1,5 @@
-Building with Visual C++, prerequises
-=====================================
+Building with Visual C++, prerequisites
+=======================================
This document describes how to compile, build and install curl and libcurl
from sources using the Visual C++ build tool. To build with VC++, you will
@@ -19,7 +19,7 @@ Building with Visual C++, prerequises
http://www.microsoft.com/en-us/download/details.aspx?id=12261
- If you wish to support zlib, openssl, ssh2, you will have to download
+ If you wish to support zlib, openssl, c-ares, ssh2, you will have to download
them separately and copy them to the deps directory as shown below:
somedirectory\
@@ -58,12 +58,13 @@ a directory named using the options given to the nmake call.
nmake /f Makefile.vc mode=<static or dll> <options>
where <options> is one or many of:
- VC=<6,7,8,9,10,11,12> - VC versions
+ VC=<6,7,8,9,10,11,12,14> - VC versions
WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.)
Defaults to sibbling directory deps: ../deps
Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/
Uncompress them into the deps folder.
WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static
+ WITH_CARES=<dll or static> - Enable c-ares support, DLL or static
WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static
WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static
ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes
@@ -75,3 +76,23 @@ where <options> is one or many of:
GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build)
DEBUG=<yes or no> - Debug builds
MACHINE=<x86 or x64> - Target architecture (default is x86)
+
+Static linking of Microsoft's C RunTime (CRT):
+==============================================
+If you are using mode=static nmake will create and link to the static build of
+libcurl but *not* the static CRT. If you must you can force nmake to link in
+the static CRT by passing RTLIBCFG=static. Typically you shouldn't use that
+option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used and
+therefore rarely tested. When passing RTLIBCFG for a configuration that was
+already built but not with that option, or if the option was specified
+differently, you must destroy the build directory containing the configuration
+so that nmake can build it from scratch.
+
+Legacy Windows and SSL
+======================
+When you build curl using the build files in this directory the default SSL
+backend will be WinSSL (Windows SSPI, more specifically Schannel), the native
+SSL library that comes with the Windows OS. WinSSL in Windows <= XP is not able
+to connect to servers that no longer support the legacy handshakes and
+algorithms used by those versions. If you will be using curl in one of those
+earlier versions of Windows you should choose another SSL backend like OpenSSL.
diff --git a/winbuild/Makefile.vc b/winbuild/Makefile.vc
index 6dc58c4ef..5b726cd57 100644
--- a/winbuild/Makefile.vc
+++ b/winbuild/Makefile.vc
@@ -15,12 +15,13 @@ CFGSET=true
!MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>
!MESSAGE where <options> is one or many of:
-!MESSAGE VC=<6,7,8,9,10,11,12> - VC versions
+!MESSAGE VC=<6,7,8,9,10,11,12,14> - VC versions
!MESSAGE WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.)
!MESSAGE Defaults to sibbling directory deps: ../deps
!MESSAGE Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/
!MESSAGE Uncompress them into the deps folder.
!MESSAGE WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static
+!MESSAGE WITH_CARES=<dll or static> - Enable c-ares support, DLL or static
!MESSAGE WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static
!MESSAGE WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static
!MESSAGE ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes
@@ -107,6 +108,14 @@ USE_SSL = true
SSL = static
!ENDIF
+!IF "$(WITH_CARES)"=="dll"
+USE_CARES = true
+CARES = dll
+!ELSEIF "$(WITH_CARES)"=="static"
+USE_CARES = true
+CARES = static
+!ENDIF
+
!IF "$(WITH_ZLIB)"=="dll"
USE_ZLIB = true
ZLIB = dll
@@ -141,6 +150,10 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL)
!ENDIF
+!IF "$(USE_CARES)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-cares-$(CARES)
+!ENDIF
+
!IF "$(USE_ZLIB)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)
!ENDIF
diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc
index b9e150c43..28d40baa0 100644
--- a/winbuild/MakefileBuild.vc
+++ b/winbuild/MakefileBuild.vc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2015, 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
@@ -22,7 +22,7 @@
###########################################################################
#
-# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11 and 12
+# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11, 12 and 14
#
# Usage: see usage message below
# Should be invoked from winbuild directory
@@ -118,9 +118,30 @@ SSL = static
!ENDIF
!IFDEF USE_SSL
-SSL_CFLAGS = /DUSE_SSLEAY /I"$(DEVEL_INCLUDE)/openssl"
+SSL_CFLAGS = /DUSE_OPENSSL /I"$(DEVEL_INCLUDE)/openssl"
!ENDIF
+!IF "$(WITH_CARES)"=="dll"
+!IF "$(DEBUG)"=="yes"
+CARES_LIBS = caresd.lib
+!ELSE
+CARES_LIBS = cares.lib
+!ENDIF
+USE_CARES = true
+CARES = dll
+!ELSEIF "$(WITH_CARES)"=="static"
+!IF "$(DEBUG)"=="yes"
+CARES_LIBS = libcaresd.lib
+!ELSE
+CARES_LIBS = libcares.lib
+!ENDIF
+USE_CARES = true
+CARES = static
+!ENDIF
+
+!IFDEF USE_CARES
+CARES_CFLAGS = /DUSE_ARES /I"$(DEVEL_INCLUDE)/cares"
+!ENDIF
!IF "$(WITH_ZLIB)"=="dll"
ZLIB_LIBS = zlib.lib
@@ -297,6 +318,11 @@ CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)
!ENDIF
+!IF "$(USE_CARES)"=="true"
+CFLAGS = $(CFLAGS) $(CARES_CFLAGS)
+LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)
+!ENDIF
+
!IF "$(USE_ZLIB)"=="true"
CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)
@@ -376,6 +402,7 @@ package: $(TARGET)
$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DISTDIR)
@echo Using SSL: $(USE_SSL)
+ @echo Using c-ares: $(USE_CARES)
@echo Using SSH2: $(USE_SSH2)
@echo Using ZLIB: $(USE_ZLIB)
@echo Using IDN: $(USE_IDN)