aboutsummaryrefslogtreecommitdiffstats
path: root/external/libcurl_android/jni/libcurl/src
diff options
context:
space:
mode:
Diffstat (limited to 'external/libcurl_android/jni/libcurl/src')
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_binmode.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_bname.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_dbg.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_hdr.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_prg.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_rea.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_see.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_wrt.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_cfgable.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_convert.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_dirhie.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_doswin.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_easysrc.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_formparse.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_getparam.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_getpass.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_help.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_helpers.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_homedir.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_hugehelp.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_libinfo.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_main.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_metalink.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_mfiles.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_msgs.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_operate.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_operhlp.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_panykey.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_paramhlp.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_parsecfg.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_setopt.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_sleep.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_urlglob.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_util.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_vms.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeenv.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeout.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/curl-tool_xattr.Po1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_binmode.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_bname.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_dbg.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_hdr.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_prg.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_rea.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_see.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_wrt.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cfgable.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_convert.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_dirhie.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_doswin.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_easysrc.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_formparse.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getparam.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getpass.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_help.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_helpers.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_homedir.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_hugehelp.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_libinfo.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_main.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_metalink.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_mfiles.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_msgs.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operate.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operhlp.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_panykey.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_paramhlp.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_parsecfg.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_setopt.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_sleep.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_urlglob.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_util.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_vms.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeenv.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeout.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_xattr.Plo1
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/Makefile.inc113
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/curl.rc63
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_binmode.c52
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_binmode.h37
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_bname.c50
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_bname.h35
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_dbg.c275
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_dbg.h35
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_hdr.c225
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_hdr.h54
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_prg.c150
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_prg.h50
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_rea.c55
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_rea.h33
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_see.c131
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_see.h46
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_wrt.c152
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cb_wrt.h33
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cfgable.c154
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_cfgable.h238
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_convert.c150
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_convert.h45
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_dirhie.c147
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_dirhie.h29
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_doswin.c299
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_doswin.h46
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_easysrc.c229
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_easysrc.h48
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_formparse.c361
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_formparse.h33
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_getparam.c1889
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_getparam.h62
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_getpass.c256
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_getpass.h36
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_help.c333
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_help.h31
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_helpers.c77
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_helpers.h32
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_homedir.c95
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_homedir.h28
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_hugehelp.c8299
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_hugehelp.h28
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_libinfo.c100
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_libinfo.h34
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_main.c275
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_main.h44
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_metalink.c963
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_metalink.h167
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_mfiles.c127
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_mfiles.h46
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_msgs.c100
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_msgs.h31
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_operate.c1858
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_operate.h29
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_operhlp.c171
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_operhlp.h39
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_panykey.c48
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_panykey.h37
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_paramhlp.c513
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_paramhlp.h54
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_parsecfg.c362
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_parsecfg.h29
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_sdecls.h153
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_setopt.c565
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_setopt.h148
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_setup.h75
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_sleep.c58
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_sleep.h29
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_urlglob.c674
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_urlglob.h77
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_util.c138
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_util.h56
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_version.h34
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_vms.c219
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_vms.h47
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_writeenv.c116
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_writeenv.h35
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_writeout.c327
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_writeout.h28
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_xattr.c87
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/tool_xattr.h28
-rwxr-xr-xexternal/libcurl_android/jni/libcurl/src/version.h35
158 files changed, 22566 insertions, 0 deletions
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_binmode.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_binmode.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_binmode.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_bname.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_bname.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_bname.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_dbg.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_dbg.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_dbg.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_hdr.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_hdr.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_hdr.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_prg.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_prg.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_prg.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_rea.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_rea.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_rea.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_see.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_see.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_see.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_wrt.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_wrt.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cb_wrt.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cfgable.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cfgable.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_cfgable.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_convert.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_convert.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_convert.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_dirhie.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_dirhie.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_dirhie.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_doswin.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_doswin.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_doswin.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_easysrc.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_easysrc.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_easysrc.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_formparse.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_formparse.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_formparse.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_getparam.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_getparam.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_getparam.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_getpass.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_getpass.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_getpass.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_help.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_help.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_help.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_helpers.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_helpers.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_helpers.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_homedir.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_homedir.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_homedir.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_hugehelp.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_hugehelp.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_hugehelp.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_libinfo.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_libinfo.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_libinfo.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_main.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_main.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_main.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_metalink.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_metalink.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_metalink.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_mfiles.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_mfiles.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_mfiles.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_msgs.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_msgs.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_msgs.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_operate.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_operate.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_operate.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_operhlp.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_operhlp.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_operhlp.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_panykey.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_panykey.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_panykey.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_paramhlp.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_paramhlp.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_paramhlp.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_parsecfg.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_parsecfg.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_parsecfg.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_setopt.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_setopt.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_setopt.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_sleep.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_sleep.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_sleep.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_urlglob.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_urlglob.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_urlglob.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_util.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_util.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_util.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_vms.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_vms.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_vms.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeenv.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeenv.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeenv.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeout.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeout.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_writeout.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_xattr.Po b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_xattr.Po
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/curl-tool_xattr.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_binmode.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_binmode.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_binmode.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_bname.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_bname.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_bname.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_dbg.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_dbg.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_dbg.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_hdr.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_hdr.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_hdr.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_prg.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_prg.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_prg.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_rea.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_rea.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_rea.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_see.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_see.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_see.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_wrt.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_wrt.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cb_wrt.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cfgable.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cfgable.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_cfgable.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_convert.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_convert.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_convert.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_dirhie.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_dirhie.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_dirhie.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_doswin.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_doswin.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_doswin.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_easysrc.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_easysrc.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_easysrc.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_formparse.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_formparse.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_formparse.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getparam.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getparam.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getparam.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getpass.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getpass.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_getpass.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_help.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_help.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_help.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_helpers.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_helpers.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_helpers.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_homedir.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_homedir.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_homedir.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_hugehelp.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_hugehelp.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_hugehelp.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_libinfo.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_libinfo.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_libinfo.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_main.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_main.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_main.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_metalink.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_metalink.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_metalink.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_mfiles.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_mfiles.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_mfiles.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_msgs.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_msgs.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_msgs.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operate.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operate.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operate.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operhlp.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operhlp.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_operhlp.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_panykey.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_panykey.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_panykey.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_paramhlp.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_paramhlp.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_paramhlp.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_parsecfg.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_parsecfg.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_parsecfg.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_setopt.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_setopt.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_setopt.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_sleep.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_sleep.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_sleep.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_urlglob.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_urlglob.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_urlglob.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_util.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_util.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_util.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_vms.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_vms.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_vms.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeenv.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeenv.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeenv.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeout.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeout.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_writeout.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_xattr.Plo b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_xattr.Plo
new file mode 100755
index 00000000..9ce06a81
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/.deps/libcurltool_la-tool_xattr.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/external/libcurl_android/jni/libcurl/src/Makefile.inc b/external/libcurl_android/jni/libcurl/src/Makefile.inc
new file mode 100755
index 00000000..64d55ecf
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/Makefile.inc
@@ -0,0 +1,113 @@
+# ./src/Makefile.inc
+# Using the backslash as line continuation character might be problematic
+# with some make flavours, as Watcom's wmake showed us already. If we
+# ever want to change this in a portable manner then we should consider
+# this idea (posted to the libcurl list by Adam Kellas):
+# CSRC1 = file1.c file2.c file3.c
+# CSRC2 = file4.c file5.c file6.c
+# CSOURCES = $(CSRC1) $(CSRC2)
+
+# libcurl has sources that provide functions named curlx_* that aren't part of
+# the official API, but we re-use the code here to avoid duplication.
+CURLX_CFILES = \
+ ../lib/strtoofft.c \
+ ../lib/strdup.c \
+ ../lib/rawstr.c \
+ ../lib/nonblock.c \
+ ../lib/warnless.c
+
+CURLX_HFILES = \
+ ../lib/curl_setup.h \
+ ../lib/strtoofft.h \
+ ../lib/strdup.h \
+ ../lib/rawstr.h \
+ ../lib/nonblock.h \
+ ../lib/warnless.h
+
+CURL_CFILES = \
+ tool_binmode.c \
+ tool_bname.c \
+ tool_cb_dbg.c \
+ tool_cb_hdr.c \
+ tool_cb_prg.c \
+ tool_cb_rea.c \
+ tool_cb_see.c \
+ tool_cb_wrt.c \
+ tool_cfgable.c \
+ tool_convert.c \
+ tool_dirhie.c \
+ tool_doswin.c \
+ tool_easysrc.c \
+ tool_formparse.c \
+ tool_getparam.c \
+ tool_getpass.c \
+ tool_help.c \
+ tool_helpers.c \
+ tool_homedir.c \
+ tool_hugehelp.c \
+ tool_libinfo.c \
+ tool_main.c \
+ tool_metalink.c \
+ tool_mfiles.c \
+ tool_msgs.c \
+ tool_operate.c \
+ tool_operhlp.c \
+ tool_panykey.c \
+ tool_paramhlp.c \
+ tool_parsecfg.c \
+ tool_setopt.c \
+ tool_sleep.c \
+ tool_urlglob.c \
+ tool_util.c \
+ tool_vms.c \
+ tool_writeenv.c \
+ tool_writeout.c \
+ tool_xattr.c
+
+CURL_HFILES = \
+ tool_binmode.h \
+ tool_bname.h \
+ tool_cb_dbg.h \
+ tool_cb_hdr.h \
+ tool_cb_prg.h \
+ tool_cb_rea.h \
+ tool_cb_see.h \
+ tool_cb_wrt.h \
+ tool_cfgable.h \
+ tool_convert.h \
+ tool_dirhie.h \
+ tool_doswin.h \
+ tool_easysrc.h \
+ tool_formparse.h \
+ tool_getparam.h \
+ tool_getpass.h \
+ tool_help.h \
+ tool_helpers.h \
+ tool_homedir.h \
+ tool_hugehelp.h \
+ tool_libinfo.h \
+ tool_main.h \
+ tool_metalink.h \
+ tool_mfiles.h \
+ tool_msgs.h \
+ tool_operate.h \
+ tool_operhlp.h \
+ tool_panykey.h \
+ tool_paramhlp.h \
+ tool_parsecfg.h \
+ tool_sdecls.h \
+ tool_setopt.h \
+ tool_setup.h \
+ tool_sleep.h \
+ tool_urlglob.h \
+ tool_util.h \
+ tool_version.h \
+ tool_vms.h \
+ tool_writeenv.h \
+ tool_writeout.h \
+ tool_xattr.h
+
+CURL_RCFILES = curl.rc
+
+curl_SOURCES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
+
diff --git a/external/libcurl_android/jni/libcurl/src/curl.rc b/external/libcurl_android/jni/libcurl/src/curl.rc
new file mode 100755
index 00000000..3db59bd3
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/curl.rc
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, 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 <winver.h>
+#include "tool_version.h"
+
+LANGUAGE 0x09,0x01
+
+#define RC_VERSION CURL_VERSION_MAJOR, CURL_VERSION_MINOR, CURL_VERSION_PATCH, 0
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION RC_VERSION
+ PRODUCTVERSION RC_VERSION
+ FILEFLAGSMASK 0x3fL
+#if defined(DEBUGBUILD) || defined(_DEBUG)
+ FILEFLAGS 1
+#else
+ FILEFLAGS 0
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "cURL, http://curl.haxx.se/\0"
+ VALUE "FileDescription", "The cURL executable\0"
+ VALUE "FileVersion", CURL_VERSION "\0"
+ VALUE "InternalName", "curl\0"
+ VALUE "OriginalFilename", "curl.exe\0"
+ VALUE "ProductName", "The cURL executable\0"
+ VALUE "ProductVersion", CURL_VERSION "\0"
+ VALUE "LegalCopyright", "© " CURL_COPYRIGHT "\0"
+ VALUE "License", "http://curl.haxx.se/docs/copyright.html\0"
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
diff --git a/external/libcurl_android/jni/libcurl/src/tool_binmode.c b/external/libcurl_android/jni/libcurl/src/tool_binmode.c
new file mode 100755
index 00000000..92033ac0
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_binmode.c
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef HAVE_SETMODE
+
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#include "tool_binmode.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void set_binmode(FILE *stream)
+{
+#ifdef O_BINARY
+# ifdef __HIGHC__
+ _setmode(stream, O_BINARY);
+# else
+ setmode(fileno(stream), O_BINARY);
+# endif
+#else
+ (void)stream;
+#endif
+}
+
+#endif /* HAVE_SETMODE */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_binmode.h b/external/libcurl_android/jni/libcurl/src/tool_binmode.h
new file mode 100755
index 00000000..b5cb08d5
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_binmode.h
@@ -0,0 +1,37 @@
+#ifndef HEADER_CURL_TOOL_BINMODE_H
+#define HEADER_CURL_TOOL_BINMODE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef HAVE_SETMODE
+
+void set_binmode(FILE *stream);
+
+#else
+
+#define set_binmode(x) Curl_nop_stmt
+
+#endif /* HAVE_SETMODE */
+
+#endif /* HEADER_CURL_TOOL_BINMODE_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_bname.c b/external/libcurl_android/jni/libcurl/src/tool_bname.c
new file mode 100755
index 00000000..27783054
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_bname.c
@@ -0,0 +1,50 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#include "tool_bname.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifndef HAVE_BASENAME
+
+char *tool_basename(char *path)
+{
+ char *s1;
+ char *s2;
+
+ s1 = strrchr(path, '/');
+ s2 = strrchr(path, '\\');
+
+ if(s1 && s2) {
+ path = (s1 > s2) ? s1 + 1 : s2 + 1;
+ }
+ else if(s1)
+ path = s1 + 1;
+ else if(s2)
+ path = s2 + 1;
+
+ return path;
+}
+
+#endif /* HAVE_BASENAME */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_bname.h b/external/libcurl_android/jni/libcurl/src/tool_bname.h
new file mode 100755
index 00000000..69cf92c1
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_bname.h
@@ -0,0 +1,35 @@
+#ifndef HEADER_CURL_TOOL_BNAME_H
+#define HEADER_CURL_TOOL_BNAME_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifndef HAVE_BASENAME
+
+char *tool_basename(char *path);
+
+#define basename(x) tool_basename((x))
+
+#endif /* HAVE_BASENAME */
+
+#endif /* HEADER_CURL_TOOL_BNAME_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_dbg.c b/external/libcurl_android/jni/libcurl/src/tool_cb_dbg.c
new file mode 100755
index 00000000..010dae3b
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_dbg.c
@@ -0,0 +1,275 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_cb_dbg.h"
+#include "tool_util.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static void dump(const char *timebuf, const char *text,
+ FILE *stream, const unsigned char *ptr, size_t size,
+ trace tracetype, curl_infotype infotype);
+
+/*
+** callback for CURLOPT_DEBUGFUNCTION
+*/
+
+int tool_debug_cb(CURL *handle, curl_infotype type,
+ unsigned char *data, size_t size,
+ void *userdata)
+{
+ struct OperationConfig *operation = userdata;
+ struct GlobalConfig *config = operation->global;
+ FILE *output = config->errors;
+ const char *text;
+ struct timeval tv;
+ struct tm *now;
+ char timebuf[20];
+ time_t secs;
+ static time_t epoch_offset;
+ static int known_offset;
+
+ (void)handle; /* not used */
+
+ if(config->tracetime) {
+ tv = tvnow();
+ 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);
+ }
+ else
+ timebuf[0] = 0;
+
+ if(!config->trace_stream) {
+ /* open for append */
+ if(curlx_strequal("-", config->trace_dump))
+ config->trace_stream = stdout;
+ else if(curlx_strequal("%", config->trace_dump))
+ /* Ok, this is somewhat hackish but we do it undocumented for now */
+ config->trace_stream = config->errors; /* aka stderr */
+ else {
+ config->trace_stream = fopen(config->trace_dump, "w");
+ config->trace_fopened = TRUE;
+ }
+ }
+
+ if(config->trace_stream)
+ output = config->trace_stream;
+
+ if(!output) {
+ warnf(operation, "Failed to create/open output");
+ return 0;
+ }
+
+ if(config->tracetype == TRACE_PLAIN) {
+ /*
+ * This is the trace look that is similar to what libcurl makes on its
+ * own.
+ */
+ static const char * const s_infotype[] = {
+ "*", "<", ">", "{", "}", "{", "}"
+ };
+ size_t i;
+ size_t st = 0;
+ static bool newl = FALSE;
+ static bool traced_data = FALSE;
+
+ switch(type) {
+ case CURLINFO_HEADER_OUT:
+ if(size > 0) {
+ for(i = 0; i < size - 1; i++) {
+ if(data[i] == '\n') { /* LF */
+ if(!newl) {
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ }
+ (void)fwrite(data + st, i - st + 1, 1, output);
+ st = i + 1;
+ newl = FALSE;
+ }
+ }
+ if(!newl)
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ (void)fwrite(data + st, i - st + 1, 1, output);
+ }
+ newl = (size && (data[size - 1] != '\n')) ? TRUE : FALSE;
+ traced_data = FALSE;
+ break;
+ case CURLINFO_TEXT:
+ case CURLINFO_HEADER_IN:
+ if(!newl)
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ (void)fwrite(data, size, 1, output);
+ newl = (size && (data[size - 1] != '\n')) ? TRUE : FALSE;
+ traced_data = FALSE;
+ break;
+ case CURLINFO_DATA_OUT:
+ case CURLINFO_DATA_IN:
+ case CURLINFO_SSL_DATA_IN:
+ case CURLINFO_SSL_DATA_OUT:
+ if(!traced_data) {
+ /* if the data is output to a tty and we're sending this debug trace
+ to stderr or stdout, we don't display the alert about the data not
+ being shown as the data _is_ shown then just not via this
+ function */
+ if(!config->isatty || ((output != stderr) && (output != stdout))) {
+ if(!newl)
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ fprintf(output, "[data not shown]\n");
+ newl = FALSE;
+ traced_data = TRUE;
+ }
+ }
+ break;
+ default: /* nada */
+ newl = FALSE;
+ traced_data = FALSE;
+ break;
+ }
+
+ return 0;
+ }
+
+#ifdef CURL_DOES_CONVERSIONS
+ /* Special processing is needed for CURLINFO_HEADER_OUT blocks
+ * if they contain both headers and data (separated by CRLFCRLF).
+ * We dump the header text and then switch type to CURLINFO_DATA_OUT.
+ */
+ if((type == CURLINFO_HEADER_OUT) && (size > 4)) {
+ size_t i;
+ for(i = 0; i < size - 4; i++) {
+ if(memcmp(&data[i], "\r\n\r\n", 4) == 0) {
+ /* dump everything through the CRLFCRLF as a sent header */
+ text = "=> Send header";
+ dump(timebuf, text, output, data, i + 4, config->tracetype, type);
+ data += i + 3;
+ size -= i + 4;
+ type = CURLINFO_DATA_OUT;
+ data += 1;
+ break;
+ }
+ }
+ }
+#endif /* CURL_DOES_CONVERSIONS */
+
+ switch (type) {
+ case CURLINFO_TEXT:
+ fprintf(output, "%s== Info: %s", timebuf, 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_HEADER_IN:
+ text = "<= Recv header";
+ break;
+ case CURLINFO_DATA_IN:
+ text = "<= Recv data";
+ break;
+ case CURLINFO_SSL_DATA_IN:
+ text = "<= Recv SSL data";
+ break;
+ case CURLINFO_SSL_DATA_OUT:
+ text = "=> Send SSL data";
+ break;
+ }
+
+ dump(timebuf, text, output, data, size, config->tracetype, type);
+ return 0;
+}
+
+static void dump(const char *timebuf, const char *text,
+ FILE *stream, const unsigned char *ptr, size_t size,
+ trace tracetype, curl_infotype infotype)
+{
+ size_t i;
+ size_t c;
+
+ unsigned int width = 0x10;
+
+ if(tracetype == TRACE_ASCII)
+ /* without the hex output, we can fit more on screen */
+ width = 0x40;
+
+ fprintf(stream, "%s%s, %zd bytes (0x%zx)\n", timebuf, text, size, size);
+
+ for(i = 0; i < size; i += width) {
+
+ fprintf(stream, "%04zx: ", i);
+
+ if(tracetype == TRACE_BIN) {
+ /* hex not disabled, show it */
+ for(c = 0; c < width; c++)
+ if(i+c < size)
+ fprintf(stream, "%02x ", ptr[i+c]);
+ else
+ fputs(" ", stream);
+ }
+
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ /* check for 0D0A; if found, skip past and start a new line of output */
+ if((tracetype == TRACE_ASCII) &&
+ (i+c+1 < size) && (ptr[i+c] == 0x0D) && (ptr[i+c+1] == 0x0A)) {
+ i += (c+2-width);
+ break;
+ }
+#ifdef CURL_DOES_CONVERSIONS
+ /* repeat the 0D0A check above but use the host encoding for CRLF */
+ if((tracetype == TRACE_ASCII) &&
+ (i+c+1 < size) && (ptr[i+c] == '\r') && (ptr[i+c+1] == '\n')) {
+ i += (c+2-width);
+ break;
+ }
+ /* convert to host encoding and print this character */
+ fprintf(stream, "%c", convert_char(infotype, ptr[i+c]));
+#else
+ (void)infotype;
+ fprintf(stream, "%c", ((ptr[i+c] >= 0x20) && (ptr[i+c] < 0x80)) ?
+ ptr[i+c] : UNPRINTABLE_CHAR);
+#endif /* CURL_DOES_CONVERSIONS */
+ /* check again for 0D0A, to avoid an extra \n if it's at width */
+ if((tracetype == TRACE_ASCII) &&
+ (i+c+2 < size) && (ptr[i+c+1] == 0x0D) && (ptr[i+c+2] == 0x0A)) {
+ i += (c+3-width);
+ break;
+ }
+ }
+ fputc('\n', stream); /* newline */
+ }
+ fflush(stream);
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_dbg.h b/external/libcurl_android/jni/libcurl/src/tool_cb_dbg.h
new file mode 100755
index 00000000..d0ed7b0d
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_dbg.h
@@ -0,0 +1,35 @@
+#ifndef HEADER_CURL_TOOL_CB_DBG_H
+#define HEADER_CURL_TOOL_CB_DBG_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+/*
+** callback for CURLOPT_DEBUGFUNCTION
+*/
+
+int tool_debug_cb(CURL *handle, curl_infotype type,
+ unsigned char *data, size_t size,
+ void *userdata);
+
+#endif /* HEADER_CURL_TOOL_CB_DBG_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_hdr.c b/external/libcurl_android/jni/libcurl/src/tool_cb_hdr.c
new file mode 100755
index 00000000..ef340f79
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_hdr.c
@@ -0,0 +1,225 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_cb_hdr.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static char *parse_filename(const char *ptr, size_t len);
+
+/*
+** callback for CURLOPT_HEADERFUNCTION
+*/
+
+size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
+{
+ struct HdrCbData *hdrcbdata = userdata;
+ struct OutStruct *outs = hdrcbdata->outs;
+ struct OutStruct *heads = hdrcbdata->heads;
+ const char *str = ptr;
+ const size_t cb = size * nmemb;
+ const char *end = (char*)ptr + cb;
+
+ /*
+ * Once that libcurl has called back tool_header_cb() the returned value
+ * is checked against the amount that was intended to be written, if
+ * it does not match then it fails with CURLE_WRITE_ERROR. So at this
+ * point returning a value different from sz*nmemb indicates failure.
+ */
+ size_t failure = (size * nmemb) ? 0 : 1;
+
+ if(!heads->config)
+ return failure;
+
+#ifdef DEBUGBUILD
+ if(size * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
+ warnf(heads->config, "Header data exceeds single call write limit!\n");
+ return failure;
+ }
+#endif
+
+ /*
+ * Write header data when curl option --dump-header (-D) is given.
+ */
+
+ if(heads->config->headerfile && heads->stream) {
+ size_t rc = fwrite(ptr, size, nmemb, heads->stream);
+ if(rc != cb)
+ return rc;
+ }
+
+ /*
+ * This callback sets the filename where output shall be written when
+ * curl options --remote-name (-O) and --remote-header-name (-J) have
+ * been simultaneously given and additionally server returns an HTTP
+ * Content-Disposition header specifying a filename property.
+ */
+
+ if(hdrcbdata->honor_cd_filename &&
+ (cb > 20) && checkprefix("Content-disposition:", str)) {
+ const char *p = str + 20;
+
+ /* look for the 'filename=' parameter
+ (encoded filenames (*=) are not supported) */
+ for(;;) {
+ char *filename;
+ size_t len;
+
+ while(*p && (p < end) && !ISALPHA(*p))
+ p++;
+ if(p > end - 9)
+ break;
+
+ if(memcmp(p, "filename=", 9)) {
+ /* no match, find next parameter */
+ while((p < end) && (*p != ';'))
+ p++;
+ continue;
+ }
+ p += 9;
+
+ /* this expression below typecasts 'cb' only to avoid
+ warning: signed and unsigned type in conditional expression
+ */
+ len = (ssize_t)cb - (p - str);
+ filename = parse_filename(p, len);
+ if(filename) {
+ outs->filename = filename;
+ outs->alloc_filename = TRUE;
+ outs->is_cd_filename = TRUE;
+ outs->s_isreg = TRUE;
+ outs->fopened = FALSE;
+ outs->stream = NULL;
+ hdrcbdata->honor_cd_filename = FALSE;
+ break;
+ }
+ else
+ return failure;
+ }
+ }
+
+ return cb;
+}
+
+/*
+ * Copies a file name part and returns an ALLOCATED data buffer.
+ */
+static char *parse_filename(const char *ptr, size_t len)
+{
+ char *copy;
+ char *p;
+ char *q;
+ char stop = '\0';
+
+ /* simple implementation of strndup() */
+ copy = malloc(len+1);
+ if(!copy)
+ return NULL;
+ memcpy(copy, ptr, len);
+ copy[len] = '\0';
+
+ p = copy;
+ if(*p == '\'' || *p == '"') {
+ /* store the starting quote */
+ stop = *p;
+ p++;
+ }
+ else
+ stop = ';';
+
+ /* if the filename contains a path, only use filename portion */
+ q = strrchr(copy, '/');
+ if(q) {
+ p = q + 1;
+ if(!*p) {
+ Curl_safefree(copy);
+ return NULL;
+ }
+ }
+
+ /* If the filename contains a backslash, only use filename portion. The idea
+ is that even systems that don't handle backslashes as path separators
+ probably want the path removed for convenience. */
+ q = strrchr(p, '\\');
+ if(q) {
+ p = q + 1;
+ if(!*p) {
+ Curl_safefree(copy);
+ return NULL;
+ }
+ }
+
+ /* scan for the end letter and stop there */
+ q = p;
+ while(*q) {
+ if(q[1] && (q[0] == '\\'))
+ q++;
+ else if(q[0] == stop)
+ break;
+ q++;
+ }
+ *q = '\0';
+
+ /* make sure the file name doesn't end in \r or \n */
+ q = strchr(p, '\r');
+ if(q)
+ *q = '\0';
+
+ q = strchr(p, '\n');
+ if(q)
+ *q = '\0';
+
+ if(copy != p)
+ memmove(copy, p, strlen(p) + 1);
+
+ /* in case we built debug enabled, we allow an evironment variable
+ * named CURL_TESTDIR to prefix the given file name to put it into a
+ * specific directory
+ */
+#ifdef DEBUGBUILD
+ {
+ char *tdir = curlx_getenv("CURL_TESTDIR");
+ if(tdir) {
+ char buffer[512]; /* suitably large */
+ snprintf(buffer, sizeof(buffer), "%s/%s", tdir, copy);
+ Curl_safefree(copy);
+ copy = strdup(buffer); /* clone the buffer, we don't use the libcurl
+ aprintf() or similar since we want to use the
+ same memory code as the "real" parse_filename
+ function */
+ curl_free(tdir);
+ }
+ }
+#endif
+
+ return copy;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_hdr.h b/external/libcurl_android/jni/libcurl/src/tool_cb_hdr.h
new file mode 100755
index 00000000..bd504313
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_hdr.h
@@ -0,0 +1,54 @@
+#ifndef HEADER_CURL_TOOL_CB_HDR_H
+#define HEADER_CURL_TOOL_CB_HDR_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+/*
+ * curl operates using a single HdrCbData struct variable, a
+ * pointer to this is passed as userdata pointer to tool_header_cb.
+ *
+ * 'outs' member is a pointer to the OutStruct variable used to keep
+ * track of information relative to curl's output writing.
+ *
+ * 'heads' member is a pointer to the OutStruct variable used to keep
+ * track of information relative to header response writing.
+ *
+ * 'honor_cd_filename' member is TRUE when tool_header_cb is allowed
+ * to honor Content-Disposition filename property and accordingly
+ * set 'outs' filename, otherwise FALSE;
+ */
+
+struct HdrCbData {
+ struct OutStruct *outs;
+ struct OutStruct *heads;
+ bool honor_cd_filename;
+};
+
+/*
+** callback for CURLOPT_HEADERFUNCTION
+*/
+
+size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata);
+
+#endif /* HEADER_CURL_TOOL_CB_HDR_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_prg.c b/external/libcurl_android/jni/libcurl/src/tool_cb_prg.c
new file mode 100755
index 00000000..9e3c5fb4
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_prg.c
@@ -0,0 +1,150 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_cb_prg.h"
+#include "tool_util.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+** callback for CURLOPT_XFERINFOFUNCTION
+*/
+
+#define MAX_BARLENGTH 256
+
+int tool_progress_cb(void *clientp,
+ curl_off_t dltotal, curl_off_t dlnow,
+ curl_off_t ultotal, curl_off_t ulnow)
+{
+ /* The original progress-bar source code was written for curl by Lars Aas,
+ and this new edition inherits some of his concepts. */
+
+ char line[MAX_BARLENGTH+1];
+ char format[40];
+ double frac;
+ double percent;
+ int barwidth;
+ int num;
+ struct timeval now = tvnow();
+ struct ProgressData *bar = (struct ProgressData *)clientp;
+ curl_off_t total;
+ curl_off_t point;
+
+ /* expected transfer size */
+ total = dltotal + ultotal + bar->initial_size;
+
+ /* we've come this far */
+ point = dlnow + ulnow + bar->initial_size;
+
+ if(bar->calls && (tvdiff(now, bar->prevtime) < 100L) && point < total)
+ /* after first call, limit progress-bar updating to 10 Hz */
+ /* update when we're at 100% even if last update is less than 200ms ago */
+ return 0;
+
+ if(point > total)
+ /* we have got more than the expected total! */
+ total = point;
+
+ /* simply count invokes */
+ bar->calls++;
+
+ if(total < 1) {
+ curl_off_t prevblock = bar->prev / 1024;
+ curl_off_t thisblock = point / 1024;
+ while(thisblock > prevblock) {
+ fprintf(bar->out, "#");
+ prevblock++;
+ }
+ }
+ else if(point != bar->prev) {
+ frac = (double)point / (double)total;
+ percent = frac * 100.0f;
+ barwidth = bar->width - 7;
+ num = (int) (((double)barwidth) * frac);
+ if(num > MAX_BARLENGTH)
+ num = MAX_BARLENGTH;
+ memset(line, '#', num);
+ line[num] = '\0';
+ snprintf(format, sizeof(format), "\r%%-%ds %%5.1f%%%%", barwidth);
+ fprintf(bar->out, format, line, percent);
+ }
+ fflush(bar->out);
+ bar->prev = point;
+ bar->prevtime = now;
+
+ return 0;
+}
+
+void progressbarinit(struct ProgressData *bar,
+ struct OperationConfig *config)
+{
+#ifdef __EMX__
+ /* 20000318 mgs */
+ int scr_size[2];
+#endif
+ char *colp;
+
+ memset(bar, 0, sizeof(struct ProgressData));
+
+ /* pass this through to progress function so
+ * it can display progress towards total file
+ * not just the part that's left. (21-may-03, dbyron) */
+ if(config->use_resume)
+ bar->initial_size = config->resume_from;
+
+/* TODO: get terminal width through ansi escapes or something similar.
+ try to update width when xterm is resized... - 19990617 larsa */
+#ifndef __EMX__
+ /* 20000318 mgs
+ * OS/2 users most likely won't have this env var set, and besides that
+ * we're using our own way to determine screen width */
+ colp = curlx_getenv("COLUMNS");
+ if(colp) {
+ char *endptr;
+ long num = strtol(colp, &endptr, 10);
+ if((endptr != colp) && (endptr == colp + strlen(colp)) && (num > 0))
+ bar->width = (int)num;
+ else
+ bar->width = 79;
+ curl_free(colp);
+ }
+ else
+ bar->width = 79;
+#else
+ /* 20000318 mgs
+ * We use this emx library call to get the screen width, and subtract
+ * one from what we got in order to avoid a problem with the cursor
+ * advancing to the next line if we print a string that is as long as
+ * the screen is wide. */
+
+ _scrsize(scr_size);
+ bar->width = scr_size[0] - 1;
+#endif
+
+ bar->out = config->global->errors;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_prg.h b/external/libcurl_android/jni/libcurl/src/tool_cb_prg.h
new file mode 100755
index 00000000..c635be80
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_prg.h
@@ -0,0 +1,50 @@
+#ifndef HEADER_CURL_TOOL_CB_PRG_H
+#define HEADER_CURL_TOOL_CB_PRG_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define CURL_PROGRESS_STATS 0 /* default progress display */
+#define CURL_PROGRESS_BAR 1
+
+struct ProgressData {
+ int calls;
+ curl_off_t prev;
+ struct timeval prevtime;
+ int width;
+ FILE *out; /* where to write everything to */
+ curl_off_t initial_size;
+};
+
+void progressbarinit(struct ProgressData *bar,
+ struct OperationConfig *config);
+
+/*
+** callback for CURLOPT_PROGRESSFUNCTION
+*/
+
+int tool_progress_cb(void *clientp,
+ curl_off_t dltotal, curl_off_t dlnow,
+ curl_off_t ultotal, curl_off_t ulnow);
+
+#endif /* HEADER_CURL_TOOL_CB_PRG_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_rea.c b/external/libcurl_android/jni/libcurl/src/tool_cb_rea.c
new file mode 100755
index 00000000..4565a15d
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_rea.c
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_cb_rea.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+** callback for CURLOPT_READFUNCTION
+*/
+
+size_t tool_read_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
+{
+ ssize_t rc;
+ struct InStruct *in = userdata;
+
+ rc = read(in->fd, buffer, sz*nmemb);
+ if(rc < 0) {
+ if(errno == EAGAIN) {
+ errno = 0;
+ in->config->readbusy = TRUE;
+ return CURL_READFUNC_PAUSE;
+ }
+ /* since size_t is unsigned we can't return negative values fine */
+ rc = 0;
+ }
+ in->config->readbusy = FALSE;
+ return (size_t)rc;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_rea.h b/external/libcurl_android/jni/libcurl/src/tool_cb_rea.h
new file mode 100755
index 00000000..4294166a
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_rea.h
@@ -0,0 +1,33 @@
+#ifndef HEADER_CURL_TOOL_CB_REA_H
+#define HEADER_CURL_TOOL_CB_REA_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+/*
+** callback for CURLOPT_READFUNCTION
+*/
+
+size_t tool_read_cb(void *buffer, size_t sz, size_t nmemb, void *userdata);
+
+#endif /* HEADER_CURL_TOOL_CB_REA_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_see.c b/external/libcurl_android/jni/libcurl/src/tool_cb_see.c
new file mode 100755
index 00000000..2f49e1d9
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_see.c
@@ -0,0 +1,131 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_cb_see.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* OUR_MAX_SEEK_L has 'long' data type, OUR_MAX_SEEK_O has 'curl_off_t,
+ both represent the same value. Maximum offset used here when we lseek
+ using a 'long' data type offset */
+
+#define OUR_MAX_SEEK_L 2147483647L - 1L
+#define OUR_MAX_SEEK_O CURL_OFF_T_C(0x7FFFFFFF) - CURL_OFF_T_C(0x1)
+
+/*
+** callback for CURLOPT_SEEKFUNCTION
+**
+** Notice that this is not supposed to return the resulting offset. This
+** shall only return CURL_SEEKFUNC_* return codes.
+*/
+
+int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
+{
+ struct InStruct *in = userdata;
+
+#if(CURL_SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)
+
+ /* The offset check following here is only interesting if curl_off_t is
+ larger than off_t and we are not using the WIN32 large file support
+ macros that provide the support to do 64bit seeks correctly */
+
+ if(offset > OUR_MAX_SEEK_O) {
+ /* Some precaution code to work around problems with different data sizes
+ to allow seeking >32bit even if off_t is 32bit. Should be very rare and
+ is really valid on weirdo-systems. */
+ curl_off_t left = offset;
+
+ if(whence != SEEK_SET)
+ /* this code path doesn't support other types */
+ return CURL_SEEKFUNC_FAIL;
+
+ if(LSEEK_ERROR == lseek(in->fd, 0, SEEK_SET))
+ /* couldn't rewind to beginning */
+ return CURL_SEEKFUNC_FAIL;
+
+ while(left) {
+ long step = (left > OUR_MAX_SEEK_O) ? OUR_MAX_SEEK_L : (long)left;
+ if(LSEEK_ERROR == lseek(in->fd, step, SEEK_CUR))
+ /* couldn't seek forwards the desired amount */
+ return CURL_SEEKFUNC_FAIL;
+ left -= step;
+ }
+ return CURL_SEEKFUNC_OK;
+ }
+#endif
+
+ if(LSEEK_ERROR == lseek(in->fd, offset, whence))
+ /* couldn't rewind, the reason is in errno but errno is just not portable
+ enough and we don't actually care that much why we failed. We'll let
+ libcurl know that it may try other means if it wants to. */
+ return CURL_SEEKFUNC_CANTSEEK;
+
+ return CURL_SEEKFUNC_OK;
+}
+
+#if defined(WIN32) && !defined(__MINGW64__)
+
+#ifdef __BORLANDC__
+/* 64-bit lseek-like function unavailable */
+# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence)
+#endif
+
+#ifdef __POCC__
+# if(__POCC__ < 450)
+/* 64-bit lseek-like function unavailable */
+# define _lseeki64(hnd,ofs,whence) _lseek(hnd,ofs,whence)
+# else
+# define _lseeki64(hnd,ofs,whence) _lseek64(hnd,ofs,whence)
+# endif
+#endif
+
+#ifdef _WIN32_WCE
+/* 64-bit lseek-like function unavailable */
+# undef _lseeki64
+# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence)
+# undef _get_osfhandle
+# define _get_osfhandle(fd) (fd)
+#endif
+
+/*
+ * Truncate a file handle at a 64-bit position 'where'.
+ */
+
+int tool_ftruncate64(int fd, curl_off_t where)
+{
+ if(_lseeki64(fd, where, SEEK_SET) < 0)
+ return -1;
+
+ if(!SetEndOfFile((HANDLE)_get_osfhandle(fd)))
+ return -1;
+
+ return 0;
+}
+
+#endif /* WIN32 && ! __MINGW64__ */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_see.h b/external/libcurl_android/jni/libcurl/src/tool_cb_see.h
new file mode 100755
index 00000000..ceb22d65
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_see.h
@@ -0,0 +1,46 @@
+#ifndef HEADER_CURL_TOOL_CB_SEE_H
+#define HEADER_CURL_TOOL_CB_SEE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#if defined(WIN32) && !defined(__MINGW64__)
+
+int tool_ftruncate64(int fd, curl_off_t where);
+
+#undef ftruncate
+#define ftruncate(fd,where) tool_ftruncate64(fd,where)
+
+#ifndef HAVE_FTRUNCATE
+# define HAVE_FTRUNCATE 1
+#endif
+
+#endif /* WIN32 && ! __MINGW64__ */
+
+/*
+** callback for CURLOPT_SEEKFUNCTION
+*/
+
+int tool_seek_cb(void *userdata, curl_off_t offset, int whence);
+
+#endif /* HEADER_CURL_TOOL_CB_SEE_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_wrt.c b/external/libcurl_android/jni/libcurl/src/tool_cb_wrt.c
new file mode 100755
index 00000000..dfbf95cc
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_wrt.c
@@ -0,0 +1,152 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_cb_wrt.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+** callback for CURLOPT_WRITEFUNCTION
+*/
+
+size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
+{
+ size_t rc;
+ struct OutStruct *outs = userdata;
+ struct OperationConfig *config = outs->config;
+
+ /*
+ * Once that libcurl has called back tool_write_cb() the returned value
+ * is checked against the amount that was intended to be written, if
+ * it does not match then it fails with CURLE_WRITE_ERROR. So at this
+ * point returning a value different from sz*nmemb indicates failure.
+ */
+ const size_t failure = (sz * nmemb) ? 0 : 1;
+
+ if(!config)
+ return failure;
+
+#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");
+ return failure;
+ }
+ }
+ else {
+ if(sz * nmemb > (size_t)CURL_MAX_WRITE_SIZE) {
+ warnf(config, "Data size exceeds single call write limit!\n");
+ return failure;
+ }
+ }
+
+ {
+ /* Some internal congruency checks on received OutStruct */
+ bool check_fails = FALSE;
+ if(outs->filename) {
+ /* regular file */
+ if(!*outs->filename)
+ check_fails = TRUE;
+ if(!outs->s_isreg)
+ check_fails = TRUE;
+ if(outs->fopened && !outs->stream)
+ check_fails = TRUE;
+ if(!outs->fopened && outs->stream)
+ check_fails = TRUE;
+ if(!outs->fopened && outs->bytes)
+ check_fails = TRUE;
+ }
+ else {
+ /* standard stream */
+ if(!outs->stream || outs->s_isreg || outs->fopened)
+ check_fails = TRUE;
+ if(outs->alloc_filename || outs->is_cd_filename || outs->init)
+ check_fails = TRUE;
+ }
+ if(check_fails) {
+ warnf(config, "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;
+ }
+
+ rc = fwrite(buffer, sz, nmemb, outs->stream);
+
+ if((sz * nmemb) == rc)
+ /* we added this amount of data to the output */
+ outs->bytes += (sz * nmemb);
+
+ if(config->readbusy) {
+ config->readbusy = FALSE;
+ curl_easy_pause(config->easy, CURLPAUSE_CONT);
+ }
+
+ if(config->nobuffer) {
+ /* output buffering disabled */
+ int res = fflush(outs->stream);
+ if(res)
+ return failure;
+ }
+
+ return rc;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cb_wrt.h b/external/libcurl_android/jni/libcurl/src/tool_cb_wrt.h
new file mode 100755
index 00000000..380d8dd6
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cb_wrt.h
@@ -0,0 +1,33 @@
+#ifndef HEADER_CURL_TOOL_CB_WRT_H
+#define HEADER_CURL_TOOL_CB_WRT_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+/*
+** callback for CURLOPT_WRITEFUNCTION
+*/
+
+size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata);
+
+#endif /* HEADER_CURL_TOOL_CB_WRT_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cfgable.c b/external/libcurl_android/jni/libcurl/src/tool_cfgable.c
new file mode 100755
index 00000000..2fdae073
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cfgable.c
@@ -0,0 +1,154 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "tool_cfgable.h"
+#include "tool_main.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void config_init(struct OperationConfig* config)
+{
+ memset(config, 0, sizeof(struct OperationConfig));
+
+ config->postfieldsize = -1;
+ config->use_httpget = FALSE;
+ config->create_dirs = FALSE;
+ config->maxredirs = DEFAULT_MAXREDIRS;
+ config->proto = CURLPROTO_ALL; /* FIXME: better to read from library */
+ config->proto_present = FALSE;
+ config->proto_redir =
+ CURLPROTO_ALL & ~(CURLPROTO_FILE|CURLPROTO_SCP); /* not FILE or SCP */
+ config->proto_redir_present = FALSE;
+}
+
+static void free_config_fields(struct OperationConfig *config)
+{
+ struct getout *urlnode;
+
+ Curl_safefree(config->random_file);
+ Curl_safefree(config->egd_file);
+ Curl_safefree(config->useragent);
+ Curl_safefree(config->cookie);
+ Curl_safefree(config->cookiejar);
+ Curl_safefree(config->cookiefile);
+
+ Curl_safefree(config->postfields);
+ Curl_safefree(config->referer);
+
+ Curl_safefree(config->headerfile);
+ Curl_safefree(config->ftpport);
+ Curl_safefree(config->iface);
+
+ Curl_safefree(config->range);
+
+ Curl_safefree(config->userpwd);
+ Curl_safefree(config->tls_username);
+ Curl_safefree(config->tls_password);
+ Curl_safefree(config->tls_authtype);
+ Curl_safefree(config->proxyuserpwd);
+ Curl_safefree(config->proxy);
+
+ Curl_safefree(config->dns_ipv6_addr);
+ Curl_safefree(config->dns_ipv4_addr);
+ Curl_safefree(config->dns_interface);
+ Curl_safefree(config->dns_servers);
+
+ Curl_safefree(config->noproxy);
+
+ Curl_safefree(config->mail_from);
+ curl_slist_free_all(config->mail_rcpt);
+ Curl_safefree(config->mail_auth);
+
+ Curl_safefree(config->netrc_file);
+
+ urlnode = config->url_list;
+ while(urlnode) {
+ struct getout *next = urlnode->next;
+ Curl_safefree(urlnode->url);
+ Curl_safefree(urlnode->outfile);
+ Curl_safefree(urlnode->infile);
+ Curl_safefree(urlnode);
+ urlnode = next;
+ }
+ config->url_list = NULL;
+ config->url_last = NULL;
+ config->url_get = NULL;
+ config->url_out = NULL;
+
+ Curl_safefree(config->cipher_list);
+ Curl_safefree(config->cert);
+ Curl_safefree(config->cert_type);
+ Curl_safefree(config->cacert);
+ Curl_safefree(config->capath);
+ Curl_safefree(config->crlfile);
+ Curl_safefree(config->key);
+ Curl_safefree(config->key_type);
+ Curl_safefree(config->key_passwd);
+ Curl_safefree(config->pubkey);
+ Curl_safefree(config->hostpubmd5);
+ Curl_safefree(config->engine);
+
+ Curl_safefree(config->customrequest);
+ Curl_safefree(config->krblevel);
+
+ Curl_safefree(config->xoauth2_bearer);
+
+ Curl_safefree(config->writeout);
+
+ curl_slist_free_all(config->quote);
+ curl_slist_free_all(config->postquote);
+ curl_slist_free_all(config->prequote);
+
+ curl_slist_free_all(config->headers);
+ curl_slist_free_all(config->proxyheaders);
+
+ if(config->httppost) {
+ curl_formfree(config->httppost);
+ config->httppost = NULL;
+ }
+ config->last_post = NULL;
+
+ curl_slist_free_all(config->telnet_options);
+ curl_slist_free_all(config->resolve);
+
+ Curl_safefree(config->socksproxy);
+ Curl_safefree(config->socks5_gssapi_service);
+
+ Curl_safefree(config->ftp_account);
+ Curl_safefree(config->ftp_alternative_to_user);
+}
+
+void config_free(struct OperationConfig *config)
+{
+ struct OperationConfig *last = config;
+
+ /* Free each of the structures in reverse order */
+ while(last) {
+ struct OperationConfig *prev = last->prev;
+
+ free_config_fields(last);
+ free(last);
+
+ last = prev;
+ }
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_cfgable.h b/external/libcurl_android/jni/libcurl/src/tool_cfgable.h
new file mode 100755
index 00000000..4ef26902
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_cfgable.h
@@ -0,0 +1,238 @@
+#ifndef HEADER_CURL_TOOL_CFGABLE_H
+#define HEADER_CURL_TOOL_CFGABLE_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "tool_sdecls.h"
+
+#include "tool_metalink.h"
+
+struct GlobalConfig;
+
+struct OperationConfig {
+ CURL *easy; /* A copy of the handle from GlobalConfig */
+ bool remote_time;
+ char *random_file;
+ char *egd_file;
+ char *useragent;
+ char *cookie; /* single line with specified cookies */
+ char *cookiejar; /* write to this file */
+ char *cookiefile; /* read from this file */
+ bool cookiesession; /* new session? */
+ bool encoding; /* Accept-Encoding please */
+ bool tr_encoding; /* Transfer-Encoding please */
+ unsigned long authtype; /* auth bitmask */
+ bool use_resume;
+ bool resume_from_current;
+ bool disable_epsv;
+ bool disable_eprt;
+ bool ftp_pret;
+ long proto;
+ bool proto_present;
+ long proto_redir;
+ bool proto_redir_present;
+ curl_off_t resume_from;
+ char *postfields;
+ curl_off_t postfieldsize;
+ char *referer;
+ double timeout;
+ double connecttimeout;
+ long maxredirs;
+ curl_off_t max_filesize;
+ char *headerfile;
+ char *ftpport;
+ char *iface;
+ int localport;
+ int localportrange;
+ unsigned short porttouse;
+ char *range;
+ long low_speed_limit;
+ long low_speed_time;
+ char *dns_servers; /* dot notation: 1.1.1.1;2.2.2.2 */
+ char *dns_interface; /* interface name */
+ char *dns_ipv4_addr; /* dot notation */
+ char *dns_ipv6_addr; /* dot notation */
+ char *userpwd;
+ char *login_options;
+ char *tls_username;
+ char *tls_password;
+ char *tls_authtype;
+ char *proxyuserpwd;
+ char *proxy;
+ int proxyver; /* set to CURLPROXY_HTTP* define */
+ char *noproxy;
+ char *mail_from;
+ struct curl_slist *mail_rcpt;
+ char *mail_auth;
+ bool sasl_ir; /* Enable/disable SASL initial response */
+ bool proxytunnel;
+ bool ftp_append; /* APPE on ftp */
+ bool use_ascii; /* select ascii or text transfer */
+ bool autoreferer; /* automatically set referer */
+ bool failonerror; /* fail on (HTTP) errors */
+ bool include_headers; /* send headers to data output */
+ bool no_body; /* don't get the body */
+ bool dirlistonly; /* only get the FTP dir list */
+ bool followlocation; /* follow http redirects */
+ bool unrestricted_auth; /* Continue to send authentication (user+password)
+ when following ocations, even when hostname
+ changed */
+ bool netrc_opt;
+ bool netrc;
+ char *netrc_file;
+ struct getout *url_list; /* point to the first node */
+ struct getout *url_last; /* point to the last/current node */
+ struct getout *url_get; /* point to the node to fill in URL */
+ struct getout *url_out; /* point to the node to fill in outfile */
+ char *cipher_list;
+ char *cert;
+ char *cert_type;
+ char *cacert;
+ char *capath;
+ char *crlfile;
+ char *key;
+ char *key_type;
+ char *key_passwd;
+ char *pubkey;
+ char *hostpubmd5;
+ char *engine;
+ bool crlf;
+ char *customrequest;
+ char *krblevel;
+ long httpversion;
+ bool nobuffer;
+ bool readbusy; /* set when reading input returns EAGAIN */
+ bool globoff;
+ bool use_httpget;
+ bool insecure_ok; /* set TRUE to allow insecure SSL connects */
+ bool create_dirs;
+ bool ftp_create_dirs;
+ bool ftp_skip_ip;
+ bool proxynegotiate;
+ bool proxyntlm;
+ bool proxydigest;
+ bool proxybasic;
+ bool proxyanyauth;
+ char *writeout; /* %-styled format string to output */
+ bool writeenv; /* write results to environment, if available */
+ struct curl_slist *quote;
+ struct curl_slist *postquote;
+ struct curl_slist *prequote;
+ long ssl_version;
+ long ip_version;
+ curl_TimeCond timecond;
+ time_t condtime;
+ struct curl_slist *headers;
+ struct curl_slist *proxyheaders;
+ struct curl_httppost *httppost;
+ struct curl_httppost *last_post;
+ struct curl_slist *telnet_options;
+ struct curl_slist *resolve;
+ HttpReq httpreq;
+
+ /* for bandwidth limiting features: */
+ curl_off_t sendpersecond; /* send to peer */
+ curl_off_t recvpersecond; /* receive from peer */
+
+ bool ftp_ssl;
+ bool ftp_ssl_reqd;
+ bool ftp_ssl_control;
+ bool ftp_ssl_ccc;
+ int ftp_ssl_ccc_mode;
+
+ char *socksproxy; /* set to server string */
+ int socksver; /* set to CURLPROXY_SOCKS* define */
+ char *socks5_gssapi_service; /* set service name for gssapi principal
+ * default rcmd */
+ int socks5_gssapi_nec ; /* The NEC reference server does not protect
+ * the encryption type exchange */
+
+ bool tcp_nodelay;
+ long req_retry; /* number of retries */
+ long retry_delay; /* delay between retries (in seconds) */
+ long retry_maxtime; /* maximum time to keep retrying */
+
+ char *ftp_account; /* for ACCT */
+ char *ftp_alternative_to_user; /* send command if USER/PASS fails */
+ int ftp_filemethod;
+ long tftp_blksize; /* TFTP BLKSIZE option */
+ bool ignorecl; /* --ignore-content-length */
+ bool disable_sessionid;
+
+ bool raw;
+ bool post301;
+ bool post302;
+ bool post303;
+ bool nokeepalive; /* for keepalive needs */
+ long alivetime;
+ bool content_disposition; /* use Content-disposition filename */
+
+ int default_node_flags; /* default flags to search for each 'node', which
+ is basically each given URL to transfer */
+
+ bool xattr; /* store metadata in extended attributes */
+ long gssapi_delegation;
+ bool ssl_allow_beast; /* allow this SSL vulnerability */
+
+ bool use_metalink; /* process given URLs as metalink XML file */
+ metalinkfile *metalinkfile_list; /* point to the first node */
+ metalinkfile *metalinkfile_last; /* point to the last/current node */
+#ifdef CURLDEBUG
+ bool test_event_based;
+#endif
+ char *xoauth2_bearer; /* XOAUTH2 bearer token */
+ bool nonpn; /* enable/disable TLS NPN extension */
+ bool noalpn; /* enable/disable TLS ALPN extension */
+
+ struct GlobalConfig *global;
+ struct OperationConfig *prev;
+ struct OperationConfig *next; /* Always last in the struct */
+};
+
+struct GlobalConfig {
+ CURL *easy; /* Once we have one, we keep it here */
+ int showerror; /* -1 == unset, default => show errors
+ 0 => -s is used to NOT show errors
+ 1 => -S has been used to show errors */
+ bool mute; /* don't show messages, --silent given */
+ bool noprogress; /* don't show progress bar --silent given */
+ bool isatty; /* Updated internally if output is a tty */
+ FILE *errors; /* Error stream, defaults to stderr */
+ bool errors_fopened; /* Whether error stream isn't stderr */
+ char *trace_dump; /* file to dump the network trace to */
+ FILE *trace_stream;
+ bool trace_fopened;
+ trace tracetype;
+ bool tracetime; /* include timestamp? */
+ int progressmode; /* CURL_PROGRESS_BAR / CURL_PROGRESS_STATS */
+ char *libcurl; /* Output libcurl code to this file name */
+
+ struct OperationConfig *first;
+ struct OperationConfig *current;
+ struct OperationConfig *last; /* Always last in the struct */
+};
+
+void config_init(struct OperationConfig *config);
+void config_free(struct OperationConfig *config);
+
+#endif /* HEADER_CURL_TOOL_CFGABLE_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_convert.c b/external/libcurl_android/jni/libcurl/src/tool_convert.c
new file mode 100755
index 00000000..ecce036a
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_convert.c
@@ -0,0 +1,150 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef CURL_DOES_CONVERSIONS
+
+#ifdef HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include "tool_convert.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef HAVE_ICONV
+
+/* curl tool iconv conversion descriptors */
+static iconv_t inbound_cd = (iconv_t)-1;
+static iconv_t outbound_cd = (iconv_t)-1;
+
+/* set default codesets for iconv */
+#ifndef CURL_ICONV_CODESET_OF_NETWORK
+# define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+#endif
+
+/*
+ * convert_to_network() is a curl tool function to convert
+ * from the host encoding to ASCII on non-ASCII platforms.
+ */
+CURLcode convert_to_network(char *buffer, size_t length)
+{
+ /* translate from the host encoding to the network encoding */
+ char *input_ptr, *output_ptr;
+ size_t res, in_bytes, out_bytes;
+
+ /* open an iconv conversion descriptor if necessary */
+ if(outbound_cd == (iconv_t)-1) {
+ outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
+ CURL_ICONV_CODESET_OF_HOST);
+ if(outbound_cd == (iconv_t)-1) {
+ return CURLE_CONV_FAILED;
+ }
+ }
+ /* call iconv */
+ input_ptr = output_ptr = buffer;
+ in_bytes = out_bytes = length;
+ res = iconv(outbound_cd, &input_ptr, &in_bytes,
+ &output_ptr, &out_bytes);
+ if((res == (size_t)-1) || (in_bytes != 0)) {
+ return CURLE_CONV_FAILED;
+ }
+
+ return CURLE_OK;
+}
+
+/*
+ * convert_from_network() is a curl tool function
+ * for performing ASCII conversions on non-ASCII platforms.
+ */
+CURLcode convert_from_network(char *buffer, size_t length)
+{
+ /* translate from the network encoding to the host encoding */
+ char *input_ptr, *output_ptr;
+ size_t res, in_bytes, out_bytes;
+
+ /* open an iconv conversion descriptor if necessary */
+ if(inbound_cd == (iconv_t)-1) {
+ inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
+ CURL_ICONV_CODESET_OF_NETWORK);
+ if(inbound_cd == (iconv_t)-1) {
+ return CURLE_CONV_FAILED;
+ }
+ }
+ /* call iconv */
+ input_ptr = output_ptr = buffer;
+ in_bytes = out_bytes = length;
+ res = iconv(inbound_cd, &input_ptr, &in_bytes,
+ &output_ptr, &out_bytes);
+ if((res == (size_t)-1) || (in_bytes != 0)) {
+ return CURLE_CONV_FAILED;
+ }
+
+ return CURLE_OK;
+}
+
+void convert_cleanup(void)
+{
+ /* close iconv conversion descriptors */
+ if(inbound_cd != (iconv_t)-1)
+ (void)iconv_close(inbound_cd);
+ if(outbound_cd != (iconv_t)-1)
+ (void)iconv_close(outbound_cd);
+}
+
+#endif /* HAVE_ICONV */
+
+char convert_char(curl_infotype infotype, char this_char)
+{
+/* determine how this specific character should be displayed */
+ switch(infotype) {
+ case CURLINFO_DATA_IN:
+ case CURLINFO_DATA_OUT:
+ case CURLINFO_SSL_DATA_IN:
+ case CURLINFO_SSL_DATA_OUT:
+ /* data, treat as ASCII */
+ if((this_char >= 0x20) && (this_char < 0x7f)) {
+ /* printable ASCII hex value: convert to host encoding */
+ (void)convert_from_network(&this_char, 1);
+ }
+ else {
+ /* non-printable ASCII, use a replacement character */
+ return UNPRINTABLE_CHAR;
+ }
+ /* fall through to default */
+ default:
+ /* treat as host encoding */
+ if(ISPRINT(this_char)
+ && (this_char != '\t')
+ && (this_char != '\r')
+ && (this_char != '\n')) {
+ /* printable characters excluding tabs and line end characters */
+ return this_char;
+ }
+ break;
+ }
+ /* non-printable, use a replacement character */
+ return UNPRINTABLE_CHAR;
+}
+
+#endif /* CURL_DOES_CONVERSIONS */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_convert.h b/external/libcurl_android/jni/libcurl/src/tool_convert.h
new file mode 100755
index 00000000..32d473f9
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_convert.h
@@ -0,0 +1,45 @@
+#ifndef HEADER_CURL_TOOL_CONVERT_H
+#define HEADER_CURL_TOOL_CONVERT_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef CURL_DOES_CONVERSIONS
+
+#ifdef HAVE_ICONV
+
+CURLcode convert_to_network(char *buffer, size_t length);
+CURLcode convert_from_network(char *buffer, size_t length);
+void convert_cleanup(void);
+
+#endif /* HAVE_ICONV */
+
+char convert_char(curl_infotype infotype, char this_char);
+
+#endif /* CURL_DOES_CONVERSIONS */
+
+#if !defined(CURL_DOES_CONVERSIONS) || !defined(HAVE_ICONV)
+#define convert_cleanup() Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_TOOL_CONVERT_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_dirhie.c b/external/libcurl_android/jni/libcurl/src/tool_dirhie.c
new file mode 100755
index 00000000..5965f7a7
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_dirhie.c
@@ -0,0 +1,147 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, 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 "tool_setup.h"
+
+#include <sys/stat.h>
+
+#ifdef WIN32
+# include <direct.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_dirhie.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef NETWARE
+# ifndef __NOVELL_LIBC__
+# define mkdir mkdir_510
+# endif
+#endif
+
+#ifdef WIN32
+# define mkdir(x,y) (mkdir)((x))
+# ifndef __POCC__
+# define F_OK 0
+# endif
+#endif
+
+static void show_dir_errno(FILE *errors, const char *name)
+{
+ switch(ERRNO) {
+#ifdef EACCES
+ case EACCES:
+ fprintf(errors, "You don't have permission to create %s.\n", name);
+ break;
+#endif
+#ifdef ENAMETOOLONG
+ case ENAMETOOLONG:
+ fprintf(errors, "The directory name %s is too long.\n", name);
+ break;
+#endif
+#ifdef EROFS
+ case EROFS:
+ fprintf(errors, "%s resides on a read-only file system.\n", name);
+ break;
+#endif
+#ifdef ENOSPC
+ case ENOSPC:
+ fprintf(errors, "No space left on the file system that will "
+ "contain the directory %s.\n", name);
+ break;
+#endif
+#ifdef EDQUOT
+ case EDQUOT:
+ fprintf(errors, "Cannot create directory %s because you "
+ "exceeded your quota.\n", name);
+ break;
+#endif
+ default :
+ fprintf(errors, "Error creating directory %s.\n", name);
+ break;
+ }
+}
+
+/*
+ * Create the needed directory hierarchy recursively in order to save
+ * multi-GETs in file output, ie:
+ * curl "http://my.site/dir[1-5]/file[1-5].txt" -o "dir#1/file#2.txt"
+ * should create all the dir* automagically
+ */
+
+CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
+{
+ char *tempdir;
+ char *tempdir2;
+ char *outdup;
+ char *dirbuildup;
+ CURLcode result = CURLE_OK;
+ size_t outlen;
+
+ outlen = strlen(outfile);
+ outdup = strdup(outfile);
+ if(!outdup)
+ return CURLE_OUT_OF_MEMORY;
+
+ dirbuildup = malloc(outlen + 1);
+ if(!dirbuildup) {
+ Curl_safefree(outdup);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ dirbuildup[0] = '\0';
+
+ tempdir = strtok(outdup, DIR_CHAR);
+
+ while(tempdir != NULL) {
+ tempdir2 = strtok(NULL, DIR_CHAR);
+ /* since strtok returns a token for the last word even
+ if not ending with DIR_CHAR, we need to prune it */
+ if(tempdir2 != NULL) {
+ size_t dlen = strlen(dirbuildup);
+ if(dlen)
+ snprintf(&dirbuildup[dlen], outlen - dlen, "%s%s", DIR_CHAR, tempdir);
+ else {
+ if(0 != strncmp(outdup, DIR_CHAR, 1))
+ strcpy(dirbuildup, tempdir);
+ else
+ snprintf(dirbuildup, outlen, "%s%s", DIR_CHAR, tempdir);
+ }
+ if(access(dirbuildup, F_OK) == -1) {
+ if(-1 == mkdir(dirbuildup,(mode_t)0000750)) {
+ show_dir_errno(errors, dirbuildup);
+ result = CURLE_WRITE_ERROR;
+ break; /* get out of loop */
+ }
+ }
+ }
+ tempdir = tempdir2;
+ }
+
+ Curl_safefree(dirbuildup);
+ Curl_safefree(outdup);
+
+ return result;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_dirhie.h b/external/libcurl_android/jni/libcurl/src/tool_dirhie.h
new file mode 100755
index 00000000..5f19575d
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_dirhie.h
@@ -0,0 +1,29 @@
+#ifndef HEADER_CURL_TOOL_DIRHIE_H
+#define HEADER_CURL_TOOL_DIRHIE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+CURLcode create_dir_hierarchy(const char *outfile, FILE *errors);
+
+#endif /* HEADER_CURL_TOOL_DIRHIE_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_doswin.c b/external/libcurl_android/jni/libcurl/src/tool_doswin.c
new file mode 100755
index 00000000..dd6e8bb8
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_doswin.c
@@ -0,0 +1,299 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(MSDOS) || defined(WIN32)
+
+#if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
+# include <libgen.h>
+#endif
+
+#ifdef WIN32
+# include "tool_cfgable.h"
+# include "tool_libinfo.h"
+#endif
+
+#include "tool_bname.h"
+#include "tool_doswin.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+ * Macros ALWAYS_TRUE and ALWAYS_FALSE are used to avoid compiler warnings.
+ */
+
+#define ALWAYS_TRUE (1)
+#define ALWAYS_FALSE (0)
+
+#if defined(_MSC_VER) && !defined(__POCC__)
+# undef ALWAYS_TRUE
+# undef ALWAYS_FALSE
+# if (_MSC_VER < 1500)
+# define ALWAYS_TRUE (0, 1)
+# define ALWAYS_FALSE (1, 0)
+# else
+# define ALWAYS_TRUE \
+__pragma(warning(push)) \
+__pragma(warning(disable:4127)) \
+(1) \
+__pragma(warning(pop))
+# define ALWAYS_FALSE \
+__pragma(warning(push)) \
+__pragma(warning(disable:4127)) \
+(0) \
+__pragma(warning(pop))
+# endif
+#endif
+
+#ifdef WIN32
+# undef PATH_MAX
+# define PATH_MAX MAX_PATH
+#endif
+
+#ifndef S_ISCHR
+# ifdef S_IFCHR
+# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+# else
+# define S_ISCHR(m) (0) /* cannot tell if file is a device */
+# endif
+#endif
+
+#ifdef WIN32
+# define _use_lfn(f) ALWAYS_TRUE /* long file names always available */
+#elif !defined(__DJGPP__) || (__DJGPP__ < 2) /* DJGPP 2.0 has _use_lfn() */
+# define _use_lfn(f) ALWAYS_FALSE /* long file names never available */
+#elif defined(__DJGPP__)
+# include <fcntl.h> /* _use_lfn(f) prototype */
+#endif
+
+static const char *msdosify (const char *file_name);
+static char *rename_if_dos_device_name (char *file_name);
+
+/*
+ * sanitize_dos_name: returns a newly allocated string holding a
+ * valid file name which will be a transformation of given argument
+ * in case this wasn't already a valid file name.
+ *
+ * This function takes ownership of given argument, free'ing it before
+ * returning. Caller is responsible of free'ing returned string. Upon
+ * out of memory condition function returns NULL.
+ */
+
+char *sanitize_dos_name(char *file_name)
+{
+ char new_name[PATH_MAX];
+
+ if(!file_name)
+ return NULL;
+
+ if(strlen(file_name) >= PATH_MAX)
+ file_name[PATH_MAX-1] = '\0'; /* truncate it */
+
+ strcpy(new_name, msdosify(file_name));
+
+ Curl_safefree(file_name);
+
+ return strdup(rename_if_dos_device_name(new_name));
+}
+
+/* The following functions are taken with modification from the DJGPP
+ * port of tar 1.12. They use algorithms originally from DJTAR. */
+
+static const char *msdosify (const char *file_name)
+{
+ static char dos_name[PATH_MAX];
+ static const char illegal_chars_dos[] = ".+, ;=[]" /* illegal in DOS */
+ "|<>\\\":?*"; /* illegal in DOS & W95 */
+ static const char *illegal_chars_w95 = &illegal_chars_dos[8];
+ int idx, dot_idx;
+ const char *s = file_name;
+ char *d = dos_name;
+ const char *const dlimit = dos_name + sizeof(dos_name) - 1;
+ const char *illegal_aliens = illegal_chars_dos;
+ size_t len = sizeof(illegal_chars_dos) - 1;
+
+ /* Support for Windows 9X VFAT systems, when available. */
+ if(_use_lfn(file_name)) {
+ illegal_aliens = illegal_chars_w95;
+ len -= (illegal_chars_w95 - illegal_chars_dos);
+ }
+
+ /* Get past the drive letter, if any. */
+ if(s[0] >= 'A' && s[0] <= 'z' && s[1] == ':') {
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ for(idx = 0, dot_idx = -1; *s && d < dlimit; s++, d++) {
+ if(memchr(illegal_aliens, *s, len)) {
+ /* Dots are special: DOS doesn't allow them as the leading character,
+ and a file name cannot have more than a single dot. We leave the
+ first non-leading dot alone, unless it comes too close to the
+ beginning of the name: we want sh.lex.c to become sh_lex.c, not
+ sh.lex-c. */
+ if(*s == '.') {
+ if(idx == 0 && (s[1] == '/' || (s[1] == '.' && s[2] == '/'))) {
+ /* Copy "./" and "../" verbatim. */
+ *d++ = *s++;
+ if(*s == '.')
+ *d++ = *s++;
+ *d = *s;
+ }
+ else if(idx == 0)
+ *d = '_';
+ else if(dot_idx >= 0) {
+ if(dot_idx < 5) { /* 5 is a heuristic ad-hoc'ery */
+ d[dot_idx - idx] = '_'; /* replace previous dot */
+ *d = '.';
+ }
+ else
+ *d = '-';
+ }
+ else
+ *d = '.';
+
+ if(*s == '.')
+ dot_idx = idx;
+ }
+ else if(*s == '+' && s[1] == '+') {
+ if(idx - 2 == dot_idx) { /* .c++, .h++ etc. */
+ *d++ = 'x';
+ *d = 'x';
+ }
+ else {
+ /* libg++ etc. */
+ memcpy (d, "plus", 4);
+ d += 3;
+ }
+ s++;
+ idx++;
+ }
+ else
+ *d = '_';
+ }
+ else
+ *d = *s;
+ if(*s == '/') {
+ idx = 0;
+ dot_idx = -1;
+ }
+ else
+ idx++;
+ }
+
+ *d = '\0';
+ return dos_name;
+}
+
+static char *rename_if_dos_device_name (char *file_name)
+{
+ /* We could have a file whose name is a device on MS-DOS. Trying to
+ * retrieve such a file would fail at best and wedge us at worst. We need
+ * to rename such files. */
+ char *base;
+ struct_stat st_buf;
+ char fname[PATH_MAX];
+
+ strncpy(fname, file_name, PATH_MAX-1);
+ fname[PATH_MAX-1] = '\0';
+ base = basename(fname);
+ if(((stat(base, &st_buf)) == 0) && (S_ISCHR(st_buf.st_mode))) {
+ size_t blen = strlen(base);
+
+ if(strlen(fname) >= PATH_MAX-1) {
+ /* Make room for the '_' */
+ blen--;
+ base[blen] = '\0';
+ }
+ /* Prepend a '_'. */
+ memmove(base + 1, base, blen + 1);
+ base[0] = '_';
+ strcpy(file_name, fname);
+ }
+ return file_name;
+}
+
+#if defined(MSDOS) && (defined(__DJGPP__) || defined(__GO32__))
+
+/*
+ * Disable program default argument globbing. We do it on our own.
+ */
+char **__crt0_glob_function(char *arg)
+{
+ (void)arg;
+ return (char**)0;
+}
+
+#endif /* MSDOS && (__DJGPP__ || __GO32__) */
+
+#ifdef WIN32
+
+/*
+ * Function to find CACert bundle on a Win32 platform using SearchPath.
+ * (SearchPath is already declared via inclusions done in setup header file)
+ * (Use the ASCII version instead of the unicode one!)
+ * The order of the directories it searches is:
+ * 1. application's directory
+ * 2. current working directory
+ * 3. Windows System directory (e.g. C:\windows\system32)
+ * 4. Windows Directory (e.g. C:\windows)
+ * 5. all directories along %PATH%
+ *
+ * For WinXP and later search order actually depends on registry value:
+ * HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeProcessSearchMode
+ */
+
+CURLcode FindWin32CACert(struct OperationConfig *config,
+ const char *bundle_file)
+{
+ CURLcode result = CURLE_OK;
+
+ /* search and set cert file only if libcurl supports SSL */
+ if(curlinfo->features & CURL_VERSION_SSL) {
+
+ DWORD res_len;
+ DWORD buf_tchar_size = PATH_MAX + 1;
+ DWORD buf_bytes_size = sizeof(TCHAR) * buf_tchar_size;
+ char *ptr = NULL;
+
+ char *buf = malloc(buf_bytes_size);
+ if(!buf)
+ return CURLE_OUT_OF_MEMORY;
+ buf[0] = '\0';
+
+ res_len = SearchPathA(NULL, bundle_file, NULL, buf_tchar_size, buf, &ptr);
+ if(res_len > 0) {
+ Curl_safefree(config->cacert);
+ config->cacert = strdup(buf);
+ if(!config->cacert)
+ result = CURLE_OUT_OF_MEMORY;
+ }
+
+ Curl_safefree(buf);
+ }
+
+ return result;
+}
+
+#endif /* WIN32 */
+
+#endif /* MSDOS || WIN32 */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_doswin.h b/external/libcurl_android/jni/libcurl/src/tool_doswin.h
new file mode 100755
index 00000000..cd216dbc
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_doswin.h
@@ -0,0 +1,46 @@
+#ifndef HEADER_CURL_TOOL_DOSWIN_H
+#define HEADER_CURL_TOOL_DOSWIN_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(MSDOS) || defined(WIN32)
+
+char *sanitize_dos_name(char *file_name);
+
+#if defined(MSDOS) && (defined(__DJGPP__) || defined(__GO32__))
+
+char **__crt0_glob_function(char *arg);
+
+#endif /* MSDOS && (__DJGPP__ || __GO32__) */
+
+#ifdef WIN32
+
+CURLcode FindWin32CACert(struct OperationConfig *config,
+ const char *bundle_file);
+
+#endif /* WIN32 */
+
+#endif /* MSDOS || WIN32 */
+
+#endif /* HEADER_CURL_TOOL_DOSWIN_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_easysrc.c b/external/libcurl_android/jni/libcurl/src/tool_easysrc.c
new file mode 100755
index 00000000..3db27bb5
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_easysrc.c
@@ -0,0 +1,229 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_easysrc.h"
+#include "tool_msgs.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* global variable definitions, for easy-interface source code generation */
+
+struct curl_slist *easysrc_decl = NULL; /* Variable declarations */
+struct curl_slist *easysrc_data = NULL; /* Build slists, forms etc. */
+struct curl_slist *easysrc_code = NULL; /* Setopt calls */
+struct curl_slist *easysrc_toohard = NULL; /* Unconvertible setopt */
+struct curl_slist *easysrc_clean = NULL; /* Clean up allocated data */
+int easysrc_form_count = 0;
+int easysrc_slist_count = 0;
+
+static const char *const srchead[]={
+ "/********* Sample code generated by the curl command line tool **********",
+ " * All curl_easy_setopt() options are documented at:",
+ " * http://curl.haxx.se/libcurl/c/curl_easy_setopt.html",
+ " ************************************************************************/",
+ "#include <curl/curl.h>",
+ "",
+ "int main(int argc, char *argv[])",
+ "{",
+ " CURLcode ret;",
+ " CURL *hnd;",
+ NULL
+};
+/* easysrc_decl declarations come here */
+/* easysrc_data initialisations come here */
+/* easysrc_code statements come here */
+static const char *const srchard[]={
+ "/* Here is a list of options the curl code used that cannot get generated",
+ " as source easily. You may select to either not use them or implement",
+ " them yourself.",
+ "",
+ NULL
+};
+static const char *const srcend[]={
+ "",
+ " return (int)ret;",
+ "}",
+ "/**** End of sample code ****/",
+ NULL
+};
+
+/* Clean up all source code if we run out of memory */
+static void easysrc_free(void)
+{
+ curl_slist_free_all(easysrc_decl);
+ easysrc_decl = NULL;
+ curl_slist_free_all(easysrc_data);
+ easysrc_data = NULL;
+ curl_slist_free_all(easysrc_code);
+ easysrc_code = NULL;
+ curl_slist_free_all(easysrc_toohard);
+ easysrc_toohard = NULL;
+ curl_slist_free_all(easysrc_clean);
+ easysrc_clean = NULL;
+}
+
+/* Add a source line to the main code or remarks */
+CURLcode easysrc_add(struct curl_slist **plist, const char *line)
+{
+ CURLcode ret = CURLE_OK;
+ struct curl_slist *list =
+ curl_slist_append(*plist, line);
+ if(!list) {
+ easysrc_free();
+ ret = CURLE_OUT_OF_MEMORY;
+ }
+ else
+ *plist = list;
+ return ret;
+}
+
+CURLcode easysrc_addf(struct curl_slist **plist, const char *fmt, ...)
+{
+ CURLcode ret;
+ char *bufp;
+ va_list ap;
+ va_start(ap, fmt);
+ bufp = curlx_mvaprintf(fmt, ap);
+ va_end(ap);
+ if(! bufp) {
+ ret = CURLE_OUT_OF_MEMORY;
+ }
+ else {
+ ret = easysrc_add(plist, bufp);
+ curl_free(bufp);
+ }
+ return ret;
+}
+
+#define CHKRET(v) do {CURLcode ret = (v); if(ret) return ret;} WHILE_FALSE
+
+CURLcode easysrc_init(void)
+{
+ CHKRET(easysrc_add(&easysrc_code,
+ "hnd = curl_easy_init();"));
+ return CURLE_OK;
+}
+
+CURLcode easysrc_perform(void)
+{
+ /* Note any setopt calls which we could not convert */
+ if(easysrc_toohard) {
+ int i;
+ struct curl_slist *ptr;
+ const char *c;
+ CHKRET(easysrc_add(&easysrc_code, ""));
+ /* Preamble comment */
+ for(i=0; ((c = srchard[i]) != NULL); i++)
+ CHKRET(easysrc_add(&easysrc_code, c));
+ /* Each unconverted option */
+ for(ptr=easysrc_toohard; ptr; ptr = ptr->next)
+ CHKRET(easysrc_add(&easysrc_code, ptr->data));
+ CHKRET(easysrc_add(&easysrc_code, ""));
+ CHKRET(easysrc_add(&easysrc_code, "*/"));
+
+ curl_slist_free_all(easysrc_toohard);
+ easysrc_toohard = NULL;
+ }
+
+ CHKRET(easysrc_add(&easysrc_code, ""));
+ CHKRET(easysrc_add(&easysrc_code, "ret = curl_easy_perform(hnd);"));
+ CHKRET(easysrc_add(&easysrc_code, ""));
+
+ return CURLE_OK;
+}
+
+CURLcode easysrc_cleanup(void)
+{
+ CHKRET(easysrc_add(&easysrc_code, "curl_easy_cleanup(hnd);"));
+ CHKRET(easysrc_add(&easysrc_code, "hnd = NULL;"));
+
+ return CURLE_OK;
+}
+
+void dumpeasysrc(struct GlobalConfig *config)
+{
+ struct curl_slist *ptr;
+ char *o = config->libcurl;
+
+ if(o) {
+ FILE *out;
+ bool fopened = FALSE;
+ if(strcmp(o, "-")) {
+ out = fopen(o, "w");
+ fopened = TRUE;
+ }
+ else
+ out = stdout;
+ if(!out)
+ warnf(config->current, "Failed to open %s to write libcurl code!\n", o);
+ else {
+ int i;
+ const char *c;
+
+ for(i=0; ((c = srchead[i]) != NULL); i++)
+ fprintf(out, "%s\n", c);
+
+ /* Declare variables used for complex setopt values */
+ for(ptr=easysrc_decl; ptr; ptr = ptr->next)
+ fprintf(out, " %s\n", ptr->data);
+
+ /* Set up complex values for setopt calls */
+ if(easysrc_data) {
+ fprintf(out, "\n");
+
+ for(ptr=easysrc_data; ptr; ptr = ptr->next)
+ fprintf(out, " %s\n", ptr->data);
+ }
+
+ fprintf(out, "\n");
+ for(ptr=easysrc_code; ptr; ptr = ptr->next) {
+ if(ptr->data[0]) {
+ fprintf(out, " %s\n", ptr->data);
+ }
+ else {
+ fprintf(out, "\n");
+ }
+ }
+
+ for(ptr=easysrc_clean; ptr; ptr = ptr->next)
+ fprintf(out, " %s\n", ptr->data);
+
+ for(i=0; ((c = srcend[i]) != NULL); i++)
+ fprintf(out, "%s\n", c);
+
+ if(fopened)
+ fclose(out);
+ }
+ }
+
+ easysrc_free();
+}
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_easysrc.h b/external/libcurl_android/jni/libcurl/src/tool_easysrc.h
new file mode 100755
index 00000000..07a4b787
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_easysrc.h
@@ -0,0 +1,48 @@
+#ifndef HEADER_CURL_TOOL_EASYSRC_H
+#define HEADER_CURL_TOOL_EASYSRC_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+/* global variable declarations, for easy-interface source code generation */
+
+extern struct curl_slist *easysrc_decl; /* Variable declarations */
+extern struct curl_slist *easysrc_data; /* Build slists, forms etc. */
+extern struct curl_slist *easysrc_code; /* Setopt calls etc. */
+extern struct curl_slist *easysrc_toohard; /* Unconvertible setopt */
+extern struct curl_slist *easysrc_clean; /* Clean up (reverse order) */
+
+extern int easysrc_form_count; /* Number of curl_httppost variables */
+extern int easysrc_slist_count; /* Number of curl_slist variables */
+
+extern CURLcode easysrc_init(void);
+extern CURLcode easysrc_add(struct curl_slist **plist, const char *bupf);
+extern CURLcode easysrc_addf(struct curl_slist **plist, const char *fmt, ...);
+extern CURLcode easysrc_perform(void);
+extern CURLcode easysrc_cleanup(void);
+
+void dumpeasysrc(struct GlobalConfig *config);
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
+
+#endif /* HEADER_CURL_TOOL_EASYSRC_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_formparse.c b/external/libcurl_android/jni/libcurl/src/tool_formparse.c
new file mode 100755
index 00000000..1dcd897e
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_formparse.c
@@ -0,0 +1,361 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, 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 "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_mfiles.h"
+#include "tool_msgs.h"
+#include "tool_formparse.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+
+/*
+ * helper function to get a word from form param
+ * after call get_parm_word, str either point to string end
+ * or point to any of end chars.
+ */
+static char *get_param_word(char **str, char **end_pos)
+{
+ char *ptr = *str;
+ char *word_begin = NULL;
+ char *ptr2;
+ char *escape = NULL;
+ const char *end_chars = ";,";
+
+ /* the first non-space char is here */
+ word_begin = ptr;
+ if(*ptr == '"') {
+ ++ptr;
+ while(*ptr) {
+ if(*ptr == '\\') {
+ if(ptr[1] == '\\' || ptr[1] == '"') {
+ /* remember the first escape position */
+ if(!escape)
+ escape = ptr;
+ /* skip escape of back-slash or double-quote */
+ ptr += 2;
+ continue;
+ }
+ }
+ if(*ptr == '"') {
+ *end_pos = ptr;
+ if(escape) {
+ /* has escape, we restore the unescaped string here */
+ ptr = ptr2 = escape;
+ do {
+ if(*ptr == '\\' && (ptr[1] == '\\' || ptr[1] == '"'))
+ ++ptr;
+ *ptr2++ = *ptr++;
+ }
+ while(ptr < *end_pos);
+ *end_pos = ptr2;
+ }
+ while(*ptr && NULL==strchr(end_chars, *ptr))
+ ++ptr;
+ *str = ptr;
+ return word_begin+1;
+ }
+ ++ptr;
+ }
+ /* end quote is missing, treat it as non-quoted. */
+ ptr = word_begin;
+ }
+
+ while(*ptr && NULL==strchr(end_chars, *ptr))
+ ++ptr;
+ *str = *end_pos = ptr;
+ return word_begin;
+}
+
+/***************************************************************************
+ *
+ * formparse()
+ *
+ * Reads a 'name=value' parameter and builds the appropriate linked list.
+ *
+ * Specify files to upload with 'name=@filename', or 'name=@"filename"'
+ * in case the filename contain ',' or ';'. Supports specified
+ * given Content-Type of the files. Such as ';type=<content-type>'.
+ *
+ * If literal_value is set, any initial '@' or '<' in the value string
+ * loses its special meaning, as does any embedded ';type='.
+ *
+ * You may specify more than one file for a single name (field). Specify
+ * multiple files by writing it like:
+ *
+ * 'name=@filename,filename2,filename3'
+ *
+ * or use double-quotes quote the filename:
+ *
+ * 'name=@"filename","filename2","filename3"'
+ *
+ * If you want content-types specified for each too, write them like:
+ *
+ * 'name=@filename;type=image/gif,filename2,filename3'
+ *
+ * If you want custom headers added for a single part, write them in a separate
+ * file and do like this:
+ *
+ * 'name=foo;headers=@headerfile' or why not
+ * 'name=@filemame;headers=@headerfile'
+ *
+ * To upload a file, but to fake the file name that will be included in the
+ * formpost, do like this:
+ *
+ * 'name=@filename;filename=/dev/null' or quote the faked filename like:
+ * 'name=@filename;filename="play, play, and play.txt"'
+ *
+ * If filename/path contains ',' or ';', it must be quoted by double-quotes,
+ * else curl will fail to figure out the correct filename. if the filename
+ * tobe quoted contains '"' or '\', '"' and '\' must be escaped by backslash.
+ *
+ * This function uses curl_formadd to fulfill it's job. Is heavily based on
+ * the old curl_formparse code.
+ *
+ ***************************************************************************/
+
+int formparse(struct OperationConfig *config,
+ const char *input,
+ struct curl_httppost **httppost,
+ struct curl_httppost **last_post,
+ bool literal_value)
+{
+ /* nextarg MUST be a string in the format 'name=contents' and we'll
+ build a linked list with the info */
+ char name[256];
+ char *contents = NULL;
+ char type_major[128] = "";
+ char type_minor[128] = "";
+ char *contp;
+ const char *type = NULL;
+ char *sep;
+
+ if((1 == sscanf(input, "%255[^=]=", name)) &&
+ ((contp = strchr(input, '=')) != NULL)) {
+ /* the input was using the correct format */
+
+ /* Allocate the contents */
+ contents = strdup(contp+1);
+ if(!contents) {
+ fprintf(config->global->errors, "out of memory\n");
+ return 1;
+ }
+ contp = contents;
+
+ if('@' == contp[0] && !literal_value) {
+
+ /* we use the @-letter to indicate file name(s) */
+
+ struct multi_files *multi_start = NULL;
+ struct multi_files *multi_current = NULL;
+
+ char *ptr = contp;
+ char *end = ptr + strlen(ptr);
+
+ do {
+ /* since this was a file, it may have a content-type specifier
+ at the end too, or a filename. Or both. */
+ char *filename = NULL;
+ char *word_end;
+ bool semicolon;
+
+ type = NULL;
+
+ ++ptr;
+ contp = get_param_word(&ptr, &word_end);
+ semicolon = (';' == *ptr) ? TRUE : FALSE;
+ *word_end = '\0'; /* terminate the contp */
+
+ /* have other content, continue parse */
+ while(semicolon) {
+ /* have type or filename field */
+ ++ptr;
+ while(*ptr && (ISSPACE(*ptr)))
+ ++ptr;
+
+ if(checkprefix("type=", ptr)) {
+ /* set type pointer */
+ type = &ptr[5];
+
+ /* 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");
+ Curl_safefree(contents);
+ FreeMultiInfo(&multi_start, &multi_current);
+ return 2; /* illegal content-type syntax! */
+ }
+
+ /* now point beyond the content-type specifier */
+ sep = (char *)type + strlen(type_major)+strlen(type_minor)+1;
+
+ /* there's a semicolon following - we check if it is a filename
+ specified and if not we simply assume that it is text that
+ the user wants included in the type and include that too up
+ to the next sep. */
+ ptr = sep;
+ if(*sep==';') {
+ if(!checkprefix(";filename=", sep)) {
+ ptr = sep + 1;
+ (void)get_param_word(&ptr, &sep);
+ semicolon = (';' == *ptr) ? TRUE : FALSE;
+ }
+ }
+ else
+ semicolon = FALSE;
+
+ if(*sep)
+ *sep = '\0'; /* zero terminate type string */
+ }
+ else if(checkprefix("filename=", ptr)) {
+ ptr += 9;
+ filename = get_param_word(&ptr, &word_end);
+ semicolon = (';' == *ptr) ? TRUE : FALSE;
+ *word_end = '\0';
+ }
+ else {
+ /* unknown prefix, skip to next block */
+ char *unknown = NULL;
+ unknown = get_param_word(&ptr, &word_end);
+ semicolon = (';' == *ptr) ? TRUE : FALSE;
+ if(*unknown) {
+ *word_end = '\0';
+ warnf(config, "skip unknown form field: %s\n", unknown);
+ }
+ }
+ }
+ /* now ptr point to comma or string end */
+
+
+ /* if type == NULL curl_formadd takes care of the problem */
+
+ if(*contp && !AddMultiFiles(contp, type, filename, &multi_start,
+ &multi_current)) {
+ warnf(config, "Error building form post!\n");
+ Curl_safefree(contents);
+ FreeMultiInfo(&multi_start, &multi_current);
+ return 3;
+ }
+
+ /* *ptr could be '\0', so we just check with the string end */
+ } while(ptr < end); /* loop if there's another file name */
+
+ /* now we add the multiple files section */
+ if(multi_start) {
+ struct curl_forms *forms = NULL;
+ struct multi_files *start = multi_start;
+ unsigned int i, count = 0;
+ while(start) {
+ start = start->next;
+ ++count;
+ }
+ forms = malloc((count+1)*sizeof(struct curl_forms));
+ if(!forms) {
+ fprintf(config->global->errors, "Error building form post!\n");
+ Curl_safefree(contents);
+ FreeMultiInfo(&multi_start, &multi_current);
+ return 4;
+ }
+ for(i = 0, start = multi_start; i < count; ++i, start = start->next) {
+ forms[i].option = start->form.option;
+ forms[i].value = start->form.value;
+ }
+ forms[count].option = CURLFORM_END;
+ FreeMultiInfo(&multi_start, &multi_current);
+ if(curl_formadd(httppost, last_post,
+ CURLFORM_COPYNAME, name,
+ CURLFORM_ARRAY, forms, CURLFORM_END) != 0) {
+ warnf(config, "curl_formadd failed!\n");
+ Curl_safefree(forms);
+ Curl_safefree(contents);
+ return 5;
+ }
+ Curl_safefree(forms);
+ }
+ }
+ else {
+ struct curl_forms info[4];
+ int i = 0;
+ char *ct = literal_value ? NULL : strstr(contp, ";type=");
+
+ info[i].option = CURLFORM_COPYNAME;
+ info[i].value = name;
+ i++;
+
+ if(ct) {
+ info[i].option = CURLFORM_CONTENTTYPE;
+ info[i].value = &ct[6];
+ i++;
+ ct[0] = '\0'; /* zero terminate here */
+ }
+
+ if(contp[0]=='<' && !literal_value) {
+ info[i].option = CURLFORM_FILECONTENT;
+ info[i].value = contp+1;
+ i++;
+ info[i].option = CURLFORM_END;
+
+ 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);
+ Curl_safefree(contents);
+ return 6;
+ }
+ }
+ else {
+#ifdef CURL_DOES_CONVERSIONS
+ if(convert_to_network(contp, strlen(contp))) {
+ warnf(config, "curl_formadd failed!\n");
+ Curl_safefree(contents);
+ return 7;
+ }
+#endif
+ info[i].option = CURLFORM_COPYCONTENTS;
+ info[i].value = contp;
+ i++;
+ info[i].option = CURLFORM_END;
+ if(curl_formadd(httppost, last_post,
+ CURLFORM_ARRAY, info, CURLFORM_END) != 0) {
+ warnf(config, "curl_formadd failed!\n");
+ Curl_safefree(contents);
+ return 8;
+ }
+ }
+ }
+
+ }
+ else {
+ warnf(config, "Illegally formatted input field!\n");
+ return 1;
+ }
+ Curl_safefree(contents);
+ return 0;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_formparse.h b/external/libcurl_android/jni/libcurl/src/tool_formparse.h
new file mode 100755
index 00000000..f7736264
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_formparse.h
@@ -0,0 +1,33 @@
+#ifndef HEADER_CURL_TOOL_FORMPARSE_H
+#define HEADER_CURL_TOOL_FORMPARSE_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+int formparse(struct OperationConfig *config,
+ const char *input,
+ struct curl_httppost **httppost,
+ struct curl_httppost **last_post,
+ bool literal_value);
+
+#endif /* HEADER_CURL_TOOL_FORMPARSE_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_getparam.c b/external/libcurl_android/jni/libcurl/src/tool_getparam.c
new file mode 100755
index 00000000..180878ba
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_getparam.c
@@ -0,0 +1,1889 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_binmode.h"
+#include "tool_cfgable.h"
+#include "tool_cb_prg.h"
+#include "tool_formparse.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+#include "tool_libinfo.h"
+#include "tool_metalink.h"
+#include "tool_msgs.h"
+#include "tool_paramhlp.h"
+#include "tool_parsecfg.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef MSDOS
+# define USE_WATT32
+#endif
+
+#define GetStr(str,val) do { \
+ if(*(str)) { \
+ free(*(str)); \
+ *(str) = NULL; \
+ } \
+ if((val)) { \
+ *(str) = strdup((val)); \
+ if(!(*(str))) \
+ return PARAM_NO_MEM; \
+ } \
+} WHILE_FALSE
+
+struct LongShort {
+ const char *letter; /* short name option */
+ const char *lname; /* long name option */
+ bool extraparam; /* whether it takes an additional argument */
+};
+
+static const struct LongShort aliases[]= {
+ /* all these ones, starting with "*" or "$" as a short-option have *no*
+ short option to mention. */
+ {"*", "url", TRUE},
+ {"*4", "dns-ipv4-addr", TRUE},
+ {"*6", "dns-ipv6-addr", TRUE},
+ {"*a", "random-file", TRUE},
+ {"*b", "egd-file", TRUE},
+ {"*B", "oauth2-bearer", TRUE},
+ {"*c", "connect-timeout", TRUE},
+ {"*d", "ciphers", TRUE},
+ {"*D", "dns-interface", TRUE},
+ {"*e", "disable-epsv", FALSE},
+ {"*E", "epsv", FALSE},
+ /* 'epsv' made like this to make --no-epsv and --epsv to work
+ although --disable-epsv is the documented option */
+#ifdef USE_ENVIRONMENT
+ {"*f", "environment", FALSE},
+#endif
+ {"*F", "dns-servers", TRUE},
+ {"*g", "trace", TRUE},
+ {"*G", "npn", FALSE},
+ {"*h", "trace-ascii", TRUE},
+ {"*H", "alpn", FALSE},
+ {"*i", "limit-rate", TRUE},
+ {"*j", "compressed", FALSE},
+ {"*J", "tr-encoding", FALSE},
+ {"*k", "digest", FALSE},
+ {"*l", "negotiate", FALSE},
+ {"*m", "ntlm", FALSE},
+ {"*M", "ntlm-wb", FALSE},
+ {"*n", "basic", FALSE},
+ {"*o", "anyauth", FALSE},
+#ifdef USE_WATT32
+ {"*p", "wdebug", FALSE},
+#endif
+ {"*q", "ftp-create-dirs", FALSE},
+ {"*r", "create-dirs", FALSE},
+ {"*s", "max-redirs", TRUE},
+ {"*t", "proxy-ntlm", FALSE},
+ {"*u", "crlf", FALSE},
+ {"*v", "stderr", TRUE},
+ {"*w", "interface", TRUE},
+ {"*x", "krb" , TRUE},
+ {"*x", "krb4" , TRUE},
+ /* 'krb4' is the previous name */
+ {"*y", "max-filesize", TRUE},
+ {"*z", "disable-eprt", FALSE},
+ {"*Z", "eprt", FALSE},
+ /* 'eprt' made like this to make --no-eprt and --eprt to work
+ although --disable-eprt is the documented option */
+ {"$a", "ftp-ssl", FALSE},
+ /* 'ftp-ssl' deprecated name since 7.20.0 */
+ {"$a", "ssl", FALSE},
+ /* 'ssl' new option name in 7.20.0, previously this was ftp-ssl */
+ {"$b", "ftp-pasv", FALSE},
+ {"$c", "socks5", TRUE},
+ {"$c", "socks", TRUE},
+ /* 'socks' is how the option once was documented but we prefer
+ the --socks5 version for explicit version */
+ {"$d", "tcp-nodelay", FALSE},
+ {"$e", "proxy-digest", FALSE},
+ {"$f", "proxy-basic", FALSE},
+ {"$g", "retry", TRUE},
+ {"$h", "retry-delay", TRUE},
+ {"$i", "retry-max-time", TRUE},
+ {"$k", "proxy-negotiate", FALSE},
+ {"$m", "ftp-account", TRUE},
+ {"$n", "proxy-anyauth", FALSE},
+ {"$o", "trace-time", FALSE},
+ {"$p", "ignore-content-length", FALSE},
+ {"$q", "ftp-skip-pasv-ip", FALSE},
+ {"$r", "ftp-method", TRUE},
+ {"$s", "local-port", TRUE},
+ {"$t", "socks4", TRUE},
+ {"$T", "socks4a", TRUE},
+ {"$u", "ftp-alternative-to-user", TRUE},
+ {"$v", "ftp-ssl-reqd", FALSE},
+ /* 'ftp-ssl-reqd' deprecated name since 7.20.0 */
+ {"$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 */
+ {"$x", "ftp-ssl-control", FALSE},
+ {"$y", "ftp-ssl-ccc", FALSE},
+ {"$j", "ftp-ssl-ccc-mode", TRUE},
+ {"$z", "libcurl", TRUE},
+ {"$#", "raw", FALSE},
+ {"$0", "post301", FALSE},
+ {"$1", "keepalive", FALSE},
+ /* 'keepalive' listed as --no-keepalive in the help */
+ {"$2", "socks5-hostname", TRUE},
+ {"$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
+ {"$8", "proxy1.0", TRUE},
+ {"$9", "tftp-blksize", TRUE},
+ {"$A", "mail-from", TRUE},
+ {"$B", "mail-rcpt", TRUE},
+ {"$C", "ftp-pret", FALSE},
+ {"$D", "proto", TRUE},
+ {"$E", "proto-redir", TRUE},
+ {"$F", "resolve", TRUE},
+ {"$G", "delegation", TRUE},
+ {"$H", "mail-auth", TRUE},
+ {"$I", "post303", FALSE},
+ {"$J", "metalink", FALSE},
+ {"$K", "sasl-ir", FALSE},
+ {"$L", "test-event", FALSE},
+ {"0", "http1.0", FALSE},
+ {"01", "http1.1", FALSE},
+ {"02", "http2", FALSE},
+ {"1", "tlsv1", FALSE},
+ {"10", "tlsv1.0", FALSE},
+ {"11", "tlsv1.1", FALSE},
+ {"12", "tlsv1.2", FALSE},
+ {"2", "sslv2", FALSE},
+ {"3", "sslv3", FALSE},
+ {"4", "ipv4", FALSE},
+ {"6", "ipv6", FALSE},
+ {"a", "append", FALSE},
+ {"A", "user-agent", TRUE},
+ {"b", "cookie", TRUE},
+ {"B", "use-ascii", FALSE},
+ {"c", "cookie-jar", TRUE},
+ {"C", "continue-at", TRUE},
+ {"d", "data", TRUE},
+ {"da", "data-ascii", TRUE},
+ {"db", "data-binary", TRUE},
+ {"de", "data-urlencode", TRUE},
+ {"D", "dump-header", TRUE},
+ {"e", "referer", TRUE},
+ {"E", "cert", TRUE},
+ {"Ea", "cacert", TRUE},
+ {"Eb", "cert-type", TRUE},
+ {"Ec", "key", TRUE},
+ {"Ed", "key-type", TRUE},
+ {"Ee", "pass", TRUE},
+ {"Ef", "engine", TRUE},
+ {"Eg", "capath ", TRUE},
+ {"Eh", "pubkey", TRUE},
+ {"Ei", "hostpubmd5", TRUE},
+ {"Ej", "crlfile", TRUE},
+ {"Ek", "tlsuser", TRUE},
+ {"El", "tlspassword", TRUE},
+ {"Em", "tlsauthtype", TRUE},
+ {"En", "ssl-allow-beast", FALSE},
+ {"Eo", "login-options", TRUE},
+ {"f", "fail", FALSE},
+ {"F", "form", TRUE},
+ {"Fs", "form-string", TRUE},
+ {"g", "globoff", FALSE},
+ {"G", "get", FALSE},
+ {"h", "help", FALSE},
+ {"H", "header", TRUE},
+ {"Hp", "proxy-header", TRUE},
+ {"i", "include", FALSE},
+ {"I", "head", FALSE},
+ {"j", "junk-session-cookies", FALSE},
+ {"J", "remote-header-name", FALSE},
+ {"k", "insecure", FALSE},
+ {"K", "config", TRUE},
+ {"l", "list-only", FALSE},
+ {"L", "location", FALSE},
+ {"Lt", "location-trusted", FALSE},
+ {"m", "max-time", TRUE},
+ {"M", "manual", FALSE},
+ {"n", "netrc", FALSE},
+ {"no", "netrc-optional", FALSE},
+ {"ne", "netrc-file", TRUE},
+ {"N", "buffer", FALSE},
+ /* 'buffer' listed as --no-buffer in the help */
+ {"o", "output", TRUE},
+ {"O", "remote-name", FALSE},
+ {"Oa", "remote-name-all", FALSE},
+ {"p", "proxytunnel", FALSE},
+ {"P", "ftpport", TRUE},
+ /* 'ftpport' old version */
+ {"P", "ftp-port", TRUE},
+ {"q", "disable", FALSE},
+ {"Q", "quote", TRUE},
+ {"r", "range", TRUE},
+ {"R", "remote-time", FALSE},
+ {"s", "silent", FALSE},
+ {"S", "show-error", FALSE},
+ {"t", "telnet-options", TRUE},
+ /* 'telnet-options' documented as telnet-option */
+ {"T", "upload-file", TRUE},
+ {"u", "user", TRUE},
+ {"U", "proxy-user", TRUE},
+ {"v", "verbose", FALSE},
+ {"V", "version", FALSE},
+ {"w", "write-out", TRUE},
+ {"x", "proxy", TRUE},
+ {"X", "request", TRUE},
+ {"X", "http-request", TRUE},
+ /* 'http-request' OBSOLETE VERSION */
+ {"Y", "speed-limit", TRUE},
+ {"y", "speed-time", TRUE},
+ {"z", "time-cond", TRUE},
+ {"#", "progress-bar", FALSE},
+ {":", "next", FALSE},
+ {"~", "xattr", FALSE},
+};
+
+/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
+ * We allow ':' and '\' to be escaped by '\' so that we can use certificate
+ * nicknames containing ':'. See <https://sourceforge.net/p/curl/bugs/1196/>
+ * for details. */
+#ifndef UNITTESTS
+static
+#endif
+void parse_cert_parameter(const char *cert_parameter,
+ char **certname,
+ char **passphrase)
+{
+ size_t param_length = strlen(cert_parameter);
+ size_t span;
+ const char *param_place = NULL;
+ char *certname_place = NULL;
+ *certname = NULL;
+ *passphrase = NULL;
+
+ /* most trivial assumption: cert_parameter is empty */
+ if(param_length == 0)
+ return;
+
+ /* next less trivial: cert_parameter contains no colon nor backslash; this
+ * means no passphrase was given and no characters escaped */
+ if(!strpbrk(cert_parameter, ":\\")) {
+ *certname = strdup(cert_parameter);
+ return;
+ }
+ /* deal with escaped chars; find unescaped colon if it exists */
+ certname_place = malloc(param_length + 1);
+ if(!certname_place)
+ return;
+
+ *certname = certname_place;
+ param_place = cert_parameter;
+ while(*param_place) {
+ span = strcspn(param_place, ":\\");
+ strncpy(certname_place, param_place, span);
+ param_place += span;
+ certname_place += span;
+ /* we just ate all the non-special chars. now we're on either a special
+ * char or the end of the string. */
+ switch(*param_place) {
+ case '\0':
+ break;
+ case '\\':
+ param_place++;
+ switch(*param_place) {
+ case '\0':
+ *certname_place++ = '\\';
+ break;
+ case '\\':
+ *certname_place++ = '\\';
+ param_place++;
+ break;
+ case ':':
+ *certname_place++ = ':';
+ param_place++;
+ break;
+ default:
+ *certname_place++ = '\\';
+ *certname_place++ = *param_place;
+ param_place++;
+ break;
+ }
+ break;
+ case ':':
+ /* Since we live in a world of weirdness and confusion, the win32
+ dudes can use : when using drive letters and thus c:\file:password
+ needs to work. In order not to break compatibility, we still use : as
+ separator, but we try to detect when it is used for a file name! On
+ windows. */
+#ifdef WIN32
+ if(param_place &&
+ (param_place == &cert_parameter[1]) &&
+ (cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
+ (ISALPHA(cert_parameter[0])) ) {
+ /* colon in the second column, followed by a backslash, and the
+ first character is an alphabetic letter:
+
+ this is a drive letter colon */
+ *certname_place++ = ':';
+ param_place++;
+ break;
+ }
+#endif
+ /* escaped colons and Windows drive letter colons were handled
+ * above; if we're still here, this is a separating colon */
+ param_place++;
+ if(strlen(param_place) > 0) {
+ *passphrase = strdup(param_place);
+ }
+ goto done;
+ }
+ }
+done:
+ *certname_place = '\0';
+}
+
+ParameterError getparameter(char *flag, /* f or -long-flag */
+ char *nextarg, /* NULL if unset */
+ bool *usedarg, /* set to TRUE if the arg
+ has been used */
+ struct GlobalConfig *global,
+ struct OperationConfig *config)
+{
+ char letter;
+ char subletter = '\0'; /* subletters can only occur on long options */
+ int rc;
+ const char *parse = NULL;
+ unsigned int j;
+ time_t now;
+ int hit = -1;
+ bool longopt = FALSE;
+ bool singleopt = FALSE; /* when true means '-o foo' used '-ofoo' */
+ ParameterError err;
+ bool toggle = TRUE; /* how to switch boolean options, on or off. Controlled
+ by using --OPTION or --no-OPTION */
+
+
+ if(('-' != flag[0]) ||
+ (('-' == flag[0]) && ('-' == flag[1]))) {
+ /* this should be a long name */
+ char *word = ('-' == flag[0]) ? flag+2 : flag;
+ size_t fnam = strlen(word);
+ int numhits = 0;
+
+ if(!strncmp(word, "no-", 3)) {
+ /* disable this option but ignore the "no-" part when looking for it */
+ word += 3;
+ toggle = FALSE;
+ }
+
+ for(j = 0; j < sizeof(aliases)/sizeof(aliases[0]); j++) {
+ if(curlx_strnequal(aliases[j].lname, word, fnam)) {
+ longopt = TRUE;
+ numhits++;
+ if(curlx_raw_equal(aliases[j].lname, word)) {
+ parse = aliases[j].letter;
+ hit = j;
+ numhits = 1; /* a single unique hit */
+ break;
+ }
+ parse = aliases[j].letter;
+ hit = j;
+ }
+ }
+ if(numhits > 1) {
+ /* this is at least the second match! */
+ return PARAM_OPTION_AMBIGUOUS;
+ }
+ if(hit < 0) {
+ return PARAM_OPTION_UNKNOWN;
+ }
+ }
+ else {
+ flag++; /* prefixed with one dash, pass it */
+ hit = -1;
+ parse = flag;
+ }
+
+ do {
+ /* we can loop here if we have multiple single-letters */
+
+ if(!longopt) {
+ if(NULL != parse) {
+ letter = (char)*parse;
+ }
+ else {
+ letter = '\0';
+ }
+ subletter='\0';
+ }
+ else {
+ letter = parse[0];
+ subletter = parse[1];
+ }
+ *usedarg = FALSE; /* default is that we don't use the arg */
+
+ if(hit < 0) {
+ for(j = 0; j < sizeof(aliases)/sizeof(aliases[0]); j++) {
+ if(letter == aliases[j].letter[0]) {
+ hit = j;
+ break;
+ }
+ }
+ if(hit < 0) {
+ return PARAM_OPTION_UNKNOWN;
+ }
+ }
+
+ if(aliases[hit].extraparam) {
+ /* this option requires an extra parameter */
+ if(!longopt && parse[1]) {
+ nextarg = (char *)&parse[1]; /* this is the actual extra parameter */
+ singleopt = TRUE; /* don't loop anymore after this */
+ }
+ else if(!nextarg)
+ return PARAM_REQUIRES_PARAMETER;
+ else
+ *usedarg = TRUE; /* mark it as used */
+ }
+
+ switch(letter) {
+ case '*': /* options without a short option */
+ switch(subletter) {
+ case '4': /* --dns-ipv4-addr */
+ /* addr in dot notation */
+ GetStr(&config->dns_ipv4_addr, nextarg);
+ break;
+ case '6': /* --dns-ipv6-addr */
+ /* addr in dot notation */
+ GetStr(&config->dns_ipv6_addr, nextarg);
+ break;
+ case 'a': /* random-file */
+ GetStr(&config->random_file, nextarg);
+ break;
+ case 'b': /* egd-file */
+ GetStr(&config->egd_file, nextarg);
+ break;
+ case 'B': /* XOAUTH2 Bearer */
+ GetStr(&config->xoauth2_bearer, nextarg);
+ break;
+ case 'c': /* connect-timeout */
+ err = str2udouble(&config->connecttimeout, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'd': /* ciphers */
+ GetStr(&config->cipher_list, nextarg);
+ break;
+ case 'D': /* --dns-interface */
+ /* interface name */
+ GetStr(&config->dns_interface, nextarg);
+ break;
+ case 'e': /* --disable-epsv */
+ config->disable_epsv = toggle;
+ break;
+ case 'E': /* --epsv */
+ config->disable_epsv = (!toggle)?TRUE:FALSE;
+ break;
+#ifdef USE_ENVIRONMENT
+ case 'f':
+ config->writeenv = toggle;
+ break;
+#endif
+ case 'F': /* --dns-servers */
+ /* IP addrs of DNS servers */
+ GetStr(&config->dns_servers, nextarg);
+ break;
+ case 'g': /* --trace */
+ GetStr(&global->trace_dump, nextarg);
+ if(global->tracetype && (global->tracetype != TRACE_BIN))
+ warnf(config, "--trace overrides an earlier trace/verbose option\n");
+ global->tracetype = TRACE_BIN;
+ break;
+ case 'G': /* --npn */
+ config->nonpn = (!toggle)?TRUE:FALSE;
+ break;
+ case 'h': /* --trace-ascii */
+ GetStr(&global->trace_dump, nextarg);
+ if(global->tracetype && (global->tracetype != TRACE_ASCII))
+ warnf(config,
+ "--trace-ascii overrides an earlier trace/verbose option\n");
+ global->tracetype = TRACE_ASCII;
+ break;
+ case 'H': /* --alpn */
+ config->noalpn = (!toggle)?TRUE:FALSE;
+ break;
+ case 'i': /* --limit-rate */
+ {
+ /* We support G, M, K too */
+ char *unit;
+ curl_off_t value = curlx_strtoofft(nextarg, &unit, 0);
+
+ if(!*unit)
+ unit = (char *)"b";
+ else if(strlen(unit) > 1)
+ unit = (char *)"w"; /* unsupported */
+
+ switch(*unit) {
+ case 'G':
+ case 'g':
+ value *= 1024*1024*1024;
+ break;
+ case 'M':
+ case 'm':
+ value *= 1024*1024;
+ break;
+ case 'K':
+ case 'k':
+ value *= 1024;
+ break;
+ case 'b':
+ case 'B':
+ /* for plain bytes, leave as-is */
+ break;
+ default:
+ warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
+ return PARAM_BAD_USE;
+ }
+ config->recvpersecond = value;
+ config->sendpersecond = value;
+ }
+ break;
+
+ case 'j': /* --compressed */
+ if(toggle && !(curlinfo->features & CURL_VERSION_LIBZ))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->encoding = toggle;
+ break;
+
+ case 'J': /* --tr-encoding */
+ config->tr_encoding = toggle;
+ break;
+
+ case 'k': /* --digest */
+ if(toggle)
+ config->authtype |= CURLAUTH_DIGEST;
+ else
+ config->authtype &= ~CURLAUTH_DIGEST;
+ break;
+
+ case 'l': /* --negotiate */
+ if(toggle) {
+ if(curlinfo->features & CURL_VERSION_SPNEGO)
+ config->authtype |= CURLAUTH_NEGOTIATE;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ else
+ config->authtype &= ~CURLAUTH_NEGOTIATE;
+ break;
+
+ case 'm': /* --ntlm */
+ if(toggle) {
+ if(curlinfo->features & CURL_VERSION_NTLM)
+ config->authtype |= CURLAUTH_NTLM;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ else
+ config->authtype &= ~CURLAUTH_NTLM;
+ break;
+
+ case 'M': /* --ntlm-wb */
+ if(toggle) {
+ if(curlinfo->features & CURL_VERSION_NTLM_WB)
+ config->authtype |= CURLAUTH_NTLM_WB;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ else
+ config->authtype &= ~CURLAUTH_NTLM_WB;
+ break;
+
+ case 'n': /* --basic for completeness */
+ if(toggle)
+ config->authtype |= CURLAUTH_BASIC;
+ else
+ config->authtype &= ~CURLAUTH_BASIC;
+ break;
+
+ case 'o': /* --anyauth, let libcurl pick it */
+ if(toggle)
+ config->authtype = CURLAUTH_ANY;
+ /* --no-anyauth simply doesn't touch it */
+ break;
+
+#ifdef USE_WATT32
+ case 'p': /* --wdebug */
+ dbug_init();
+ break;
+#endif
+ case 'q': /* --ftp-create-dirs */
+ config->ftp_create_dirs = toggle;
+ break;
+
+ case 'r': /* --create-dirs */
+ config->create_dirs = toggle;
+ break;
+
+ case 's': /* --max-redirs */
+ /* specified max no of redirects (http(s)), this accepts -1 as a
+ special condition */
+ err = str2num(&config->maxredirs, nextarg);
+ if(err)
+ return err;
+ if(config->maxredirs < -1)
+ return PARAM_BAD_NUMERIC;
+ break;
+
+ case 't': /* --proxy-ntlm */
+ if(curlinfo->features & CURL_VERSION_NTLM)
+ config->proxyntlm = toggle;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+
+ case 'u': /* --crlf */
+ /* LF -> CRLF conversion? */
+ config->crlf = toggle;
+ break;
+
+ case 'v': /* --stderr */
+ if(strcmp(nextarg, "-")) {
+ FILE *newfile = fopen(nextarg, "wt");
+ if(!newfile)
+ warnf(config, "Failed to open %s!\n", nextarg);
+ else {
+ if(global->errors_fopened)
+ fclose(global->errors);
+ global->errors = newfile;
+ global->errors_fopened = TRUE;
+ }
+ }
+ else
+ global->errors = stdout;
+ break;
+ case 'w': /* --interface */
+ /* interface */
+ GetStr(&config->iface, nextarg);
+ break;
+ case 'x': /* --krb */
+ /* kerberos level string */
+ if(curlinfo->features & CURL_VERSION_KERBEROS4)
+ GetStr(&config->krblevel, nextarg);
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'y': /* --max-filesize */
+ err = str2offset(&config->max_filesize, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'z': /* --disable-eprt */
+ config->disable_eprt = toggle;
+ break;
+ case 'Z': /* --eprt */
+ config->disable_eprt = (!toggle)?TRUE:FALSE;
+ break;
+
+ default: /* the URL! */
+ {
+ struct getout *url;
+ if(config->url_get || ((config->url_get = config->url_list) != NULL)) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_get && (config->url_get->flags & GETOUT_URL))
+ config->url_get = config->url_get->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_get)
+ /* existing node */
+ url = config->url_get;
+ else
+ /* there was no free node, create one! */
+ url = new_getout(config);
+
+ if(!url)
+ return PARAM_NO_MEM;
+ else {
+ /* fill in the URL */
+ GetStr(&url->url, nextarg);
+ url->flags |= GETOUT_URL;
+ }
+ }
+ }
+ break;
+ case '$': /* more options without a short option */
+ switch(subletter) {
+ case 'a': /* --ftp-ssl */
+ if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->ftp_ssl = toggle;
+ break;
+ case 'b': /* --ftp-pasv */
+ Curl_safefree(config->ftpport);
+ break;
+ case 'c': /* --socks5 specifies a socks5 proxy to use, and resolves
+ the name locally and passes on the resolved address */
+ GetStr(&config->socksproxy, nextarg);
+ config->socksver = CURLPROXY_SOCKS5;
+ break;
+ case 't': /* --socks4 specifies a socks4 proxy to use */
+ GetStr(&config->socksproxy, nextarg);
+ config->socksver = CURLPROXY_SOCKS4;
+ break;
+ case 'T': /* --socks4a specifies a socks4a proxy to use */
+ GetStr(&config->socksproxy, nextarg);
+ config->socksver = CURLPROXY_SOCKS4A;
+ break;
+ case '2': /* --socks5-hostname specifies a socks5 proxy and enables name
+ resolving with the proxy */
+ GetStr(&config->socksproxy, nextarg);
+ config->socksver = CURLPROXY_SOCKS5_HOSTNAME;
+ break;
+ case 'd': /* --tcp-nodelay option */
+ config->tcp_nodelay = toggle;
+ break;
+ case 'e': /* --proxy-digest */
+ config->proxydigest = toggle;
+ break;
+ case 'f': /* --proxy-basic */
+ config->proxybasic = toggle;
+ break;
+ case 'g': /* --retry */
+ err = str2unum(&config->req_retry, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'h': /* --retry-delay */
+ err = str2unum(&config->retry_delay, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'i': /* --retry-max-time */
+ err = str2unum(&config->retry_maxtime, nextarg);
+ if(err)
+ return err;
+ break;
+
+ case 'k': /* --proxy-negotiate */
+ if(curlinfo->features & CURL_VERSION_SPNEGO)
+ config->proxynegotiate = toggle;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+
+ case 'm': /* --ftp-account */
+ GetStr(&config->ftp_account, nextarg);
+ break;
+ case 'n': /* --proxy-anyauth */
+ config->proxyanyauth = toggle;
+ break;
+ case 'o': /* --trace-time */
+ global->tracetime = toggle;
+ break;
+ case 'p': /* --ignore-content-length */
+ config->ignorecl = toggle;
+ break;
+ case 'q': /* --ftp-skip-pasv-ip */
+ config->ftp_skip_ip = toggle;
+ break;
+ case 'r': /* --ftp-method (undocumented at this point) */
+ config->ftp_filemethod = ftpfilemethod(config, nextarg);
+ break;
+ case 's': /* --local-port */
+ rc = sscanf(nextarg, "%d - %d",
+ &config->localport,
+ &config->localportrange);
+ if(!rc)
+ return PARAM_BAD_USE;
+ else if(rc == 1)
+ config->localportrange = 1; /* default number of ports to try */
+ else {
+ config->localportrange -= config->localport;
+ if(config->localportrange < 1) {
+ warnf(config, "bad range input\n");
+ return PARAM_BAD_USE;
+ }
+ }
+ break;
+ case 'u': /* --ftp-alternative-to-user */
+ GetStr(&config->ftp_alternative_to_user, nextarg);
+ break;
+ case 'v': /* --ftp-ssl-reqd */
+ if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->ftp_ssl_reqd = toggle;
+ break;
+ case 'w': /* --no-sessionid */
+ config->disable_sessionid = (!toggle)?TRUE:FALSE;
+ break;
+ case 'x': /* --ftp-ssl-control */
+ if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->ftp_ssl_control = toggle;
+ break;
+ case 'y': /* --ftp-ssl-ccc */
+ config->ftp_ssl_ccc = toggle;
+ if(!config->ftp_ssl_ccc_mode)
+ config->ftp_ssl_ccc_mode = CURLFTPSSL_CCC_PASSIVE;
+ break;
+ case 'j': /* --ftp-ssl-ccc-mode */
+ config->ftp_ssl_ccc = TRUE;
+ config->ftp_ssl_ccc_mode = ftpcccmethod(config, nextarg);
+ break;
+ case 'z': /* --libcurl */
+#ifdef CURL_DISABLE_LIBCURL_OPTION
+ warnf(config,
+ "--libcurl option was disabled at build-time!\n");
+ return PARAM_OPTION_UNKNOWN;
+#else
+ GetStr(&global->libcurl, nextarg);
+ break;
+#endif
+ case '#': /* --raw */
+ config->raw = toggle;
+ break;
+ case '0': /* --post301 */
+ config->post301 = toggle;
+ break;
+ case '1': /* --no-keepalive */
+ config->nokeepalive = (!toggle)?TRUE:FALSE;
+ break;
+ case '3': /* --keepalive-time */
+ err = str2unum(&config->alivetime, nextarg);
+ if(err)
+ return err;
+ break;
+ case '4': /* --post302 */
+ config->post302 = toggle;
+ break;
+ case 'I': /* --post303 */
+ config->post303 = toggle;
+ break;
+ case '5': /* --noproxy */
+ /* This specifies the noproxy list */
+ GetStr(&config->noproxy, nextarg);
+ break;
+#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 '8': /* --proxy1.0 */
+ /* http 1.0 proxy */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_HTTP_1_0;
+ break;
+ case '9': /* --tftp-blksize */
+ err = str2unum(&config->tftp_blksize, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'A': /* --mail-from */
+ GetStr(&config->mail_from, nextarg);
+ break;
+ case 'B': /* --mail-rcpt */
+ /* append receiver to a list */
+ err = add2list(&config->mail_rcpt, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'C': /* --ftp-pret */
+ config->ftp_pret = toggle;
+ break;
+ case 'D': /* --proto */
+ config->proto_present = TRUE;
+ if(proto2num(config, &config->proto, nextarg))
+ return PARAM_BAD_USE;
+ break;
+ case 'E': /* --proto-redir */
+ config->proto_redir_present = TRUE;
+ if(proto2num(config, &config->proto_redir, nextarg))
+ return PARAM_BAD_USE;
+ break;
+ case 'F': /* --resolve */
+ err = add2list(&config->resolve, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'G': /* --delegation LEVEL */
+ config->gssapi_delegation = delegation(config, nextarg);
+ break;
+ case 'H': /* --mail-auth */
+ GetStr(&config->mail_auth, nextarg);
+ break;
+ case 'J': /* --metalink */
+ {
+#ifdef USE_METALINK
+ int mlmaj, mlmin, mlpatch;
+ metalink_get_version(&mlmaj, &mlmin, &mlpatch);
+ if((mlmaj*10000)+(mlmin*100)+mlpatch < CURL_REQ_LIBMETALINK_VERS) {
+ warnf(config,
+ "--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",
+ CURL_REQ_LIBMETALINK_MAJOR,
+ CURL_REQ_LIBMETALINK_MINOR,
+ CURL_REQ_LIBMETALINK_PATCH,
+ mlmaj, mlmin, mlpatch);
+ return PARAM_BAD_USE;
+ }
+ else
+ config->use_metalink = toggle;
+#else
+ warnf(config, "--metalink option is ignored because the binary is "
+ "built without the Metalink support.\n");
+#endif
+ break;
+ }
+ case 'K': /* --sasl-ir */
+ config->sasl_ir = toggle;
+ break;
+ case 'L': /* --test-event */
+#ifdef CURLDEBUG
+ config->test_event_based = toggle;
+#else
+ warnf(config, "--test-event is ignored unless a debug build!\n");
+#endif
+ break;
+ }
+ break;
+ case '#': /* --progress-bar */
+ if(toggle)
+ global->progressmode = CURL_PROGRESS_BAR;
+ else
+ global->progressmode = CURL_PROGRESS_STATS;
+ break;
+ case ':': /* --next */
+ return PARAM_NEXT_OPERATION;
+ case '~': /* --xattr */
+ config->xattr = toggle;
+ break;
+ case '0': /* --http* options */
+ switch(subletter) {
+ case '\0':
+ /* HTTP version 1.0 */
+ config->httpversion = CURL_HTTP_VERSION_1_0;
+ break;
+ case '1':
+ /* HTTP version 1.1 */
+ config->httpversion = CURL_HTTP_VERSION_1_1;
+ break;
+ case '2':
+ /* HTTP version 2.0 */
+ config->httpversion = CURL_HTTP_VERSION_2_0;
+ break;
+ }
+ break;
+ case '1': /* --tlsv1* options */
+ switch(subletter) {
+ case '\0':
+ /* TLS version 1.x */
+ config->ssl_version = CURL_SSLVERSION_TLSv1;
+ break;
+ case '0':
+ /* TLS version 1.0 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_0;
+ break;
+ case '1':
+ /* TLS version 1.1 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_1;
+ break;
+ case '2':
+ /* TLS version 1.2 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_2;
+ break;
+ }
+ break;
+ case '2':
+ /* SSL version 2 */
+ config->ssl_version = CURL_SSLVERSION_SSLv2;
+ break;
+ case '3':
+ /* SSL version 3 */
+ config->ssl_version = CURL_SSLVERSION_SSLv3;
+ break;
+ case '4':
+ /* IPv4 */
+ config->ip_version = 4;
+ break;
+ case '6':
+ /* IPv6 */
+ config->ip_version = 6;
+ break;
+ case 'a':
+ /* This makes the FTP sessions use APPE instead of STOR */
+ config->ftp_append = toggle;
+ break;
+ case 'A':
+ /* This specifies the User-Agent name */
+ GetStr(&config->useragent, nextarg);
+ break;
+ case 'b': /* cookie string coming up: */
+ if(nextarg[0] == '@') {
+ nextarg++;
+ }
+ else if(strchr(nextarg, '=')) {
+ /* A cookie string must have a =-letter */
+ GetStr(&config->cookie, nextarg);
+ break;
+ }
+ /* We have a cookie file to read from! */
+ GetStr(&config->cookiefile, nextarg);
+ break;
+ case 'B':
+ /* use ASCII/text when transferring */
+ config->use_ascii = toggle;
+ break;
+ case 'c':
+ /* get the file name to dump all cookies in */
+ GetStr(&config->cookiejar, nextarg);
+ break;
+ case 'C':
+ /* This makes us continue an ftp transfer at given position */
+ if(!curlx_strequal(nextarg, "-")) {
+ err = str2offset(&config->resume_from, nextarg);
+ if(err)
+ return err;
+ config->resume_from_current = FALSE;
+ }
+ else {
+ config->resume_from_current = TRUE;
+ config->resume_from = 0;
+ }
+ config->use_resume=TRUE;
+ break;
+ case 'd':
+ /* postfield data */
+ {
+ char *postdata = NULL;
+ FILE *file;
+ size_t size = 0;
+
+ if(subletter == 'e') { /* --data-urlencode*/
+ /* [name]=[content], we encode the content part only
+ * [name]@[file name]
+ *
+ * Case 2: we first load the file using that name and then encode
+ * the content.
+ */
+ const char *p = strchr(nextarg, '=');
+ size_t nlen;
+ char is_file;
+ if(!p)
+ /* there was no '=' letter, check for a '@' instead */
+ p = strchr(nextarg, '@');
+ if(p) {
+ nlen = p - nextarg; /* length of the name part */
+ is_file = *p++; /* pass the separator */
+ }
+ else {
+ /* neither @ nor =, so no name and it isn't a file */
+ nlen = is_file = 0;
+ p = nextarg;
+ }
+ if('@' == is_file) {
+ /* a '@' letter, it means that a file name or - (stdin) follows */
+
+ if(curlx_strequal("-", p)) {
+ file = stdin;
+ set_binmode(stdin);
+ }
+ else {
+ file = fopen(p, "rb");
+ if(!file)
+ warnf(config,
+ "Couldn't read data from file \"%s\", this makes "
+ "an empty POST.\n", nextarg);
+ }
+
+ err = file2memory(&postdata, &size, file);
+
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+ }
+ else {
+ GetStr(&postdata, p);
+ if(postdata)
+ size = strlen(postdata);
+ }
+
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata = strdup("");
+ if(!postdata)
+ return PARAM_NO_MEM;
+ size = 0;
+ }
+ else {
+ char *enc = curl_easy_escape(config->easy, postdata, (int)size);
+ Curl_safefree(postdata); /* no matter if it worked or not */
+ if(enc) {
+ /* now make a string with the name from above and append the
+ encoded string */
+ size_t outlen = nlen + strlen(enc) + 2;
+ char *n = malloc(outlen);
+ if(!n) {
+ curl_free(enc);
+ return PARAM_NO_MEM;
+ }
+ if(nlen > 0) { /* only append '=' if we have a name */
+ snprintf(n, outlen, "%.*s=%s", nlen, nextarg, enc);
+ size = outlen-1;
+ }
+ else {
+ strcpy(n, enc);
+ size = outlen-2; /* since no '=' was inserted */
+ }
+ curl_free(enc);
+ postdata = n;
+ }
+ else
+ return PARAM_NO_MEM;
+ }
+ }
+ else if('@' == *nextarg) {
+ /* the data begins with a '@' letter, it means that a file name
+ or - (stdin) follows */
+ nextarg++; /* pass the @ */
+
+ if(curlx_strequal("-", nextarg)) {
+ file = stdin;
+ if(subletter == 'b') /* forced data-binary */
+ set_binmode(stdin);
+ }
+ else {
+ file = fopen(nextarg, "rb");
+ if(!file)
+ warnf(config, "Couldn't read data from file \"%s\", this makes "
+ "an empty POST.\n", nextarg);
+ }
+
+ if(subletter == 'b')
+ /* forced binary */
+ err = file2memory(&postdata, &size, file);
+ else {
+ err = file2string(&postdata, file);
+ if(postdata)
+ size = strlen(postdata);
+ }
+
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata = strdup("");
+ if(!postdata)
+ return PARAM_NO_MEM;
+ }
+ }
+ else {
+ GetStr(&postdata, nextarg);
+ if(postdata)
+ size = strlen(postdata);
+ }
+
+#ifdef CURL_DOES_CONVERSIONS
+ if(subletter != 'b') {
+ /* NOT forced binary, convert to ASCII */
+ if(convert_to_network(postdata, strlen(postdata))) {
+ Curl_safefree(postdata);
+ return PARAM_NO_MEM;
+ }
+ }
+#endif
+
+ if(config->postfields) {
+ /* we already have a string, we append this one with a separating
+ &-letter */
+ char *oldpost = config->postfields;
+ curl_off_t oldlen = config->postfieldsize;
+ curl_off_t newlen = oldlen + curlx_uztoso(size) + 2;
+ config->postfields = malloc((size_t)newlen);
+ if(!config->postfields) {
+ Curl_safefree(oldpost);
+ Curl_safefree(postdata);
+ return PARAM_NO_MEM;
+ }
+ memcpy(config->postfields, oldpost, (size_t)oldlen);
+ /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
+ config->postfields[oldlen] = '\x26';
+ memcpy(&config->postfields[oldlen+1], postdata, size);
+ config->postfields[oldlen+1+size] = '\0';
+ Curl_safefree(oldpost);
+ Curl_safefree(postdata);
+ config->postfieldsize += size+1;
+ }
+ else {
+ config->postfields = postdata;
+ config->postfieldsize = curlx_uztoso(size);
+ }
+ }
+ /*
+ We can't set the request type here, as this data might be used in
+ a simple GET if -G is used. Already or soon.
+
+ if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq)) {
+ Curl_safefree(postdata);
+ return PARAM_BAD_USE;
+ }
+ */
+ break;
+ case 'D':
+ /* dump-header to given file name */
+ GetStr(&config->headerfile, nextarg);
+ break;
+ case 'e':
+ {
+ char *ptr = strstr(nextarg, ";auto");
+ if(ptr) {
+ /* Automatic referer requested, this may be combined with a
+ set initial one */
+ config->autoreferer = TRUE;
+ *ptr = 0; /* zero terminate here */
+ }
+ else
+ config->autoreferer = FALSE;
+ GetStr(&config->referer, nextarg);
+ }
+ break;
+ case 'E':
+ switch(subletter) {
+ case 'a': /* CA info PEM file */
+ /* CA info PEM file */
+ GetStr(&config->cacert, nextarg);
+ break;
+ case 'b': /* cert file type */
+ GetStr(&config->cert_type, nextarg);
+ break;
+ case 'c': /* private key file */
+ GetStr(&config->key, nextarg);
+ break;
+ case 'd': /* private key file type */
+ GetStr(&config->key_type, nextarg);
+ break;
+ case 'e': /* private key passphrase */
+ GetStr(&config->key_passwd, nextarg);
+ cleanarg(nextarg);
+ break;
+ case 'f': /* crypto engine */
+ GetStr(&config->engine, nextarg);
+ if(config->engine && curlx_raw_equal(config->engine,"list"))
+ return PARAM_ENGINES_REQUESTED;
+ break;
+ case 'g': /* CA info PEM file */
+ /* CA cert directory */
+ GetStr(&config->capath, nextarg);
+ break;
+ case 'h': /* --pubkey public key file */
+ GetStr(&config->pubkey, nextarg);
+ break;
+ case 'i': /* --hostpubmd5 md5 of the host public key */
+ GetStr(&config->hostpubmd5, nextarg);
+ if(!config->hostpubmd5 || strlen(config->hostpubmd5) != 32)
+ return PARAM_BAD_USE;
+ break;
+ case 'j': /* CRL info PEM file */
+ /* CRL file */
+ GetStr(&config->crlfile, nextarg);
+ break;
+ case 'k': /* TLS username */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
+ GetStr(&config->tls_username, nextarg);
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'l': /* TLS password */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
+ GetStr(&config->tls_password, nextarg);
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'm': /* TLS authentication type */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
+ GetStr(&config->tls_authtype, nextarg);
+ if(!strequal(config->tls_authtype, "SRP"))
+ return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
+ }
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'n': /* no empty SSL fragments, --ssl-allow-beast */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->ssl_allow_beast = toggle;
+ break;
+
+ case 'o': /* --login-options */
+ GetStr(&config->login_options, nextarg);
+ break;
+
+ default: /* certificate file */
+ {
+ char *certname, *passphrase;
+ parse_cert_parameter(nextarg, &certname, &passphrase);
+ Curl_safefree(config->cert);
+ config->cert = certname;
+ if(passphrase) {
+ Curl_safefree(config->key_passwd);
+ config->key_passwd = passphrase;
+ }
+ cleanarg(nextarg);
+ }
+ }
+ break;
+ case 'f':
+ /* fail hard on errors */
+ config->failonerror = toggle;
+ break;
+ case 'F':
+ /* "form data" simulation, this is a little advanced so lets do our best
+ to sort this out slowly and carefully */
+ if(formparse(config,
+ nextarg,
+ &config->httppost,
+ &config->last_post,
+ (subletter=='s')?TRUE:FALSE)) /* 's' means literal string */
+ return PARAM_BAD_USE;
+ if(SetHTTPrequest(config, HTTPREQ_POST, &config->httpreq))
+ return PARAM_BAD_USE;
+ break;
+
+ case 'g': /* g disables URLglobbing */
+ config->globoff = toggle;
+ break;
+
+ case 'G': /* HTTP GET */
+ config->use_httpget = TRUE;
+ break;
+
+ case 'h': /* h for help */
+ if(toggle) {
+ return PARAM_HELP_REQUESTED;
+ }
+ /* we now actually support --no-help too! */
+ break;
+ case 'H':
+ /* A custom header to append to a list */
+ if(subletter == 'p') /* --proxy-header */
+ err = add2list(&config->proxyheaders, nextarg);
+ else
+ err = add2list(&config->headers, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'i':
+ config->include_headers = toggle; /* include the headers as well in the
+ general output stream */
+ break;
+ case 'j':
+ config->cookiesession = toggle;
+ break;
+ case 'I':
+ /*
+ * no_body will imply include_headers later on
+ */
+ config->no_body = toggle;
+ if(SetHTTPrequest(config,
+ (config->no_body)?HTTPREQ_HEAD:HTTPREQ_GET,
+ &config->httpreq))
+ return PARAM_BAD_USE;
+ break;
+ case 'J': /* --remote-header-name */
+ if(config->include_headers) {
+ warnf(config,
+ "--include and --remote-header-name cannot be combined.\n");
+ return PARAM_BAD_USE;
+ }
+ config->content_disposition = toggle;
+ break;
+ case 'k': /* allow insecure SSL connects */
+ config->insecure_ok = toggle;
+ break;
+ case 'K': /* parse config file */
+ if(parseconfig(nextarg, global))
+ warnf(config, "error trying read config from the '%s' file\n",
+ nextarg);
+ break;
+ case 'l':
+ config->dirlistonly = toggle; /* only list the names of the FTP dir */
+ break;
+ case 'L':
+ config->followlocation = toggle; /* Follow Location: HTTP headers */
+ switch (subletter) {
+ case 't':
+ /* Continue to send authentication (user+password) when following
+ * locations, even when hostname changed */
+ config->unrestricted_auth = toggle;
+ break;
+ }
+ break;
+ case 'm':
+ /* specified max time */
+ err = str2udouble(&config->timeout, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'M': /* M for manual, huge help */
+ if(toggle) { /* --no-manual shows no manual... */
+#ifdef USE_MANUAL
+ return PARAM_MANUAL_REQUESTED;
+#else
+ warnf(config,
+ "built-in manual was disabled at build-time!\n");
+ return PARAM_OPTION_UNKNOWN;
+#endif
+ }
+ break;
+ case 'n':
+ switch(subletter) {
+ case 'o': /* CA info PEM file */
+ /* use .netrc or URL */
+ config->netrc_opt = toggle;
+ break;
+ case 'e': /* netrc-file */
+ GetStr(&config->netrc_file, nextarg);
+ break;
+ default:
+ /* pick info from .netrc, if this is used for http, curl will
+ automatically enfore user+password with the request */
+ config->netrc = toggle;
+ break;
+ }
+ break;
+ case 'N':
+ /* disable the output I/O buffering. note that the option is called
+ --buffer but is mostly used in the negative form: --no-buffer */
+ if(longopt)
+ config->nobuffer = (!toggle)?TRUE:FALSE;
+ else
+ config->nobuffer = toggle;
+ break;
+ case 'O': /* --remote-name */
+ if(subletter == 'a') { /* --remote-name-all */
+ config->default_node_flags = toggle?GETOUT_USEREMOTE:0;
+ break;
+ }
+ /* fall-through! */
+ case 'o': /* --output */
+ /* output file */
+ {
+ struct getout *url;
+ if(config->url_out || ((config->url_out = config->url_list) != NULL)) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_out && (config->url_out->flags & GETOUT_OUTFILE))
+ config->url_out = config->url_out->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_out)
+ /* existing node */
+ url = config->url_out;
+ else
+ /* there was no free node, create one! */
+ url = new_getout(config);
+
+ if(!url)
+ return PARAM_NO_MEM;
+ else {
+ /* fill in the outfile */
+ if('o' == letter) {
+ GetStr(&url->outfile, nextarg);
+ url->flags &= ~GETOUT_USEREMOTE; /* switch off */
+ }
+ else {
+ url->outfile = NULL; /* leave it */
+ if(toggle)
+ url->flags |= GETOUT_USEREMOTE; /* switch on */
+ else
+ url->flags &= ~GETOUT_USEREMOTE; /* switch off */
+ }
+ url->flags |= GETOUT_OUTFILE;
+ }
+ }
+ break;
+ case 'P':
+ /* This makes the FTP sessions use PORT instead of PASV */
+ /* use <eth0> or <192.168.10.10> style addresses. Anything except
+ this will make us try to get the "default" address.
+ NOTE: this is a changed behaviour since the released 4.1!
+ */
+ GetStr(&config->ftpport, nextarg);
+ break;
+ case 'p':
+ /* proxy tunnel for non-http protocols */
+ config->proxytunnel = toggle;
+ break;
+
+ case 'q': /* if used first, already taken care of, we do it like
+ this so we don't cause an error! */
+ break;
+ case 'Q':
+ /* QUOTE command to send to FTP server */
+ switch(nextarg[0]) {
+ case '-':
+ /* prefixed with a dash makes it a POST TRANSFER one */
+ nextarg++;
+ err = add2list(&config->postquote, nextarg);
+ break;
+ case '+':
+ /* prefixed with a plus makes it a just-before-transfer one */
+ nextarg++;
+ err = add2list(&config->prequote, nextarg);
+ break;
+ default:
+ err = add2list(&config->quote, nextarg);
+ break;
+ }
+ if(err)
+ return err;
+ break;
+ case 'r':
+ /* Specifying a range WITHOUT A DASH will create an illegal HTTP range
+ (and won't actually be range by definition). The man page previously
+ claimed that to be a good way, why this code is added to work-around
+ it. */
+ if(ISDIGIT(*nextarg) && !strchr(nextarg, '-')) {
+ char buffer[32];
+ curl_off_t off;
+ warnf(config,
+ "A specified range MUST include at least one dash (-). "
+ "Appending one for you!\n");
+ off = curlx_strtoofft(nextarg, NULL, 10);
+ snprintf(buffer, sizeof(buffer), "%" CURL_FORMAT_CURL_OFF_T "-", off);
+ Curl_safefree(config->range);
+ config->range = strdup(buffer);
+ if(!config->range)
+ return PARAM_NO_MEM;
+ }
+ {
+ /* byte range requested */
+ char *tmp_range;
+ tmp_range = nextarg;
+ while(*tmp_range != '\0') {
+ if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
+ warnf(config,"Invalid character is found in given range. "
+ "A specified range MUST have only digits in "
+ "\'start\'-\'stop\'. The server's response to this "
+ "request is uncertain.\n");
+ break;
+ }
+ tmp_range++;
+ }
+ /* byte range requested */
+ GetStr(&config->range, nextarg);
+ }
+ break;
+ case 'R':
+ /* use remote file's time */
+ config->remote_time = toggle;
+ break;
+ case 's':
+ /* don't show progress meter, don't show errors : */
+ if(toggle)
+ global->mute = global->noprogress = TRUE;
+ else
+ global->mute = global->noprogress = FALSE;
+ if(global->showerror < 0)
+ /* if still on the default value, set showerror to the reverse of
+ toggle. This is to allow -S and -s to be used in an independent
+ order but still have the same effect. */
+ global->showerror = (!toggle)?TRUE:FALSE; /* toggle off */
+ break;
+ case 'S':
+ /* show errors */
+ global->showerror = toggle?1:0; /* toggle on if used with -s */
+ break;
+ case 't':
+ /* Telnet options */
+ err = add2list(&config->telnet_options, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'T':
+ /* we are uploading */
+ {
+ struct getout *url;
+ if(config->url_out || ((config->url_out = config->url_list) != NULL)) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_out && (config->url_out->flags & GETOUT_UPLOAD))
+ config->url_out = config->url_out->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_out)
+ /* existing node */
+ url = config->url_out;
+ else
+ /* there was no free node, create one! */
+ url = new_getout(config);
+
+ if(!url)
+ return PARAM_NO_MEM;
+ else {
+ url->flags |= GETOUT_UPLOAD; /* mark -T used */
+ if(!*nextarg)
+ url->flags |= GETOUT_NOUPLOAD;
+ else {
+ /* "-" equals stdin, but keep the string around for now */
+ GetStr(&url->infile, nextarg);
+ }
+ }
+ }
+ break;
+ case 'u':
+ /* user:password */
+ GetStr(&config->userpwd, nextarg);
+ cleanarg(nextarg);
+ break;
+ case 'U':
+ /* Proxy user:password */
+ GetStr(&config->proxyuserpwd, nextarg);
+ cleanarg(nextarg);
+ break;
+ case 'v':
+ if(toggle) {
+ /* the '%' thing here will cause the trace get sent to stderr */
+ Curl_safefree(global->trace_dump);
+ global->trace_dump = strdup("%");
+ if(!global->trace_dump)
+ return PARAM_NO_MEM;
+ if(global->tracetype && (global->tracetype != TRACE_PLAIN))
+ warnf(config,
+ "-v, --verbose overrides an earlier trace/verbose option\n");
+ global->tracetype = TRACE_PLAIN;
+ }
+ else
+ /* verbose is disabled here */
+ global->tracetype = TRACE_NONE;
+ break;
+ case 'V':
+ if(toggle) /* --no-version yields no output! */
+ return PARAM_VERSION_INFO_REQUESTED;
+ break;
+
+ case 'w':
+ /* get the output string */
+ if('@' == *nextarg) {
+ /* the data begins with a '@' letter, it means that a file name
+ or - (stdin) follows */
+ FILE *file;
+ const char *fname;
+ nextarg++; /* pass the @ */
+ if(curlx_strequal("-", nextarg)) {
+ fname = "<stdin>";
+ file = stdin;
+ }
+ else {
+ fname = nextarg;
+ file = fopen(nextarg, "r");
+ }
+ err = file2string(&config->writeout, file);
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+ if(!config->writeout)
+ warnf(config, "Failed to read %s", fname);
+ }
+ else
+ GetStr(&config->writeout, nextarg);
+ break;
+ case 'x':
+ /* proxy */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_HTTP;
+ break;
+ case 'X':
+ /* set custom request */
+ GetStr(&config->customrequest, nextarg);
+ break;
+ case 'y':
+ /* low speed time */
+ err = str2unum(&config->low_speed_time, nextarg);
+ if(err)
+ return err;
+ if(!config->low_speed_limit)
+ config->low_speed_limit = 1;
+ break;
+ case 'Y':
+ /* low speed limit */
+ err = str2unum(&config->low_speed_limit, nextarg);
+ if(err)
+ return err;
+ if(!config->low_speed_time)
+ config->low_speed_time = 30;
+ break;
+ case 'z': /* time condition coming up */
+ switch(*nextarg) {
+ case '+':
+ nextarg++;
+ default:
+ /* If-Modified-Since: (section 14.28 in RFC2068) */
+ config->timecond = CURL_TIMECOND_IFMODSINCE;
+ break;
+ case '-':
+ /* If-Unmodified-Since: (section 14.24 in RFC2068) */
+ config->timecond = CURL_TIMECOND_IFUNMODSINCE;
+ nextarg++;
+ break;
+ case '=':
+ /* Last-Modified: (section 14.29 in RFC2068) */
+ config->timecond = CURL_TIMECOND_LASTMOD;
+ nextarg++;
+ break;
+ }
+ now = time(NULL);
+ config->condtime=curl_getdate(nextarg, &now);
+ if(-1 == (int)config->condtime) {
+ /* now let's see if it is a file name to get the time from instead! */
+ struct_stat statbuf;
+ if(-1 == stat(nextarg, &statbuf)) {
+ /* failed, remove time condition */
+ config->timecond = CURL_TIMECOND_NONE;
+ warnf(config,
+ "Illegal date format for -z, --timecond (and not "
+ "a file name). Disabling time condition. "
+ "See curl_getdate(3) for valid date syntax.\n");
+ }
+ else {
+ /* pull the time out from the file */
+ config->condtime = statbuf.st_mtime;
+ }
+ }
+ break;
+ default: /* unknown flag */
+ return PARAM_OPTION_UNKNOWN;
+ }
+ hit = -1;
+
+ } while(!longopt && !singleopt && *++parse && !*usedarg);
+
+ return PARAM_OK;
+}
+
+ParameterError parse_args(struct GlobalConfig *config, int argc,
+ argv_item_t argv[])
+{
+ int i;
+ bool stillflags;
+ char *orig_opt = NULL;
+ ParameterError result = PARAM_OK;
+ struct OperationConfig *operation = config->first;
+
+ for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
+ orig_opt = argv[i];
+
+ if(stillflags && ('-' == argv[i][0])) {
+ char *nextarg;
+ bool passarg;
+ char *flag = argv[i];
+
+ if(curlx_strequal("--", argv[i]))
+ /* This indicates the end of the flags and thus enables the
+ following (URL) argument to start with -. */
+ stillflags = FALSE;
+ else {
+ nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL;
+
+ result = getparameter(flag, nextarg, &passarg, config, operation);
+ if(result == PARAM_NEXT_OPERATION) {
+ /* Reset result as PARAM_NEXT_OPERATION is only used here and not
+ returned from this function */
+ result = PARAM_OK;
+
+ if(operation->url_list && operation->url_list->url) {
+ /* Allocate the next config */
+ operation->next = malloc(sizeof(struct OperationConfig));
+ if(operation->next) {
+ /* Initialise the newly created config */
+ config_init(operation->next);
+
+ /* Copy the easy handle */
+ operation->next->easy = config->easy;
+
+ /* Set the global config pointer */
+ operation->next->global = config;
+
+ /* Update the last operation pointer */
+ config->last = operation->next;
+
+ /* Move onto the new config */
+ operation->next->prev = operation;
+ operation = operation->next;
+ }
+ else
+ result = PARAM_NO_MEM;
+ }
+ }
+ else if(!result && passarg)
+ i++; /* we're supposed to skip this */
+ }
+ }
+ else {
+ bool used;
+
+ /* Just add the URL please */
+ result = getparameter((char *)"--url", argv[i], &used, config,
+ operation);
+ }
+ }
+
+ if(result && result != PARAM_HELP_REQUESTED &&
+ result != PARAM_MANUAL_REQUESTED &&
+ result != PARAM_VERSION_INFO_REQUESTED &&
+ result != PARAM_ENGINES_REQUESTED) {
+ const char *reason = param2text(result);
+
+ if(orig_opt && !curlx_strequal(":", orig_opt))
+ helpf(config->errors, "option %s: %s\n", orig_opt, reason);
+ else
+ helpf(config->errors, "%s\n", reason);
+ }
+
+ return result;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_getparam.h b/external/libcurl_android/jni/libcurl/src/tool_getparam.h
new file mode 100755
index 00000000..ef4366b7
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_getparam.h
@@ -0,0 +1,62 @@
+#ifndef HEADER_CURL_TOOL_GETPARAM_H
+#define HEADER_CURL_TOOL_GETPARAM_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+typedef enum {
+ PARAM_OK = 0,
+ PARAM_OPTION_AMBIGUOUS,
+ PARAM_OPTION_UNKNOWN,
+ PARAM_REQUIRES_PARAMETER,
+ PARAM_BAD_USE,
+ PARAM_HELP_REQUESTED,
+ PARAM_MANUAL_REQUESTED,
+ PARAM_VERSION_INFO_REQUESTED,
+ PARAM_ENGINES_REQUESTED,
+ PARAM_GOT_EXTRA_PARAMETER,
+ PARAM_BAD_NUMERIC,
+ PARAM_NEGATIVE_NUMERIC,
+ PARAM_LIBCURL_DOESNT_SUPPORT,
+ PARAM_NO_MEM,
+ PARAM_NEXT_OPERATION,
+ PARAM_LAST
+} ParameterError;
+
+struct GlobalConfig;
+struct OperationConfig;
+
+ParameterError getparameter(char *flag, char *nextarg, bool *usedarg,
+ struct GlobalConfig *global,
+ struct OperationConfig *operation);
+
+#ifdef UNITTESTS
+void parse_cert_parameter(const char *cert_parameter,
+ char **certname,
+ char **passphrase);
+#endif
+
+ParameterError parse_args(struct GlobalConfig *config, int argc,
+ argv_item_t argv[]);
+
+#endif /* HEADER_CURL_TOOL_GETPARAM_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_getpass.c b/external/libcurl_android/jni/libcurl/src/tool_getpass.c
new file mode 100755
index 00000000..4c8dcb9f
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_getpass.c
@@ -0,0 +1,256 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifndef HAVE_GETPASS_R
+/* this file is only for systems without getpass_r() */
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#elif defined(HAVE_TERMIO_H)
+# include <termio.h>
+#endif
+
+#ifdef __VMS
+# include descrip
+# include starlet
+# include iodef
+#endif
+
+#ifdef WIN32
+# include <conio.h>
+#endif
+
+#ifdef NETWARE
+# ifdef __NOVELL_LIBC__
+# include <screen.h>
+# else
+# include <nwconio.h>
+# endif
+#endif
+
+#define _MPRINTF_REPLACE
+#include <curl/mprintf.h>
+
+#include "tool_getpass.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef __VMS
+/* VMS implementation */
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ long sts;
+ short chan;
+
+ /* MSK, 23-JAN-2004, iosbdef.h wasn't in VAX V7.2 or CC 6.4 */
+ /* distribution so I created this. May revert back later to */
+ /* struct _iosb iosb; */
+ struct _iosb
+ {
+ short int iosb$w_status; /* status */
+ short int iosb$w_bcnt; /* byte count */
+ int unused; /* unused */
+ } iosb;
+
+ $DESCRIPTOR(ttdesc, "TT");
+
+ buffer[0] = '\0';
+ sts = sys$assign(&ttdesc, &chan, 0, 0);
+ if(sts & 1) {
+ sts = sys$qiow(0, chan,
+ IO$_READPROMPT | IO$M_NOECHO,
+ &iosb, 0, 0, buffer, buflen, 0, 0,
+ prompt, strlen(prompt));
+
+ if((sts & 1) && (iosb.iosb$w_status & 1))
+ buffer[iosb.iosb$w_bcnt] = '\0';
+
+ sts = sys$dassgn(chan);
+ }
+ return buffer; /* we always return success */
+}
+#define DONE
+#endif /* __VMS */
+
+#ifdef __SYMBIAN32__
+# define getch() getchar()
+#endif
+
+#if defined(WIN32) || defined(__SYMBIAN32__)
+
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ size_t i;
+ fputs(prompt, stderr);
+
+ for(i = 0; i < buflen; i++) {
+ buffer[i] = (char)getch();
+ if(buffer[i] == '\r' || buffer[i] == '\n') {
+ buffer[i] = '\0';
+ break;
+ }
+ else
+ if(buffer[i] == '\b')
+ /* remove this letter and if this is not the first key, remove the
+ previous one as well */
+ i = i - (i >= 1 ? 2 : 1);
+ }
+#ifndef __SYMBIAN32__
+ /* since echo is disabled, print a newline */
+ fputs("\n", stderr);
+#endif
+ /* if user didn't hit ENTER, terminate buffer */
+ if(i == buflen)
+ buffer[buflen-1] = '\0';
+
+ return buffer; /* we always return success */
+}
+#define DONE
+#endif /* WIN32 || __SYMBIAN32__ */
+
+#ifdef NETWARE
+/* NetWare implementation */
+#ifdef __NOVELL_LIBC__
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ return getpassword(prompt, buffer, buflen);
+}
+#else
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ size_t i = 0;
+
+ printf("%s", prompt);
+ do {
+ buffer[i++] = getch();
+ if(buffer[i-1] == '\b') {
+ /* remove this letter and if this is not the first key,
+ remove the previous one as well */
+ if(i > 1) {
+ printf("\b \b");
+ i = i - 2;
+ }
+ else {
+ RingTheBell();
+ i = i - 1;
+ }
+ }
+ else if(buffer[i-1] != 13)
+ putchar('*');
+
+ } while((buffer[i-1] != 13) && (i < buflen));
+ buffer[i-1] = '\0';
+ printf("\r\n");
+ return buffer;
+}
+#endif /* __NOVELL_LIBC__ */
+#define DONE
+#endif /* NETWARE */
+
+#ifndef DONE /* not previously provided */
+
+#ifdef HAVE_TERMIOS_H
+# define struct_term struct termios
+#elif defined(HAVE_TERMIO_H)
+# define struct_term struct termio
+#else
+# undef struct_term
+#endif
+
+static bool ttyecho(bool enable, int fd)
+{
+#ifdef struct_term
+ static struct_term withecho;
+ static struct_term noecho;
+#endif
+ if(!enable) {
+ /* disable echo by extracting the current 'withecho' mode and remove the
+ ECHO bit and set back the struct */
+#ifdef HAVE_TERMIOS_H
+ tcgetattr(fd, &withecho);
+ noecho = withecho;
+ noecho.c_lflag &= ~ECHO;
+ tcsetattr(fd, TCSANOW, &noecho);
+#elif defined(HAVE_TERMIO_H)
+ ioctl(fd, TCGETA, &withecho);
+ noecho = withecho;
+ noecho.c_lflag &= ~ECHO;
+ ioctl(fd, TCSETA, &noecho);
+#else
+ /* neither HAVE_TERMIO_H nor HAVE_TERMIOS_H, we can't disable echo! */
+ (void)fd;
+ return FALSE; /* not disabled */
+#endif
+ return TRUE; /* disabled */
+ }
+ else {
+ /* re-enable echo, assumes we disabled it before (and set the structs we
+ now use to reset the terminal status) */
+#ifdef HAVE_TERMIOS_H
+ tcsetattr(fd, TCSAFLUSH, &withecho);
+#elif defined(HAVE_TERMIO_H)
+ ioctl(fd, TCSETA, &withecho);
+#else
+ return FALSE; /* not enabled */
+#endif
+ return TRUE; /* enabled */
+ }
+}
+
+char *getpass_r(const char *prompt, /* prompt to display */
+ char *password, /* buffer to store password in */
+ size_t buflen) /* size of buffer to store password in */
+{
+ ssize_t nread;
+ bool disabled;
+ int fd = open("/dev/tty", O_RDONLY);
+ if(-1 == fd)
+ fd = 1; /* use stdin if the tty couldn't be used */
+
+ disabled = ttyecho(FALSE, fd); /* disable terminal echo */
+
+ fputs(prompt, stderr);
+ nread = read(fd, password, buflen);
+ if(nread > 0)
+ password[--nread] = '\0'; /* zero terminate where enter is stored */
+ else
+ password[0] = '\0'; /* got nothing */
+
+ if(disabled) {
+ /* if echo actually was disabled, add a newline */
+ fputs("\n", stderr);
+ (void)ttyecho(TRUE, fd); /* enable echo */
+ }
+
+ if(1 != fd)
+ close(fd);
+
+ return password; /* return pointer to buffer */
+}
+
+#endif /* DONE */
+#endif /* HAVE_GETPASS_R */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_getpass.h b/external/libcurl_android/jni/libcurl/src/tool_getpass.h
new file mode 100755
index 00000000..d4fc7e23
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_getpass.h
@@ -0,0 +1,36 @@
+#ifndef HEADER_CURL_TOOL_GETPASS_H
+#define HEADER_CURL_TOOL_GETPASS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifndef HAVE_GETPASS_R
+/* If there's a system-provided function named like this, we trust it is
+ also found in one of the standard headers. */
+
+/*
+ * Returning NULL will abort the continued operation!
+ */
+char* getpass_r(const char *prompt, char* buffer, size_t buflen);
+#endif
+
+#endif /* HEADER_CURL_TOOL_GETPASS_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_help.c b/external/libcurl_android/jni/libcurl/src/tool_help.c
new file mode 100755
index 00000000..c255be0b
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_help.c
@@ -0,0 +1,333 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "tool_panykey.h"
+#include "tool_help.h"
+#include "tool_libinfo.h"
+#include "tool_version.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef MSDOS
+# define USE_WATT32
+#endif
+
+/*
+ * A few of these source lines are >80 columns wide, but that's only because
+ * breaking the strings narrower makes this chunk look even worse!
+ *
+ * Starting with 7.18.0, this list of command line options is sorted based
+ * on the long option name. It is not done automatically, although a command
+ * line like the following can help out:
+ *
+ * curl --help | cut -c5- | grep "^-" | sort
+ */
+
+static const char *const helptext[] = {
+ "Usage: curl [options...] <url>",
+ "Options: (H) means HTTP/HTTPS only, (F) means FTP only",
+ " --anyauth Pick \"any\" authentication method (H)",
+ " -a, --append Append to target file when uploading (F/SFTP)",
+ " --basic Use HTTP Basic Authentication (H)",
+ " --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-type TYPE Certificate file type (DER/PEM/ENG) (SSL)",
+ " --ciphers LIST SSL ciphers to use (SSL)",
+ " --compressed Request compressed response (using deflate or gzip)",
+ " -K, --config FILE Read config from FILE",
+ " --connect-timeout SECONDS Maximum time allowed for connection",
+ " -C, --continue-at OFFSET Resumed transfer OFFSET",
+ " -b, --cookie STRING/FILE Read cookies from STRING/FILE (H)",
+ " -c, --cookie-jar FILE Write cookies to FILE after operation (H)",
+ " --create-dirs Create necessary local directory hierarchy",
+ " --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-ascii DATA HTTP POST ASCII data (H)",
+ " --data-binary DATA HTTP POST binary data (H)",
+ " --data-urlencode DATA HTTP POST data url encoded (H)",
+ " --delegation STRING GSS-API delegation permission",
+ " --digest Use HTTP Digest Authentication (H)",
+ " --disable-eprt Inhibit using EPRT or LPRT (F)",
+ " --disable-epsv Inhibit using EPSV (F)",
+ " --dns-servers DNS server addrs to use: 1.1.1.1;2.2.2.2",
+ " --dns-interface Interface to use for DNS requests",
+ " --dns-ipv4-addr IPv4 address to use for DNS requests, dot notation",
+ " --dns-ipv6-addr IPv6 address to use for DNS requests, dot notation",
+ " -D, --dump-header FILE Write the headers to FILE",
+ " --egd-file FILE EGD socket path for random data (SSL)",
+ " --engine ENGINE Crypto engine (use \"--engine list\" for list) (SSL)",
+#ifdef USE_ENVIRONMENT
+ " --environment Write results to environment variables (RISC OS)",
+#endif
+ " -f, --fail Fail silently (no output at all) on HTTP errors (H)",
+ " -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)",
+ " --ftp-alternative-to-user COMMAND "
+ "String to replace \"USER [name]\" (F)",
+ " --ftp-create-dirs Create the remote dirs if not present (F)",
+ " --ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)",
+ " --ftp-pasv Use PASV/EPSV instead of PORT (F)",
+ " -P, --ftp-port ADR Use PORT with given address instead of PASV (F)",
+ " --ftp-skip-pasv-ip Skip the IP address for PASV (F)\n"
+ " --ftp-pret Send PRET before PASV (for drftpd) (F)",
+ " --ftp-ssl-ccc Send CCC after authenticating (F)",
+ " --ftp-ssl-ccc-mode ACTIVE/PASSIVE Set CCC mode (F)",
+ " --ftp-ssl-control Require SSL/TLS for FTP login, "
+ "clear for transfer (F)",
+ " -G, --get Send the -d data with a HTTP GET (H)",
+ " -g, --globoff Disable URL sequences and ranges using {} and []",
+ " -H, --header LINE Pass custom header LINE to server (H)",
+ " -I, --head Show document info only",
+ " -h, --help This help text",
+ " --hostpubmd5 MD5 "
+ "Hex-encoded MD5 string of the host public key. (SSH)",
+ " -0, --http1.0 Use HTTP 1.0 (H)",
+ " --http1.1 Use HTTP 1.1 (H)",
+ " --http2 Use HTTP 2 (H)",
+ " --ignore-content-length Ignore the HTTP Content-Length header",
+ " -i, --include Include protocol headers in the output (H/F)",
+ " -k, --insecure Allow connections to SSL sites without certs (H)",
+ " --interface INTERFACE Use network INTERFACE (or address)",
+ " -4, --ipv4 Resolve name to IPv4 address",
+ " -6, --ipv6 Resolve name to IPv6 address",
+ " -j, --junk-session-cookies Ignore session cookies read from file (H)",
+ " --keepalive-time SECONDS Wait SECONDS between keepalive probes",
+ " --key KEY Private key file name (SSL/SSH)",
+ " --key-type TYPE Private key file type (DER/PEM/ENG) (SSL)",
+ " --krb LEVEL Enable Kerberos with security LEVEL (F)",
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+ " --libcurl FILE Dump libcurl equivalent code of this command line",
+#endif
+ " --limit-rate RATE Limit transfer speed to RATE",
+ " -l, --list-only List only mode (F/POP3)",
+ " --local-port RANGE Force use of RANGE for local port numbers",
+ " -L, --location Follow redirects (H)",
+ " --location-trusted "
+ "Like '--location', and send auth to other hosts (H)",
+ " --login-options OPTIONS Server login options (IMAP, POP3, SMTP)",
+ " -M, --manual Display the full manual",
+ " --mail-from FROM Mail from this address (SMTP)",
+ " --mail-rcpt TO Mail to this/these addresses (SMTP)",
+ " --mail-auth AUTH Originator address of the original email (SMTP)",
+ " --max-filesize BYTES Maximum file size to download (H/F)",
+ " --max-redirs NUM Maximum number of redirects allowed (H)",
+ " -m, --max-time SECONDS Maximum time allowed for the transfer",
+ " --metalink Process given URLs as metalink XML file",
+ " --negotiate Use HTTP Negotiate (SPNEGO) authentication (H)",
+ " -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 "
+ "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",
+ " --no-keepalive Disable keepalive use on the connection",
+ " --no-npn Disable the NPN TLS extension (H)",
+ " --no-sessionid Disable SSL session-ID reusing (SSL)",
+ " --noproxy List of hosts which do not use proxy",
+ " --ntlm Use HTTP NTLM authentication (H)",
+ " --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)",
+ " --post301 "
+ "Do not switch to GET after following a 301 redirect (H)",
+ " --post302 "
+ "Do not switch to GET after following a 302 redirect (H)",
+ " --post303 "
+ "Do not switch to GET after following a 303 redirect (H)",
+ " -#, --progress-bar Display transfer progress as a progress bar",
+ " --proto PROTOCOLS Enable/disable PROTOCOLS",
+ " --proto-redir PROTOCOLS Enable/disable PROTOCOLS on redirect",
+ " -x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port",
+ " --proxy-anyauth Pick \"any\" proxy authentication method (H)",
+ " --proxy-basic Use Basic authentication on the proxy (H)",
+ " --proxy-digest Use Digest authentication on the proxy (H)",
+ " --proxy-negotiate "
+ "Use HTTP Negotiate (SPNEGO) authentication on the proxy (H)",
+ " --proxy-ntlm Use NTLM authentication on the proxy (H)",
+ " -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)",
+ " --pubkey KEY Public key file name (SSH)",
+ " -Q, --quote CMD Send command(s) to server before transfer (F/SFTP)",
+ " --random-file FILE File for reading random data from (SSL)",
+ " -r, --range RANGE Retrieve only the bytes within RANGE",
+ " --raw Do HTTP \"raw\"; no transfer decoding (H)",
+ " -e, --referer Referer URL (H)",
+ " -J, --remote-header-name Use the header-provided filename (H)",
+ " -O, --remote-name Write output to a file named as the remote file",
+ " --remote-name-all Use the remote file name for all URLs",
+ " -R, --remote-time Set the remote file's time on the local output",
+ " -X, --request COMMAND Specify request command to use",
+ " --resolve HOST:PORT:ADDRESS Force resolve of HOST:PORT to ADDRESS",
+ " --retry NUM "
+ "Retry request NUM times if transient problems occur",
+ " --retry-delay SECONDS Wait SECONDS between retries",
+ " --retry-max-time SECONDS Retry only within this period",
+ " --sasl-ir Enable initial response in SASL authentication",
+ " -S, --show-error "
+ "Show error. With -s, make curl show errors when they occur",
+ " -s, --silent Silent mode (don't output anything)",
+ " --socks4 HOST[:PORT] SOCKS4 proxy on given host + port",
+ " --socks4a HOST[:PORT] SOCKS4a proxy on given host + port",
+ " --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 "
+ "Trigger 'speed-limit' abort after SECONDS (default: 30)",
+ " --ssl Try SSL/TLS (FTP, IMAP, POP3, SMTP)",
+ " --ssl-reqd Require SSL/TLS (FTP, IMAP, POP3, SMTP)",
+ " -2, --sslv2 Use SSLv2 (SSL)",
+ " -3, --sslv3 Use SSLv3 (SSL)",
+ " --ssl-allow-beast Allow security flaw to improve interop (SSL)",
+ " --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)",
+ " --tlsv1.0 Use TLSv1.0 (SSL)",
+ " --tlsv1.1 Use TLSv1.1 (SSL)",
+ " --tlsv1.2 Use TLSv1.2 (SSL)",
+ " --trace FILE Write a debug trace to FILE",
+ " --trace-ascii FILE Like --trace, but without hex output",
+ " --trace-time Add time stamps to trace/verbose output",
+ " --tr-encoding Request compressed transfer encoding (H)",
+ " -T, --upload-file FILE Transfer FILE to destination",
+ " --url URL URL to work with",
+ " -B, --use-ascii Use ASCII/text transfer",
+ " -u, --user USER[:PASSWORD] Server user and password",
+ " --tlsuser USER TLS username",
+ " --tlspassword STRING TLS password",
+ " --tlsauthtype STRING TLS authentication type (default: SRP)",
+ " -A, --user-agent STRING Send User-Agent STRING to server (H)",
+ " -v, --verbose Make the operation more talkative",
+ " -V, --version Show version number and quit",
+#ifdef USE_WATT32
+ " --wdebug Turn on Watt-32 debugging",
+#endif
+ " -w, --write-out FORMAT Use output FORMAT after completion",
+ " --xattr Store metadata in extended file attributes",
+ " -q Disable .curlrc (must be first parameter)",
+ NULL
+};
+
+#ifdef NETWARE
+# define PRINT_LINES_PAUSE 23
+#endif
+
+#ifdef __SYMBIAN32__
+# define PRINT_LINES_PAUSE 16
+#endif
+
+struct feat {
+ const char *name;
+ int bitmask;
+};
+
+static const struct feat feats[] = {
+ {"AsynchDNS", CURL_VERSION_ASYNCHDNS},
+ {"Debug", CURL_VERSION_DEBUG},
+ {"TrackMemory", CURL_VERSION_CURLDEBUG},
+ {"IDN", CURL_VERSION_IDN},
+ {"IPv6", CURL_VERSION_IPV6},
+ {"Largefile", CURL_VERSION_LARGEFILE},
+ {"SSPI", CURL_VERSION_SSPI},
+ {"GSS-API", CURL_VERSION_GSSAPI},
+ {"SPNEGO", CURL_VERSION_SPNEGO},
+ {"NTLM", CURL_VERSION_NTLM},
+ {"NTLM_WB", CURL_VERSION_NTLM_WB},
+ {"SSL", CURL_VERSION_SSL},
+ {"krb4", CURL_VERSION_KERBEROS4},
+ {"libz", CURL_VERSION_LIBZ},
+ {"CharConv", CURL_VERSION_CONV},
+ {"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
+ {"HTTP2", CURL_VERSION_HTTP2}
+};
+
+void tool_help(void)
+{
+ int i;
+ for(i = 0; helptext[i]; i++) {
+ puts(helptext[i]);
+#ifdef PRINT_LINES_PAUSE
+ if(i && ((i % PRINT_LINES_PAUSE) == 0))
+ tool_pressanykey();
+#endif
+ }
+}
+
+void tool_version_info(void)
+{
+ const char *const *proto;
+
+ printf(CURL_ID "%s\n", curl_version());
+ if(curlinfo->protocols) {
+ printf("Protocols: ");
+ for(proto = curlinfo->protocols; *proto; ++proto) {
+ printf("%s ", *proto);
+ }
+ puts(""); /* newline */
+ }
+ if(curlinfo->features) {
+ unsigned int i;
+ printf("Features: ");
+ for(i = 0; i < sizeof(feats)/sizeof(feats[0]); i++) {
+ if(curlinfo->features & feats[i].bitmask)
+ printf("%s ", feats[i].name);
+ }
+#ifdef USE_METALINK
+ printf("Metalink ");
+#endif
+ puts(""); /* newline */
+ }
+}
+
+void tool_list_engines(CURL *curl)
+{
+ struct curl_slist *engines = NULL;
+
+ /* Get the list of engines */
+ curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines);
+
+ puts("Build-time engines:");
+ if(engines) {
+ for(; engines; engines = engines->next)
+ printf(" %s\n", engines->data);
+ }
+ else {
+ puts(" <none>");
+ }
+
+ /* Cleanup the list of engines */
+ curl_slist_free_all(engines);
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_help.h b/external/libcurl_android/jni/libcurl/src/tool_help.h
new file mode 100755
index 00000000..9ef50069
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_help.h
@@ -0,0 +1,31 @@
+#ifndef HEADER_CURL_TOOL_HELP_H
+#define HEADER_CURL_TOOL_HELP_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+void tool_help(void);
+void tool_list_engines(CURL *curl);
+void tool_version_info(void);
+
+#endif /* HEADER_CURL_TOOL_HELP_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_helpers.c b/external/libcurl_android/jni/libcurl/src/tool_helpers.c
new file mode 100755
index 00000000..dbf32f8b
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_helpers.c
@@ -0,0 +1,77 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+** Helper functions that are used from more tha one source file.
+*/
+
+const char *param2text(int res)
+{
+ ParameterError error = (ParameterError)res;
+ switch(error) {
+ case PARAM_GOT_EXTRA_PARAMETER:
+ return "had unsupported trailing garbage";
+ case PARAM_OPTION_UNKNOWN:
+ return "is unknown";
+ case PARAM_OPTION_AMBIGUOUS:
+ return "is ambiguous";
+ case PARAM_REQUIRES_PARAMETER:
+ return "requires parameter";
+ case PARAM_BAD_USE:
+ return "is badly used here";
+ case PARAM_BAD_NUMERIC:
+ return "expected a proper numerical parameter";
+ case PARAM_NEGATIVE_NUMERIC:
+ return "expected a positive numerical parameter";
+ case PARAM_LIBCURL_DOESNT_SUPPORT:
+ return "the installed libcurl version doesn't support this";
+ case PARAM_NO_MEM:
+ return "out of memory";
+ default:
+ return "unknown error";
+ }
+}
+
+int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
+{
+ if((*store == HTTPREQ_UNSPEC) ||
+ (*store == req)) {
+ *store = req;
+ return 0;
+ }
+ warnf(config, "You can only select one HTTP request!\n");
+ return 1;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_helpers.h b/external/libcurl_android/jni/libcurl/src/tool_helpers.h
new file mode 100755
index 00000000..73bcfc77
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_helpers.h
@@ -0,0 +1,32 @@
+#ifndef HEADER_CURL_TOOL_HELPERS_H
+#define HEADER_CURL_TOOL_HELPERS_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+const char *param2text(int res);
+
+int SetHTTPrequest(struct OperationConfig *config, HttpReq req,
+ HttpReq *store);
+
+#endif /* HEADER_CURL_TOOL_HELPERS_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_homedir.c b/external/libcurl_android/jni/libcurl/src/tool_homedir.c
new file mode 100755
index 00000000..11bb4ef3
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_homedir.c
@@ -0,0 +1,95 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef HAVE_PWD_H
+# include <pwd.h>
+#endif
+
+#include "tool_homedir.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static char *GetEnv(const char *variable, char do_expand)
+{
+ char *env = NULL;
+#ifdef WIN32
+ char buf1[1024], buf2[1024];
+ DWORD rc;
+
+ /* Don't use getenv(); it doesn't find variable added after program was
+ * started. Don't accept truncated results (i.e. rc >= sizeof(buf1)). */
+
+ rc = GetEnvironmentVariable(variable, buf1, sizeof(buf1));
+ if(rc > 0 && rc < sizeof(buf1)) {
+ env = buf1;
+ variable = buf1;
+ }
+ 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 */
+ env = buf2;
+ }
+#else
+ (void)do_expand;
+ /* no length control */
+ env = getenv(variable);
+#endif
+ return (env && env[0]) ? strdup(env) : NULL;
+}
+
+/* return the home directory of the current user as an allocated string */
+char *homedir(void)
+{
+ char *home;
+
+ home = GetEnv("CURL_HOME", FALSE);
+ if(home)
+ return home;
+
+ home = GetEnv("HOME", FALSE);
+ if(home)
+ return home;
+
+#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
+ {
+ struct passwd *pw = getpwuid(geteuid());
+
+ if(pw) {
+ home = pw->pw_dir;
+ if(home && home[0])
+ home = strdup(home);
+ else
+ home = NULL;
+ }
+ }
+#endif /* PWD-stuff */
+#ifdef WIN32
+ home = GetEnv("APPDATA", TRUE);
+ if(!home)
+ home = GetEnv("%USERPROFILE%\\Application Data", TRUE); /* Normally only
+ on Win-2K/XP */
+#endif /* WIN32 */
+ return home;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_homedir.h b/external/libcurl_android/jni/libcurl/src/tool_homedir.h
new file mode 100755
index 00000000..d5886155
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_homedir.h
@@ -0,0 +1,28 @@
+#ifndef HEADER_CURL_TOOL_HOMEDIR_H
+#define HEADER_CURL_TOOL_HOMEDIR_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+char *homedir(void);
+
+#endif /* HEADER_CURL_TOOL_HOMEDIR_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_hugehelp.c b/external/libcurl_android/jni/libcurl/src/tool_hugehelp.c
new file mode 100755
index 00000000..eb6149d4
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_hugehelp.c
@@ -0,0 +1,8299 @@
+#include "tool_setup.h"
+#ifndef HAVE_LIBZ
+/*
+ * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
+ * Generation time: Wed Sep 10 00:40:56 2014
+ */
+#ifdef USE_MANUAL
+#include "tool_hugehelp.h"
+void hugehelp(void)
+{
+ fputs(
+" _ _ ____ _\n"
+" Project ___| | | | _ \\| |\n"
+" / __| | | | |_) | |\n"
+" | (__| |_| | _ <| |___\n"
+" \\___|\\___/|_| \\_\\_____|\n"
+"\n"
+"NAME\n"
+" curl - transfer a URL\n"
+"\n"
+"SYNOPSIS\n"
+" curl [options] [URL...]\n"
+"\n"
+"DESCRIPTION\n"
+" curl is a tool to transfer data from or to a server, using one of the\n"
+" supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,\n"
+, stdout);
+ fputs(
+" IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,\n"
+" TELNET and TFTP). The command is designed to work without user inter-\n"
+" action.\n"
+"\n"
+" curl offers a busload of useful tricks like proxy support, user authen-\n"
+" tication, FTP upload, HTTP post, SSL connections, cookies, file trans-\n"
+" fer resume, Metalink, and more. As you will see below, the number of\n"
+" features will make your head spin!\n"
+"\n"
+, stdout);
+ fputs(
+" curl is powered by libcurl for all transfer-related features. See\n"
+" libcurl(3) for details.\n"
+"\n"
+"URL\n"
+" The URL syntax is protocol-dependent. You'll find a detailed descrip-\n"
+" tion in RFC 3986.\n"
+"\n"
+" You can specify multiple URLs or parts of URLs by writing part sets\n"
+" within braces as in:\n"
+"\n"
+" http://site.{one,two,three}.com\n"
+"\n"
+" or you can get sequences of alphanumeric series by using [] as in:\n"
+"\n"
+" ftp://ftp.numericals.com/file[1-100].txt\n"
+, stdout);
+ fputs(
+" ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)\n"
+" ftp://ftp.letters.com/file[a-z].txt\n"
+"\n"
+" Nested sequences are not supported, but you can use several ones next\n"
+" to each other:\n"
+"\n"
+" http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
+"\n"
+" You can specify any amount of URLs on the command line. They will be\n"
+" fetched in a sequential manner in the specified order.\n"
+"\n"
+, stdout);
+ fputs(
+" You can specify a step counter for the ranges to get every Nth number\n"
+" or letter:\n"
+"\n"
+" http://www.numericals.com/file[1-100:10].txt\n"
+" http://www.letters.com/file[a-z:2].txt\n"
+"\n"
+" If you specify URL without protocol:// prefix, curl will attempt to\n"
+" guess what protocol you might want. It will then default to HTTP but\n"
+" try other protocols based on often-used host name prefixes. For exam-\n"
+, stdout);
+ fputs(
+" ple, for host names starting with \"ftp.\" curl will assume you want to\n"
+" speak FTP.\n"
+"\n"
+" curl will do its best to use what you pass to it as a URL. It is not\n"
+" trying to validate it as a syntactically correct URL by any means but\n"
+" is instead very liberal with what it accepts.\n"
+"\n"
+" curl will attempt to re-use connections for multiple file transfers, so\n"
+" that getting many files from the same server will not do multiple con-\n"
+, stdout);
+ fputs(
+" nects / handshakes. This improves speed. Of course this is only done on\n"
+" files specified on a single command line and cannot be used between\n"
+" separate curl invokes.\n"
+"\n"
+"PROGRESS METER\n"
+" curl normally displays a progress meter during operations, indicating\n"
+" the amount of transferred data, transfer speeds and estimated time\n"
+" left, etc.\n"
+"\n"
+" curl displays this data to the terminal by default, so if you invoke\n"
+, stdout);
+ fputs(
+" curl to do an operation and it is about to write data to the terminal,\n"
+" it disables the progress meter as otherwise it would mess up the output\n"
+" mixing progress meter and response data.\n"
+"\n"
+" If you want a progress meter for HTTP POST or PUT requests, you need to\n"
+" redirect the response output to a file, using shell redirect (>), -o\n"
+" [file] or similar.\n"
+"\n"
+" It is not the same case for FTP upload as that operation does not spit\n"
+, stdout);
+ fputs(
+" out any response data to the terminal.\n"
+"\n"
+" If you prefer a progress \"bar\" instead of the regular meter, -# is your\n"
+" friend.\n"
+"OPTIONS\n"
+" Options start with one or two dashes. Many of the options require an\n"
+" additional value next to them.\n"
+"\n"
+" The short \"single-dash\" form of the options, -d for example, may be\n"
+" used with or without a space between it and its value, although a space\n"
+, stdout);
+ fputs(
+" is a recommended separator. The long \"double-dash\" form, --data for\n"
+" example, requires a space between it and its value.\n"
+"\n"
+" Short version options that don't need any additional values can be used\n"
+" immediately next to each other, like for example you can specify all\n"
+" the options -O, -L and -v at once as -OLv.\n"
+"\n"
+" In general, all boolean options are enabled with --option and yet again\n"
+, stdout);
+ fputs(
+" disabled with --no-option. That is, you use the exact same option name\n"
+" but prefix it with \"no-\". However, in this list we mostly only list and\n"
+" show the --option version of them. (This concept with --no options was\n"
+" added in 7.19.0. Previously most options were toggled on/off on\n"
+" repeated use of the same command line option.)\n"
+"\n"
+" -#, --progress-bar\n"
+" Make curl display progress as a simple progress bar instead of\n"
+, stdout);
+ fputs(
+" the standard, more informational, meter.\n"
+"\n"
+" -:, --next\n"
+" Tells curl to use a separate operation for the following URL and\n"
+" associated options. This allows you to send several URL\n"
+" requests, each with their own specific options, for example,\n"
+" such as different user names or custom requests for each. (Added\n"
+" in 7.36.0)\n"
+"\n"
+" -0, --http1.0\n"
+, stdout);
+ fputs(
+" (HTTP) Tells curl to use HTTP version 1.0 instead of using its\n"
+" internally preferred: HTTP 1.1.\n"
+"\n"
+" --http1.1\n"
+" (HTTP) Tells curl to use HTTP version 1.1. This is the internal\n"
+" default version. (Added in 7.33.0)\n"
+"\n"
+" --http2\n"
+" (HTTP) Tells curl to issue its requests using HTTP 2. This\n"
+" requires that the underlying libcurl was built to support it.\n"
+" (Added in 7.33.0)\n"
+"\n"
+" --no-npn\n"
+, stdout);
+ fputs(
+" Disable the NPN TLS extension. NPN is enabled by default if\n"
+" libcurl was built with an SSL library that supports NPN. NPN is\n"
+" used by a libcurl that supports HTTP 2 to negotiate HTTP 2 sup-\n"
+" port with the server during https sessions.\n"
+"\n"
+" (Added in 7.36.0)\n"
+"\n"
+" --no-alpn\n"
+" Disable the ALPN TLS extension. ALPN is enabled by default if\n"
+, stdout);
+ fputs(
+" libcurl was built with an SSL library that supports ALPN. ALPN\n"
+" is used by a libcurl that supports HTTP 2 to negotiate HTTP 2\n"
+" support with the server during https sessions.\n"
+"\n"
+" (Added in 7.36.0)\n"
+"\n"
+" -1, --tlsv1\n"
+" (SSL) Forces curl to use TLS version 1.x when negotiating with a\n"
+" remote TLS server. You can use options --tlsv1.0, --tlsv1.1,\n"
+, stdout);
+ fputs(
+" and --tlsv1.2 to control the TLS version more precisely (if the\n"
+" SSL backend in use supports such a level of control).\n"
+"\n"
+" -2, --sslv2\n"
+" (SSL) Forces curl to use SSL version 2 when negotiating with a\n"
+" remote SSL server.\n"
+"\n"
+" -3, --sslv3\n"
+" (SSL) Forces curl to use SSL version 3 when negotiating with a\n"
+" remote SSL server.\n"
+"\n"
+" -4, --ipv4\n"
+, stdout);
+ fputs(
+" If curl is capable of resolving an address to multiple IP ver-\n"
+" sions (which it is if it is IPv6-capable), this option tells\n"
+" curl to resolve names to IPv4 addresses only.\n"
+"\n"
+" -6, --ipv6\n"
+" If curl is capable of resolving an address to multiple IP ver-\n"
+" sions (which it is if it is IPv6-capable), this option tells\n"
+" curl to resolve names to IPv6 addresses only.\n"
+"\n"
+" -a, --append\n"
+, stdout);
+ fputs(
+" (FTP/SFTP) When used in an upload, this will tell curl to append\n"
+" to the target file instead of overwriting it. If the file\n"
+" doesn't exist, it will be created. Note that this flag is\n"
+" ignored by some SSH servers (including OpenSSH).\n"
+"\n"
+" -A, --user-agent <agent string>\n"
+" (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
+" Some badly done CGIs fail if this field isn't set to\n"
+, stdout);
+ fputs(
+" \"Mozilla/4.0\". To encode blanks in the string, surround the\n"
+" string with single quote marks. This can also be set with the\n"
+" -H, --header option of course.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --anyauth\n"
+" (HTTP) Tells curl to figure out authentication method by itself,\n"
+" and use the most secure one the remote site claims to support.\n"
+, stdout);
+ fputs(
+" This is done by first doing a request and checking the response-\n"
+" headers, thus possibly inducing an extra network round-trip.\n"
+" This is used instead of setting a specific authentication\n"
+" method, which you can do with --basic, --digest, --ntlm, and\n"
+" --negotiate.\n"
+"\n"
+" Note that using --anyauth is not recommended if you do uploads\n"
+, stdout);
+ fputs(
+" from stdin, since it may require data to be sent twice and then\n"
+" the client must be able to rewind. If the need should arise when\n"
+" uploading from stdin, the upload operation will fail.\n"
+"\n"
+" -b, --cookie <name=data>\n"
+" (HTTP) Pass the data to the HTTP server as a cookie. It is sup-\n"
+" posedly the data previously received from the server in a \"Set-\n"
+" Cookie:\" line. The data should be in the format \"NAME1=VALUE1;\n"
+, stdout);
+ fputs(
+" NAME2=VALUE2\".\n"
+"\n"
+" If no '=' symbol is used in the line, it is treated as a file-\n"
+" name to use to read previously stored cookie lines from, which\n"
+" should be used in this session if they match. Using this method\n"
+" also activates the \"cookie parser\" which will make curl record\n"
+" incoming cookies too, which may be handy if you're using this in\n"
+, stdout);
+ fputs(
+" combination with the -L, --location option. The file format of\n"
+" the file to read cookies from should be plain HTTP headers or\n"
+" the Netscape/Mozilla cookie file format.\n"
+"\n"
+" NOTE that the file specified with -b, --cookie is only used as\n"
+" input. No cookies will be stored in the file. To store cookies,\n"
+" use the -c, --cookie-jar option or you could even save the HTTP\n"
+, stdout);
+ fputs(
+" headers to a file using -D, --dump-header!\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" -B, --use-ascii\n"
+" (FTP/LDAP) Enable ASCII transfer. For FTP, this can also be\n"
+" enforced by using an URL that ends with \";type=A\". This option\n"
+" causes data sent to stdout to be in text mode for win32 systems.\n"
+"\n"
+" --basic\n"
+" (HTTP) Tells curl to use HTTP Basic authentication. This is the\n"
+, stdout);
+ fputs(
+" default and this option is usually pointless, unless you use it\n"
+" to override a previously set option that sets a different\n"
+" authentication method (such as --ntlm, --digest, or --negoti-\n"
+" ate).\n"
+"\n"
+" -c, --cookie-jar <file name>\n"
+" (HTTP) Specify to which file you want curl to write all cookies\n"
+" after a completed operation. Curl writes all cookies previously\n"
+, stdout);
+ fputs(
+" read from a specified file as well as all cookies received from\n"
+" remote server(s). If no cookies are known, no file will be writ-\n"
+" ten. The file will be written using the Netscape cookie file\n"
+" format. If you set the file name to a single dash, \"-\", the\n"
+" cookies will be written to stdout.\n"
+"\n"
+" This command line option will activate the cookie engine that\n"
+, stdout);
+ fputs(
+" makes curl record and use cookies. Another way to activate it is\n"
+" to use the -b, --cookie option.\n"
+"\n"
+" If the cookie jar can't be created or written to, the whole curl\n"
+" operation won't fail or even report an error clearly. Using -v\n"
+" will get a warning displayed, but that is the only visible feed-\n"
+" back you get about this possibly lethal situation.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, the last specified file\n"
+" name will be used.\n"
+"\n"
+" -C, --continue-at <offset>\n"
+" Continue/Resume a previous file transfer at the given offset.\n"
+" The given offset is the exact number of bytes that will be\n"
+" skipped, counting from the beginning of the source file before\n"
+" it is transferred to the destination. If used with uploads, the\n"
+, stdout);
+ fputs(
+" FTP server command SIZE will not be used by curl.\n"
+"\n"
+" Use \"-C -\" to tell curl to automatically find out where/how to\n"
+" resume the transfer. It then uses the given output/input files\n"
+" to figure that out.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --ciphers <list of ciphers>\n"
+" (SSL) Specifies which ciphers to use in the connection. The list\n"
+, stdout);
+ fputs(
+" of ciphers must specify valid ciphers. Read up on SSL cipher\n"
+" list details on this URL:\n"
+" http://www.openssl.org/docs/apps/ciphers.html\n"
+"\n"
+" NSS ciphers are done differently than OpenSSL and GnuTLS. The\n"
+" full list of NSS ciphers is in the NSSCipherSuite entry at this\n"
+" URL: http://git.fedora-\n"
+, stdout);
+ fputs(
+" 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"
+"\n"
+" --compressed\n"
+" (HTTP) Request a compressed response using one of the algorithms\n"
+" curl supports, and save the uncompressed document. If this\n"
+" option is used and the server sends an unsupported encoding,\n"
+" curl will report an error.\n"
+"\n"
+" --connect-timeout <seconds>\n"
+, stdout);
+ fputs(
+" Maximum time in seconds that you allow the connection to the\n"
+" server to take. This only limits the connection phase, once\n"
+" curl has connected this option is of no more use. Since 7.32.0,\n"
+" this option accepts decimal values, but the actual timeout will\n"
+" decrease in accuracy as the specified timeout increases in deci-\n"
+" mal precision. See also the -m, --max-time option.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --create-dirs\n"
+" When used in conjunction with the -o option, curl will create\n"
+" the necessary local directory hierarchy as needed. This option\n"
+" creates the dirs mentioned with the -o option, nothing else. If\n"
+" the -o file name uses no dir or if the dirs it mentions already\n"
+" exist, no dir will be created.\n"
+"\n"
+, stdout);
+ fputs(
+" To create remote directories when using FTP or SFTP, try --ftp-\n"
+" create-dirs.\n"
+"\n"
+" --crlf (FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).\n"
+"\n"
+" --crlfile <file>\n"
+" (HTTPS/FTPS) Provide a file using PEM format with a Certificate\n"
+" Revocation List that may specify peer certificates that are to\n"
+" be considered revoked.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+, stdout);
+ fputs(
+" (Added in 7.19.7)\n"
+" -d, --data <data>\n"
+" (HTTP) Sends the specified data in a POST request to the HTTP\n"
+" server, in the same way that a browser does when a user has\n"
+" filled in an HTML form and presses the submit button. This will\n"
+" cause curl to pass the data to the server using the content-type\n"
+" application/x-www-form-urlencoded. Compare to -F, --form.\n"
+"\n"
+, stdout);
+ fputs(
+" -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"
+"\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"
+" with a separating &-symbol. Thus, using '-d name=daniel -d\n"
+, stdout);
+ fputs(
+" 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"
+" ing data from a file named 'foobar' would thus be done with\n"
+, stdout);
+ fputs(
+" --data @foobar. When --data is told to read from a file like\n"
+" that, carriage returns and newlines will be stripped out.\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"
+" then be read in a second curl invocation by using the -b,\n"
+, stdout);
+ fputs(
+" --cookie option! The -c, --cookie-jar option is however a better\n"
+" way to store cookies.\n"
+"\n"
+" When used in FTP, the FTP server response lines are considered\n"
+" being \"headers\" and thus are saved there.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --data-ascii <data>\n"
+" See -d, --data.\n"
+"\n"
+" --data-binary <data>\n"
+" (HTTP) This posts data exactly as specified with no extra pro-\n"
+, stdout);
+ fputs(
+" cessing whatsoever.\n"
+"\n"
+" If you start the data with the letter @, the rest should be a\n"
+" 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-urlencode <data>\n"
+, stdout);
+ fputs(
+" (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"
+" content\n"
+" This will make curl URL-encode the content and pass that\n"
+, stdout);
+ fputs(
+" on. Just be careful so that the content doesn't contain\n"
+" any = or @ symbols, as that will then make the syntax\n"
+" match one of the other cases below!\n"
+"\n"
+" =content\n"
+" This will make curl URL-encode the content and pass that\n"
+" on. The preceding = symbol is not included in the data.\n"
+"\n"
+" name=content\n"
+, stdout);
+ fputs(
+" This will make curl URL-encode the content part and pass\n"
+" that on. Note that the name part is expected to be URL-\n"
+" encoded already.\n"
+"\n"
+" @filename\n"
+" This will make curl load data from the given file\n"
+" (including any newlines), URL-encode that data and pass\n"
+" 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"
+" appended, resulting in name=urlencoded-file-content. Note\n"
+" 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(
+" it comes to user credentials. Used with GSS/kerberos.\n"
+"\n"
+" none Don't allow any delegation.\n"
+"\n"
+" policy Delegates if and only if the OK-AS-DELEGATE flag is set\n"
+" in the Kerberos service ticket, which is a matter of\n"
+" realm policy.\n"
+"\n"
+" always Unconditionally allow the server to delegate.\n"
+"\n"
+" --digest\n"
+" (HTTP) Enables HTTP Digest authentication. This is an authenti-\n"
+, stdout);
+ fputs(
+" 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"
+" --ntlm, --negotiate and --anyauth for related options.\n"
+"\n"
+" If this option is used several times, only the first one is\n"
+" used.\n"
+"\n"
+" --disable-eprt\n"
+, stdout);
+ fputs(
+" (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
+" when doing active FTP transfers. Curl will normally always first\n"
+" attempt to use EPRT, then LPRT before using PORT, but with this\n"
+" option, it will use PORT right away. EPRT and LPRT are exten-\n"
+" sions to the original FTP protocol, and may not work on all\n"
+" servers, but they enable more functionality in a better way than\n"
+, stdout);
+ fputs(
+" the traditional PORT command.\n"
+"\n"
+" --eprt can be used to explicitly enable EPRT again and --no-eprt\n"
+" is an alias for --disable-eprt.\n"
+"\n"
+" Disabling EPRT only changes the active behavior. If you want to\n"
+" switch to passive mode you need to not use -P, --ftp-port or\n"
+" force it with --ftp-pasv.\n"
+"\n"
+" --disable-epsv\n"
+" (FTP) Tell curl to disable the use of the EPSV command when\n"
+, stdout);
+ fputs(
+" doing passive FTP transfers. Curl will normally always first\n"
+" attempt to use EPSV before PASV, but with this option, it will\n"
+" not try using EPSV.\n"
+"\n"
+" --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
+" is an alias for --disable-epsv.\n"
+"\n"
+" Disabling EPSV only changes the passive behavior. If you want to\n"
+" switch to active mode you need to use -P, --ftp-port.\n"
+"\n"
+, stdout);
+ fputs(
+" --dns-interface <interface>\n"
+" Tell curl to send outgoing DNS requests through <interface>.\n"
+" This option is a counterpart to --interface (which does not\n"
+" affect DNS). The supplied string must be an interface name (not\n"
+" an address).\n"
+"\n"
+" This option requires that libcurl was built with a resolver\n"
+" backend that supports this operation. The c-ares backend is the\n"
+, stdout);
+ fputs(
+" only such one. (Added in 7.33.0)\n"
+"\n"
+" --dns-ipv4-addr <ip-address>\n"
+" Tell curl to bind to <ip-address> when making IPv4 DNS requests,\n"
+" so that the DNS requests originate from this address. The argu-\n"
+" ment should be a single IPv4 address.\n"
+"\n"
+" This option requires that libcurl was built with a resolver\n"
+" backend that supports this operation. The c-ares backend is the\n"
+, stdout);
+ fputs(
+" only such one. (Added in 7.33.0)\n"
+"\n"
+" --dns-ipv6-addr <ip-address>\n"
+" Tell curl to bind to <ip-address> when making IPv6 DNS requests,\n"
+" so that the DNS requests originate from this address. The argu-\n"
+" ment should be a single IPv6 address.\n"
+"\n"
+" This option requires that libcurl was built with a resolver\n"
+" backend that supports this operation. The c-ares backend is the\n"
+, stdout);
+ fputs(
+" only such one. (Added in 7.33.0)\n"
+"\n"
+" --dns-servers <ip-address,ip-address>\n"
+" Set the list of DNS servers to be used instead of the system\n"
+" default. The list of IP addresses should be separated with com-\n"
+" mas. Port numbers may also optionally be given as :<port-number>\n"
+" after each IP address.\n"
+"\n"
+" This option requires that libcurl was built with a resolver\n"
+, stdout);
+ fputs(
+" backend that supports this operation. The c-ares backend is the\n"
+" only such one. (Added in 7.33.0)\n"
+"\n"
+" -e, --referer <URL>\n"
+" (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
+" This can also be set with the -H, --header flag of course. When\n"
+" used with -L, --location you can append \";auto\" to the --referer\n"
+" URL to make curl automatically set the previous URL when it fol-\n"
+, stdout);
+ fputs(
+" lows a Location: header. The \";auto\" string can be used alone,\n"
+" even if you don't set an initial --referer.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" -E, --cert <certificate[:password]>\n"
+" (SSL) Tells curl to use the specified client certificate file\n"
+" when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
+" col. The certificate must be in PKCS#12 format if using Secure\n"
+, stdout);
+ fputs(
+" Transport, or PEM format if using any other engine. If the\n"
+" optional password isn't specified, it will be queried for on the\n"
+" terminal. Note that this option assumes a \"certificate\" file\n"
+" that is the private key and the private certificate concate-\n"
+" nated! See --cert and --key to specify them independently.\n"
+"\n"
+" If curl is built against the NSS SSL library then this option\n"
+, stdout);
+ fputs(
+" can tell curl the nickname of the certificate to use within the\n"
+" NSS database defined by the environment variable SSL_DIR (or by\n"
+" default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (lib-\n"
+" nsspem.so) is available then PEM files may be loaded. If you\n"
+" want to use a file from the current directory, please precede it\n"
+" with \"./\" prefix, in order to avoid confusion with a nickname.\n"
+, stdout);
+ fputs(
+" If the nickname contains \":\", it needs to be preceded by \"\\\" so\n"
+" that it is not recognized as password delimiter. If the nick-\n"
+" name contains \"\\\", it needs to be escaped as \"\\\\\" so that it is\n"
+" not recognized as an escape character.\n"
+"\n"
+" (iOS and Mac OS X only) If curl is built against Secure Trans-\n"
+" port, then the certificate string can either be the name of a\n"
+, stdout);
+ fputs(
+" certificate/private key in the system or user keychain, or the\n"
+" path to a PKCS#12-encoded certificate and private key. If you\n"
+" want to use a file from the current directory, please precede it\n"
+" with \"./\" prefix, in order to avoid confusion with a nickname.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --engine <name>\n"
+" Select the OpenSSL crypto engine to use for cipher operations.\n"
+, stdout);
+ fputs(
+" Use --engine list to print a list of build-time supported\n"
+" engines. Note that not all (or none) of the engines may be\n"
+" available at run-time.\n"
+"\n"
+" --environment\n"
+" (RISC OS ONLY) Sets a range of environment variables, using the\n"
+" names the -w option supports, to allow easier extraction of use-\n"
+" ful information after having run curl.\n"
+"\n"
+" --egd-file <file>\n"
+, stdout);
+ fputs(
+" (SSL) Specify the path name to the Entropy Gathering Daemon\n"
+" socket. The socket is used to seed the random engine for SSL\n"
+" connections. See also the --random-file option.\n"
+"\n"
+" --cert-type <type>\n"
+" (SSL) Tells curl what certificate type the provided certificate\n"
+" is in. PEM, DER and ENG are recognized types. If not specified,\n"
+" PEM is assumed.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --cacert <CA certificate>\n"
+" (SSL) Tells curl to use the specified certificate file to verify\n"
+" the peer. The file may contain multiple CA certificates. The\n"
+" certificate(s) must be in PEM format. Normally curl is built to\n"
+" use a default file for this, so this option is typically used to\n"
+" alter that default file.\n"
+"\n"
+, stdout);
+ fputs(
+" curl recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
+" if it is set, and uses the given path as a path to a CA cert\n"
+" bundle. This option overrides that variable.\n"
+"\n"
+" The windows version of curl will automatically look for a CA\n"
+" certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
+" tory as curl.exe, or in the Current Working Directory, or in any\n"
+" folder along your PATH.\n"
+"\n"
+, stdout);
+ fputs(
+" If curl is built against the NSS SSL library, the NSS PEM\n"
+" PKCS#11 module (libnsspem.so) needs to be available for this\n"
+" option to work properly.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --capath <CA certificate directory>\n"
+" (SSL) Tells curl to use the specified certificate directory to\n"
+" verify the peer. Multiple paths can be provided by separating\n"
+, stdout);
+ fputs(
+" them with \":\" (e.g. \"path1:path2:path3\"). The certificates must\n"
+" be in PEM format, and if curl is built against OpenSSL, the\n"
+" directory must have been processed using the c_rehash utility\n"
+" supplied with OpenSSL. Using --capath can allow OpenSSL-powered\n"
+" curl to make SSL-connections much more efficiently than using\n"
+" --cacert if the --cacert file contains many CA certificates.\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" -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"
+, 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"
+" successful response codes will slip through, especially when\n"
+" authentication is involved (response codes 401 and 407).\n"
+"\n"
+" -F, --form <name=content>\n"
+" (HTTP) This lets curl emulate a filled-in form in which a user\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"
+, 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"
+" Example, to send your password file to the server, where 'pass-\n"
+" word' is the name of the form-field to which /etc/passwd will be\n"
+" the input:\n"
+"\n"
+" curl -F password=@/etc/passwd www.mypasswords.com\n"
+"\n"
+, stdout);
+ fputs(
+" To read content from stdin instead of a file, use - as the file-\n"
+" name. This goes for both @ and < constructs.\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"
+" or\n"
+"\n"
+" curl -F \"name=daniel;type=text/foo\" url.com\n"
+"\n"
+" You can also explicitly change the name field of a file upload\n"
+, stdout);
+ fputs(
+" part by setting filename=, like this:\n"
+"\n"
+" curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
+"\n"
+" If filename/path contains ',' or ';', it must be quoted by dou-\n"
+" ble-quotes like:\n"
+"\n"
+" curl -F \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\" url.com\n"
+"\n"
+" or\n"
+"\n"
+" 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"
+" See further examples and details in the MANUAL.\n"
+"\n"
+" This option can be used multiple times.\n"
+"\n"
+" --ftp-account [data]\n"
+" (FTP) When an FTP server asks for \"account data\" after user name\n"
+" 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"
+" \"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"
+" curl is to fail. Using this option, curl will instead attempt to\n"
+" 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(
+" 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"
+" 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"
+" 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(
+" --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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" See also the -A, --user-agent and -e, --referer options.\n"
+"\n"
+" 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"
+" This option can be used multiple times to add/replace/remove\n"
+" multiple headers.\n"
+"\n"
+" --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"
+" 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"
+" 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"
+" 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"
+" (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(
+" by default. This makes all connections considered \"insecure\"\n"
+" fail unless -k, --insecure is used.\n"
+"\n"
+" See this online resource for further details:\n"
+" 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(
+" 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(
+" 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(
+" 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"
+" 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"
+" 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"
+" 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"
+" # --- 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"
+" referer = \"http://nowhereatall.com/\"\n"
+" # --- End of example file ---\n"
+"\n"
+" 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(
+" 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 unspecified, the option defaults to 60 seconds.\n"
+"\n"
+" --key <key>\n"
+" (SSL/SSH) Private key file name. Allows you to provide your pri-\n"
+" vate key in this separate file.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --key-type <type>\n"
+" (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"
+, stdout);
+ fputs(
+" specified, PEM is assumed.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --krb <level>\n"
+" (FTP) Enable Kerberos authentication and use. The level must be\n"
+" entered and should be one of 'clear', 'safe', 'confidential', or\n"
+" 'private'. Should you use a level that is not one of these,\n"
+" 'private' will instead be used.\n"
+"\n"
+, stdout);
+ fputs(
+" This option requires a library built with kerberos4 support.\n"
+" This is not very common. Use -V, --version to see if your curl\n"
+" supports it.\n"
+"\n"
+" 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"
+" only view. This is especially useful if the user wants to\n"
+, stdout);
+ fputs(
+" 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"
+" NLST; they do not include sub-directories and symbolic links.\n"
+"\n"
+, stdout);
+ fputs(
+" (POP3) When retrieving a specific email from POP3, this switch\n"
+" forces a LIST command to be performed instead of RETR. This is\n"
+" particularly useful if the user wants to see if a specific mes-\n"
+" sage id exists on the server and what size it is.\n"
+"\n"
+" Note: When combined with -X, --request <command>, this option\n"
+" can be used to send an UIDL command instead, so the user may use\n"
+, stdout);
+ fputs(
+" the email's unique identifier rather than it's message id to\n"
+" make the request. (Added in 7.21.5)\n"
+"\n"
+" -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"
+" request on the new place. If used together with -i, --include or\n"
+, stdout);
+ fputs(
+" -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"
+" redirects to follow by using the --max-redirs option.\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" You can tell curl to not change the non-GET request method to\n"
+, stdout);
+ fputs(
+" GET after a 30x response by using the dedicated options for\n"
+" that: --post301, --post302 and -post303.\n"
+"\n"
+" --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"
+" If this option is used several times, the last given file name\n"
+, stdout);
+ fputs(
+" will be used. (Added in 7.16.1)\n"
+"\n"
+" --limit-rate <speed>\n"
+" Specify the maximum transfer rate you want curl to use - for\n"
+" both downloads and uploads. This feature is useful if you have a\n"
+" limited pipe and you'd like your transfer not to use your entire\n"
+" 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"
+, stdout);
+ fputs(
+" 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"
+" short bursts, but over time it uses no more than the given rate.\n"
+, stdout);
+ fputs(
+" If you also use the -Y, --speed-limit option, that option will\n"
+" take precedence and might cripple the rate-limiting slightly, to\n"
+" help keeping the speed-limit logic working.\n"
+"\n"
+" 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"
+" the connection(s). Note that port numbers by nature are a\n"
+, stdout);
+ fputs(
+" scarce resource that will be busy at times so setting this range\n"
+" to something too narrow might cause unnecessary connection setup\n"
+" failures. (Added in 7.15.2)\n"
+"\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"
+" may or may not introduce a security breach if the site redirects\n"
+, stdout);
+ fputs(
+" 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"
+" ing for hours due to slow networks or links going down. Since\n"
+, stdout);
+ fputs(
+" 7.32.0, this option accepts decimal values, but the actual time-\n"
+" out will decrease in accuracy as the specified timeout increases\n"
+" in decimal precision. See also the --connect-timeout option.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --login-options <options>\n"
+" Specify the login options to use during server authentication.\n"
+"\n"
+, stdout);
+ fputs(
+" You can use the login options to specify protocol specific\n"
+" options that may be used during authentication. At present only\n"
+" IMAP, POP3 and SMTP support login options. For more information\n"
+" about the login options please see RFC 2384, RFC 5092 and IETF\n"
+" draft draft-earhart-url-smtp-00.txt (Added in 7.34.0).\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --mail-auth <address>\n"
+, stdout);
+ fputs(
+" (SMTP) Specify a single address. This will be used to specify\n"
+" the authentication address (identity) of a submitted message\n"
+" that is being relayed to another server.\n"
+"\n"
+" (Added in 7.25.0)\n"
+"\n"
+" --mail-from <address>\n"
+" (SMTP) Specify a single address that the given mail should get\n"
+" sent from.\n"
+"\n"
+" (Added in 7.20.0)\n"
+"\n"
+" --max-filesize <bytes>\n"
+, stdout);
+ fputs(
+" Specify the maximum size (in bytes) of a file to download. If\n"
+" the file requested is larger than this value, the transfer will\n"
+" not start and curl will return with exit code 63.\n"
+"\n"
+" NOTE: The file size is not always known prior to download, and\n"
+" for such files this option has no effect even if the file trans-\n"
+" fer ends up being larger than this given limit. This concerns\n"
+, stdout);
+ fputs(
+" both FTP and HTTP transfers.\n"
+"\n"
+" --mail-rcpt <address>\n"
+" (SMTP) Specify a single address, user name or mailing list name.\n"
+" When performing a mail transfer, the recipient should specify a\n"
+" valid email address to send the mail to. (Added in 7.20.0)\n"
+"\n"
+" When performing an address verification (VRFY command), the\n"
+" recipient should be specified as the user name or user name and\n"
+, stdout);
+ fputs(
+" domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)\n"
+"\n"
+" When performing a mailing list expand (EXPN command), the recip-\n"
+" ient should be specified using the mailing list name, such as\n"
+" \"Friends\" or \"London-Office\". (Added in 7.34.0)\n"
+"\n"
+" --max-redirs <num>\n"
+" Set maximum number of redirection-followings allowed. If -L,\n"
+" --location is used, this option can be used to prevent curl from\n"
+, stdout);
+ fputs(
+" following redirections \"in absurdum\". By default, the limit is\n"
+" set to 50 redirections. Set this option to -1 to make it limit-\n"
+" less.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --metalink\n"
+" This option can tell curl to parse and process a given URI as\n"
+" Metalink file (both version 3 and 4 (RFC 5854) are supported)\n"
+, stdout);
+ fputs(
+" and make use of the mirrors listed within for failover if there\n"
+" are errors (such as the file or server not being available). It\n"
+" will also verify the hash of the file after the download com-\n"
+" pletes. The Metalink file itself is downloaded and processed in\n"
+" memory and not stored in the local file system.\n"
+"\n"
+" Example to use a remote Metalink file:\n"
+"\n"
+, stdout);
+ fputs(
+" curl --metalink http://www.example.com/example.metalink\n"
+"\n"
+" To use a Metalink file in the local file system, use FILE proto-\n"
+" col (file://):\n"
+"\n"
+" curl --metalink file://example.metalink\n"
+"\n"
+" Please note that if FILE protocol is disabled, there is no way\n"
+" to use a local Metalink file at the time of this writing. Also\n"
+" note that if --metalink and --include are used together,\n"
+, stdout);
+ fputs(
+" --include will be ignored. This is because including headers in\n"
+" the response will break Metalink parser and if the headers are\n"
+" included in the file described in Metalink file, hash check will\n"
+" fail.\n"
+"\n"
+" (Added in 7.27.0, if built against the libmetalink library.)\n"
+"\n"
+" -n, --netrc\n"
+" Makes curl scan the .netrc (_netrc on Windows) file in the\n"
+, stdout);
+ fputs(
+" 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"
+" readable). The environment variable \"HOME\" is used to find the\n"
+, stdout);
+ fputs(
+" home 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"
+" 'myself' and password 'secret' should look similar to:\n"
+"\n"
+" machine host.domain.com login myself password secret\n"
+"\n"
+" -N, --no-buffer\n"
+" Disables the buffering of the output stream. In normal work sit-\n"
+, stdout);
+ fputs(
+" uations, curl will use a standard buffered output stream that\n"
+" will have the effect that it will output the data in chunks, not\n"
+" necessarily exactly when the data arrives. Using this option\n"
+" will disable that buffering.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --buffer to enforce the buffering.\n"
+"\n"
+" --netrc-file\n"
+, stdout);
+ fputs(
+" This option is similar to --netrc, except that you provide the\n"
+" path (absolute or relative) to the netrc file that Curl should\n"
+" use. You can only specify one netrc file per invocation. If\n"
+" several --netrc-file options are provided, only the last one\n"
+" will be used. (Added in 7.21.5)\n"
+"\n"
+" This option overrides any use of --netrc as they are mutually\n"
+, stdout);
+ fputs(
+" exclusive. It will also abide by --netrc-optional if specified.\n"
+"\n"
+" --netrc-optional\n"
+" Very similar to --netrc, but this option makes the .netrc usage\n"
+" optional and not mandatory as the --netrc option does.\n"
+"\n"
+" --negotiate\n"
+" (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
+"\n"
+" If you want to enable Negotiate (SPNEGO) for proxy authentica-\n"
+" tion, then use --proxy-negotiate.\n"
+"\n"
+, stdout);
+ fputs(
+" This option requires a library built with GSS-API or SSPI sup-\n"
+" port. Use -V, --version to see if your curl supports GSS-\n"
+" API/SSPI and SPNEGO.\n"
+"\n"
+" When using this option, you must also provide a fake -u, --user\n"
+" option to activate the authentication code properly. Sending a\n"
+" '-u :' is enough as the user name and password from the -u\n"
+" option aren't actually used.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, only the first one is\n"
+" used.\n"
+"\n"
+" --no-keepalive\n"
+" Disables the use of keepalive messages on the TCP connection, as\n"
+" by default curl enables them.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --keepalive to enforce keepalive.\n"
+"\n"
+" --no-sessionid\n"
+" (SSL) Disable curl's use of SSL session-ID caching. By default\n"
+, stdout);
+ fputs(
+" all transfers are done using the cache. Note that while nothing\n"
+" should ever get hurt by attempting to reuse SSL session-IDs,\n"
+" there seem to be broken SSL implementations in the wild that may\n"
+" require you to disable this in order for you to succeed. (Added\n"
+" in 7.16.0)\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --sessionid to enforce session-ID caching.\n"
+"\n"
+, stdout);
+ fputs(
+" --noproxy <no-proxy-list>\n"
+" Comma-separated list of hosts which do not use a proxy, if one\n"
+" is specified. The only wildcard is a single * character, which\n"
+" matches all hosts, and effectively disables the proxy. Each name\n"
+" in this list is matched as either a domain which contains the\n"
+" hostname, or the hostname itself. For example, local.com would\n"
+, stdout);
+ fputs(
+" match local.com, local.com:80, and www.local.com, but not\n"
+" www.notlocal.com. (Added in 7.19.4).\n"
+"\n"
+" --ntlm (HTTP) Enables NTLM authentication. The NTLM authentication\n"
+" method was designed by Microsoft and is used by IIS web servers.\n"
+" It is a proprietary protocol, reverse-engineered by clever peo-\n"
+" ple and implemented in curl based on their efforts. This kind of\n"
+, stdout);
+ fputs(
+" behavior should not be endorsed, you should encourage everyone\n"
+" who uses NTLM to switch to a public and documented authentica-\n"
+" tion method instead, such as Digest.\n"
+"\n"
+" If you want to enable NTLM for your proxy authentication, then\n"
+" use --proxy-ntlm.\n"
+"\n"
+" This option requires a library built with SSL support. Use -V,\n"
+" --version to see if your curl supports NTLM.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, only the first one is\n"
+" used.\n"
+"\n"
+" -o, --output <file>\n"
+" Write output to <file> instead of stdout. If you are using {} or\n"
+" [] to fetch multiple documents, you can use '#' followed by a\n"
+" number in the <file> specifier. That variable will be replaced\n"
+" with the current string for the URL being fetched. Like in:\n"
+"\n"
+, stdout);
+ fputs(
+" curl http://{one,two}.site.com -o \"file_#1.txt\"\n"
+"\n"
+" or use several variables like:\n"
+"\n"
+" curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
+"\n"
+" You may use this option as many times as the number of URLs you\n"
+" have.\n"
+"\n"
+" See also the --create-dirs option to create the local directo-\n"
+" ries dynamically. Specifying the output as '-' (a single dash)\n"
+" will force the output to be done to stdout.\n"
+"\n"
+, stdout);
+ fputs(
+" -O, --remote-name\n"
+" Write output to a local file named like the remote file we get.\n"
+" (Only the file part of the remote file is used, the path is cut\n"
+" off.)\n"
+"\n"
+" The remote file name to use for saving is extracted from the\n"
+" given URL, nothing else.\n"
+"\n"
+" Consequentially, the file will be saved in the current working\n"
+" directory. If you want the file saved in a different directory,\n"
+, stdout);
+ fputs(
+" make sure you change current working directory before you invoke\n"
+" curl with the -O, --remote-name flag!\n"
+"\n"
+" There is no URL decoding done on the file name. If it has %20 or\n"
+" other URL encoded parts of the name, they will end up as-is as\n"
+" file name.\n"
+"\n"
+" You may use this option as many times as the number of URLs you\n"
+" have.\n"
+"\n"
+" --oauth2-bearer\n"
+, stdout);
+ fputs(
+" (IMAP, POP3, SMTP) Specify the Bearer Token for OAUTH 2.0 server\n"
+" authentication. The Bearer Token is used in conjunction with the\n"
+" user name which can be specified as part of the --url or -u,\n"
+" --user options.\n"
+"\n"
+" The Bearer Token and user name are formatted according to RFC\n"
+" 6750.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --proxy-header <header>\n"
+, stdout);
+ fputs(
+" (HTTP) Extra header to include in the request when sending HTTP\n"
+" to a proxy. You may specify any number of extra headers. This is\n"
+" the equivalent option to -H, --header but is for proxy communi-\n"
+" cation only like in CONNECT requests when you want a separate\n"
+" header sent to the proxy to what is sent to the actual remote\n"
+" host.\n"
+"\n"
+" curl will make sure that each header you add/replace is sent\n"
+, stdout);
+ fputs(
+" with the proper end-of-line marker, you should thus not add that\n"
+" as a part of the header content: do not add newlines or carriage\n"
+" returns, they will only mess things up for you.\n"
+"\n"
+" Headers specified with this option will not be included in\n"
+" requests that curl knows will not be sent to a proxy.\n"
+"\n"
+" This option can be used multiple times to add/replace/remove\n"
+" multiple headers.\n"
+, stdout);
+ fputs(
+" (Added in 7.37.0)\n"
+" -p, --proxytunnel\n"
+" When an HTTP proxy is used (-x, --proxy), this option will cause\n"
+" non-HTTP protocols to attempt to tunnel through the proxy\n"
+" instead of merely using it to do HTTP-like operations. The tun-\n"
+" nel approach is made with the HTTP proxy CONNECT request and\n"
+" requires that the proxy allows direct connect to the remote port\n"
+, stdout);
+ fputs(
+" number curl wants to tunnel through to.\n"
+"\n"
+" -P, --ftp-port <address>\n"
+" (FTP) Reverses the default initiator/listener roles when con-\n"
+" necting with FTP. This switch makes curl use active mode. In\n"
+" practice, curl then tells the server to connect back to the\n"
+" client's specified address and port, while passive mode asks the\n"
+" server to setup an IP address and port for it to connect to.\n"
+, stdout);
+ fputs(
+" <address> should be one of:\n"
+"\n"
+" interface\n"
+" i.e \"eth0\" to specify which interface's IP address you\n"
+" want to use (Unix only)\n"
+"\n"
+" IP address\n"
+" i.e \"192.168.10.1\" to specify the exact IP address\n"
+"\n"
+" host name\n"
+" i.e \"my.host.domain\" to specify the machine\n"
+"\n"
+" - make curl pick the same IP address that is already used\n"
+, stdout);
+ 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"
+"\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"
+, 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"
+"\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"
+, stdout);
+ fputs(
+" POST requests into GET requests when following a 301 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"
+" 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"
+" 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"
+" 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"
+" 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"
+" - Deny this protocol, removing it from the list of protocols\n"
+" already permitted.\n"
+"\n"
+" = Permit only this protocol (ignoring the list already permit-\n"
+" ted), though subject to later modification by subsequent\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"
+" only enables http and https\n"
+"\n"
+" --proto =http,https\n"
+" also only enables http and https\n"
+"\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"
+" This option can be used multiple times, in which case the effect\n"
+" is the same as concatenating the protocols into one instance of\n"
+" the option.\n"
+"\n"
+" (Added in 7.20.2)\n"
+"\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"
+" 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"
+" uses with proxies.\n"
+"\n"
+" --proxy-digest\n"
+" Tells curl to use HTTP Digest authentication when communicating\n"
+" with the given proxy. Use --digest for enabling HTTP Digest with\n"
+" a remote host.\n"
+"\n"
+" --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"
+" HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1)\n"
+"\n"
+" --proxy-ntlm\n"
+" Tells curl to use HTTP NTLM authentication when communicating\n"
+" with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
+" host.\n"
+"\n"
+" --proxy1.0 <proxyhost[:port]>\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+"\n"
+" -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"
+" (FTP/SFTP) Send an arbitrary command to the remote FTP or SFTP\n"
+, stdout);
+ fputs(
+" server. Quote commands are sent BEFORE the transfer takes place\n"
+" (just after the initial PWD command in an FTP transfer, to be\n"
+" 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"
+" command(s), prefix the command with a '+' (this is only sup-\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+" multiple times. When speaking to an FTP server, prefix the com-\n"
+, stdout);
+ fputs(
+" 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"
+" SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
+" quote commands itself before sending them to the server. File\n"
+" names may be quoted shell-style to embed spaces or special char-\n"
+" acters. Following is the list of all supported SFTP quote com-\n"
+" mands:\n"
+"\n"
+, stdout);
+ fputs(
+" chgrp group file\n"
+" The chgrp command sets the group ID of the file named by\n"
+" the file operand to the group ID specified by the group\n"
+" operand. The group operand is a decimal integer group ID.\n"
+"\n"
+" chmod mode file\n"
+" The chmod command modifies the file mode bits of the\n"
+" specified file. The mode operand is an octal integer mode\n"
+" number.\n"
+"\n"
+, stdout);
+ fputs(
+" chown user file\n"
+" The chown command sets the owner of the file named by the\n"
+" file operand to the user ID specified by the user oper-\n"
+" and. The user operand is a decimal integer user ID.\n"
+"\n"
+" ln source_file target_file\n"
+" The ln and symlink commands create a symbolic link at the\n"
+" target_file location pointing to the source_file loca-\n"
+" tion.\n"
+"\n"
+, stdout);
+ fputs(
+" mkdir directory_name\n"
+" The mkdir command creates the directory named by the\n"
+" 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"
+" The rename command renames the file or directory named by\n"
+" the source operand to the destination path named by the\n"
+, stdout);
+ fputs(
+" target operand.\n"
+"\n"
+" rm file\n"
+" The rm command removes the file specified by the file op-\n"
+" erand.\n"
+"\n"
+" rmdir directory\n"
+" The rmdir command removes the directory entry specified\n"
+" by the directory operand, provided it is empty.\n"
+"\n"
+" symlink source_file target_file\n"
+" See ln.\n"
+"\n"
+" -r, --range <range>\n"
+, stdout);
+ fputs(
+" (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a partial docu-\n"
+" 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"
+" 500-999 specifies the second 500 bytes\n"
+"\n"
+" -500 specifies the last 500 bytes\n"
+"\n"
+" 9500- specifies the bytes from offset 9500 and forward\n"
+"\n"
+, stdout);
+ fputs(
+" 0-0,-1 specifies the first and last byte only(*)(H)\n"
+"\n"
+" 500-700,600-799\n"
+" 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"
+, stdout);
+ fputs(
+" 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"
+" 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"
+"\n"
+" FTP and SFTP range downloads only support the simple 'start-stop' syn-\n"
+, stdout);
+ fputs(
+" tax (optionally with one of the numbers omitted). FTP use depends on\n"
+" the extended FTP command SIZE.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" -R, --remote-time\n"
+" When used, this will make curl attempt to figure out the time-\n"
+" stamp of the remote file, and if that is available make the\n"
+" local file get that same timestamp.\n"
+"\n"
+" --random-file <file>\n"
+, stdout);
+ fputs(
+" (SSL) Specify the path name to file containing what will be con-\n"
+" sidered as random data. The data is used to seed the random\n"
+" engine for SSL connections. See also the --egd-file option.\n"
+"\n"
+" --raw (HTTP) When used, it disables all internal HTTP decoding of con-\n"
+" tent or transfer encodings and instead makes them passed on\n"
+" unaltered, raw. (Added in 7.16.2)\n"
+"\n"
+" --remote-name-all\n"
+, stdout);
+ fputs(
+" This option changes the default action for all given URLs to be\n"
+" dealt with as if -O, --remote-name were used for each one. So if\n"
+" you want to disable that for a specific URL after --remote-name-\n"
+" all has been used, you must use \"-o -\" or --no-remote-name.\n"
+" (Added in 7.19.0)\n"
+"\n"
+" --resolve <host:port:address>\n"
+" Provide a custom address for a specific host and port pair.\n"
+, stdout);
+ fputs(
+" Using this, you can make the curl requests(s) use a specified\n"
+" address and prevent the otherwise normally resolved address to\n"
+" be used. Consider it a sort of /etc/hosts alternative provided\n"
+" on the command line. The port number should be the number used\n"
+" for the specific protocol the host will be used for. It means\n"
+" you need several entries if you want to provide address for the\n"
+, stdout);
+ fputs(
+" same host but different ports.\n"
+"\n"
+" This option can be used many times to add many host names to\n"
+" resolve.\n"
+"\n"
+" (Added in 7.21.3)\n"
+"\n"
+" --retry <num>\n"
+" If a transient error is returned when curl tries to perform a\n"
+" transfer, it will retry this number of times before giving up.\n"
+" Setting the number to 0 makes curl do no retries (which is the\n"
+, stdout);
+ fputs(
+" default). Transient error means either: a timeout, an FTP 4xx\n"
+" response code or an HTTP 5xx response code.\n"
+"\n"
+" When curl is about to retry a transfer, it will first wait one\n"
+" second and then for all forthcoming retries it will double the\n"
+" waiting time until it reaches 10 minutes which then will be the\n"
+" delay between the rest of the retries. By using --retry-delay\n"
+, stdout);
+ fputs(
+" you disable this exponential backoff algorithm. See also\n"
+" --retry-max-time to limit the total time allowed for retries.\n"
+" (Added in 7.12.3)\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --retry-delay <seconds>\n"
+" Make curl sleep this amount of time before each retry when a\n"
+" transfer has failed with a transient error (it changes the\n"
+, stdout);
+ fputs(
+" default backoff time algorithm between retries). This option is\n"
+" only interesting if --retry is also used. Setting this delay to\n"
+" zero will make curl use the default backoff time. (Added in\n"
+" 7.12.3)\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --retry-max-time <seconds>\n"
+" The retry timer is reset before the first transfer attempt.\n"
+, stdout);
+ fputs(
+" Retries will be done as usual (see --retry) as long as the timer\n"
+" hasn't reached this given limit. Notice that if the timer hasn't\n"
+" reached the limit, the request will be made and while perform-\n"
+" ing, it may take longer than this given time period. To limit a\n"
+" single request's maximum time, use -m, --max-time. Set this\n"
+" option to zero to not timeout retries. (Added in 7.12.3)\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" -s, --silent\n"
+" Silent or quiet mode. Don't show progress meter or error mes-\n"
+" sages. Makes Curl mute. It will still output the data you ask\n"
+" for, potentially even to the terminal/stdout unless you redirect\n"
+" it.\n"
+"\n"
+" --sasl-ir\n"
+" Enable initial response in SASL authentication. (Added in\n"
+" 7.31.0)\n"
+"\n"
+" -S, --show-error\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+, stdout);
+ fputs(
+" That option name can still be used but will be removed in a\n"
+" future version.\n"
+"\n"
+" --ssl-reqd\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"
+, stdout);
+ fputs(
+" in a future version.\n"
+"\n"
+" --ssl-allow-beast\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"
+" WARNING: this option loosens the SSL security, and by using this\n"
+, stdout);
+ fputs(
+" flag you ask for exactly that. (Added in 7.25.0)\n"
+"\n"
+" --socks4 <host[:port]>\n"
+" 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"
+" are mutually exclusive.\n"
+"\n"
+" Since 7.21.7, this option is superfluous since you can specify a\n"
+, stdout);
+ fputs(
+" socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --socks4a <host[:port]>\n"
+" 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"
+" are mutually exclusive.\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+, stdout);
+ fputs(
+" 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"
+" 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"
+, stdout);
+ fputs(
+" (This option was previously wrongly documented and used as\n"
+" --socks without the number appended.)\n"
+"\n"
+" --socks5 <host[:port]>\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"
+" are mutually exclusive.\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" If this option is used several times, the last one will be used.\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"
+" or LDAP.\n"
+"\n"
+, stdout);
+ fputs(
+" --socks5-gssapi-service <servicename>\n"
+" The default service name for a socks server is rcmd/server-fqdn.\n"
+" This option allows you to change it.\n"
+"\n"
+" Examples: --socks5 proxy-name --socks5-gssapi-service sockd\n"
+" would use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
+" service sockd/real-name would use sockd/real-name for cases\n"
+" where the proxy-name does not match the principal name. (Added\n"
+, stdout);
+ fputs(
+" in 7.19.4).\n"
+"\n"
+" --socks5-gssapi-nec\n"
+" As part of the GSS-API negotiation a protection mode is negoti-\n"
+" ated. RFC 1961 says in section 4.3/4.4 it should be protected,\n"
+" but the NEC reference implementation does not. The option\n"
+" --socks5-gssapi-nec allows the unprotected exchange of the pro-\n"
+" tection mode negotiation. (Added in 7.19.4).\n"
+"\n"
+" --stderr <file>\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"
+" Pass options to the telnet protocol. Supported options are:\n"
+"\n"
+" TTYPE=<term> Sets the terminal type.\n"
+"\n"
+" XDISPLOC=<X display> Sets the X display location.\n"
+"\n"
+, 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"
+" there is no file part in the specified URL, Curl will append the\n"
+" local file name. NOTE that you must use a trailing / on the last\n"
+" directory to really prove to Curl that there is no file name or\n"
+" curl will think that your last directory name is the remote file\n"
+, 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(
+" uploaded.\n"
+"\n"
+" You can specify one -T for each URL on the command line. Each -T\n"
+" + 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"
+" 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"
+" 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"
+" (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n"
+" size that curl will try to use when transferring data to or from\n"
+" a TFTP server. By default 512 bytes will be used.\n"
+"\n"
+, 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"
+" option defaults to \"SRP\". (Added in 7.21.4)\n"
+"\n"
+" --tlspassword <password>\n"
+, stdout);
+ fputs(
+" 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. (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"
+" (SSL) Forces curl to use TLS version 1.1 when negotiating with a\n"
+" remote TLS server. (Added in 7.34.0)\n"
+"\n"
+" --tlsv1.2\n"
+" (SSL) Forces curl to use TLS version 1.2 when negotiating with a\n"
+" 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"
+" receiving it.\n"
+"\n"
+" (Added in 7.21.6)\n"
+"\n"
+" --trace <file>\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"
+" 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"
+" that might be easier to read for untrained humans.\n"
+"\n"
+" 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"
+, stdout);
+ fputs(
+" displays. (Added in 7.14.0)\n"
+"\n"
+" -u, --user <user:password>\n"
+" 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"
+" 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"
+, stdout);
+ fputs(
+" this option. The password can, still.\n"
+"\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 succesfully obtain a Kerberos Ticket. If you don't\n"
+" then the initial authentication handshake may fail.\n"
+"\n"
+" When using NTLM, the user name can be specified simply as the\n"
+, stdout);
+ fputs(
+" 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"
+" 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 or NTLM authentication then you can tell\n"
+, stdout);
+ fputs(
+" curl to select the user name and password from your environment\n"
+" 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"
+, stdout);
+ fputs(
+" 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"
+, stdout);
+ fputs(
+" 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"
+" Makes the fetching more verbose/talkative. Mostly useful for\n"
+" debugging. A line starting with '>' means \"header data\" sent by\n"
+" curl, '<' means \"header data\" received by curl that is hidden in\n"
+, stdout);
+ fputs(
+" normal cases, and a line starting with '*' means additional info\n"
+" provided by curl.\n"
+"\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"
+" 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"
+" Defines what to display on stdout after a completed and success-\n"
+" ful operation. The format is a string that may contain plain\n"
+" text mixed with any number of variables. The string can be spec-\n"
+" ified as \"string\", to get read from a particular file you spec-\n"
+" ify it \"@filename\" and to tell curl to read the format from\n"
+, stdout);
+ fputs(
+" 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"
+, stdout);
+ fputs(
+" NOTE: The %-symbol is a special symbol in the win32-environment,\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"
+" 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"
+" --remote-header-name option. (Added in 7.25.1)\n"
+"\n"
+" 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"
+" 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"
+" IPv6 (Added in 7.29.0)\n"
+"\n"
+" 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"
+" fer. (Added in 7.12.3)\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" low redirects, this variable will show the actual\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(
+" 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"
+" connection (Added in 7.29.0)\n"
+"\n"
+" size_download The total amount of bytes that were downloaded.\n"
+"\n"
+" 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"
+" HTTP request.\n"
+"\n"
+" size_upload The total amount of bytes that were uploaded.\n"
+"\n"
+" speed_download The average download speed that curl measured for\n"
+" the complete download. Bytes per second.\n"
+"\n"
+" speed_upload The average upload speed that curl measured for\n"
+" the complete upload. Bytes per second.\n"
+"\n"
+, stdout);
+ fputs(
+" ssl_verify_result\n"
+" The result of the SSL peer certificate verifica-\n"
+" tion that was requested. 0 means the verification\n"
+" 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(
+" 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"
+" proxy) was completed.\n"
+"\n"
+" time_namelookup\n"
+" The time, in seconds, it took from the start\n"
+" until the name resolving was completed.\n"
+"\n"
+" time_pretransfer\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"
+, 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"
+" 7.12.3)\n"
+"\n"
+" time_starttransfer\n"
+" The time, in seconds, it took from the start\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"
+" 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"
+" headers.\n"
+"\n"
+" 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"
+, 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"
+" 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"
+" assumed to be 1080.\n"
+"\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"
+" 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(
+" 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"
+"\n"
+" 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"
+, 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"
+"\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(
+" (IMAP) Specifies a custom IMAP command to use instead of LIST.\n"
+" (Added in 7.30.0)\n"
+"\n"
+" (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
+" VRFY. (Added in 7.34.0)\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" --xattr\n"
+" When saving output to a file, this option tells curl to store\n"
+" certain file metadata in extended file attributes. Currently,\n"
+, stdout);
+ fputs(
+" 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"
+" issued.\n"
+"\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(
+" 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"
+" connects etc. If this is a concern for you, try the --connect-\n"
+" timeout option.\n"
+"\n"
+" 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(
+" ond) for speed-time seconds it gets aborted. speed-time is set\n"
+" with -y and is 30 if not set.\n"
+"\n"
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" -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(
+" 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"
+" details.\n"
+"\n"
+" Start the date expression with a dash (-) to make it request for\n"
+" a document that is older than the given date/time, default is a\n"
+" document that is newer than the specified date/time.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
+" -h, --help\n"
+" Usage help.\n"
+"\n"
+" -M, --manual\n"
+" Manual. Display the huge help text.\n"
+"\n"
+" -V, --version\n"
+" Displays information about curl and the libcurl version it uses.\n"
+" The first line includes the full version of curl, libcurl and\n"
+" other 3rd party libraries linked with the executable.\n"
+"\n"
+, stdout);
+ fputs(
+" The second line (starts with \"Protocols:\") shows all protocols\n"
+" that libcurl reports to support.\n"
+"\n"
+" The third line (starts with \"Features:\") shows specific features\n"
+" libcurl reports to offer. Available features include:\n"
+"\n"
+" IPv6 You can use IPv6 with this.\n"
+"\n"
+" krb4 Krb4 for FTP is supported.\n"
+"\n"
+" SSL HTTPS and FTPS are supported.\n"
+"\n"
+, stdout);
+ fputs(
+" libz Automatic decompression of compressed files over HTTP is\n"
+" supported.\n"
+"\n"
+" NTLM NTLM authentication is supported.\n"
+"\n"
+" Debug This curl uses a libcurl built with Debug. This enables\n"
+" more error-tracking and memory debugging etc. For curl-\n"
+" developers only!\n"
+"\n"
+" AsynchDNS\n"
+" This curl uses asynchronous name resolves.\n"
+, stdout);
+ fputs(
+" SPNEGO SPNEGO authentication is supported.\n"
+"\n"
+" Largefile\n"
+" This curl supports transfers of large files, files larger\n"
+" than 2GB.\n"
+"\n"
+" IDN This curl supports IDN - international domain names.\n"
+"\n"
+" GSS-API\n"
+" GSS-API is supported.\n"
+"\n"
+" SSPI SSPI is supported.\n"
+"\n"
+" TLS-SRP\n"
+" SRP (Secure Remote Password) authentication is supported\n"
+, stdout);
+ fputs(
+" for TLS.\n"
+" Metalink\n"
+" This curl supports Metalink (both version 3 and 4 (RFC\n"
+" 5854)), which describes mirrors and hashes. curl will\n"
+" use mirrors for failover if there are errors (such as the\n"
+" file or server not being available).\n"
+"\n"
+"FILES\n"
+" ~/.curlrc\n"
+" Default config file, see -K, --config for details.\n"
+"\n"
+"ENVIRONMENT\n"
+, stdout);
+ fputs(
+" The environment variables can be specified in lower case or upper case.\n"
+" The lower case version has precedence. http_proxy is an exception as it\n"
+" is only available in lower case.\n"
+"\n"
+" Using an environment variable to set the proxy has the same effect as\n"
+" using the --proxy option.\n"
+"\n"
+" http_proxy [protocol://]<host>[:port]\n"
+" Sets the proxy server to use for HTTP.\n"
+" HTTPS_PROXY [protocol://]<host>[:port]\n"
+, stdout);
+ fputs(
+" Sets the proxy server to use for HTTPS.\n"
+"\n"
+" [url-protocol]_PROXY [protocol://]<host>[:port]\n"
+" Sets the proxy server to use for [url-protocol], where the pro-\n"
+" tocol is a protocol that curl supports and as specified in a\n"
+" URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
+"\n"
+" ALL_PROXY [protocol://]<host>[:port]\n"
+" Sets the proxy server to use if no protocol-specific proxy is\n"
+" set.\n"
+"\n"
+, stdout);
+ fputs(
+" NO_PROXY <comma-separated list of hosts>\n"
+" list of host names that shouldn't go through any proxy. If set\n"
+" to a asterisk '*' only, it matches all hosts.\n"
+"\n"
+"PROXY PROTOCOL PREFIXES\n"
+" Since curl version 7.21.7, the proxy string may be specified with a\n"
+" protocol:// prefix to specify alternative proxy protocols.\n"
+"\n"
+" If no protocol is specified in the proxy string or if the string\n"
+, stdout);
+ fputs(
+" doesn't match a supported one, the proxy will be treated as an HTTP\n"
+" proxy.\n"
+"\n"
+" The supported proxy protocol prefixes are as follows:\n"
+"\n"
+" socks4://\n"
+" Makes it the equivalent of --socks4\n"
+"\n"
+" socks4a://\n"
+" Makes it the equivalent of --socks4a\n"
+"\n"
+" socks5://\n"
+" Makes it the equivalent of --socks5\n"
+"\n"
+" socks5h://\n"
+" Makes it the equivalent of --socks5-hostname\n"
+"\n"
+"EXIT CODES\n"
+, stdout);
+ fputs(
+" There are a bunch of different error codes and their corresponding\n"
+" 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"
+" protocol.\n"
+"\n"
+" 2 Failed to initialize.\n"
+"\n"
+" 3 URL malformed. The syntax was not correct.\n"
+"\n"
+" 4 A feature or option that was needed to perform the desired\n"
+, stdout);
+ fputs(
+" request was not enabled or was explicitly disabled at build-\n"
+" time. To make curl able to do this, you probably need another\n"
+" build of libcurl!\n"
+"\n"
+" 5 Couldn't resolve proxy. The given proxy host could not be\n"
+" resolved.\n"
+"\n"
+" 6 Couldn't resolve host. The given remote host was not resolved.\n"
+"\n"
+" 7 Failed to connect to host.\n"
+"\n"
+" 8 FTP weird server reply. The server sent data curl couldn't\n"
+, stdout);
+ fputs(
+" parse.\n"
+"\n"
+" 9 FTP access denied. The server denied login or denied access to\n"
+" the particular resource or directory you wanted to reach. Most\n"
+" often you tried to change to a directory that doesn't exist on\n"
+" the server.\n"
+"\n"
+" 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the\n"
+" PASS request.\n"
+"\n"
+" 13 FTP weird PASV reply, Curl couldn't parse the reply sent to the\n"
+, stdout);
+ fputs(
+" PASV request.\n"
+"\n"
+" 14 FTP weird 227 format. Curl couldn't parse the 227-line the\n"
+" server sent.\n"
+"\n"
+" 15 FTP can't get host. Couldn't resolve the host IP we got in the\n"
+" 227-line.\n"
+"\n"
+" 17 FTP couldn't set binary. Couldn't change transfer method to\n"
+" binary.\n"
+"\n"
+" 18 Partial file. Only a part of the file was transferred.\n"
+"\n"
+" 19 FTP couldn't download/access the given file, the RETR (or simi-\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+" 23 Write error. Curl couldn't write data to a local filesystem or\n"
+" similar.\n"
+"\n"
+, stdout);
+ fputs(
+" 25 FTP couldn't STOR file. The server denied the STOR operation,\n"
+" used for FTP uploading.\n"
+"\n"
+" 26 Read error. Various reading problems.\n"
+"\n"
+" 27 Out of memory. A memory allocation request failed.\n"
+"\n"
+" 28 Operation timeout. The specified time-out period was reached\n"
+" according to the conditions.\n"
+"\n"
+" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
+, stdout);
+ fputs(
+" support the PORT command, try doing a transfer using PASV\n"
+" instead!\n"
+"\n"
+" 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"
+" 34 HTTP post error. Internal post-request generation error.\n"
+"\n"
+" 35 SSL connect error. The SSL handshaking failed.\n"
+"\n"
+, stdout);
+ fputs(
+" 36 FTP bad download resume. Couldn't continue an earlier aborted\n"
+" download.\n"
+"\n"
+" 37 FILE couldn't read file. Failed to open the file. Permissions?\n"
+"\n"
+" 38 LDAP cannot bind. LDAP bind operation failed.\n"
+"\n"
+" 39 LDAP search failed.\n"
+"\n"
+" 41 Function not found. A required LDAP function was not found.\n"
+"\n"
+" 42 Aborted by callback. An application told curl to abort the oper-\n"
+" ation.\n"
+"\n"
+, stdout);
+ fputs(
+" 43 Internal error. A function was called with a bad parameter.\n"
+"\n"
+" 45 Interface error. A specified outgoing interface could not be\n"
+" used.\n"
+"\n"
+" 47 Too many redirects. When following redirects, curl hit the maxi-\n"
+" mum amount.\n"
+"\n"
+" 48 Unknown option specified to libcurl. This indicates that you\n"
+" passed a weird option to curl that was passed on to libcurl and\n"
+" rejected. Read up in the manual!\n"
+"\n"
+, stdout);
+ fputs(
+" 49 Malformed telnet option.\n"
+"\n"
+" 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"
+" error.\n"
+"\n"
+" 53 SSL crypto engine not found.\n"
+"\n"
+" 54 Cannot set SSL crypto engine as default.\n"
+"\n"
+" 55 Failed sending network data.\n"
+"\n"
+" 56 Failure in receiving network data.\n"
+"\n"
+" 58 Problem with the local certificate.\n"
+"\n"
+, stdout);
+ fputs(
+" 59 Couldn't use specified SSL cipher.\n"
+"\n"
+" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
+" cates.\n"
+"\n"
+" 61 Unrecognized transfer encoding.\n"
+"\n"
+" 62 Invalid LDAP URL.\n"
+"\n"
+" 63 Maximum file size exceeded.\n"
+"\n"
+" 64 Requested FTP SSL level failed.\n"
+"\n"
+" 65 Sending the data requires a rewind that failed.\n"
+"\n"
+" 66 Failed to initialise SSL Engine.\n"
+"\n"
+, stdout);
+ fputs(
+" 67 The user name, password, or similar was not accepted and curl\n"
+" failed to log in.\n"
+"\n"
+" 68 File not found on TFTP server.\n"
+"\n"
+" 69 Permission problem on TFTP server.\n"
+"\n"
+" 70 Out of disk space on TFTP server.\n"
+"\n"
+" 71 Illegal TFTP operation.\n"
+"\n"
+" 72 Unknown TFTP transfer ID.\n"
+"\n"
+" 73 File already exists (TFTP).\n"
+"\n"
+" 74 No such user (TFTP).\n"
+"\n"
+" 75 Character conversion failed.\n"
+"\n"
+, stdout);
+ fputs(
+" 76 Character conversion functions required.\n"
+"\n"
+" 77 Problem with reading the SSL CA cert (path? access rights?).\n"
+"\n"
+" 78 The resource referenced in the URL does not exist.\n"
+"\n"
+" 79 An unspecified error occurred during the SSH session.\n"
+"\n"
+" 80 Failed to shut down the SSL connection.\n"
+"\n"
+" 82 Could not load CRL file, missing or wrong format (added in\n"
+" 7.19.0).\n"
+"\n"
+" 83 Issuer check failed (added in 7.19.0).\n"
+"\n"
+, stdout);
+ fputs(
+" 84 The FTP PRET command failed\n"
+"\n"
+" 85 RTSP: mismatch of CSeq numbers\n"
+"\n"
+" 86 RTSP: mismatch of Session Identifiers\n"
+"\n"
+" 87 unable to parse FTP file list\n"
+"\n"
+" 88 FTP chunk callback reported error\n"
+"\n"
+" 89 No connection available, the session will be queued\n"
+"\n"
+" 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"
+, stdout);
+ fputs(
+" Daniel Stenberg is the main author, but the whole list of contributors\n"
+" is found in the separate THANKS file.\n"
+"\n"
+"WWW\n"
+" http://curl.haxx.se\n"
+"\n"
+"FTP\n"
+" ftp://ftp.sunet.se/pub/www/utilities/curl/\n"
+"\n"
+"SEE ALSO\n"
+" ftp(1), wget(1)\n"
+"\n"
+"LATEST VERSION\n"
+"\n"
+" You always find news about what's going on as well as the latest versions\n"
+" from the curl web pages, located at:\n"
+"\n"
+" http://curl.haxx.se\n"
+"\n"
+"SIMPLE USAGE\n"
+"\n"
+" Get the main page from Netscape's web-server:\n"
+"\n"
+, stdout);
+ fputs(
+" curl http://www.netscape.com/\n"
+"\n"
+" Get the README file the user's home directory at funet's ftp-server:\n"
+"\n"
+" curl ftp://ftp.funet.fi/README\n"
+"\n"
+" Get a web page from a server using port 8000:\n"
+"\n"
+" curl http://www.weirdserver.com:8000/\n"
+"\n"
+" Get a directory listing of an FTP site:\n"
+"\n"
+" curl ftp://cool.haxx.se/\n"
+"\n"
+" Get the definition of curl from a dictionary:\n"
+"\n"
+" curl dict://dict.org/m:curl\n"
+"\n"
+" Fetch two documents at once:\n"
+"\n"
+, stdout);
+ fputs(
+" curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n"
+"\n"
+" Get a file off an FTPS server:\n"
+"\n"
+" curl ftps://files.are.secure.com/secrets.txt\n"
+"\n"
+" 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"
+"\n"
+" Get a file from an SSH server using SFTP:\n"
+"\n"
+" curl -u username sftp://shell.example.com/etc/issue\n"
+"\n"
+" Get a file from an SSH server using SCP using a private key to authenticate:\n"
+"\n"
+, stdout);
+ fputs(
+" curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \\\n"
+" scp://shell.example.com/~/personal.txt\n"
+"\n"
+" Get the main page from an IPv6 web server:\n"
+"\n"
+" curl \"http://[2001:1890:1112:1::20]/\"\n"
+"\n"
+"DOWNLOAD TO A FILE\n"
+"\n"
+" Get a web page and store in a local file with a specific name:\n"
+"\n"
+" 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"
+, stdout);
+ fputs(
+" of the remote document (if no file name part is specified in the URL, this\n"
+" will fail):\n"
+"\n"
+" curl -O http://www.netscape.com/index.html\n"
+"\n"
+" Fetch two files and store them with their remote names:\n"
+"\n"
+" curl -O www.haxx.se/index.html -O curl.haxx.se/download.html\n"
+"\n"
+"USING PASSWORDS\n"
+"\n"
+" FTP\n"
+"\n"
+" To ftp files using name+passwd, include them in the URL like:\n"
+"\n"
+" curl ftp://name:passwd@machine.domain:port/full/path/to/file\n"
+"\n"
+" or specify them with the -u flag like\n"
+"\n"
+, stdout);
+ fputs(
+" curl -u name:passwd ftp://machine.domain:port/full/path/to/file\n"
+"\n"
+" FTPS\n"
+"\n"
+" It is just like for FTP, but you may also want to specify and use\n"
+" SSL-specific options for certificates etc.\n"
+"\n"
+" Note that using FTPS:// as prefix is the \"implicit\" way as described in the\n"
+" standards while the recommended \"explicit\" way is done by using FTP:// and\n"
+" the --ftp-ssl option.\n"
+"\n"
+" SFTP / SCP\n"
+"\n"
+" This is similar to FTP, but you can specify a private key to use instead of\n"
+, stdout);
+ fputs(
+" a password. Note that the private key may itself be protected by a password\n"
+" that is unrelated to the login password of the remote system. If you\n"
+" provide a private key file you must also provide a public key file.\n"
+"\n"
+" HTTP\n"
+"\n"
+" Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
+" like:\n"
+"\n"
+" curl http://name:passwd@machine.domain/full/path/to/file\n"
+"\n"
+" or specify user and password separately like in\n"
+"\n"
+, stdout);
+ fputs(
+" curl -u name:passwd http://machine.domain/full/path/to/file\n"
+"\n"
+" HTTP offers many different methods of authentication and curl supports\n"
+" 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"
+" by using --anyauth.\n"
+"\n"
+" NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
+, stdout);
+ fputs(
+" 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"
+" the -u style for user and password.\n"
+"\n"
+" HTTPS\n"
+"\n"
+" Probably most commonly used with private certificates, as explained below.\n"
+"\n"
+"PROXY\n"
+"\n"
+" curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
+" It does not have special support for FTP proxy servers since there are no\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+"\n"
+" Get a file from an HTTP server that requires user and password, using the\n"
+" same proxy as above:\n"
+"\n"
+" curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" 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"
+" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
+"\n"
+, stdout);
+ fputs(
+" curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
+"\n"
+" See also the environment variables Curl supports that offer further proxy\n"
+" control.\n"
+"\n"
+" 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"
+" set up transfers through many FTP proxies. For example, a file can be\n"
+, stdout);
+ fputs(
+" 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"
+" --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"
+"RANGES\n"
+"\n"
+" HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
+, stdout);
+ fputs(
+" to get only one or more subparts of a specified document. Curl supports\n"
+" this with the -r flag.\n"
+"\n"
+" Get the first 100 bytes of a document:\n"
+"\n"
+" curl -r 0-99 http://www.get.this/\n"
+"\n"
+" Get the last 500 bytes of a document:\n"
+"\n"
+" curl -r -500 http://www.get.this/\n"
+"\n"
+" Curl also supports simple ranges for FTP files as well. Then you can only\n"
+" specify start and stop position.\n"
+"\n"
+" Get the first 100 bytes of a document using FTP:\n"
+"\n"
+" curl -r 0-99 ftp://www.get.this/README\n"
+"\n"
+"UPLOADING\n"
+"\n"
+, stdout);
+ fputs(
+" FTP / FTPS / SFTP / SCP\n"
+"\n"
+" Upload all data on stdin to a specified server:\n"
+"\n"
+" curl -T - ftp://ftp.upload.com/myfile\n"
+"\n"
+" 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"
+"\n"
+" Upload a local file to the remote site, and use the local file name at the remote\n"
+" site too:\n"
+"\n"
+" curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
+"\n"
+" Upload a local file to get appended to the remote file:\n"
+"\n"
+, stdout);
+ fputs(
+" 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"
+" configured to allow that kind of tunneling. If it does, you can run curl in\n"
+" a fashion similar to:\n"
+"\n"
+" curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
+"\n"
+" HTTP\n"
+"\n"
+" Upload all data on stdin to a specified HTTP site:\n"
+"\n"
+" curl -T - http://www.upload.com/myfile\n"
+"\n"
+" Note that the HTTP server must have been configured to accept PUT before\n"
+, stdout);
+ fputs(
+" this can be done successfully.\n"
+"\n"
+" 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"
+" 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"
+"\n"
+" curl --trace trace.txt www.haxx.se\n"
+"\n"
+"\n"
+"DETAILED INFORMATION\n"
+"\n"
+" 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"
+" -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"
+" time if you want curl to use cookies sent by the server. More about that in\n"
+" the cookies section.\n"
+"\n"
+"POST (HTTP)\n"
+"\n"
+" 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"
+"\n"
+" 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"
+" 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"
+" the letter's ASCII code.\n"
+"\n"
+" Example:\n"
+"\n"
+" (page located at http://www.formpost.com/getthis/\n"
+"\n"
+" <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"
+"\n"
+" We want to enter user 'foobar' with password '12345'.\n"
+"\n"
+" To post to this, you enter a curl command line like:\n"
+"\n"
+" 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"
+" 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"
+" 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"
+" 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"
+" http://www.post.com/postit.cgi\n"
+"\n"
+" To send two files in one post you can do it in two ways:\n"
+"\n"
+" 1. Send multiple files in a single \"field\" with a single field name:\n"
+"\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"
+" -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"
+" uploading a file.\n"
+"\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"
+" fool or trick stupid servers or CGI scripts that rely on that information\n"
+" being available or contain certain data.\n"
+"\n"
+" curl -e www.coolsite.com http://www.showme.com/\n"
+"\n"
+" NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.\n"
+"\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"
+" scripts that only accept certain browsers.\n"
+"\n"
+" Example:\n"
+"\n"
+" curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/\n"
+"\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"
+" 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"
+"COOKIES\n"
+"\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"
+" 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"
+" 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"
+" Example, get a page that wants my name passed in a cookie:\n"
+"\n"
+" curl -b \"name=Daniel\" www.sillypage.com\n"
+"\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"
+" 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"
+" curl -b headers www.example.com\n"
+"\n"
+" While saving headers to a file is a working way to store cookies, it is\n"
+" however error-prone and not the preferred way to do this. Instead, make curl\n"
+" save the incoming cookies using the well-known netscape cookie format like\n"
+" this:\n"
+"\n"
+" 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"
+" use a non-existing file to trigger the cookie awareness like:\n"
+"\n"
+" 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(
+" 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"
+"\n"
+" 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"
+" % Total % Received % Xferd Average Speed Time Curr.\n"
+" Dload Upload Total Current Left Speed\n"
+" 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(
+" Total - total size of the whole expected transfer\n"
+" % - percentage completed of the download\n"
+" Received - currently downloaded amount of bytes\n"
+" % - percentage completed of the upload\n"
+" Xferd - currently uploaded amount of bytes\n"
+" Average Speed\n"
+" 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 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"
+" 5 seconds of a transfer is based on less time of course.)\n"
+"\n"
+" The -# option will display a totally different progress bar that doesn't\n"
+" need much explanation!\n"
+"\n"
+"SPEED LIMIT\n"
+"\n"
+" Curl allows the user to set the transfer speed conditions that must be met\n"
+, stdout);
+ fputs(
+" 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"
+"\n"
+" To have curl abort the download if the speed is slower than 3000 bytes per\n"
+" second for 1 minute, run:\n"
+"\n"
+" 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"
+" 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"
+" which might be useful if you're using a limited bandwidth connection and you\n"
+" don't want your transfer to use all of it (sometimes referred to as\n"
+" \"bandwidth throttle\").\n"
+"\n"
+" Make curl transfer data no faster than 10 kilobytes per second:\n"
+"\n"
+" 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"
+"\n"
+" 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"
+" 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"
+" 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"
+" NOTE: You must specify options and their arguments on the same line.\n"
+"\n"
+" Example, set default time out and proxy in a config file:\n"
+"\n"
+" # We want a 30 minute timeout:\n"
+" -m 1800\n"
+" # ... and we use a proxy for all accesses:\n"
+" 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"
+" line parameter, like:\n"
+"\n"
+" curl -q www.thatsite.com\n"
+"\n"
+" Force curl to get and display a local help page in case it is invoked\n"
+" without URL by making a config file similar to:\n"
+"\n"
+" # default url to get\n"
+" 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"
+"\n"
+" echo \"user = user:passwd\" | curl -K - http://that.secret.site.com\n"
+"\n"
+"EXTRA HEADERS\n"
+"\n"
+" When using curl in your own very special programs, you may end up needing\n"
+" 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"
+" curl -H \"X-you-and-me: yes\" www.love.com\n"
+"\n"
+" 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"
+" 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"
+"\n"
+" Do note that when getting files with the ftp:// URL, the given path is\n"
+" relative the directory you enter. To get the file 'README' from your home\n"
+" directory at your ftp site, do:\n"
+"\n"
+" 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"
+" 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"
+"\n"
+" With sftp: and scp: URLs, the path name given is the absolute name on the\n"
+" server. To access a file relative to the remote user's home directory,\n"
+" prefix the file with /~/ , such as:\n"
+"\n"
+" curl -u $USER sftp://home.example.com/~/.bashrc\n"
+"\n"
+"FTP and firewalls\n"
+"\n"
+" The FTP protocol requires one of the involved parties to open a second\n"
+, stdout);
+ fputs(
+" connection as soon as data is about to get transferred. There are two ways to\n"
+" do this.\n"
+"\n"
+" The default way for curl is to issue the PASV command which causes the\n"
+" server to open another port and await another connection performed by the\n"
+" client. This is good if the client is behind a firewall that doesn't allow\n"
+" incoming connections.\n"
+"\n"
+" curl ftp.download.com\n"
+"\n"
+" If the server, for example, is behind a firewall that doesn't allow connections\n"
+, stdout);
+ fputs(
+" 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"
+" PORT command).\n"
+"\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"
+" 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"
+" not work on windows):\n"
+"\n"
+" curl -P le0 ftp.download.com\n"
+"\n"
+" Download with PORT but use 192.168.0.10 as our IP address to use:\n"
+"\n"
+" curl -P 192.168.0.10 ftp.download.com\n"
+"\n"
+"NETWORK INTERFACE\n"
+"\n"
+" Get a web page from a server using a specified port for the interface:\n"
+"\n"
+" 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"
+"\n"
+" Secure HTTP requires SSL libraries to be installed and used when curl is\n"
+" built. If that is done, curl is capable of retrieving and posting documents\n"
+" using the HTTPS protocol.\n"
+"\n"
+" Example:\n"
+"\n"
+" 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(
+" 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(
+" 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"
+" http://www.drh-consultancy.demon.co.uk/\n"
+"\n"
+" Example on how to automatically retrieve a document using a certificate with\n"
+" a personal password:\n"
+"\n"
+" 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"
+" Many older SSL-servers have problems with SSLv3 or TLS, which newer versions\n"
+" of OpenSSL etc use, therefore it is sometimes useful to specify what\n"
+" 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"
+" 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"
+" formatted one that curl can use, do something like this:\n"
+"\n"
+" In Netscape, you start with hitting the 'Security' menu button.\n"
+"\n"
+" Select 'certificates->yours' and then pick a certificate in the list\n"
+"\n"
+" Press the 'Export' button\n"
+"\n"
+" enter your PIN code for the certs\n"
+"\n"
+" select a proper place to save it\n"
+"\n"
+, stdout);
+ fputs(
+" Run the 'openssl' application to convert the certificate. If you cd to the\n"
+" openssl installation, you can do it like:\n"
+"\n"
+" # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]\n"
+"\n"
+" In Firefox, select Options, then Advanced, then the Encryption tab,\n"
+" View Certificates. This opens the Certificate Manager, where you can\n"
+" Export. Be sure to select PEM for the Save as type.\n"
+"\n"
+" In Internet Explorer, select Internet Options, then the Content tab, then\n"
+, stdout);
+ fputs(
+" Certificates. Then you can Export, and depending on the format you may\n"
+" need to convert to PEM.\n"
+"\n"
+" In Chrome, select Settings, then Show Advanced Settings. Under HTTPS/SSL\n"
+" select Manage Certificates.\n"
+"\n"
+"RESUMING FILE TRANSFERS\n"
+"\n"
+" To continue a file transfer where it was previously aborted, curl supports\n"
+" resume on HTTP(S) downloads as well as FTP uploads and downloads.\n"
+"\n"
+" Continue downloading a document:\n"
+"\n"
+" curl -C - -o file ftp://ftp.server.com/path/file\n"
+"\n"
+, stdout);
+ fputs(
+" Continue uploading a document(*1):\n"
+"\n"
+" curl -C - -T file ftp://ftp.server.com/path/file\n"
+"\n"
+" Continue downloading a document from a web server(*2):\n"
+"\n"
+" curl -C - -o file http://www.server.com/\n"
+"\n"
+" (*1) = This requires that the FTP server supports the non-standard command\n"
+" SIZE. If it doesn't, curl will say so.\n"
+"\n"
+" (*2) = This requires that the web server supports at least HTTP/1.1. If it\n"
+" doesn't, curl will say so.\n"
+"\n"
+"TIME CONDITIONS\n"
+"\n"
+, stdout);
+ fputs(
+" HTTP allows a client to specify a time condition for the document it\n"
+" requests. It is If-Modified-Since or If-Unmodified-Since. Curl allows you to\n"
+" specify them with the -z/--time-cond flag.\n"
+"\n"
+" For example, you can easily make a download that only gets performed if the\n"
+" remote file is newer than a local copy. It would be made like:\n"
+"\n"
+" curl -z local.html http://remote.server.com/remote.html\n"
+"\n"
+" Or you can download a file only if the local file is newer than the remote\n"
+, stdout);
+ fputs(
+" one. Do this by prepending the date string with a '-', as in:\n"
+"\n"
+" curl -z -local.html http://remote.server.com/remote.html\n"
+"\n"
+" You can specify a \"free text\" date as condition. Tell curl to only download\n"
+" the file if it was updated since January 12, 2012:\n"
+"\n"
+" curl -z \"Jan 12 2012\" http://remote.server.com/remote.html\n"
+"\n"
+" Curl will then accept a wide range of date formats. You always make the date\n"
+" check the other way around by prepending it with a dash '-'.\n"
+"\n"
+"DICT\n"
+"\n"
+" For fun try\n"
+"\n"
+, stdout);
+ fputs(
+" curl dict://dict.org/m:curl\n"
+" curl dict://dict.org/d:heisenbug:jargon\n"
+" curl dict://dict.org/d:daniel:web1913\n"
+"\n"
+" Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define'\n"
+" and 'lookup'. For example,\n"
+"\n"
+" curl dict://dict.org/find:curl\n"
+"\n"
+" Commands that break the URL description of the RFC (but not the DICT\n"
+" protocol) are\n"
+"\n"
+" curl dict://dict.org/show:db\n"
+" curl dict://dict.org/show:strat\n"
+"\n"
+, stdout);
+ fputs(
+" Authentication is still missing (but this is not required by the RFC)\n"
+"\n"
+"LDAP\n"
+"\n"
+" If you have installed the OpenLDAP library, curl can take advantage of it\n"
+" and offer ldap:// support.\n"
+"\n"
+" LDAP is a complex thing and writing an LDAP query is not an easy task. I do\n"
+" advise you to dig up the syntax description for that elsewhere. Two places\n"
+" that might suit you are:\n"
+"\n"
+" Netscape's \"Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10:\n"
+" Working with LDAP URLs\":\n"
+, stdout);
+ fputs(
+" http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm\n"
+"\n"
+" RFC 2255, \"The LDAP URL Format\" http://curl.haxx.se/rfc/rfc2255.txt\n"
+"\n"
+" To show you an example, this is how I can get all people from my local LDAP\n"
+" server that has a certain sub-domain in their email address:\n"
+"\n"
+" curl -B \"ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se\"\n"
+"\n"
+" If I want the same info in HTML format, I can get it by not using the -B\n"
+" (enforce ASCII) flag.\n"
+"\n"
+"ENVIRONMENT VARIABLES\n"
+"\n"
+, stdout);
+ fputs(
+" Curl reads and understands the following environment variables:\n"
+"\n"
+" http_proxy, HTTPS_PROXY, FTP_PROXY\n"
+"\n"
+" They should be set for protocol-specific proxies. General proxy should be\n"
+" set with\n"
+"\n"
+" ALL_PROXY\n"
+"\n"
+" A comma-separated list of host names that shouldn't go through any proxy is\n"
+" set in (only an asterisk, '*' matches all hosts)\n"
+"\n"
+" NO_PROXY\n"
+"\n"
+" If the host name matches one of these strings, or the host is within the\n"
+, stdout);
+ fputs(
+" domain of one of these strings, transactions with that node will not be\n"
+" proxied.\n"
+"\n"
+"\n"
+" The usage of the -x/--proxy flag overrides the environment variables.\n"
+"\n"
+"NETRC\n"
+"\n"
+" Unix introduced the .netrc concept a long time ago. It is a way for a user\n"
+" to specify name and password for commonly visited FTP sites in a file so\n"
+" that you don't have to type them in each time you visit those sites. You\n"
+" realize this is a big security risk if someone else gets hold of your\n"
+, stdout);
+ fputs(
+" passwords, so therefore most unix programs won't read this file unless it is\n"
+" only readable by yourself (curl doesn't care though).\n"
+"\n"
+" Curl supports .netrc files if told to (using the -n/--netrc and\n"
+" --netrc-optional options). This is not restricted to just FTP,\n"
+" so curl can use it for all protocols where authentication is used.\n"
+"\n"
+" A very simple .netrc file could look something like:\n"
+"\n"
+" machine curl.haxx.se login iamdaniel password mysecret\n"
+"\n"
+"CUSTOM OUTPUT\n"
+"\n"
+, stdout);
+ fputs(
+" To better allow script programmers to get to know about the progress of\n"
+" curl, the -w/--write-out option was introduced. Using this, you can specify\n"
+" what information from the previous transfer you want to extract.\n"
+"\n"
+" To display the amount of bytes downloaded together with some text and an\n"
+" ending newline:\n"
+"\n"
+" curl -w 'We downloaded %{size_download} bytes\\n' www.download.com\n"
+"\n"
+"KERBEROS FTP TRANSFER\n"
+"\n"
+" Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need\n"
+, stdout);
+ fputs(
+" the kerberos package installed and used at curl build time for it to be\n"
+" available.\n"
+"\n"
+" First, get the krb-ticket the normal way, like with the kinit/kauth tool.\n"
+" Then use curl in way similar to:\n"
+"\n"
+" curl --krb private ftp://krb4site.com -u username:fakepwd\n"
+"\n"
+" There's no use for a password on the -u switch, but a blank one will make\n"
+" curl ask for one and you already entered the real password to kinit/kauth.\n"
+"\n"
+"TELNET\n"
+"\n"
+, stdout);
+ fputs(
+" The curl telnet support is basic and very easy to use. Curl passes all data\n"
+" passed to it on stdin to the remote server. Connect to a remote telnet\n"
+" server using a command line similar to:\n"
+"\n"
+" curl telnet://remote.server.com\n"
+"\n"
+" And enter the data to pass to the server on stdin. The result will be sent\n"
+" to stdout or to the file you specify with -o.\n"
+"\n"
+" You might want the -N/--no-buffer option to switch off the buffered output\n"
+" for slow connections or similar.\n"
+"\n"
+, stdout);
+ fputs(
+" Pass options to the telnet protocol negotiation, by using the -t option. To\n"
+" tell the server we use a vt100 terminal, try something like:\n"
+"\n"
+" curl -tTTYPE=vt100 telnet://remote.server.com\n"
+"\n"
+" Other interesting options for it -t include:\n"
+"\n"
+" - XDISPLOC=<X display> Sets the X display location.\n"
+"\n"
+" - NEW_ENV=<var,val> Sets an environment variable.\n"
+"\n"
+" NOTE: The telnet protocol does not specify any way to login with a specified\n"
+, stdout);
+ fputs(
+" user and password so curl can't do that automatically. To do that, you need\n"
+" to track when the login prompt is received and send the username and\n"
+" password accordingly.\n"
+"\n"
+"PERSISTENT CONNECTIONS\n"
+"\n"
+" Specifying multiple files on a single command line will make curl transfer\n"
+" all of them, one after the other in the specified order.\n"
+"\n"
+" libcurl will attempt to use persistent connections for the transfers so that\n"
+" the second transfer to the same host can use the same connection that was\n"
+, stdout);
+ fputs(
+" already initiated and was left open in the previous transfer. This greatly\n"
+" decreases connection time for all but the first transfer and it makes a far\n"
+" better use of the network.\n"
+"\n"
+" Note that curl cannot use persistent connections for transfers that are used\n"
+" in subsequence curl invokes. Try to stuff as many URLs as possible on the\n"
+" same command line if they are using the same host, as that'll make the\n"
+" transfers faster. If you use an HTTP proxy for file transfers, practically\n"
+, stdout);
+ fputs(
+" all transfers will be persistent.\n"
+"\n"
+"MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE\n"
+"\n"
+" As is mentioned above, you can download multiple files with one command line\n"
+" by simply adding more URLs. If you want those to get saved to a local file\n"
+" instead of just printed to stdout, you need to add one save option for each\n"
+" URL you specify. Note that this also goes for the -O option (but not\n"
+" --remote-name-all).\n"
+"\n"
+" For example: get two files and use -O for the first and a custom file\n"
+, stdout);
+ fputs(
+" name for the second:\n"
+"\n"
+" curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg\n"
+"\n"
+" You can also upload multiple files in a similar fashion:\n"
+"\n"
+" curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt\n"
+"\n"
+"IPv6\n"
+"\n"
+" curl will connect to a server with IPv6 when a host lookup returns an IPv6\n"
+" address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6\n"
+" options can specify which address to use when both are available. IPv6\n"
+, stdout);
+ fputs(
+" addresses can also be specified directly in URLs using the syntax:\n"
+"\n"
+" http://[2001:1890:1112:1::20]/overview.html\n"
+"\n"
+" When this style is used, the -g option must be given to stop curl from\n"
+" interpreting the square brackets as special globbing characters. Link local\n"
+" and site local addresses including a scope identifier, such as fe80::1234%1,\n"
+" may also be used, but the scope portion must be numeric or match an existing\n"
+, stdout);
+ fputs(
+" network interface on Linux and the percent character must be URL escaped. The\n"
+" previous example in an SFTP URL might look like:\n"
+"\n"
+" sftp://[fe80::1234%251]/\n"
+"\n"
+" IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface\n"
+" or --ftp-port options) should not be URL encoded.\n"
+"\n"
+"METALINK\n"
+"\n"
+" Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way\n"
+" to list multiple URIs and hashes for a file. Curl will make use of the mirrors\n"
+, stdout);
+ fputs(
+" listed within for failover if there are errors (such as the file or server not\n"
+" being available). It will also verify the hash of the file after the download\n"
+" completes. The Metalink file itself is downloaded and processed in memory and\n"
+" not stored in the local file system.\n"
+"\n"
+" Example to use a remote Metalink file:\n"
+"\n"
+" curl --metalink http://www.example.com/example.metalink\n"
+"\n"
+" To use a Metalink file in the local file system, use FILE protocol (file://):\n"
+"\n"
+, stdout);
+ fputs(
+" curl --metalink file://example.metalink\n"
+"\n"
+" Please note that if FILE protocol is disabled, there is no way to use a local\n"
+" Metalink file at the time of this writing. Also note that if --metalink and\n"
+" --include are used together, --include will be ignored. This is because including\n"
+" headers in the response will break Metalink parser and if the headers are included\n"
+" in the file described in Metalink file, hash check will fail.\n"
+"\n"
+"MAILING LISTS\n"
+"\n"
+, stdout);
+ fputs(
+" For your convenience, we have several open mailing lists to discuss curl,\n"
+" its development and things relevant to this. Get all info at\n"
+" http://curl.haxx.se/mail/. Some of the lists available are:\n"
+"\n"
+" curl-users\n"
+"\n"
+" Users of the command line tool. How to use it, what doesn't work, new\n"
+" features, related tools, questions, news, installations, compilations,\n"
+" running, porting etc.\n"
+"\n"
+" curl-library\n"
+"\n"
+" Developers using or developing libcurl. Bugs, extensions, improvements.\n"
+"\n"
+, stdout);
+ fputs(
+" curl-announce\n"
+"\n"
+" Low-traffic. Only receives announcements of new public versions. At worst,\n"
+" that makes something like one or two mails per month, but usually only one\n"
+" mail every second month.\n"
+"\n"
+" curl-and-php\n"
+"\n"
+" Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP\n"
+" with a curl angle.\n"
+"\n"
+" curl-and-python\n"
+"\n"
+" Python hackers using curl with or without the python binding pycurl.\n"
+"\n"
+" Please direct curl questions, feature requests and trouble reports to one of\n"
+, stdout);
+ fputs(
+" these mailing lists instead of mailing any individual.\n"
+, stdout) ;
+}
+#else /* !USE_MANUAL */
+/* built-in manual is disabled, blank function */
+#include "tool_hugehelp.h"
+void hugehelp(void) {}
+#endif /* USE_MANUAL */
+#else
+/*
+ * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
+ * Generation time: Wed Sep 10 00:40:56 2014
+ */
+#ifdef USE_MANUAL
+#include "tool_hugehelp.h"
+#include <zlib.h>
+#include "memdebug.h" /* keep this as LAST include */
+static const unsigned char hugehelpgz[] = {
+ /* This mumbo-jumbo is the huge help text compressed with gzip.
+ Thanks to this operation, the size of this data shrunk from 158943
+ to 48006 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, 0xe3, 0x46, 0x92, 0x2e, 0xf8, 0x5d, 0xbf, 0x02, 0xcd, 0xde,
+ 0x1e, 0x49, 0xd3, 0x24, 0x75, 0xa9, 0x8b, 0x5d, 0xea, 0x2a, 0x8f, 0x65,
+ 0x49, 0x65, 0x6b, 0xac, 0x2a, 0xe9, 0x88, 0x2a, 0xdb, 0x7d, 0x6c, 0x3f,
+ 0xf5, 0x80, 0x24, 0x24, 0xa1, 0x45, 0x02, 0x6c, 0x00, 0xd4, 0xa5, 0x67,
+ 0xe6, 0xfc, 0xf6, 0xcd, 0x78, 0x23, 0x22, 0x33, 0x81, 0x4c, 0x4a, 0x65,
+ 0x1f, 0xbb, 0x77, 0xf6, 0xec, 0x7a, 0xa6, 0x55, 0x12, 0x09, 0xe4, 0x35,
+ 0x32, 0x32, 0xae, 0x6f, 0x24, 0xc9, 0x53, 0xff, 0x7d, 0xc4, 0xff, 0x3e,
+ 0x9a, 0xff, 0xcc, 0xbf, 0x6b, 0x49, 0x72, 0x56, 0x95, 0x7f, 0xcb, 0x26,
+ 0x4d, 0xfc, 0xd9, 0x8f, 0x1f, 0xff, 0x33, 0xe1, 0xff, 0x33, 0xef, 0xfc,
+ 0x64, 0xfe, 0x5d, 0x7b, 0xb4, 0xed, 0xad, 0xc4, 0xbd, 0xf0, 0x9f, 0x1f,
+ 0x37, 0x93, 0xa7, 0x5e, 0xf8, 0xcf, 0x64, 0x03, 0x2f, 0x7c, 0x94, 0x1e,
+ 0x5e, 0xd3, 0xef, 0x1f, 0x3f, 0x3e, 0xde, 0xc9, 0x4f, 0x34, 0x2a, 0xfa,
+ 0xb1, 0x45, 0xef, 0xfd, 0xf4, 0x91, 0x7e, 0x35, 0x9f, 0xac, 0xad, 0xbd,
+ 0xdf, 0x7f, 0x77, 0xa4, 0xaf, 0x4e, 0x96, 0xd5, 0x2c, 0x19, 0x24, 0x4d,
+ 0x95, 0x16, 0xf5, 0x65, 0x56, 0x25, 0x69, 0xf2, 0xe1, 0xfc, 0x64, 0x6d,
+ 0x6d, 0xf4, 0xd7, 0xf7, 0xa7, 0x67, 0xa3, 0xe3, 0x51, 0xeb, 0xb1, 0x1f,
+ 0xcb, 0x45, 0x93, 0x97, 0x45, 0xfd, 0x73, 0xf2, 0xa3, 0x79, 0x68, 0x38,
+ 0x1c, 0xfe, 0xbc, 0xb6, 0x76, 0x78, 0x34, 0x3a, 0x38, 0x3f, 0x3e, 0xbb,
+ 0x38, 0x3e, 0x7d, 0xdf, 0x7a, 0x36, 0xc9, 0xeb, 0xc4, 0x34, 0xd6, 0x94,
+ 0xe5, 0xcc, 0xfc, 0x70, 0xed, 0x4f, 0xd3, 0x26, 0x4d, 0x2e, 0xab, 0x72,
+ 0x9e, 0x94, 0x15, 0x7d, 0x91, 0x26, 0x75, 0x56, 0xdd, 0x66, 0x55, 0x3f,
+ 0x59, 0xd6, 0x79, 0x71, 0x95, 0x94, 0x45, 0x96, 0x94, 0x97, 0x49, 0x73,
+ 0x9d, 0x69, 0x73, 0xf5, 0x72, 0xb1, 0x28, 0xab, 0x26, 0x9b, 0x26, 0x8b,
+ 0xaa, 0x6c, 0xca, 0x49, 0x39, 0xab, 0x93, 0x8d, 0xc3, 0xe3, 0x83, 0x8b,
+ 0x7e, 0xf2, 0xf6, 0xf8, 0xe4, 0xc8, 0xfc, 0xbc, 0x38, 0xc3, 0x8f, 0x51,
+ 0x3f, 0xf9, 0xfa, 0xf4, 0xec, 0x9b, 0xa3, 0xf3, 0x7e, 0xf2, 0xcd, 0x05,
+ 0x7d, 0x46, 0x3f, 0xcd, 0x87, 0xc9, 0xf1, 0xbb, 0xfd, 0xb3, 0xbe, 0x36,
+ 0x47, 0x7f, 0xd0, 0x87, 0x27, 0x87, 0xe6, 0x43, 0xfe, 0x87, 0xfe, 0x3c,
+ 0x3b, 0x3d, 0x7b, 0xd6, 0xc7, 0x4f, 0xf3, 0xd7, 0xf9, 0xc5, 0xbb, 0x33,
+ 0xfa, 0x39, 0x32, 0x3f, 0x47, 0x07, 0xf4, 0x03, 0x7d, 0x8c, 0xde, 0xe9,
+ 0xcf, 0x91, 0x6d, 0xee, 0xe2, 0xe8, 0xe4, 0xfd, 0xd1, 0x45, 0x92, 0x16,
+ 0xd3, 0xe4, 0xc2, 0x3c, 0xb4, 0x39, 0x34, 0x1f, 0x5d, 0x67, 0xc9, 0xa4,
+ 0x9c, 0xcf, 0xe9, 0x33, 0xb3, 0x0a, 0xd3, 0xac, 0xce, 0xaf, 0x0a, 0x33,
+ 0x7c, 0x33, 0xdb, 0xbb, 0xb2, 0xba, 0x49, 0xee, 0xf2, 0xe6, 0xba, 0x5c,
+ 0x36, 0x66, 0xc2, 0x66, 0x3d, 0x92, 0xbc, 0x68, 0xb2, 0x6a, 0xa0, 0xcd,
+ 0xa5, 0x13, 0x5a, 0xe1, 0xe1, 0x5a, 0x6b, 0x2d, 0xcb, 0x4b, 0xb3, 0x72,
+ 0xb5, 0x59, 0xaa, 0xf1, 0xb2, 0x9e, 0x95, 0xe9, 0x94, 0x16, 0xc8, 0xbc,
+ 0x7c, 0xb9, 0x34, 0x4b, 0x5b, 0xe5, 0x93, 0x9b, 0x3a, 0x99, 0xe5, 0x37,
+ 0x19, 0x2d, 0xcf, 0xfd, 0x83, 0x2e, 0x57, 0x9f, 0x9b, 0x4f, 0x97, 0x66,
+ 0x25, 0x0b, 0xdb, 0x7c, 0x93, 0x4f, 0x52, 0xea, 0x00, 0xeb, 0x95, 0x2c,
+ 0x17, 0xd4, 0x1a, 0xaf, 0x53, 0xb2, 0x28, 0x6b, 0xf3, 0xd2, 0x68, 0x74,
+ 0x62, 0xc6, 0x5e, 0x14, 0x19, 0xc6, 0x51, 0xf7, 0xcd, 0x1f, 0xe5, 0x4d,
+ 0x9e, 0x99, 0x5f, 0x2e, 0xf3, 0x59, 0x96, 0xf0, 0x3e, 0xda, 0xe6, 0x68,
+ 0x43, 0x93, 0x2a, 0xab, 0x97, 0xf3, 0xcc, 0x2c, 0xe1, 0xbb, 0xac, 0x49,
+ 0x67, 0x79, 0x71, 0x63, 0x7e, 0xa5, 0xa9, 0xcf, 0xcb, 0x2a, 0x1b, 0x26,
+ 0xfb, 0x75, 0xf2, 0x50, 0x2e, 0xcd, 0x9c, 0x67, 0x33, 0xb3, 0xd3, 0x59,
+ 0x32, 0xce, 0x66, 0xe5, 0x5d, 0x9f, 0xf6, 0x37, 0x29, 0x96, 0xf3, 0xb1,
+ 0x69, 0xa0, 0xbc, 0x74, 0xcd, 0xa5, 0xcd, 0xd2, 0x34, 0xc7, 0x4f, 0xcf,
+ 0x53, 0x33, 0x27, 0xf3, 0x6e, 0x95, 0x5c, 0x67, 0x66, 0xce, 0xf5, 0x22,
+ 0x2f, 0xfe, 0xd0, 0x5e, 0x17, 0xb3, 0xb8, 0x8b, 0xf2, 0x2e, 0xab, 0xcc,
+ 0xda, 0x8e, 0x1f, 0x12, 0xb3, 0x08, 0x63, 0x26, 0xbd, 0x4b, 0x43, 0x5a,
+ 0x49, 0x6a, 0x9a, 0xb0, 0x64, 0x37, 0xa8, 0xb2, 0x59, 0x4a, 0x24, 0x64,
+ 0xfb, 0x30, 0xfb, 0x34, 0xca, 0x2c, 0x8d, 0xc9, 0xab, 0x1b, 0xcf, 0x36,
+ 0xf1, 0xf2, 0xd4, 0xcc, 0x24, 0x9f, 0xd5, 0x66, 0x1b, 0xe8, 0x30, 0xe8,
+ 0x4e, 0x9b, 0x21, 0xd3, 0xe1, 0x30, 0x14, 0xf9, 0x50, 0x34, 0xe9, 0x3d,
+ 0xba, 0x17, 0x8a, 0x1c, 0x4c, 0xb3, 0x45, 0x56, 0x4c, 0xb3, 0xa2, 0x19,
+ 0x26, 0x7f, 0x2d, 0x97, 0xeb, 0xa6, 0xef, 0xcb, 0xdc, 0xac, 0x41, 0x2a,
+ 0x4d, 0x99, 0x9e, 0x0d, 0x19, 0x4c, 0xaa, 0x7c, 0xe1, 0x6d, 0x45, 0x59,
+ 0x98, 0xcd, 0x4f, 0xce, 0xdf, 0x1e, 0x24, 0xcf, 0x5e, 0x7d, 0xfe, 0xd2,
+ 0xed, 0xb9, 0x69, 0x20, 0x99, 0xa4, 0x85, 0x99, 0x71, 0x36, 0xc9, 0x2f,
+ 0x1f, 0x92, 0xf9, 0x72, 0xd6, 0xe4, 0x0b, 0xb3, 0xfa, 0xa6, 0xf3, 0x9a,
+ 0x8e, 0xcd, 0x22, 0xad, 0x9a, 0x9a, 0x88, 0x00, 0x1f, 0x60, 0xee, 0x77,
+ 0x55, 0xde, 0xd0, 0xf1, 0xc1, 0x77, 0x66, 0x84, 0x59, 0x53, 0x6b, 0x73,
+ 0x44, 0x6e, 0xa6, 0x9f, 0x71, 0x95, 0x4e, 0xcc, 0xd2, 0xa6, 0xb5, 0xe9,
+ 0x74, 0xcf, 0xf6, 0x95, 0x5c, 0x37, 0xcd, 0x62, 0x6f, 0x6b, 0xab, 0xce,
+ 0x9b, 0x6c, 0xf8, 0x1f, 0xe6, 0xf0, 0xf5, 0x9b, 0xbb, 0xb2, 0xdf, 0x5c,
+ 0x57, 0x59, 0xf6, 0x5f, 0x43, 0x43, 0xc4, 0xf6, 0x41, 0xd3, 0xed, 0x83,
+ 0x8c, 0xeb, 0x2a, 0x6b, 0x4c, 0x07, 0x7f, 0x5f, 0x66, 0x05, 0x35, 0x68,
+ 0x86, 0x91, 0xce, 0x16, 0xd7, 0xa9, 0xd9, 0xcd, 0xcc, 0x10, 0x23, 0x1d,
+ 0x67, 0x43, 0x2f, 0x34, 0x28, 0x3e, 0xd0, 0x3f, 0xfe, 0x1c, 0xf4, 0x79,
+ 0x89, 0x2e, 0xcd, 0xcf, 0xa1, 0xbc, 0x94, 0x9a, 0xb5, 0x36, 0x9d, 0x6d,
+ 0x11, 0x8d, 0xfd, 0xb8, 0x33, 0xd8, 0xd9, 0xde, 0xfe, 0x79, 0xd8, 0xdc,
+ 0x37, 0x9f, 0xf8, 0xc2, 0xf6, 0xb6, 0x7b, 0x85, 0x9e, 0xde, 0xa0, 0x19,
+ 0x27, 0x33, 0x43, 0x34, 0xd4, 0xff, 0x3f, 0xb2, 0xaa, 0xac, 0x37, 0x23,
+ 0x4d, 0xcd, 0xb2, 0xc6, 0x9c, 0x3c, 0xaf, 0x9d, 0x74, 0xf0, 0x0f, 0xee,
+ 0x56, 0x1f, 0x7e, 0x9f, 0xd5, 0xa0, 0x19, 0x37, 0xd9, 0x24, 0xad, 0x0c,
+ 0xdd, 0x96, 0x8d, 0x63, 0x4a, 0x7d, 0x73, 0x28, 0x1b, 0xbb, 0x34, 0xe6,
+ 0xcc, 0x99, 0xa7, 0x0d, 0x3b, 0x4b, 0x67, 0xc4, 0xc9, 0xea, 0xa4, 0xc8,
+ 0xdc, 0x34, 0xcc, 0xf9, 0xcf, 0xd2, 0xc9, 0x75, 0x52, 0x1a, 0xe2, 0xaf,
+ 0xc2, 0x2d, 0x48, 0x8b, 0x87, 0x61, 0x59, 0x5d, 0x6d, 0xa5, 0xd5, 0xe4,
+ 0x3a, 0xbf, 0x35, 0xeb, 0xf0, 0xea, 0xd5, 0xcb, 0x81, 0xf9, 0xf1, 0xea,
+ 0xe7, 0xad, 0xdb, 0x72, 0x66, 0x96, 0xe5, 0xf9, 0xcf, 0x5b, 0xb4, 0xbb,
+ 0xff, 0x91, 0xf6, 0xc7, 0xfd, 0xc9, 0x7f, 0x0d, 0xaf, 0x9b, 0xf9, 0x6c,
+ 0x25, 0xcd, 0x98, 0xc6, 0x92, 0x74, 0x5e, 0x2e, 0x8b, 0xc6, 0xd2, 0x89,
+ 0x21, 0xb7, 0xc6, 0xe3, 0x4c, 0xe6, 0xa4, 0x66, 0xcc, 0xac, 0x88, 0x7c,
+ 0xe8, 0xc0, 0x99, 0xb3, 0xe9, 0x4e, 0x62, 0x33, 0xb9, 0x36, 0x53, 0x37,
+ 0x74, 0x93, 0xca, 0xf4, 0x9b, 0x3c, 0xa5, 0x33, 0x69, 0x58, 0x43, 0x45,
+ 0x1f, 0x53, 0x53, 0xdc, 0x59, 0x6e, 0x9e, 0x2b, 0xab, 0x69, 0x56, 0xb5,
+ 0x29, 0x18, 0xc3, 0x71, 0xe3, 0x49, 0xcc, 0x52, 0x2e, 0x4c, 0xe7, 0x4b,
+ 0x62, 0x77, 0x38, 0x64, 0xd4, 0x82, 0x39, 0x9e, 0x57, 0x66, 0x95, 0xcc,
+ 0xca, 0x10, 0x51, 0xd1, 0xc2, 0x3d, 0x24, 0xef, 0xcd, 0xe6, 0x31, 0x6b,
+ 0xf0, 0x68, 0x8f, 0x37, 0x2b, 0x5c, 0xb4, 0xbb, 0xbb, 0xbb, 0xd5, 0x44,
+ 0xb4, 0xb7, 0xd3, 0xa1, 0x23, 0xef, 0xa5, 0xd8, 0xee, 0xef, 0xed, 0xb6,
+ 0xf7, 0xff, 0xf8, 0x12, 0x1b, 0xab, 0x73, 0xa0, 0xb3, 0xaf, 0xbc, 0x5b,
+ 0x0f, 0xbe, 0x69, 0xcd, 0xfc, 0x9e, 0x5d, 0xe6, 0xf7, 0x7d, 0xbd, 0xf8,
+ 0x78, 0x2d, 0x53, 0xd3, 0xfc, 0x7c, 0xd1, 0xd0, 0xae, 0x6b, 0x73, 0x57,
+ 0xcb, 0xac, 0x36, 0x24, 0x74, 0x77, 0x9d, 0x9a, 0x8f, 0xb5, 0x81, 0x04,
+ 0x5d, 0xcc, 0xf3, 0xab, 0xeb, 0x26, 0xb9, 0x4b, 0x89, 0x7f, 0x1c, 0x37,
+ 0xdc, 0x04, 0x31, 0x6e, 0xc3, 0x35, 0x2e, 0x53, 0x73, 0xfc, 0x69, 0x85,
+ 0xc0, 0xa5, 0x0d, 0xb1, 0x59, 0x72, 0x32, 0x6b, 0x05, 0x52, 0xf2, 0xee,
+ 0xc5, 0x71, 0x5a, 0xd3, 0x6e, 0x14, 0x66, 0xd3, 0x1b, 0xc3, 0xf6, 0x97,
+ 0xf4, 0xd7, 0xb5, 0x61, 0xec, 0x49, 0x91, 0xce, 0x33, 0x19, 0x28, 0x78,
+ 0xdf, 0x5b, 0x62, 0x91, 0xd9, 0x7d, 0x3a, 0xb7, 0xfc, 0xc8, 0x30, 0x98,
+ 0xbe, 0xb0, 0x4e, 0xfb, 0x46, 0x6d, 0x76, 0xcd, 0x50, 0x1c, 0x1d, 0x23,
+ 0x9c, 0xa9, 0x1e, 0x9d, 0x9b, 0x1e, 0xcf, 0x13, 0x63, 0x4c, 0x6b, 0xe2,
+ 0xfd, 0xcc, 0xe1, 0xcd, 0xe0, 0xbd, 0xc9, 0x9a, 0x45, 0x4b, 0x6f, 0xe8,
+ 0x96, 0xe9, 0xdc, 0x65, 0x78, 0x6d, 0x5a, 0x26, 0xb9, 0xe1, 0x60, 0x63,
+ 0x73, 0xbe, 0x68, 0x66, 0x74, 0x6a, 0xb0, 0x2a, 0xd4, 0xce, 0xc2, 0xb4,
+ 0x49, 0x1f, 0xe6, 0x0d, 0xf1, 0x0d, 0x88, 0x23, 0x66, 0xbc, 0x66, 0x51,
+ 0x20, 0x51, 0x98, 0xb3, 0xe7, 0xcd, 0x1f, 0x1c, 0xcf, 0x3c, 0x9b, 0xdc,
+ 0x9a, 0x8b, 0xc7, 0x48, 0x16, 0x99, 0x7d, 0x0b, 0x2c, 0x7a, 0x42, 0xd7,
+ 0xdd, 0x6c, 0xf6, 0x60, 0xc8, 0xae, 0xaa, 0x48, 0x74, 0xa3, 0x1d, 0x1c,
+ 0xf3, 0xe1, 0x98, 0x67, 0xe6, 0x66, 0xf0, 0x97, 0x33, 0x27, 0x26, 0x65,
+ 0x88, 0xd4, 0x5c, 0x35, 0x20, 0x43, 0x73, 0x25, 0xe0, 0x18, 0x63, 0xe2,
+ 0x18, 0x1d, 0xb5, 0x3d, 0x99, 0x64, 0x8b, 0xa6, 0x8e, 0xcd, 0x49, 0x37,
+ 0xdc, 0x0c, 0xa7, 0xca, 0x68, 0xe5, 0xfd, 0x7b, 0x14, 0xeb, 0x6a, 0xf9,
+ 0x38, 0xae, 0x52, 0xbd, 0x9a, 0xcc, 0xd5, 0x5a, 0xdb, 0x55, 0x6b, 0x40,
+ 0x1b, 0xe6, 0x2c, 0x60, 0xcd, 0xe7, 0x34, 0x50, 0x7a, 0xb8, 0x66, 0x89,
+ 0x09, 0x67, 0x8e, 0x36, 0x92, 0x45, 0x26, 0xee, 0x97, 0xb8, 0x91, 0x59,
+ 0x4f, 0xdb, 0xb8, 0xe9, 0xd5, 0xee, 0x29, 0x75, 0x5f, 0x1b, 0x61, 0xd3,
+ 0x70, 0xe7, 0x69, 0x7d, 0x6d, 0xee, 0x53, 0xb3, 0xf5, 0x17, 0xd7, 0x34,
+ 0xd3, 0xb9, 0xa1, 0x99, 0x5b, 0xda, 0xdf, 0x45, 0x96, 0x4d, 0x87, 0xc9,
+ 0xe9, 0x25, 0x1d, 0xcd, 0xca, 0x0c, 0xba, 0xc1, 0xd7, 0xc4, 0x2d, 0xcc,
+ 0xba, 0x4d, 0x21, 0x8d, 0x15, 0x96, 0x2b, 0x60, 0x28, 0xde, 0xb1, 0x27,
+ 0x4a, 0x33, 0x8b, 0x9d, 0x10, 0xa3, 0x9f, 0xb5, 0x59, 0x0b, 0x44, 0x00,
+ 0xc3, 0x02, 0x68, 0x78, 0xe3, 0x2c, 0x01, 0x25, 0x8e, 0xb3, 0xe6, 0x2e,
+ 0xcb, 0x6c, 0x73, 0x75, 0x66, 0xd8, 0x19, 0x6d, 0x1a, 0x5f, 0xe6, 0xc5,
+ 0x6d, 0x49, 0x03, 0x5c, 0x5b, 0x3b, 0x3b, 0x3f, 0xfd, 0xfa, 0xfc, 0x68,
+ 0x34, 0x4a, 0xde, 0x1d, 0x5d, 0x1c, 0x9d, 0xb7, 0x56, 0xba, 0x28, 0xab,
+ 0x39, 0x76, 0x74, 0x9a, 0xd7, 0x8b, 0x59, 0xfa, 0x40, 0x5b, 0x6d, 0x66,
+ 0x72, 0x55, 0xd1, 0xc9, 0x9a, 0x67, 0xc4, 0x5a, 0xa6, 0xcb, 0x0a, 0x64,
+ 0x51, 0x2e, 0xcc, 0xf6, 0x89, 0x10, 0x63, 0x1a, 0x9f, 0x42, 0xf2, 0x29,
+ 0xae, 0xdc, 0x4a, 0x9b, 0xdb, 0x5c, 0x38, 0x24, 0xb1, 0x48, 0xbb, 0x1f,
+ 0x24, 0x4d, 0x40, 0x4a, 0xed, 0xbb, 0xcf, 0x78, 0x99, 0x6a, 0xcc, 0xc9,
+ 0xd0, 0x6c, 0x3e, 0x87, 0x2c, 0x61, 0xfe, 0x75, 0x02, 0x44, 0x76, 0x69,
+ 0xa4, 0x27, 0xc3, 0x35, 0x3b, 0xa4, 0x61, 0xc7, 0x89, 0x75, 0x85, 0xf0,
+ 0x4b, 0xd2, 0xb0, 0xe9, 0xdc, 0x8c, 0x75, 0x9e, 0x17, 0x86, 0xc0, 0x0c,
+ 0x41, 0xca, 0x29, 0x27, 0x4a, 0x30, 0x63, 0xbd, 0x64, 0x9e, 0x20, 0x2b,
+ 0xd2, 0x96, 0xaa, 0xcd, 0xcb, 0x66, 0xb3, 0x0d, 0x67, 0xb5, 0xd3, 0xc3,
+ 0xa0, 0x0c, 0x69, 0x9a, 0xe6, 0xd3, 0x31, 0xb1, 0x26, 0x12, 0x33, 0x8d,
+ 0x34, 0x90, 0x45, 0x7b, 0xb3, 0x72, 0xab, 0x79, 0xc3, 0x8c, 0x2d, 0x1d,
+ 0xd3, 0x8e, 0xd2, 0x03, 0x9d, 0x55, 0x34, 0x87, 0x08, 0xbc, 0xe5, 0x2e,
+ 0xaf, 0x71, 0xa8, 0xee, 0xca, 0xe5, 0xcc, 0x88, 0x74, 0xf4, 0xc0, 0x72,
+ 0x81, 0x17, 0x4c, 0x57, 0x0b, 0x77, 0x7a, 0xe6, 0xf9, 0x3d, 0xad, 0x7a,
+ 0xb7, 0x15, 0x33, 0x34, 0xf3, 0xe7, 0xc2, 0x6c, 0x02, 0x0f, 0x67, 0xd8,
+ 0xe5, 0xad, 0xe0, 0x1a, 0xc1, 0x1e, 0xd2, 0x69, 0x01, 0xbb, 0x3b, 0x3b,
+ 0x1d, 0x5d, 0x10, 0xfb, 0x3f, 0xfb, 0x70, 0x61, 0x1a, 0x32, 0xd7, 0x50,
+ 0xdd, 0x98, 0xed, 0xa4, 0x17, 0x8b, 0x0c, 0x12, 0xb5, 0x36, 0x67, 0x76,
+ 0x2d, 0xc7, 0x11, 0xc7, 0xad, 0xa2, 0x5d, 0xf2, 0x18, 0x59, 0xcd, 0x20,
+ 0xe2, 0x55, 0x25, 0xa3, 0xbe, 0xce, 0x88, 0x47, 0xdb, 0x97, 0x92, 0x8d,
+ 0x2f, 0x36, 0xcd, 0x76, 0x0f, 0x6c, 0x73, 0x3f, 0xd2, 0xd3, 0x3f, 0x53,
+ 0xcf, 0x75, 0x3e, 0xcf, 0x67, 0xa9, 0x77, 0xb7, 0x09, 0x27, 0x22, 0xba,
+ 0xb6, 0xe7, 0x71, 0x62, 0xd8, 0x2e, 0x06, 0xed, 0xa4, 0x6a, 0x5a, 0x41,
+ 0x9c, 0x66, 0xb7, 0x51, 0xd3, 0x32, 0xe3, 0xf7, 0x8c, 0x28, 0x6b, 0x17,
+ 0x8e, 0x76, 0x8c, 0x8e, 0x79, 0x6b, 0x99, 0xba, 0xbb, 0x16, 0x2c, 0x1b,
+ 0x71, 0x72, 0x28, 0x6b, 0x76, 0xe1, 0x7a, 0xe3, 0xb4, 0xea, 0x59, 0x0e,
+ 0xc6, 0x1a, 0x94, 0x69, 0xf4, 0x6a, 0x69, 0x06, 0xcf, 0xab, 0xda, 0x4f,
+ 0x06, 0x7f, 0xa4, 0x91, 0x93, 0x48, 0x6d, 0x4f, 0xb4, 0x91, 0xd5, 0x8a,
+ 0xe9, 0x70, 0xed, 0x14, 0x0a, 0x9c, 0xd5, 0xf6, 0x4e, 0x59, 0xcf, 0x4b,
+ 0x98, 0xfd, 0xb3, 0x08, 0x99, 0xb0, 0x6a, 0x66, 0xee, 0xed, 0x3b, 0x43,
+ 0x83, 0xa9, 0x59, 0x42, 0xc3, 0x4c, 0xde, 0xd1, 0xd0, 0xa5, 0x33, 0x51,
+ 0x0e, 0xb1, 0x4f, 0x66, 0x59, 0xcd, 0xac, 0xac, 0x52, 0x33, 0x9d, 0xe6,
+ 0xf4, 0x9d, 0x21, 0x76, 0xc3, 0xa8, 0x97, 0x19, 0xa4, 0x22, 0x99, 0xe3,
+ 0xdc, 0xcd, 0x8d, 0x04, 0xec, 0xfa, 0xda, 0x48, 0x55, 0x49, 0x8f, 0x19,
+ 0xca, 0x80, 0xba, 0xe9, 0xd1, 0xc2, 0xce, 0x3b, 0x9d, 0x98, 0xb9, 0x4c,
+ 0xe5, 0xb2, 0xa2, 0x4b, 0x8c, 0xef, 0xae, 0x79, 0xfa, 0xe0, 0xcb, 0x30,
+ 0x60, 0x39, 0x18, 0x79, 0x59, 0xd9, 0x7b, 0xdb, 0xdc, 0x0c, 0x0b, 0x23,
+ 0x07, 0x2b, 0x2b, 0x02, 0x4f, 0xc7, 0xf9, 0xa9, 0x79, 0x68, 0x7d, 0x23,
+ 0xcc, 0xd2, 0x93, 0x57, 0xd7, 0xfa, 0xa8, 0x77, 0x3f, 0xa4, 0x66, 0x6e,
+ 0xc4, 0xe3, 0x48, 0xd2, 0x9f, 0x2a, 0xfb, 0x2a, 0xab, 0x21, 0x46, 0x3e,
+ 0x2b, 0x89, 0xeb, 0xf4, 0xa6, 0xe5, 0x72, 0x6c, 0x47, 0x8e, 0xa1, 0x13,
+ 0x61, 0x0d, 0xb0, 0xab, 0xf4, 0xa7, 0x36, 0x67, 0x87, 0x2d, 0xcb, 0x55,
+ 0x3f, 0x39, 0x34, 0xb7, 0x50, 0x23, 0x2c, 0x92, 0xb9, 0x01, 0x6a, 0x22,
+ 0x2b, 0x5d, 0x77, 0x50, 0x9b, 0xe1, 0xd8, 0xeb, 0x0d, 0x1f, 0x0e, 0x88,
+ 0x80, 0x9d, 0x95, 0xaf, 0x21, 0x95, 0x09, 0x3f, 0xb6, 0x33, 0x33, 0x33,
+ 0x9a, 0xe6, 0x86, 0xa5, 0x19, 0xbe, 0xaa, 0x3b, 0xe3, 0x04, 0xd5, 0x3e,
+ 0x2b, 0x97, 0xb4, 0xd6, 0x32, 0x66, 0xe6, 0x4e, 0x2d, 0xf1, 0x8e, 0xb4,
+ 0x2d, 0x9f, 0xb3, 0xea, 0x98, 0x06, 0xa7, 0x66, 0xa7, 0x4e, 0x30, 0x8f,
+ 0xc1, 0x6d, 0x42, 0xa7, 0xc1, 0x88, 0xd1, 0x74, 0x34, 0x06, 0xa7, 0x27,
+ 0xb7, 0x1e, 0x55, 0x93, 0x52, 0x51, 0xd0, 0x75, 0xdb, 0x87, 0xde, 0x36,
+ 0x2e, 0x4b, 0x23, 0xbe, 0xbb, 0xa9, 0x91, 0xd4, 0x9d, 0x15, 0xc4, 0xac,
+ 0x64, 0x47, 0x07, 0x03, 0xfe, 0x0a, 0x2d, 0x3f, 0x18, 0xd1, 0x31, 0xbd,
+ 0x4a, 0x73, 0x4b, 0x6f, 0xc2, 0xd8, 0xec, 0xb3, 0x45, 0x29, 0x8f, 0xd3,
+ 0x4e, 0xd1, 0x45, 0x2e, 0x3c, 0x64, 0x89, 0xfb, 0x2e, 0xa3, 0x79, 0x19,
+ 0x26, 0x80, 0x93, 0x2c, 0xcd, 0x42, 0xfa, 0xd1, 0xe6, 0xc6, 0x90, 0xf7,
+ 0x48, 0x74, 0x02, 0x27, 0x84, 0x20, 0x64, 0x9a, 0xec, 0x0d, 0x93, 0x6f,
+ 0x8c, 0xf6, 0x09, 0xdb, 0x05, 0x04, 0xe2, 0x9c, 0xf4, 0x70, 0x23, 0xd1,
+ 0xdc, 0x65, 0x46, 0xf7, 0xad, 0x1b, 0xb3, 0x9a, 0xb8, 0x44, 0xf1, 0x99,
+ 0x19, 0xa7, 0xbd, 0xf6, 0xae, 0xcb, 0x3b, 0x74, 0x6b, 0x27, 0x61, 0x77,
+ 0xf2, 0x92, 0x4f, 0x44, 0xb2, 0x81, 0x4b, 0x7a, 0x42, 0x8b, 0xb5, 0x68,
+ 0xdc, 0x2c, 0xec, 0x7a, 0x18, 0xb6, 0x59, 0x7b, 0x87, 0x8b, 0x6e, 0x2c,
+ 0x33, 0x82, 0xe4, 0xb3, 0xe1, 0xce, 0xab, 0xe1, 0xf6, 0x90, 0x4c, 0x55,
+ 0xd9, 0x6d, 0x5e, 0x2e, 0x6b, 0xd3, 0x3b, 0x86, 0x92, 0x78, 0x6f, 0x1a,
+ 0x75, 0x99, 0xae, 0x91, 0xab, 0xab, 0x19, 0x5f, 0xe0, 0x5b, 0xe5, 0xe5,
+ 0xa5, 0x77, 0xc7, 0x57, 0x46, 0x91, 0xc5, 0xed, 0x46, 0x8b, 0x23, 0x87,
+ 0x8e, 0x79, 0x9c, 0x7f, 0xb9, 0xcb, 0x72, 0x6e, 0xda, 0x1d, 0x1c, 0xfc,
+ 0xd1, 0x6c, 0xf4, 0x40, 0xb9, 0xd1, 0xc0, 0x30, 0xa3, 0x8e, 0x6d, 0xea,
+ 0x1d, 0x69, 0xf3, 0xfe, 0x95, 0xe8, 0x58, 0x17, 0x0b, 0x6c, 0x39, 0x48,
+ 0xcb, 0x7e, 0x68, 0x5a, 0x48, 0x2c, 0x3b, 0xf3, 0x6c, 0x04, 0x1e, 0x91,
+ 0x19, 0xe6, 0x54, 0x4c, 0xd3, 0xca, 0xa8, 0x60, 0x64, 0x6a, 0x30, 0x0f,
+ 0xd3, 0x69, 0x4b, 0x99, 0xdc, 0xfb, 0xcc, 0xf3, 0x1c, 0x89, 0x0d, 0xf6,
+ 0x68, 0x80, 0xbe, 0x3a, 0xa6, 0x5c, 0xc7, 0x5c, 0x05, 0x35, 0x8f, 0x4c,
+ 0x44, 0xd1, 0xd4, 0x49, 0x26, 0x8e, 0x79, 0xab, 0xc6, 0x72, 0x59, 0xce,
+ 0x66, 0xe5, 0x1d, 0x5d, 0x22, 0x24, 0x4c, 0x7a, 0xdb, 0xaa, 0xdb, 0x51,
+ 0xd7, 0xe5, 0x24, 0x67, 0x5b, 0x83, 0x2c, 0x3a, 0xb4, 0x2c, 0x98, 0xc3,
+ 0xe8, 0xd5, 0x5a, 0x6e, 0x77, 0x12, 0x5b, 0x6b, 0xc3, 0x49, 0x12, 0xab,
+ 0x30, 0xc2, 0xba, 0xd0, 0x69, 0xce, 0x5d, 0x7a, 0x7c, 0x24, 0x85, 0x15,
+ 0x9b, 0x91, 0xe4, 0x66, 0x7d, 0xca, 0x3b, 0xd5, 0xf8, 0x8c, 0xe2, 0x6d,
+ 0x59, 0xa3, 0x77, 0x54, 0xfb, 0x9d, 0xe6, 0xea, 0xa5, 0x69, 0xc3, 0xac,
+ 0xf7, 0x34, 0x27, 0x93, 0x92, 0x51, 0xea, 0xd8, 0x4a, 0xc4, 0xb2, 0xbe,
+ 0x79, 0x6d, 0xb2, 0xac, 0x1b, 0x23, 0x68, 0x6a, 0xaf, 0xdc, 0x94, 0xe9,
+ 0xd7, 0x90, 0xe4, 0x3e, 0xd1, 0x59, 0xa7, 0x39, 0x43, 0x74, 0x9f, 0x0d,
+ 0x9f, 0xbd, 0x1c, 0x6e, 0x7b, 0x84, 0xb0, 0x4d, 0xeb, 0x4c, 0x8a, 0xd6,
+ 0xce, 0x70, 0xbb, 0xf3, 0xf8, 0x06, 0xdd, 0xe9, 0x9b, 0xba, 0xe4, 0xad,
+ 0x35, 0xc7, 0x6d, 0xaf, 0xe7, 0xc0, 0xbc, 0xe9, 0xdf, 0x64, 0x7c, 0x67,
+ 0xe7, 0xce, 0xa2, 0x61, 0x7b, 0x37, 0x3b, 0x5c, 0x40, 0x1c, 0xe4, 0xfb,
+ 0xd0, 0xdc, 0xe7, 0x7b, 0xdc, 0xd2, 0xce, 0x70, 0xc7, 0xdb, 0x7a, 0x19,
+ 0xce, 0x4e, 0x7c, 0x38, 0x21, 0x01, 0x74, 0x06, 0xb3, 0xa3, 0x42, 0x33,
+ 0x4b, 0x4a, 0xb6, 0xdf, 0x4e, 0x73, 0xaa, 0xaa, 0xc9, 0x8b, 0xba, 0x64,
+ 0xb2, 0x48, 0xcf, 0x5a, 0x8b, 0x84, 0x11, 0xed, 0x7e, 0xc2, 0xf2, 0x80,
+ 0x4c, 0x72, 0xa3, 0x65, 0x51, 0xbf, 0x66, 0x43, 0xdc, 0xd6, 0xf0, 0xaa,
+ 0x60, 0xa8, 0xbb, 0x3c, 0xc0, 0x08, 0xe9, 0xe0, 0x62, 0xc1, 0xc5, 0x40,
+ 0x23, 0x5f, 0x9a, 0x7b, 0xab, 0x9a, 0x41, 0x6b, 0x52, 0x5b, 0x99, 0x61,
+ 0x24, 0x86, 0xbf, 0xe5, 0xb3, 0x46, 0x08, 0x92, 0xcd, 0x1a, 0xd4, 0xd7,
+ 0xb0, 0x3b, 0xba, 0x47, 0x66, 0x63, 0xb8, 0x61, 0xb1, 0x28, 0x3a, 0x2f,
+ 0x1c, 0x32, 0x17, 0x16, 0x51, 0xfb, 0xfd, 0xd9, 0x7b, 0x33, 0xb3, 0x93,
+ 0x11, 0xdd, 0x7c, 0x46, 0x35, 0xe5, 0x15, 0xc2, 0xa7, 0x66, 0x59, 0x95,
+ 0xb7, 0x3b, 0x51, 0xd8, 0x48, 0xc1, 0x9d, 0xe6, 0xc2, 0x11, 0xe3, 0x28,
+ 0x98, 0x5b, 0x82, 0x6c, 0x96, 0xe6, 0xdb, 0x2a, 0x35, 0x5a, 0x1b, 0xe6,
+ 0x2a, 0xb3, 0xa8, 0xa9, 0xf9, 0x21, 0xf7, 0x1c, 0xac, 0x0e, 0xa4, 0x03,
+ 0x28, 0x83, 0xb6, 0xe5, 0xf6, 0xbb, 0xbc, 0xb2, 0xb4, 0x2a, 0x45, 0x76,
+ 0x55, 0x36, 0x74, 0xa4, 0xf5, 0x33, 0xf3, 0xcc, 0xa0, 0xd3, 0x1c, 0x56,
+ 0x0d, 0x03, 0x02, 0x67, 0x62, 0xfd, 0x4c, 0x54, 0x11, 0xda, 0x6b, 0xa3,
+ 0x69, 0x19, 0xae, 0x06, 0x6e, 0xb0, 0xf6, 0xd8, 0xc2, 0xbe, 0x0c, 0x16,
+ 0x36, 0x9d, 0xad, 0x5c, 0x59, 0xea, 0x6a, 0xff, 0xc4, 0x4c, 0x8f, 0xd6,
+ 0xd5, 0x5b, 0x56, 0x7c, 0xe6, 0x2d, 0x2b, 0x2c, 0x84, 0xba, 0xb0, 0xab,
+ 0x57, 0x16, 0x4b, 0xfb, 0xc9, 0x6b, 0x4b, 0x9d, 0x70, 0x57, 0xdd, 0x63,
+ 0x59, 0x8b, 0xb6, 0xf7, 0x29, 0x6b, 0xeb, 0x2d, 0x2e, 0x7f, 0x9a, 0xec,
+ 0x06, 0x2c, 0x6b, 0xf1, 0xfb, 0x2c, 0xee, 0x0e, 0x31, 0xaa, 0x66, 0x56,
+ 0xdf, 0x06, 0x7c, 0xc1, 0x4c, 0x7a, 0x93, 0x2c, 0x24, 0x64, 0xf1, 0xf3,
+ 0xf9, 0x02, 0x2d, 0xb3, 0x63, 0x0b, 0xf7, 0xc9, 0x1d, 0x59, 0x68, 0x74,
+ 0x02, 0xd6, 0x48, 0x92, 0x06, 0xe7, 0x70, 0x5e, 0x36, 0xfc, 0x32, 0x0f,
+ 0x7d, 0xe8, 0xcc, 0x75, 0xd4, 0xaa, 0xbb, 0x9b, 0x65, 0x38, 0xc3, 0xed,
+ 0xbe, 0xfb, 0x7d, 0xa7, 0xcb, 0xc2, 0xe9, 0x0e, 0xb6, 0xdf, 0x62, 0x0d,
+ 0x8d, 0x9c, 0xd0, 0x54, 0x25, 0x0c, 0x46, 0xad, 0x21, 0xe2, 0x56, 0x34,
+ 0x9c, 0x71, 0x62, 0x74, 0x38, 0xc3, 0x23, 0x37, 0xf2, 0x96, 0x5b, 0x45,
+ 0x65, 0x49, 0xb3, 0xc1, 0xe3, 0x74, 0x72, 0x43, 0x37, 0x51, 0x2e, 0x06,
+ 0x4c, 0xdd, 0x26, 0xbe, 0x2d, 0x8c, 0x6e, 0x7b, 0x9b, 0x91, 0x13, 0x42,
+ 0x3b, 0xda, 0xf4, 0x58, 0xeb, 0x2e, 0x2d, 0x62, 0x5d, 0xcf, 0x6e, 0x77,
+ 0x3f, 0x75, 0x11, 0xa9, 0x43, 0x1d, 0xe1, 0x6e, 0xb8, 0x84, 0x72, 0xc1,
+ 0xad, 0x58, 0x44, 0x7a, 0x59, 0x16, 0xd1, 0x8d, 0xe1, 0x99, 0x8e, 0xe1,
+ 0x59, 0x74, 0x0c, 0x3a, 0x88, 0x95, 0xa3, 0x78, 0xf6, 0xcb, 0x36, 0x32,
+ 0x3a, 0x86, 0xe7, 0x34, 0x86, 0x7c, 0x71, 0xfb, 0xbc, 0xf3, 0x8e, 0xd1,
+ 0xd7, 0xd4, 0x55, 0x31, 0x49, 0x17, 0x38, 0xb5, 0x66, 0x21, 0x0d, 0x57,
+ 0x2e, 0x67, 0xb7, 0xd4, 0x91, 0xa1, 0x01, 0x23, 0xc0, 0x41, 0xe2, 0x69,
+ 0x3c, 0x23, 0x4e, 0x72, 0x6c, 0x4e, 0xc2, 0xad, 0xe7, 0x17, 0xd2, 0xc3,
+ 0xc0, 0x84, 0xb2, 0x71, 0x77, 0x9d, 0x93, 0x30, 0x90, 0x8b, 0x55, 0xcc,
+ 0xec, 0x2c, 0x5b, 0x00, 0x8e, 0xcf, 0x6e, 0x5f, 0x0e, 0xa4, 0xa3, 0xcd,
+ 0x3e, 0xcb, 0xa4, 0x22, 0x64, 0x36, 0x74, 0xab, 0x74, 0x9a, 0xd3, 0x15,
+ 0xe1, 0xf1, 0x64, 0x22, 0x07, 0x98, 0x0f, 0x4c, 0x3b, 0xcf, 0x75, 0x60,
+ 0x19, 0x1b, 0x83, 0xbc, 0xc9, 0xbe, 0x94, 0xc9, 0xbe, 0xfc, 0x3f, 0x66,
+ 0xb2, 0x2f, 0x57, 0x4f, 0x36, 0xa5, 0xc9, 0xa6, 0x0b, 0x72, 0xef, 0x74,
+ 0xc9, 0xcb, 0x68, 0xfb, 0x5b, 0xe4, 0x19, 0xdc, 0x4c, 0xbe, 0x27, 0x02,
+ 0x02, 0xd7, 0x23, 0x8b, 0x79, 0x61, 0x3d, 0x6b, 0x18, 0x13, 0x5b, 0x73,
+ 0xc9, 0xe2, 0xa0, 0x43, 0x88, 0x36, 0x47, 0xdc, 0x10, 0x57, 0xa5, 0xd1,
+ 0xb9, 0xc9, 0x1a, 0x2e, 0x1e, 0x37, 0x4f, 0x06, 0x36, 0xff, 0x33, 0xcb,
+ 0x64, 0x5d, 0x3d, 0x39, 0x19, 0x8b, 0x59, 0x42, 0xa7, 0x47, 0xbb, 0xe2,
+ 0x48, 0x99, 0xd5, 0xa4, 0x0b, 0x66, 0xf7, 0x39, 0x39, 0xf6, 0x72, 0xb1,
+ 0x2a, 0x1b, 0xdd, 0x2f, 0x99, 0x54, 0x10, 0xf1, 0x87, 0xe4, 0xe2, 0x20,
+ 0x8a, 0x16, 0xb3, 0x23, 0x06, 0x9b, 0x5c, 0xce, 0xd2, 0xab, 0xc8, 0x7d,
+ 0x99, 0x5f, 0x15, 0xa5, 0x38, 0xda, 0xea, 0x72, 0x4e, 0xa7, 0xe0, 0x1b,
+ 0x39, 0x05, 0xb5, 0xe1, 0x2c, 0xc5, 0x64, 0xb6, 0x84, 0xb7, 0xe5, 0xd4,
+ 0x4c, 0xcc, 0x7c, 0xe5, 0xb3, 0x88, 0x7d, 0x5a, 0x40, 0x12, 0x33, 0x07,
+ 0xe9, 0x15, 0x49, 0x9c, 0xaf, 0xf9, 0x9f, 0xba, 0x21, 0xfe, 0xfd, 0x45,
+ 0x5c, 0x06, 0x1a, 0x89, 0x5e, 0x49, 0x73, 0xfb, 0x40, 0xaf, 0xee, 0x7b,
+ 0xef, 0xd0, 0x4a, 0x41, 0x72, 0x16, 0x2b, 0x09, 0xee, 0x0d, 0x3d, 0x91,
+ 0x1d, 0xee, 0x46, 0x43, 0x35, 0xfc, 0x6d, 0x4a, 0x9a, 0x10, 0xac, 0x99,
+ 0xc9, 0xc1, 0xd7, 0xc7, 0x34, 0xcb, 0x34, 0x9f, 0xb1, 0xa9, 0x4d, 0x66,
+ 0x9d, 0x67, 0x33, 0xd2, 0xa2, 0xb0, 0x64, 0xf0, 0x9f, 0x25, 0xbe, 0xe9,
+ 0x5e, 0xfe, 0xeb, 0xbd, 0x2b, 0xff, 0x61, 0x16, 0x31, 0xdd, 0x7a, 0x3e,
+ 0xdc, 0xee, 0x91, 0x58, 0x6f, 0xb6, 0x2c, 0x2b, 0x26, 0xe5, 0x94, 0x3a,
+ 0x99, 0xa5, 0xc5, 0x4d, 0xcd, 0x8a, 0x18, 0x6b, 0x27, 0x34, 0xd6, 0xbe,
+ 0x61, 0xa2, 0x55, 0x55, 0x2e, 0x69, 0xb4, 0x01, 0xef, 0x95, 0xe9, 0x80,
+ 0xd9, 0x88, 0x09, 0xf5, 0xef, 0x4b, 0xda, 0x90, 0x79, 0x5a, 0xdd, 0xa8,
+ 0xa9, 0x96, 0xae, 0x89, 0x74, 0x56, 0x97, 0xd8, 0x39, 0x8c, 0xcb, 0xaa,
+ 0x00, 0x9d, 0xe6, 0x06, 0xdf, 0x40, 0xf4, 0x36, 0xc4, 0x42, 0x5e, 0x55,
+ 0x3e, 0x08, 0xa5, 0x1a, 0x76, 0x83, 0x9b, 0x11, 0x94, 0xe3, 0x4e, 0x8c,
+ 0xde, 0xda, 0xaa, 0x8c, 0x90, 0x71, 0xb3, 0x66, 0x3f, 0xed, 0x2c, 0xad,
+ 0x1b, 0x18, 0x7f, 0x94, 0x80, 0xe8, 0x41, 0x5f, 0xbc, 0x4e, 0x8b, 0x07,
+ 0xf2, 0x33, 0x7f, 0x8a, 0x78, 0x7d, 0x99, 0x5f, 0x2d, 0xab, 0x8c, 0xad,
+ 0x5e, 0x70, 0x4d, 0xab, 0x47, 0x9a, 0xf4, 0xb5, 0xeb, 0x12, 0xf4, 0x65,
+ 0xe4, 0xdc, 0x6c, 0x76, 0x19, 0xbb, 0xf7, 0x54, 0x61, 0x87, 0x4e, 0x5b,
+ 0x67, 0x13, 0x34, 0x55, 0x64, 0x62, 0xeb, 0x02, 0x77, 0x26, 0x47, 0x66,
+ 0x32, 0x99, 0xa5, 0xf9, 0xbc, 0x6e, 0x89, 0xb4, 0x5d, 0xca, 0x50, 0x89,
+ 0x1e, 0x44, 0x31, 0x26, 0x33, 0x7b, 0x55, 0x93, 0xf9, 0x04, 0x7c, 0x4a,
+ 0xa5, 0x6c, 0x36, 0x62, 0x5f, 0x67, 0x93, 0x1b, 0x90, 0x9d, 0x67, 0x5a,
+ 0xec, 0xf2, 0x2a, 0x5e, 0x75, 0x2c, 0xd8, 0x92, 0xbc, 0xd2, 0x46, 0x1c,
+ 0x19, 0x1b, 0x9a, 0xcb, 0x8b, 0xe9, 0x72, 0x82, 0xc3, 0x4a, 0xd6, 0x12,
+ 0x23, 0xa2, 0x55, 0x29, 0x89, 0x3c, 0x0d, 0xe2, 0x00, 0x12, 0xd0, 0xc5,
+ 0xc0, 0x10, 0xc1, 0x22, 0x3a, 0x3a, 0x70, 0x3b, 0x96, 0x53, 0x5b, 0x4c,
+ 0xa0, 0x16, 0xf7, 0x00, 0x2c, 0xef, 0xaa, 0xfd, 0xb5, 0x57, 0xb3, 0xd3,
+ 0x1c, 0xaf, 0x6d, 0x3f, 0x61, 0x4e, 0xaa, 0xce, 0xca, 0x69, 0x29, 0xa4,
+ 0x34, 0x30, 0xfa, 0x7a, 0x9d, 0x4f, 0xd8, 0x50, 0x95, 0x5f, 0x65, 0xc4,
+ 0x2f, 0x48, 0xf8, 0x6c, 0x66, 0x73, 0xf6, 0xe5, 0x77, 0x09, 0x6d, 0x60,
+ 0xa5, 0xb6, 0x80, 0xac, 0x7c, 0x86, 0xc2, 0x2a, 0x8a, 0xa5, 0x0f, 0x35,
+ 0x9b, 0xfa, 0x46, 0xb4, 0x9c, 0xed, 0x99, 0x66, 0x28, 0xcc, 0x32, 0xbb,
+ 0x6c, 0x07, 0x7e, 0x8f, 0xba, 0x31, 0xbc, 0xa5, 0x4f, 0x47, 0x64, 0x02,
+ 0x63, 0x34, 0x19, 0xfa, 0xd4, 0xca, 0xa8, 0xe6, 0xd2, 0x31, 0x09, 0x86,
+ 0xe4, 0x81, 0xba, 0xcb, 0x27, 0xec, 0x7c, 0x80, 0x03, 0x2d, 0x62, 0x36,
+ 0x98, 0xcc, 0x72, 0x7a, 0x70, 0x6e, 0x54, 0x5d, 0x7a, 0x8b, 0x25, 0x69,
+ 0xba, 0x16, 0x8c, 0x56, 0x3f, 0xb5, 0x1c, 0x15, 0x26, 0xb4, 0xfa, 0x1a,
+ 0x66, 0xef, 0xb4, 0xca, 0xe1, 0xa1, 0x0a, 0x9a, 0xe3, 0x31, 0xd3, 0x24,
+ 0xfd, 0x71, 0x42, 0xd5, 0x62, 0x23, 0xb0, 0xb3, 0x1f, 0xe0, 0xec, 0x10,
+ 0xd7, 0xf1, 0x0e, 0xce, 0x98, 0xce, 0x2b, 0x07, 0x58, 0x24, 0xaf, 0xe9,
+ 0x3a, 0x7a, 0x43, 0xb3, 0x59, 0xc1, 0x12, 0xcf, 0xe0, 0x17, 0xbb, 0x6e,
+ 0x1b, 0x88, 0x3d, 0xd6, 0xc7, 0x66, 0x14, 0x6e, 0x0d, 0x4e, 0x44, 0xa2,
+ 0x9e, 0xa8, 0xa6, 0x62, 0x28, 0x8a, 0xd8, 0xa1, 0x6d, 0x6b, 0xe1, 0xac,
+ 0x45, 0x66, 0x6b, 0xb2, 0xfc, 0xd6, 0xcc, 0xdc, 0xf9, 0x9b, 0xb8, 0x71,
+ 0x38, 0x82, 0x7b, 0xa3, 0xac, 0xe9, 0x36, 0x77, 0x80, 0x0e, 0xf7, 0x7a,
+ 0x9e, 0x3f, 0x99, 0x5b, 0x95, 0xb5, 0x1b, 0x67, 0xea, 0x2d, 0x66, 0xeb,
+ 0x8c, 0x61, 0xa2, 0x14, 0x7e, 0xb4, 0xf3, 0xe6, 0xbb, 0xfd, 0x93, 0x0f,
+ 0x47, 0x3b, 0x7f, 0xe9, 0x92, 0x8f, 0xf9, 0x6e, 0x97, 0xbf, 0xdb, 0xed,
+ 0xc5, 0x78, 0x96, 0xa1, 0xa0, 0x24, 0x59, 0x7f, 0xb3, 0x9e, 0xd4, 0x0f,
+ 0xf3, 0x71, 0x39, 0xb3, 0x7c, 0x4b, 0x3a, 0xa1, 0x51, 0xf4, 0x45, 0x3e,
+ 0x68, 0xf8, 0x9a, 0xe3, 0x85, 0xa1, 0x1b, 0xb2, 0x3b, 0x76, 0x38, 0x45,
+ 0x45, 0x20, 0x04, 0x05, 0xa4, 0x53, 0x7f, 0x31, 0xea, 0x06, 0x37, 0x9e,
+ 0x6c, 0x10, 0xb5, 0x5c, 0x33, 0x41, 0xf6, 0x13, 0x3e, 0x49, 0x5d, 0x76,
+ 0xce, 0x33, 0xb6, 0xee, 0x2e, 0x35, 0x0a, 0x8a, 0x72, 0x92, 0xb0, 0xfc,
+ 0xfd, 0x60, 0xc8, 0xb7, 0x21, 0x8b, 0xca, 0x87, 0x9a, 0x99, 0x4a, 0x5e,
+ 0xcb, 0xf9, 0xec, 0x32, 0x3c, 0x62, 0xfa, 0xe4, 0xc3, 0xbc, 0x35, 0xb3,
+ 0xe0, 0xad, 0xef, 0xc9, 0x58, 0x16, 0xa9, 0xe1, 0xe8, 0x55, 0x4f, 0xce,
+ 0xb3, 0x8b, 0x96, 0x11, 0x9b, 0x01, 0x1d, 0xb0, 0x2a, 0xb4, 0xd5, 0x98,
+ 0x53, 0x47, 0x3d, 0x4a, 0x44, 0x0f, 0x85, 0x66, 0x29, 0x47, 0xa0, 0x03,
+ 0x65, 0x46, 0x4d, 0x6e, 0xc2, 0x07, 0x39, 0x92, 0xeb, 0x55, 0x26, 0xe7,
+ 0x97, 0x3d, 0x82, 0x5d, 0xd2, 0x37, 0x8d, 0x8d, 0xf3, 0x42, 0x69, 0x5b,
+ 0x54, 0xb3, 0xc1, 0x09, 0x51, 0xf4, 0xac, 0x14, 0x96, 0xee, 0x8c, 0xae,
+ 0xe2, 0xf3, 0xb4, 0x34, 0x10, 0xb5, 0xe7, 0x69, 0x88, 0x51, 0x99, 0xf0,
+ 0x56, 0xe8, 0x40, 0xf9, 0x6c, 0x59, 0x72, 0x5a, 0x18, 0xe6, 0x5e, 0x30,
+ 0xe5, 0x0b, 0xd7, 0x4d, 0xca, 0x2a, 0xd2, 0xdc, 0xfb, 0xac, 0xa9, 0x8d,
+ 0x74, 0x98, 0x6d, 0xc9, 0xa5, 0xad, 0x1b, 0x89, 0x5e, 0x78, 0x20, 0x21,
+ 0xf7, 0x3a, 0xbd, 0x38, 0x72, 0xf6, 0x12, 0x3c, 0xe9, 0xbc, 0x9d, 0x6c,
+ 0x87, 0xf5, 0x0f, 0xad, 0xfa, 0x49, 0x85, 0x4b, 0xa7, 0xa1, 0x85, 0x6a,
+ 0xb1, 0x6c, 0xc8, 0xcc, 0x51, 0xda, 0xc9, 0xe8, 0x1d, 0x2a, 0xc4, 0xa5,
+ 0x67, 0xc3, 0xf4, 0x34, 0x24, 0x71, 0x02, 0x1f, 0xdb, 0xa0, 0xab, 0xd0,
+ 0x66, 0xc1, 0xcb, 0x3c, 0x71, 0x63, 0x18, 0xfc, 0x2d, 0x75, 0x97, 0xbd,
+ 0xc4, 0xe8, 0x60, 0xa5, 0xcc, 0x3d, 0x5e, 0x24, 0x75, 0x7a, 0xcb, 0xaf,
+ 0x60, 0xbd, 0xe2, 0x77, 0x96, 0x73, 0x8f, 0x29, 0xc3, 0x3e, 0xa4, 0xe6,
+ 0xa7, 0xcb, 0xf9, 0x42, 0x84, 0x89, 0x3f, 0xfc, 0x7e, 0xb2, 0xc3, 0x57,
+ 0x22, 0x1c, 0x0e, 0xd2, 0x7a, 0x92, 0xe7, 0x31, 0x01, 0x9b, 0x02, 0xf4,
+ 0x8c, 0x12, 0x77, 0x54, 0xb0, 0x31, 0x69, 0x7f, 0x74, 0x70, 0x7c, 0xec,
+ 0x3c, 0xb3, 0x1a, 0xca, 0x80, 0xf8, 0xbc, 0xa6, 0x23, 0x2f, 0x75, 0x9a,
+ 0xcb, 0xc8, 0x40, 0x3c, 0x61, 0x19, 0x96, 0x67, 0x6a, 0x1e, 0x25, 0x2b,
+ 0x2e, 0x36, 0xdc, 0xdc, 0x47, 0xb5, 0x18, 0xf7, 0xff, 0xd2, 0x3c, 0x2c,
+ 0xb2, 0x37, 0xfb, 0x3d, 0x6b, 0xb8, 0xe5, 0x79, 0x76, 0x4f, 0x40, 0xba,
+ 0x24, 0x75, 0x81, 0x99, 0x1d, 0xae, 0x1e, 0xda, 0xbe, 0xa9, 0xb8, 0x60,
+ 0x85, 0xef, 0x91, 0x3b, 0x65, 0x4e, 0xf2, 0xe1, 0x25, 0x9c, 0x50, 0xc5,
+ 0xb3, 0x5d, 0xc3, 0xb8, 0xcc, 0x5d, 0x3e, 0xaf, 0x7d, 0x01, 0x0a, 0xd7,
+ 0xef, 0xa3, 0xd6, 0xc0, 0xc0, 0x3c, 0xf9, 0x15, 0xbd, 0xd2, 0xb9, 0xf5,
+ 0x5b, 0x76, 0xca, 0x15, 0xd6, 0xc9, 0x14, 0x92, 0x68, 0x67, 0xef, 0x96,
+ 0x6c, 0x44, 0x35, 0xc2, 0x4f, 0x33, 0x33, 0xcc, 0xaa, 0x9f, 0x2c, 0x0b,
+ 0xfa, 0xd7, 0x3a, 0x49, 0x92, 0xbc, 0x89, 0x28, 0x2b, 0xa4, 0x8c, 0x54,
+ 0x39, 0xc9, 0xbe, 0x69, 0xe2, 0xf3, 0x4d, 0x96, 0x52, 0xd5, 0x93, 0xc2,
+ 0xa2, 0x00, 0x05, 0xa4, 0x51, 0x34, 0x9c, 0xda, 0x9d, 0xbb, 0xbc, 0x2e,
+ 0x2a, 0x0b, 0x6e, 0xa8, 0xb9, 0xda, 0xca, 0x22, 0x9e, 0x7c, 0x42, 0xbb,
+ 0xae, 0x82, 0x48, 0x97, 0xb1, 0x1b, 0x86, 0xe9, 0x6b, 0x20, 0xdd, 0xe3,
+ 0xf2, 0x1a, 0xc4, 0x4e, 0xdc, 0x7f, 0xc5, 0x5d, 0xeb, 0xf4, 0x8f, 0x52,
+ 0x38, 0x24, 0xde, 0xb0, 0x0e, 0x6b, 0xdd, 0x0d, 0xf6, 0xb3, 0x93, 0xc7,
+ 0x4a, 0x4e, 0x6c, 0x77, 0x1c, 0x97, 0xf0, 0x82, 0x13, 0xb3, 0x34, 0x8a,
+ 0x2e, 0xdd, 0x45, 0x56, 0x20, 0x18, 0x26, 0x07, 0xb0, 0x66, 0x52, 0x0b,
+ 0xb5, 0xdf, 0x84, 0xbf, 0x94, 0x81, 0x01, 0x82, 0x44, 0x40, 0xb0, 0xc3,
+ 0xd4, 0xe3, 0x4b, 0x18, 0x9b, 0x59, 0xa5, 0xbb, 0x0c, 0x11, 0x39, 0xad,
+ 0xc6, 0x5a, 0x17, 0x7a, 0xdc, 0x9e, 0xc1, 0x37, 0xfc, 0x46, 0xbd, 0x09,
+ 0xd9, 0xa7, 0x70, 0xac, 0x8a, 0xbc, 0x6e, 0x37, 0x45, 0x79, 0x67, 0x44,
+ 0x9a, 0xa2, 0xe4, 0x5e, 0xf4, 0x14, 0xd3, 0xb0, 0xbb, 0x8b, 0xde, 0x64,
+ 0x85, 0xdc, 0xff, 0xc2, 0xc8, 0x35, 0xa8, 0x0c, 0x4f, 0x37, 0x50, 0x90,
+ 0x55, 0x8c, 0x56, 0xde, 0xec, 0xf3, 0xe4, 0xae, 0xe4, 0xc7, 0x1c, 0xda,
+ 0x06, 0x61, 0x65, 0x1e, 0x4f, 0xd6, 0x8b, 0xdb, 0x8b, 0x3d, 0x81, 0x4b,
+ 0xda, 0x90, 0x45, 0x6f, 0xd0, 0xeb, 0xc7, 0x94, 0xa3, 0x2e, 0xff, 0xd5,
+ 0x31, 0xd9, 0x43, 0x1b, 0xdc, 0x05, 0x7c, 0xf4, 0xd5, 0xed, 0xc5, 0x7e,
+ 0x2f, 0xa5, 0x6a, 0x8e, 0xf8, 0x91, 0xbb, 0x59, 0xc2, 0xea, 0x30, 0x91,
+ 0xac, 0xb8, 0xca, 0xa1, 0x90, 0xa4, 0x5d, 0x12, 0xa7, 0x0b, 0x5a, 0xce,
+ 0x31, 0xdf, 0xcf, 0x56, 0xa3, 0x91, 0xa1, 0x0d, 0x93, 0xfd, 0x82, 0xe3,
+ 0xb9, 0xee, 0x52, 0x50, 0x9e, 0x6d, 0x1f, 0xe2, 0x4c, 0x78, 0x00, 0xed,
+ 0x75, 0xe0, 0x5f, 0x49, 0x72, 0xe7, 0x46, 0x39, 0xb6, 0x1d, 0x25, 0x1d,
+ 0x02, 0xc3, 0x27, 0xd7, 0x21, 0x00, 0x8b, 0x35, 0x00, 0x5e, 0x72, 0xbb,
+ 0x28, 0xcc, 0xbd, 0xef, 0xae, 0xcb, 0x19, 0x7b, 0xed, 0x3a, 0xcd, 0x79,
+ 0x72, 0x2d, 0x1c, 0xce, 0x50, 0xa7, 0xc9, 0x57, 0x44, 0x97, 0x4e, 0x95,
+ 0xc1, 0x60, 0x6b, 0x98, 0xab, 0xe1, 0x0f, 0xe4, 0x54, 0x9a, 0x65, 0x69,
+ 0x35, 0x7b, 0x30, 0xc4, 0xc1, 0x22, 0x4f, 0x32, 0xb8, 0xed, 0x34, 0x87,
+ 0xe5, 0x24, 0x9b, 0x47, 0x6a, 0xe6, 0x5e, 0x15, 0xf4, 0x90, 0x78, 0x09,
+ 0x35, 0xc0, 0xb2, 0x61, 0xbf, 0x2d, 0x3b, 0x97, 0xe9, 0xca, 0xbd, 0xcd,
+ 0x49, 0xc3, 0x32, 0xf4, 0x60, 0xe4, 0xf4, 0x2e, 0x25, 0x92, 0x3d, 0x13,
+ 0x44, 0x83, 0x26, 0x39, 0x28, 0xe6, 0x3a, 0xf7, 0xd4, 0x32, 0x73, 0x16,
+ 0xaf, 0xcd, 0x3d, 0x65, 0x74, 0xc5, 0x65, 0xba, 0x7a, 0xb9, 0x3e, 0xe9,
+ 0x82, 0xe3, 0x1b, 0xce, 0x8f, 0x89, 0x8a, 0xd0, 0x32, 0xe8, 0x75, 0xc5,
+ 0x0d, 0x78, 0xc0, 0x9b, 0x67, 0x98, 0x5f, 0xb1, 0x34, 0xd7, 0x60, 0x93,
+ 0xbc, 0x2e, 0x2f, 0x2f, 0x0d, 0xb5, 0x7f, 0x11, 0x08, 0xda, 0xfc, 0xc8,
+ 0xd6, 0x39, 0xe2, 0xad, 0x5b, 0x4c, 0x37, 0x69, 0x87, 0x94, 0x25, 0x22,
+ 0xbf, 0x5c, 0xe5, 0xb4, 0x1d, 0xdc, 0x5c, 0xa8, 0x61, 0xb6, 0xbf, 0xd7,
+ 0xc5, 0x65, 0x5f, 0xb8, 0xc6, 0x66, 0x43, 0xdf, 0x1c, 0x3f, 0x10, 0x8b,
+ 0x12, 0x46, 0xde, 0x8d, 0x14, 0x55, 0xd9, 0xf7, 0x26, 0x5f, 0x2c, 0x68,
+ 0xb3, 0x38, 0xc4, 0x13, 0xdb, 0x6c, 0x75, 0x88, 0x71, 0x66, 0x0e, 0x05,
+ 0x76, 0x55, 0x1d, 0xca, 0xe5, 0xd2, 0x5c, 0xc4, 0x3c, 0xe8, 0x71, 0x66,
+ 0x4e, 0x7a, 0xb7, 0x39, 0x15, 0xe0, 0x5d, 0x48, 0x96, 0x28, 0x3c, 0x53,
+ 0x0a, 0xbf, 0x2a, 0x84, 0x83, 0xd2, 0x36, 0xb9, 0x28, 0x0f, 0x51, 0x20,
+ 0xfb, 0x91, 0xc3, 0xff, 0xd6, 0x69, 0x49, 0x7a, 0x9e, 0x47, 0xc7, 0xff,
+ 0xf3, 0xc8, 0x05, 0xd0, 0xd9, 0x08, 0xb5, 0x07, 0x50, 0x7b, 0x40, 0x0f,
+ 0x1f, 0xe8, 0x12, 0xec, 0x0d, 0x0e, 0xcc, 0x7e, 0xf5, 0x30, 0x94, 0x96,
+ 0x35, 0x6f, 0xd9, 0x94, 0xe4, 0x77, 0xe6, 0x58, 0x43, 0xc4, 0x7d, 0x13,
+ 0xc9, 0x19, 0x7d, 0xb1, 0xca, 0xb6, 0xe0, 0xec, 0x2f, 0x03, 0xce, 0x8b,
+ 0x2d, 0x44, 0x88, 0x8f, 0x15, 0x64, 0x8e, 0x1b, 0x0e, 0xf9, 0x84, 0x54,
+ 0xe1, 0xb6, 0x4f, 0x82, 0x98, 0xb6, 0x20, 0x4b, 0x4a, 0x0c, 0x5e, 0xc8,
+ 0x0b, 0xc4, 0xae, 0xc2, 0x11, 0x47, 0x11, 0x66, 0xf6, 0x1b, 0x5a, 0x7b,
+ 0x26, 0xf9, 0xe2, 0x9a, 0xc4, 0xc6, 0xd7, 0x08, 0x6c, 0x20, 0x03, 0x13,
+ 0x7f, 0xf0, 0x45, 0xd4, 0xfa, 0x3e, 0x92, 0x83, 0x51, 0xcb, 0x45, 0xaa,
+ 0x6f, 0x0b, 0xff, 0xca, 0x35, 0x28, 0x59, 0x43, 0x25, 0x25, 0x98, 0xc6,
+ 0x34, 0xdd, 0x65, 0x39, 0xb6, 0x23, 0x56, 0xdd, 0x35, 0xf4, 0x04, 0xa1,
+ 0x9f, 0xfa, 0xd5, 0x30, 0x39, 0xc7, 0x1d, 0xb9, 0x5c, 0x70, 0x6c, 0x22,
+ 0xd9, 0xea, 0xe5, 0xbb, 0xc0, 0xe9, 0x55, 0x37, 0x2d, 0xf1, 0x08, 0x11,
+ 0xff, 0x7e, 0x7f, 0x45, 0x4b, 0x9f, 0xc8, 0xbd, 0xef, 0x8c, 0xcc, 0xb8,
+ 0xd7, 0x95, 0xa5, 0x5d, 0x64, 0xb1, 0xe1, 0x8d, 0x45, 0x5d, 0xcf, 0x10,
+ 0xcb, 0x3d, 0x2d, 0x27, 0xf5, 0x56, 0xba, 0x58, 0xd4, 0x5b, 0x3a, 0xc0,
+ 0x56, 0xd4, 0xb6, 0x6a, 0x1d, 0xa3, 0x91, 0x9d, 0x1b, 0x5d, 0xba, 0xb0,
+ 0x49, 0x59, 0x51, 0x69, 0x06, 0xcf, 0x5b, 0x21, 0xa6, 0xd5, 0x13, 0xf1,
+ 0x00, 0x7d, 0x5d, 0x2c, 0x2f, 0x4e, 0x46, 0x7c, 0xe1, 0x76, 0x6f, 0xce,
+ 0x25, 0x1d, 0x51, 0xdd, 0x1d, 0xbf, 0x71, 0x28, 0x72, 0x7c, 0x01, 0x8f,
+ 0x46, 0x07, 0xf8, 0x70, 0xb4, 0x24, 0x11, 0xc6, 0x74, 0x53, 0x3d, 0x30,
+ 0xdb, 0x08, 0x6e, 0x1a, 0x9a, 0x6d, 0xf2, 0xc9, 0xff, 0xc9, 0x42, 0x5c,
+ 0xe5, 0xcd, 0xf0, 0x32, 0x9b, 0x96, 0x55, 0x1a, 0x58, 0xca, 0x4a, 0x0a,
+ 0xaa, 0xc7, 0xea, 0x4c, 0xcc, 0x53, 0x5b, 0x46, 0x3a, 0xfe, 0x68, 0xd6,
+ 0x6b, 0x48, 0xbf, 0x43, 0xb5, 0xe3, 0x45, 0xd3, 0x8f, 0x69, 0xbd, 0xfe,
+ 0x78, 0x88, 0x30, 0x3d, 0x73, 0x1c, 0xea, 0xdf, 0x93, 0xae, 0x8d, 0x90,
+ 0x06, 0x17, 0xc0, 0x34, 0x2e, 0x14, 0x9e, 0xab, 0x4d, 0x30, 0x71, 0x4f,
+ 0xba, 0xb0, 0xbd, 0x6e, 0xf6, 0x92, 0x91, 0xc2, 0xae, 0x4a, 0x73, 0x9d,
+ 0x5e, 0xcf, 0xa3, 0x7e, 0x08, 0xf5, 0xb1, 0xf5, 0xb1, 0x9b, 0x50, 0xd3,
+ 0xf8, 0x3a, 0x59, 0x16, 0x5e, 0xeb, 0x86, 0x12, 0x26, 0x86, 0x51, 0x50,
+ 0x54, 0x38, 0x1b, 0x3f, 0x22, 0xdb, 0xa3, 0x72, 0xb6, 0x33, 0x16, 0xaa,
+ 0xf1, 0x4b, 0x59, 0x5e, 0x0d, 0xd5, 0x86, 0xbc, 0x12, 0x85, 0xcb, 0xa5,
+ 0x82, 0xd9, 0x9a, 0x0c, 0xd4, 0xb1, 0xd1, 0x61, 0x89, 0x3a, 0xd7, 0x78,
+ 0x7b, 0xa9, 0x70, 0x5c, 0x07, 0xb4, 0xbc, 0xc4, 0xea, 0x5e, 0xd7, 0x46,
+ 0xa2, 0x31, 0x9d, 0x7c, 0x11, 0x04, 0xfd, 0xdc, 0xe7, 0xf3, 0xe5, 0x1c,
+ 0xdb, 0x40, 0x94, 0x27, 0x8f, 0x31, 0x9b, 0xa2, 0x0b, 0x1a, 0x11, 0x31,
+ 0x32, 0x73, 0xc7, 0x03, 0xac, 0x2f, 0xa4, 0x7b, 0xc9, 0xf0, 0x7c, 0xf8,
+ 0x5b, 0x23, 0x4e, 0x0d, 0xad, 0x94, 0x26, 0x81, 0x56, 0x73, 0x0a, 0x91,
+ 0x68, 0xf3, 0x93, 0x64, 0x71, 0x9d, 0xd6, 0x59, 0x1f, 0x81, 0x67, 0xb1,
+ 0xa9, 0x9a, 0x6f, 0xf5, 0xe9, 0x2c, 0xd0, 0x8c, 0x4a, 0xc8, 0xc3, 0xf0,
+ 0xa3, 0x9a, 0xa5, 0xa5, 0x94, 0x21, 0x98, 0x20, 0x3f, 0x1b, 0x3e, 0xdb,
+ 0x1d, 0x6e, 0xf7, 0x03, 0x9b, 0x83, 0x53, 0x15, 0x35, 0x50, 0xdc, 0xf0,
+ 0x95, 0x49, 0x3e, 0xb7, 0xd1, 0x77, 0x2a, 0xcb, 0x64, 0x24, 0xdb, 0x2d,
+ 0x85, 0x3e, 0x71, 0x57, 0xe4, 0xb3, 0x30, 0x9c, 0x84, 0x04, 0x33, 0x66,
+ 0x91, 0xa6, 0xb5, 0x65, 0x95, 0x4e, 0x1e, 0x38, 0xa8, 0xd4, 0xb7, 0x49,
+ 0x68, 0x03, 0x66, 0x5c, 0x78, 0x1a, 0x07, 0x9c, 0x3a, 0x1d, 0x04, 0xe2,
+ 0xe7, 0x4c, 0x7c, 0xc1, 0x60, 0xb2, 0xa3, 0x2c, 0x63, 0x2d, 0x19, 0x02,
+ 0xe4, 0x9c, 0x64, 0x90, 0x79, 0x7a, 0x8f, 0x0d, 0x7d, 0x54, 0x84, 0xfc,
+ 0x8d, 0x8e, 0x1a, 0x44, 0x4e, 0xa3, 0xcb, 0x55, 0x5d, 0x6a, 0x86, 0x23,
+ 0xcd, 0x1a, 0xbd, 0x41, 0x14, 0x7f, 0x33, 0x47, 0xa2, 0x63, 0x66, 0xd2,
+ 0x48, 0xb8, 0xbe, 0x47, 0xae, 0xdc, 0x66, 0xc4, 0x0e, 0x64, 0xb6, 0xd6,
+ 0x9c, 0x26, 0x0a, 0x60, 0x20, 0xc3, 0x14, 0xc5, 0x9f, 0x11, 0x33, 0x29,
+ 0xcd, 0xdf, 0xd7, 0xb9, 0x19, 0x79, 0x35, 0xb9, 0xc6, 0xba, 0x92, 0xc1,
+ 0x17, 0x3e, 0xb1, 0xc7, 0x54, 0x7e, 0xf4, 0x51, 0x8b, 0xed, 0x34, 0xa7,
+ 0xab, 0x88, 0xb4, 0xd6, 0xb2, 0x50, 0x19, 0xa4, 0x33, 0x3a, 0x92, 0xe7,
+ 0x89, 0x2d, 0x64, 0x33, 0xa2, 0x9e, 0xe3, 0x98, 0xd1, 0x6b, 0x50, 0x7a,
+ 0x2a, 0x0d, 0xae, 0x7e, 0x43, 0x71, 0xa6, 0x69, 0x92, 0xa6, 0xd9, 0x60,
+ 0xc8, 0x1d, 0x91, 0xd9, 0x9b, 0xfb, 0x42, 0x20, 0x19, 0xa9, 0x82, 0x5d,
+ 0xf5, 0x50, 0x3c, 0x7d, 0xf2, 0xbe, 0xae, 0xbd, 0x3a, 0xfb, 0x02, 0xf5,
+ 0xa6, 0xd4, 0xf9, 0xa8, 0x22, 0xa8, 0x0b, 0xc3, 0x97, 0xb5, 0xd5, 0xd7,
+ 0x48, 0x78, 0x32, 0x83, 0xe1, 0x14, 0x48, 0xba, 0x26, 0x06, 0x83, 0xcb,
+ 0x26, 0x30, 0x2b, 0x7b, 0x5b, 0xda, 0xde, 0xe9, 0xd9, 0x25, 0xec, 0x38,
+ 0x9b, 0x24, 0xc0, 0x1a, 0x4a, 0x69, 0x92, 0x93, 0xb7, 0x74, 0x80, 0x0f,
+ 0xce, 0xcd, 0xbf, 0xb9, 0x7a, 0x4a, 0xc9, 0x1a, 0x8a, 0x7c, 0x46, 0x32,
+ 0x93, 0xbc, 0xfb, 0x6e, 0x94, 0x6c, 0x9c, 0x8e, 0xb6, 0x9e, 0xbd, 0xda,
+ 0xde, 0xec, 0xb6, 0x45, 0x4b, 0x05, 0xf5, 0x3d, 0xaa, 0xb9, 0x8f, 0xb6,
+ 0x28, 0x0d, 0x74, 0x93, 0x52, 0x75, 0x6f, 0xc9, 0x30, 0xd1, 0x32, 0x6b,
+ 0x9d, 0x1d, 0xbd, 0x53, 0xfb, 0x23, 0xbb, 0xf7, 0x8d, 0x4c, 0x6d, 0xc6,
+ 0x43, 0xde, 0x93, 0x90, 0x70, 0xce, 0xb3, 0x5b, 0xb5, 0x62, 0x26, 0x27,
+ 0x10, 0x15, 0xc0, 0xb3, 0xc8, 0x50, 0xaa, 0x82, 0xc7, 0x22, 0x23, 0x71,
+ 0xd2, 0xb5, 0x20, 0x6c, 0x8d, 0x2e, 0xf0, 0x40, 0xe0, 0x1b, 0x83, 0x25,
+ 0xd5, 0x66, 0x4c, 0x15, 0x2e, 0x0d, 0x0a, 0xec, 0x9f, 0xfe, 0x7e, 0x27,
+ 0x2c, 0x12, 0xfc, 0xb2, 0xf3, 0x6a, 0xf8, 0x99, 0xcd, 0x82, 0x1b, 0x4c,
+ 0xfb, 0x1a, 0x93, 0xfc, 0xfa, 0x11, 0x97, 0xc3, 0x28, 0x63, 0x66, 0xed,
+ 0x33, 0x1c, 0xbc, 0x04, 0x6f, 0x00, 0x62, 0xf3, 0xd5, 0x51, 0xe6, 0xbc,
+ 0xd7, 0x11, 0x43, 0xa3, 0x66, 0xf8, 0x5a, 0xdf, 0x28, 0x47, 0x94, 0x42,
+ 0xcf, 0x95, 0x45, 0x4b, 0xc6, 0x55, 0x79, 0x47, 0xa1, 0x88, 0x08, 0x92,
+ 0x07, 0xf5, 0xa5, 0x1c, 0x9b, 0x78, 0x1d, 0x58, 0x55, 0xcd, 0x9e, 0xce,
+ 0xac, 0xa7, 0xfd, 0x9b, 0x8b, 0x77, 0x27, 0x1c, 0x21, 0x4e, 0xd7, 0xde,
+ 0x42, 0x7c, 0xf8, 0x18, 0xf3, 0x72, 0x6c, 0xee, 0x03, 0xe2, 0xb8, 0x8d,
+ 0x35, 0x8d, 0xc5, 0x18, 0x2d, 0xec, 0x78, 0x56, 0x98, 0x5f, 0xc4, 0xdc,
+ 0x2c, 0x72, 0xf1, 0x38, 0xfb, 0x05, 0xe9, 0x6b, 0xe6, 0x34, 0x0e, 0xc8,
+ 0x50, 0xd8, 0xb5, 0xf9, 0x2c, 0x16, 0x33, 0xb1, 0x63, 0x6d, 0xdd, 0x0f,
+ 0x8c, 0x40, 0x38, 0xa0, 0xd1, 0x0d, 0x4c, 0xf3, 0xec, 0x29, 0x26, 0x16,
+ 0x73, 0x60, 0xae, 0x78, 0xa6, 0x93, 0x64, 0xf0, 0x96, 0xb6, 0x82, 0x1e,
+ 0x09, 0xb6, 0xcf, 0xdb, 0x25, 0x51, 0xce, 0xb0, 0x6c, 0x69, 0xad, 0x01,
+ 0xe5, 0x6c, 0x34, 0x15, 0x3f, 0xf4, 0x02, 0x71, 0xbe, 0x1c, 0x67, 0xbe,
+ 0x30, 0xba, 0x40, 0x60, 0x3d, 0x22, 0x73, 0x7d, 0xf5, 0xc0, 0x91, 0xcf,
+ 0x62, 0x4d, 0x57, 0xb7, 0xa2, 0xb5, 0x24, 0x70, 0xb3, 0xfc, 0xa4, 0x33,
+ 0xdf, 0x97, 0x24, 0x03, 0x0e, 0x02, 0x6b, 0x2a, 0xfc, 0xde, 0xf4, 0x1a,
+ 0x07, 0xf5, 0x53, 0x22, 0x28, 0xef, 0x04, 0x3b, 0xd3, 0x91, 0xd7, 0x96,
+ 0x3e, 0xa0, 0x71, 0x69, 0xd8, 0x2e, 0x42, 0x8c, 0xf4, 0x5d, 0x2a, 0x41,
+ 0xed, 0x02, 0xc8, 0xf5, 0x0c, 0xe0, 0x0e, 0x86, 0x18, 0x8c, 0x08, 0x72,
+ 0xc9, 0x65, 0x64, 0x32, 0x32, 0x02, 0x53, 0x78, 0xdb, 0xa9, 0xc9, 0xa6,
+ 0x2f, 0x14, 0x27, 0x0b, 0x93, 0xd3, 0x65, 0xd0, 0xb2, 0xe9, 0xf3, 0xf9,
+ 0x99, 0x67, 0xd5, 0x15, 0xb4, 0xcc, 0xab, 0xac, 0x09, 0x95, 0x05, 0xe1,
+ 0x17, 0x12, 0x16, 0x0c, 0xe5, 0xf6, 0x5f, 0x06, 0xec, 0x80, 0xc2, 0x85,
+ 0xb1, 0xa4, 0xf8, 0x5c, 0xa6, 0x8e, 0x64, 0x9d, 0x32, 0x13, 0xc4, 0x99,
+ 0x57, 0x98, 0x85, 0xa0, 0x7d, 0x0c, 0x95, 0xe5, 0xd9, 0xec, 0xcd, 0xcc,
+ 0x28, 0xee, 0x0f, 0xeb, 0x89, 0xa4, 0xd6, 0x48, 0x00, 0x7c, 0x23, 0x8a,
+ 0x3d, 0x36, 0x73, 0x72, 0xbd, 0x2c, 0x6e, 0x54, 0xf1, 0x9e, 0x95, 0x25,
+ 0x85, 0x17, 0x50, 0x30, 0x7e, 0xa7, 0xb9, 0x75, 0xaf, 0xb7, 0x7f, 0xf1,
+ 0xdb, 0x8e, 0xad, 0x32, 0x76, 0x1f, 0x59, 0x1d, 0x96, 0xc8, 0xed, 0xcd,
+ 0xc5, 0x39, 0x91, 0xc9, 0x97, 0x7d, 0x75, 0x75, 0x37, 0x2d, 0xa7, 0x56,
+ 0x10, 0x10, 0xc5, 0x66, 0x3e, 0xdc, 0x5c, 0xd6, 0x7f, 0x66, 0x5b, 0x65,
+ 0x47, 0x99, 0x61, 0xe7, 0x03, 0x75, 0xf2, 0xb6, 0x4c, 0xa7, 0xf4, 0x70,
+ 0xe4, 0x3a, 0x74, 0xf0, 0x00, 0x70, 0xa6, 0x0e, 0x93, 0x77, 0x7e, 0xd2,
+ 0x5c, 0x3b, 0x1a, 0xc2, 0xee, 0xe2, 0x30, 0x39, 0x33, 0xeb, 0x35, 0x08,
+ 0x9c, 0x2f, 0x57, 0xba, 0xed, 0x68, 0x90, 0xd6, 0xd5, 0x8d, 0x78, 0x9a,
+ 0xac, 0x5f, 0x96, 0xe5, 0x38, 0xad, 0xd6, 0x65, 0x03, 0xe0, 0xb8, 0x1f,
+ 0x8b, 0xf2, 0x45, 0x4b, 0x12, 0x38, 0xbd, 0xd1, 0xd6, 0x97, 0xfc, 0xd6,
+ 0x90, 0x25, 0x15, 0xef, 0x78, 0x96, 0xb3, 0xa9, 0x5d, 0x84, 0x6e, 0x87,
+ 0x91, 0x4d, 0xa3, 0x4d, 0x35, 0xe2, 0x4b, 0x5a, 0x55, 0x79, 0x7a, 0x45,
+ 0x8b, 0xdd, 0x2c, 0xab, 0x82, 0x33, 0xcc, 0x8a, 0xec, 0x8e, 0x9d, 0x8d,
+ 0xce, 0x57, 0x54, 0xc1, 0xba, 0xd2, 0xd6, 0xec, 0x03, 0x37, 0x4d, 0xfc,
+ 0x62, 0xfc, 0x1e, 0x36, 0x6a, 0x49, 0xf1, 0xe2, 0x94, 0x53, 0xcf, 0xf1,
+ 0xd3, 0x66, 0xee, 0x70, 0x43, 0xc5, 0xed, 0xa0, 0x9e, 0x9a, 0xc1, 0x6e,
+ 0x42, 0x9b, 0xb7, 0x69, 0x96, 0xc1, 0xcb, 0xff, 0x14, 0x0f, 0x16, 0xb5,
+ 0x2b, 0xdd, 0x44, 0x26, 0xce, 0x8c, 0x9b, 0x8c, 0x32, 0x39, 0x0c, 0xd0,
+ 0xb8, 0x66, 0x4a, 0x6a, 0x66, 0x28, 0x0e, 0x65, 0x2f, 0xe3, 0xd1, 0x0e,
+ 0x97, 0x1d, 0x5b, 0x21, 0xd1, 0x14, 0x4c, 0x9d, 0xbc, 0xf2, 0xb9, 0x64,
+ 0x24, 0x42, 0xd3, 0xb0, 0x58, 0x14, 0x85, 0xbd, 0xcd, 0xad, 0xef, 0x47,
+ 0x2c, 0xa7, 0xc1, 0x2e, 0xb7, 0xec, 0xa8, 0x7f, 0x80, 0x35, 0x62, 0x95,
+ 0xbf, 0x8d, 0xd6, 0x82, 0x33, 0x40, 0xe8, 0x02, 0xc3, 0xe1, 0xe9, 0x32,
+ 0x0e, 0xb6, 0xe4, 0xb6, 0xbc, 0x7a, 0xc1, 0x02, 0x77, 0x64, 0x5e, 0x71,
+ 0x65, 0x65, 0xbe, 0xd5, 0xca, 0xaa, 0x99, 0x4c, 0x18, 0x69, 0xe5, 0xcb,
+ 0x13, 0x81, 0xac, 0x41, 0xd3, 0xeb, 0xc9, 0xaa, 0xf5, 0xc4, 0xe3, 0xb3,
+ 0xe4, 0xb7, 0x48, 0xd3, 0xc4, 0x21, 0xad, 0x7e, 0xd7, 0x88, 0x20, 0x77,
+ 0x3b, 0xc5, 0x05, 0x0c, 0x52, 0x3f, 0xdc, 0xf5, 0x16, 0xbc, 0x29, 0x17,
+ 0xd0, 0x63, 0xb2, 0xc9, 0x85, 0x18, 0x74, 0x1b, 0xf1, 0xc0, 0xc1, 0x6e,
+ 0x39, 0x83, 0x24, 0xdf, 0xf1, 0xd8, 0x52, 0xc0, 0x80, 0x44, 0xde, 0x98,
+ 0x13, 0x10, 0xc8, 0xad, 0xe4, 0x9c, 0xa7, 0x20, 0x2c, 0x43, 0x96, 0x75,
+ 0x99, 0xb5, 0xa2, 0x3a, 0xbd, 0xa8, 0x03, 0xa4, 0x6c, 0x48, 0x36, 0xdc,
+ 0x27, 0x31, 0x4e, 0xe7, 0xaf, 0x8e, 0x71, 0x4d, 0xe2, 0x40, 0xe6, 0xe6,
+ 0x38, 0x14, 0xe6, 0xb1, 0x80, 0x4d, 0x44, 0xb2, 0xed, 0x39, 0xe1, 0x30,
+ 0xd1, 0x5c, 0xfb, 0xe0, 0xbe, 0x8f, 0xc4, 0xf9, 0x51, 0x76, 0xc8, 0x3d,
+ 0x72, 0x85, 0xe4, 0xb2, 0xb0, 0x2c, 0x84, 0xb3, 0x70, 0xbb, 0x4c, 0x86,
+ 0xe3, 0x82, 0x41, 0x5b, 0xd3, 0x48, 0x98, 0xd5, 0x04, 0x92, 0x7a, 0x6d,
+ 0x53, 0xaf, 0x0a, 0x90, 0x38, 0x31, 0xc6, 0x5f, 0x49, 0x33, 0x7c, 0x8e,
+ 0x4b, 0x0e, 0xa0, 0xb0, 0x09, 0x34, 0x11, 0x0d, 0x9f, 0xa3, 0xb0, 0xd8,
+ 0xbb, 0x82, 0x18, 0x49, 0x5e, 0xe8, 0xb4, 0x16, 0xf8, 0x8c, 0x31, 0xaf,
+ 0xd2, 0x23, 0xa4, 0x63, 0x45, 0x8c, 0x5f, 0x42, 0x3d, 0x7d, 0xbb, 0xea,
+ 0xc2, 0x12, 0xd9, 0x0f, 0x23, 0xdc, 0x5d, 0x65, 0x91, 0xc8, 0xa5, 0xc0,
+ 0x16, 0x73, 0x5a, 0x79, 0x44, 0x9d, 0x5e, 0xa7, 0xea, 0x69, 0xc8, 0x2a,
+ 0x92, 0x84, 0x6a, 0x08, 0x4e, 0x6a, 0x6a, 0x69, 0x67, 0x84, 0xec, 0x7c,
+ 0x4e, 0xd1, 0xe8, 0x81, 0x4e, 0x66, 0x08, 0xe6, 0xe0, 0xeb, 0x63, 0x18,
+ 0xa3, 0x66, 0xb9, 0x61, 0xa9, 0x4c, 0x52, 0x3c, 0x17, 0x06, 0xf7, 0xb0,
+ 0x94, 0x75, 0x45, 0xbc, 0x4e, 0xc2, 0xa5, 0xdb, 0x19, 0x6b, 0xd6, 0x85,
+ 0x46, 0x4b, 0x6d, 0xf3, 0x1c, 0x6c, 0xc2, 0x22, 0x36, 0x39, 0x55, 0x21,
+ 0xd6, 0xc6, 0x90, 0xa5, 0xce, 0xfe, 0x1a, 0x5d, 0x3b, 0xf4, 0x2e, 0xf9,
+ 0x83, 0x24, 0x26, 0xb3, 0x55, 0x1e, 0x1c, 0x36, 0xb0, 0x7e, 0xb9, 0x5d,
+ 0x66, 0xb0, 0x94, 0xac, 0xde, 0x5b, 0x0b, 0x3c, 0x72, 0xe8, 0x3e, 0x8e,
+ 0x61, 0x74, 0x61, 0x03, 0x67, 0xe7, 0x36, 0x71, 0xcc, 0xae, 0x65, 0xe6,
+ 0xcb, 0xe0, 0x2c, 0xf7, 0x93, 0xd4, 0x1e, 0xf3, 0xba, 0x59, 0x63, 0xae,
+ 0x39, 0x6d, 0xff, 0x4e, 0x66, 0x63, 0xa8, 0x62, 0x86, 0xa8, 0x49, 0xd9,
+ 0x84, 0xf9, 0x43, 0x7c, 0x25, 0xda, 0x9a, 0x86, 0xcd, 0xd2, 0xdf, 0x69,
+ 0x10, 0xf5, 0x62, 0x0f, 0xc9, 0x43, 0xf2, 0x86, 0x64, 0x9b, 0x2f, 0x25,
+ 0x0c, 0x89, 0xec, 0x78, 0xa2, 0xff, 0xb1, 0x83, 0x84, 0xaf, 0x25, 0x0e,
+ 0xca, 0x61, 0x8d, 0x07, 0xcb, 0x10, 0x6f, 0x0e, 0x01, 0x41, 0xfe, 0xea,
+ 0x31, 0xf9, 0x4d, 0x60, 0xcf, 0x01, 0x60, 0x4e, 0x10, 0x81, 0xf1, 0xe6,
+ 0xe9, 0xd5, 0xfb, 0xa5, 0xcb, 0xf7, 0xf8, 0xea, 0x5d, 0x5c, 0x73, 0x2e,
+ 0x41, 0x86, 0x70, 0xb7, 0x37, 0x5e, 0xf8, 0x15, 0xf9, 0x4f, 0x38, 0x00,
+ 0xd8, 0xc5, 0xb3, 0xb4, 0x8f, 0xa6, 0xe7, 0x05, 0x7b, 0xf3, 0x5b, 0xed,
+ 0x3a, 0x88, 0x11, 0x52, 0x3e, 0x0d, 0x3e, 0xde, 0x1c, 0xf3, 0x42, 0x4e,
+ 0x34, 0x2a, 0x9b, 0xcc, 0x6d, 0x36, 0xa3, 0x61, 0x50, 0x0b, 0x94, 0x25,
+ 0x73, 0xbf, 0x10, 0xe3, 0x1f, 0x4e, 0x5f, 0x44, 0xd5, 0x69, 0x69, 0x3c,
+ 0x53, 0xb5, 0xbe, 0x04, 0xf3, 0xfb, 0x52, 0x39, 0xfb, 0x53, 0x93, 0x6b,
+ 0x05, 0x6b, 0x21, 0x4e, 0xb0, 0x25, 0xa7, 0x82, 0x5e, 0xc4, 0xf9, 0x13,
+ 0x71, 0x26, 0x2a, 0x27, 0x73, 0x41, 0xd7, 0xa0, 0x47, 0xcb, 0xf3, 0x37,
+ 0xfb, 0xed, 0x35, 0xa3, 0xac, 0x60, 0x30, 0x51, 0xd9, 0xe8, 0x78, 0x73,
+ 0x39, 0x5d, 0xe8, 0xba, 0x7d, 0xa4, 0xda, 0x47, 0xb7, 0xef, 0xff, 0xb0,
+ 0x29, 0x72, 0xb4, 0x02, 0x2b, 0x30, 0x0c, 0x9c, 0x74, 0x45, 0x71, 0x2a,
+ 0x1c, 0xac, 0xfb, 0x77, 0x32, 0xd0, 0x26, 0x84, 0xdd, 0xb5, 0x82, 0x09,
+ 0xe0, 0x82, 0x22, 0x9f, 0x27, 0xb9, 0xf3, 0x66, 0x50, 0x0b, 0x4d, 0xe3,
+ 0xa0, 0x72, 0xa7, 0xed, 0x0f, 0x10, 0x78, 0x28, 0x54, 0x3b, 0x04, 0x1d,
+ 0x3e, 0x42, 0xac, 0x96, 0x38, 0xe3, 0x74, 0xb9, 0x92, 0x02, 0xcd, 0x4d,
+ 0x95, 0xcd, 0xb2, 0x2b, 0x16, 0x71, 0x4f, 0x8e, 0xbe, 0x3b, 0x3a, 0x09,
+ 0x04, 0xae, 0x86, 0x3f, 0xb7, 0xde, 0x4b, 0xcf, 0xae, 0xa1, 0xe8, 0x26,
+ 0x79, 0xcd, 0x06, 0x79, 0xee, 0x53, 0x5a, 0x8c, 0x06, 0xbe, 0xe6, 0xc4,
+ 0x20, 0x25, 0x7d, 0x02, 0x56, 0x9a, 0x89, 0x91, 0x43, 0x19, 0x23, 0xa8,
+ 0x86, 0x2d, 0x4f, 0x64, 0xaf, 0xaf, 0x47, 0xa3, 0xad, 0x9b, 0xac, 0x1a,
+ 0x13, 0x06, 0x53, 0x48, 0x50, 0x88, 0xc7, 0x4f, 0x0e, 0x11, 0x41, 0xc0,
+ 0x9e, 0x00, 0xda, 0x65, 0x37, 0x93, 0xe0, 0x8d, 0x45, 0x39, 0xcb, 0x27,
+ 0x0f, 0xc9, 0xa1, 0x8c, 0x8c, 0x93, 0x41, 0xb0, 0xeb, 0x70, 0x00, 0x88,
+ 0xbd, 0xf4, 0xf4, 0xdb, 0xc1, 0xfe, 0x68, 0x70, 0x78, 0x74, 0x72, 0xf4,
+ 0xf5, 0xfe, 0xc5, 0x11, 0x27, 0x34, 0x20, 0x0c, 0x73, 0x05, 0xd7, 0x11,
+ 0x8a, 0xf8, 0x56, 0xc6, 0x89, 0x55, 0xa1, 0x20, 0xe2, 0x26, 0x9f, 0xdc,
+ 0x64, 0x8d, 0x06, 0x7b, 0x2a, 0xa2, 0x1d, 0x71, 0xeb, 0x86, 0x5d, 0xe3,
+ 0xf1, 0xe6, 0xcc, 0xd6, 0xcc, 0xe6, 0x32, 0xd4, 0x60, 0x06, 0xe9, 0xec,
+ 0x8e, 0xd0, 0x40, 0x3e, 0x14, 0xa4, 0x9e, 0x48, 0x6a, 0x3e, 0x49, 0xad,
+ 0x98, 0xbd, 0xb7, 0x25, 0xde, 0xfa, 0xb7, 0x76, 0x19, 0xd1, 0x4f, 0x2b,
+ 0x82, 0x96, 0x38, 0x44, 0x4e, 0xb2, 0xeb, 0x0e, 0xf1, 0xe4, 0xca, 0x00,
+ 0x31, 0x52, 0xa3, 0xe5, 0xab, 0x40, 0x22, 0x66, 0x2a, 0xaa, 0x27, 0xd7,
+ 0xd9, 0x5c, 0x0e, 0x17, 0xc5, 0x19, 0x98, 0x47, 0x05, 0x29, 0xc4, 0x1c,
+ 0xb0, 0x3b, 0x8a, 0x5f, 0xe1, 0xa3, 0xcc, 0xea, 0x06, 0x47, 0xc0, 0x21,
+ 0x24, 0x2c, 0x16, 0xd9, 0x79, 0x97, 0x23, 0x41, 0x9b, 0x43, 0x41, 0x10,
+ 0x15, 0x07, 0x2a, 0xd1, 0xd8, 0xd2, 0x78, 0x34, 0x29, 0x83, 0xbd, 0x74,
+ 0x15, 0xb4, 0xa5, 0xa6, 0x93, 0xd8, 0x5c, 0x9f, 0x52, 0x22, 0xce, 0x18,
+ 0x4f, 0x8f, 0x4f, 0xb3, 0xbd, 0x19, 0x68, 0xa4, 0x8c, 0xf5, 0xc6, 0x11,
+ 0xb5, 0x61, 0x28, 0x3b, 0x22, 0xcb, 0xbc, 0x90, 0x76, 0x46, 0x2b, 0xb0,
+ 0x41, 0xeb, 0x64, 0x91, 0x56, 0xf4, 0x38, 0x4d, 0xe8, 0x8e, 0x69, 0x08,
+ 0x4d, 0x57, 0x4d, 0x16, 0x8d, 0xae, 0x23, 0x0a, 0x83, 0x50, 0x39, 0x90,
+ 0xa9, 0x12, 0x25, 0x2a, 0x9a, 0x9b, 0xda, 0xde, 0x75, 0xe4, 0x7b, 0x0e,
+ 0xb2, 0x45, 0xd5, 0x44, 0x42, 0x24, 0x39, 0xc7, 0xc2, 0x5a, 0x56, 0xa6,
+ 0x5e, 0x76, 0xa8, 0x97, 0xc4, 0x7f, 0x74, 0x76, 0xce, 0x30, 0x85, 0x27,
+ 0xf4, 0x8b, 0x84, 0x41, 0x74, 0x7b, 0x86, 0x36, 0x2f, 0x49, 0x10, 0x70,
+ 0xb8, 0x42, 0x09, 0xb5, 0x50, 0x45, 0x1a, 0xb4, 0xc6, 0x61, 0x13, 0x02,
+ 0xc5, 0x23, 0x24, 0x8d, 0xf9, 0x04, 0x71, 0x78, 0x16, 0x13, 0x89, 0x46,
+ 0x42, 0x43, 0xe8, 0xb3, 0x68, 0x84, 0x41, 0x70, 0xe8, 0x87, 0x9a, 0xe7,
+ 0x4f, 0xe9, 0xcb, 0xf1, 0xb2, 0xb1, 0xf9, 0x2d, 0x2b, 0x5c, 0x9d, 0x7d,
+ 0x4e, 0x05, 0xe3, 0x6b, 0x86, 0x9a, 0xa5, 0x37, 0x93, 0x0a, 0x08, 0x5a,
+ 0xa9, 0x19, 0xca, 0xb0, 0x33, 0x55, 0x80, 0x47, 0x50, 0x72, 0x6c, 0x3c,
+ 0xbf, 0x4c, 0x25, 0x7e, 0xd3, 0x00, 0xe0, 0x78, 0x68, 0xc2, 0x6a, 0x29,
+ 0x61, 0xef, 0x2c, 0x03, 0x8b, 0x90, 0x98, 0xc3, 0xf8, 0x8d, 0x8c, 0x7a,
+ 0x14, 0xd8, 0x91, 0x25, 0x1b, 0xca, 0xfa, 0xf8, 0x1e, 0x24, 0xff, 0x96,
+ 0x6d, 0x97, 0x97, 0xe2, 0xc5, 0x4a, 0x67, 0x79, 0xf3, 0xc0, 0x9a, 0x1e,
+ 0x5b, 0x0c, 0xd8, 0x46, 0x70, 0x9d, 0xc6, 0x52, 0x15, 0xcc, 0xc2, 0x5b,
+ 0xfc, 0x0e, 0xcc, 0x52, 0xb6, 0x2d, 0x34, 0x15, 0x83, 0x36, 0x7c, 0x70,
+ 0x0f, 0x80, 0x78, 0xdc, 0x93, 0x29, 0x3a, 0x27, 0xb5, 0x58, 0x86, 0xc2,
+ 0x2b, 0x43, 0x58, 0x19, 0x42, 0xe5, 0x45, 0x19, 0xa3, 0x2a, 0x61, 0x10,
+ 0x46, 0x01, 0x61, 0x08, 0x80, 0x36, 0x09, 0x06, 0xbd, 0x73, 0x3e, 0x32,
+ 0xd8, 0x00, 0x3a, 0x00, 0x8d, 0x4f, 0xae, 0x05, 0xdb, 0x8d, 0xbd, 0x9d,
+ 0x44, 0x4b, 0xe3, 0xec, 0x3a, 0xbd, 0xcd, 0x09, 0x30, 0xc5, 0x47, 0xff,
+ 0x09, 0x9c, 0x25, 0xb5, 0x21, 0x00, 0xc3, 0x6f, 0xc5, 0x18, 0x4f, 0x2f,
+ 0x22, 0x82, 0xd6, 0x43, 0xfd, 0xe1, 0xcd, 0x40, 0x64, 0xea, 0xe0, 0x0c,
+ 0x61, 0xa1, 0xe4, 0x91, 0xe2, 0xcc, 0xf5, 0x20, 0x16, 0x1c, 0x41, 0xbf,
+ 0x16, 0xb9, 0x43, 0x1e, 0x4d, 0xeb, 0xdb, 0xf8, 0x09, 0xab, 0x6f, 0xa3,
+ 0x27, 0x8c, 0x8f, 0x98, 0x97, 0x93, 0x3f, 0xf5, 0xb3, 0xdb, 0x5b, 0xc7,
+ 0x6c, 0xf4, 0x9d, 0x0d, 0x32, 0x8a, 0xdc, 0x9c, 0x7c, 0xb8, 0x74, 0x62,
+ 0xb1, 0xd3, 0x25, 0x94, 0x6d, 0xcf, 0x97, 0x1e, 0xb0, 0x47, 0x4f, 0x18,
+ 0xc6, 0xc4, 0x67, 0xcc, 0xf4, 0x2f, 0x07, 0xeb, 0x6c, 0x7f, 0xf4, 0x9d,
+ 0x77, 0xa4, 0x3c, 0x45, 0xdd, 0xe6, 0x03, 0x06, 0x57, 0x72, 0x03, 0x17,
+ 0x1f, 0x1f, 0x49, 0x6a, 0x2b, 0x4a, 0x6a, 0xf5, 0xed, 0xa7, 0x90, 0x9a,
+ 0x19, 0x48, 0x40, 0x6a, 0xc1, 0xf2, 0x3e, 0x46, 0x6a, 0xfe, 0x1e, 0x05,
+ 0xa4, 0x86, 0xf6, 0x03, 0x4a, 0xd3, 0x85, 0xfd, 0xc5, 0xa4, 0x26, 0x24,
+ 0x1a, 0x50, 0x1a, 0xbc, 0x17, 0x67, 0x7d, 0x8f, 0xc4, 0x5a, 0x74, 0x53,
+ 0xd4, 0x03, 0xc0, 0x41, 0x5c, 0x12, 0x72, 0xcf, 0x6b, 0xfb, 0xeb, 0x17,
+ 0x11, 0x90, 0x11, 0xcb, 0xa0, 0x91, 0xbb, 0x58, 0x2e, 0x9b, 0x2b, 0x90,
+ 0x42, 0x72, 0xf8, 0x7e, 0xe4, 0xc1, 0x3a, 0x98, 0x59, 0x54, 0x80, 0x1f,
+ 0xf2, 0x5b, 0x1b, 0x3e, 0x65, 0x92, 0x25, 0xb9, 0x44, 0xb0, 0x15, 0x59,
+ 0x8e, 0x25, 0xcf, 0x92, 0x37, 0x32, 0xc9, 0xa1, 0x55, 0x04, 0xaa, 0x20,
+ 0x4c, 0xf9, 0x92, 0x50, 0xb0, 0xcc, 0x40, 0x36, 0x59, 0x24, 0xa6, 0x30,
+ 0x91, 0x19, 0x19, 0xd0, 0x24, 0x43, 0xd1, 0xe6, 0x4a, 0x15, 0x89, 0x6b,
+ 0x93, 0x2f, 0xda, 0x8d, 0x48, 0x73, 0x36, 0xcd, 0x77, 0xf3, 0x09, 0x63,
+ 0xb2, 0x85, 0xa8, 0x50, 0x1f, 0x87, 0x8f, 0x44, 0xe0, 0x03, 0x11, 0x68,
+ 0xd2, 0x6e, 0x15, 0x89, 0xf4, 0x44, 0x26, 0x68, 0x0b, 0x5e, 0x40, 0x08,
+ 0xdd, 0x46, 0x5a, 0x03, 0x90, 0x77, 0x90, 0x52, 0x47, 0x36, 0xd5, 0xbd,
+ 0x8e, 0x99, 0x9f, 0x40, 0x4e, 0x08, 0x3a, 0x27, 0x5b, 0xd7, 0xa3, 0x90,
+ 0x17, 0xd8, 0xf9, 0xc5, 0xed, 0xf3, 0x01, 0x4d, 0xd5, 0xec, 0xd5, 0x62,
+ 0x20, 0x73, 0x7e, 0x74, 0xeb, 0xc7, 0x39, 0xa7, 0xad, 0xfa, 0xcf, 0xf3,
+ 0xa5, 0x6b, 0xf4, 0x25, 0x5a, 0x69, 0x24, 0x5e, 0x13, 0x45, 0x58, 0xe0,
+ 0x97, 0x2e, 0xc5, 0x7a, 0x36, 0x0b, 0xff, 0x39, 0xbd, 0xc0, 0x8c, 0xfc,
+ 0x22, 0x96, 0x73, 0x3a, 0x59, 0xdc, 0x85, 0xe8, 0x39, 0x69, 0x75, 0xb5,
+ 0x0c, 0x1c, 0x65, 0x30, 0x00, 0x39, 0x5b, 0xa5, 0x86, 0x53, 0xfb, 0x09,
+ 0xe0, 0xff, 0xef, 0xde, 0xc4, 0x4f, 0xd9, 0xc5, 0x97, 0xbf, 0xfd, 0x2e,
+ 0xbe, 0xfc, 0x6f, 0xb2, 0x8b, 0x2f, 0xff, 0x3f, 0xb2, 0x8b, 0x9a, 0x8b,
+ 0xee, 0xed, 0x49, 0x7f, 0xf5, 0x76, 0x92, 0x3a, 0x2c, 0xe1, 0xdb, 0x08,
+ 0xee, 0xa0, 0x30, 0x67, 0xda, 0x07, 0x6d, 0x85, 0x55, 0x6e, 0xc9, 0xe2,
+ 0x6b, 0x41, 0xea, 0x71, 0xf6, 0x4e, 0x3c, 0xb9, 0x46, 0xd2, 0x1f, 0x34,
+ 0xf2, 0xf2, 0xf8, 0xcc, 0x43, 0x15, 0x70, 0xbb, 0xa3, 0xe0, 0x52, 0xa2,
+ 0x22, 0x47, 0xbd, 0xd7, 0x35, 0xb9, 0x34, 0x0d, 0x1f, 0xe7, 0x30, 0xec,
+ 0x1a, 0x12, 0x28, 0xdc, 0x9e, 0xbc, 0x5d, 0x90, 0x0b, 0xc6, 0x1a, 0x21,
+ 0x6c, 0x36, 0x68, 0xef, 0x35, 0x2d, 0xf7, 0x80, 0x1f, 0xff, 0x22, 0x9a,
+ 0x85, 0x02, 0xf8, 0x28, 0x37, 0xa4, 0x38, 0x39, 0x08, 0x35, 0xb4, 0xa1,
+ 0x83, 0x62, 0xf8, 0x30, 0xce, 0xee, 0xfc, 0x04, 0x39, 0xfc, 0x2a, 0x7a,
+ 0xf8, 0xdf, 0x22, 0x87, 0x8c, 0x2e, 0x6b, 0xe0, 0x41, 0x91, 0x4b, 0xf4,
+ 0xc3, 0xf9, 0xc9, 0x93, 0xd1, 0x2d, 0xbd, 0x73, 0x46, 0x8f, 0xaa, 0x92,
+ 0xb3, 0xf4, 0x2a, 0xeb, 0xf9, 0x48, 0x62, 0x9f, 0x80, 0x31, 0x10, 0x64,
+ 0xe9, 0x93, 0x32, 0xea, 0xa2, 0xc1, 0xfc, 0xa4, 0x7c, 0x98, 0x22, 0x5c,
+ 0x4a, 0x3e, 0xbb, 0xfe, 0x62, 0xc0, 0x44, 0x2c, 0xaa, 0xb6, 0xb3, 0x29,
+ 0x35, 0x6d, 0x5b, 0x1c, 0x23, 0xbd, 0xbf, 0x50, 0xdc, 0x79, 0x4f, 0x07,
+ 0x68, 0xa7, 0x1c, 0x46, 0xef, 0x02, 0x6c, 0xc3, 0xda, 0x53, 0xdb, 0xd1,
+ 0xea, 0x9a, 0x56, 0x63, 0x33, 0x09, 0x00, 0x72, 0x7c, 0xcd, 0xf0, 0x83,
+ 0x97, 0xe5, 0xac, 0x4b, 0x9a, 0x00, 0x30, 0x4b, 0x93, 0x13, 0x19, 0xd4,
+ 0x9e, 0x38, 0x67, 0x79, 0x23, 0x75, 0x48, 0x22, 0x35, 0x88, 0x88, 0xa8,
+ 0x51, 0xa9, 0x33, 0x42, 0x17, 0xef, 0x06, 0x91, 0x10, 0xfd, 0xda, 0x1c,
+ 0x70, 0xb2, 0x03, 0xd1, 0x80, 0x20, 0x66, 0xe4, 0x00, 0x9c, 0xb6, 0xd3,
+ 0xfa, 0x1d, 0xbd, 0x95, 0x47, 0xf0, 0xee, 0x52, 0x68, 0xda, 0x6b, 0x2f,
+ 0x9c, 0xeb, 0xc7, 0x3d, 0x35, 0x1f, 0xfc, 0x1c, 0x8f, 0x6c, 0x0f, 0x70,
+ 0xba, 0x34, 0x8a, 0xc6, 0xf9, 0x1f, 0x25, 0xd5, 0xdc, 0x6b, 0x35, 0x66,
+ 0xed, 0xc4, 0x72, 0x2b, 0xe6, 0x6f, 0xaa, 0x89, 0x56, 0x86, 0x00, 0xa4,
+ 0x7e, 0x01, 0xc5, 0xb4, 0x25, 0xf0, 0xda, 0xb0, 0x5f, 0xc0, 0xf4, 0x3e,
+ 0x60, 0xa0, 0x67, 0xe8, 0xa9, 0x81, 0xfd, 0x46, 0x82, 0x52, 0xc8, 0xfc,
+ 0xea, 0x75, 0xac, 0x32, 0x9c, 0x39, 0x32, 0x67, 0xdf, 0x1e, 0x8c, 0xfe,
+ 0xb8, 0xb3, 0xab, 0xd1, 0x70, 0xb9, 0x42, 0xac, 0x8d, 0x80, 0xa8, 0xd0,
+ 0x25, 0x6f, 0x52, 0x4f, 0xb8, 0xa2, 0x00, 0x01, 0xb1, 0xba, 0x20, 0x3a,
+ 0xfb, 0x1a, 0xdb, 0x66, 0x79, 0x6c, 0x92, 0x00, 0xe5, 0xe2, 0x95, 0xb3,
+ 0xa8, 0x0e, 0x4f, 0xc1, 0xa8, 0x6a, 0x46, 0x62, 0xcc, 0x0d, 0xbb, 0x68,
+ 0x2d, 0xa8, 0x12, 0x73, 0x2b, 0x56, 0x08, 0x4c, 0x30, 0x5d, 0x73, 0xcc,
+ 0x4f, 0x90, 0x74, 0x26, 0x08, 0xa9, 0x2d, 0x0b, 0xbf, 0x23, 0x0b, 0x41,
+ 0xa8, 0x66, 0x09, 0xb9, 0xe7, 0xad, 0x47, 0x2f, 0x6a, 0x78, 0xe6, 0xbb,
+ 0x4f, 0x6e, 0x24, 0xf2, 0x17, 0x73, 0x02, 0x56, 0x72, 0x93, 0x3d, 0x88,
+ 0x1f, 0x3d, 0xb3, 0x1f, 0xfa, 0x8b, 0x4b, 0x50, 0x8d, 0x14, 0xfe, 0x18,
+ 0x98, 0xcc, 0x0d, 0x9b, 0xff, 0x03, 0x7b, 0xbb, 0x99, 0xc2, 0x58, 0x15,
+ 0xa2, 0xe6, 0x48, 0x11, 0x70, 0x28, 0x27, 0x73, 0x82, 0x8a, 0xd0, 0x1a,
+ 0x02, 0xb3, 0x87, 0x18, 0xb5, 0x2b, 0xb4, 0x0e, 0x33, 0x60, 0x68, 0x56,
+ 0x75, 0xa3, 0xc1, 0xfc, 0x2d, 0xa0, 0x2e, 0xf1, 0x3e, 0x35, 0x8f, 0xe5,
+ 0xae, 0xd2, 0xf7, 0x4e, 0xa6, 0x21, 0x6b, 0x5b, 0x3e, 0xb9, 0x81, 0x48,
+ 0x2f, 0x17, 0x9d, 0x3f, 0x3d, 0x8d, 0xf5, 0xe0, 0x4a, 0x02, 0xe1, 0x2e,
+ 0xd0, 0x00, 0xc8, 0x00, 0x4f, 0x54, 0x49, 0x97, 0x61, 0x5e, 0x70, 0x2e,
+ 0x0d, 0xdc, 0xa3, 0xc5, 0x6d, 0x5e, 0x95, 0x05, 0x44, 0x94, 0xdb, 0xb4,
+ 0xca, 0xa1, 0x1c, 0x9a, 0xd1, 0x7e, 0x3c, 0x3c, 0x3e, 0x4f, 0x36, 0x28,
+ 0x8b, 0x73, 0xfc, 0xb0, 0x22, 0x57, 0x35, 0xd9, 0xca, 0x9a, 0xc9, 0xd6,
+ 0xe2, 0x26, 0xdf, 0x2a, 0xea, 0x7a, 0x3a, 0xde, 0x1c, 0x5a, 0xa2, 0xe2,
+ 0x2e, 0x89, 0x18, 0x99, 0x96, 0x77, 0x48, 0x71, 0x5b, 0x9a, 0x86, 0x37,
+ 0xcc, 0x1a, 0x04, 0xbb, 0x50, 0x9b, 0x85, 0x9e, 0x0f, 0xeb, 0x72, 0x13,
+ 0xda, 0xe6, 0x6d, 0x9a, 0xcf, 0xd4, 0x40, 0x56, 0x30, 0x41, 0x23, 0xb4,
+ 0x48, 0xe0, 0x63, 0xd9, 0x5d, 0x81, 0x30, 0x3d, 0x71, 0xfc, 0x07, 0x31,
+ 0x1d, 0x45, 0xe3, 0xa0, 0x22, 0x39, 0x9b, 0x5c, 0x63, 0x55, 0xcc, 0x6a,
+ 0x02, 0x55, 0xd1, 0xc6, 0x18, 0xf7, 0x09, 0x57, 0x9d, 0x56, 0x85, 0x7d,
+ 0x67, 0x59, 0x98, 0x49, 0xcb, 0x29, 0xc7, 0xc3, 0xad, 0x9e, 0xc5, 0x91,
+ 0xcf, 0x0b, 0xc6, 0xd3, 0x87, 0x5a, 0x7a, 0x5b, 0xe6, 0x70, 0xc8, 0x5f,
+ 0x2e, 0x6b, 0x6b, 0x1c, 0x85, 0xbb, 0x57, 0xb6, 0x6b, 0x18, 0x35, 0x45,
+ 0x7a, 0xdb, 0x29, 0x8e, 0xcc, 0x3a, 0xe9, 0xed, 0xf5, 0x70, 0xb6, 0x0a,
+ 0x40, 0x59, 0xb3, 0x84, 0x23, 0xa3, 0xc2, 0x66, 0xf5, 0x7e, 0xea, 0x25,
+ 0x81, 0x7d, 0xb4, 0x71, 0xae, 0x01, 0x85, 0xee, 0xb8, 0x2a, 0xf2, 0x7f,
+ 0x30, 0xaa, 0x82, 0x3d, 0xc2, 0xd3, 0x0c, 0xb1, 0xf7, 0x48, 0xc7, 0xb6,
+ 0x3b, 0x44, 0x23, 0x88, 0x22, 0x2e, 0x78, 0x43, 0xfa, 0x29, 0x1c, 0x52,
+ 0x86, 0xc4, 0x50, 0xb4, 0xdf, 0xfb, 0x09, 0x43, 0xf2, 0x06, 0x11, 0x31,
+ 0x57, 0xb4, 0x87, 0x44, 0xd9, 0x0a, 0x92, 0x59, 0x7a, 0x6d, 0xa4, 0xac,
+ 0x49, 0x13, 0xb9, 0x39, 0x36, 0xf2, 0xd3, 0x11, 0x0e, 0xe2, 0xbb, 0x74,
+ 0x92, 0x98, 0x5f, 0x7f, 0x80, 0x74, 0xb1, 0xb9, 0xfa, 0x8c, 0x09, 0x63,
+ 0x14, 0x5e, 0x18, 0x83, 0xfe, 0xeb, 0xbb, 0x33, 0xd7, 0x61, 0xbb, 0xde,
+ 0x5d, 0x98, 0xe5, 0x60, 0x91, 0xe3, 0xcc, 0xb9, 0x79, 0x28, 0x66, 0x32,
+ 0x08, 0x48, 0xb1, 0x2f, 0x6f, 0x29, 0xab, 0x21, 0x7e, 0xa1, 0x35, 0x17,
+ 0x20, 0x7f, 0x12, 0x2b, 0x86, 0xb9, 0xdb, 0x7c, 0x63, 0x26, 0x4a, 0xa8,
+ 0x23, 0x48, 0x88, 0x0e, 0x8f, 0xe6, 0x22, 0x85, 0x31, 0x95, 0x73, 0x65,
+ 0x85, 0xf1, 0x5b, 0x3f, 0x92, 0x3f, 0x50, 0x0e, 0x9f, 0xb5, 0xfd, 0xa9,
+ 0xe1, 0xe4, 0xbf, 0x1d, 0xf1, 0xa7, 0x1e, 0xe9, 0xff, 0x7e, 0x01, 0x4c,
+ 0x92, 0xc7, 0xfb, 0x3a, 0x96, 0x24, 0x3e, 0xca, 0x66, 0x00, 0x0d, 0xc7,
+ 0x5e, 0x6b, 0x56, 0xd6, 0xa4, 0x7a, 0x58, 0x90, 0x1d, 0x4c, 0xf2, 0x7f,
+ 0x79, 0x85, 0xe8, 0xda, 0xe2, 0xdc, 0x2b, 0x0f, 0x8e, 0x7e, 0x18, 0xc9,
+ 0x2d, 0xb4, 0x1d, 0xb2, 0x3a, 0x42, 0xdb, 0x65, 0xf6, 0x82, 0x3c, 0x2a,
+ 0xa9, 0xaf, 0xa2, 0x10, 0x59, 0x4e, 0x39, 0x49, 0xc3, 0x55, 0x20, 0x09,
+ 0xe2, 0x72, 0xa9, 0xa1, 0x7a, 0xd8, 0x86, 0xe2, 0x81, 0xc1, 0x14, 0x25,
+ 0x71, 0xc0, 0x72, 0xc9, 0xf5, 0xb6, 0xa9, 0x9c, 0x5e, 0xde, 0x10, 0x14,
+ 0x90, 0xae, 0xf2, 0x60, 0xd9, 0xa5, 0x69, 0xa6, 0x5a, 0x16, 0xe8, 0xbd,
+ 0xbd, 0x52, 0x96, 0xbf, 0x77, 0xcf, 0xd9, 0xf9, 0xf1, 0xe8, 0x80, 0x0e,
+ 0xd8, 0xe9, 0xfb, 0x93, 0xbf, 0x92, 0xbc, 0x0d, 0x08, 0x00, 0x94, 0xfc,
+ 0xa0, 0xae, 0x63, 0x17, 0x43, 0xad, 0x08, 0xed, 0x11, 0x4a, 0x16, 0xbc,
+ 0x36, 0x92, 0x75, 0xef, 0x74, 0x8b, 0x5d, 0x1a, 0x15, 0x91, 0x0b, 0x9c,
+ 0x68, 0x86, 0xe0, 0x72, 0x52, 0x77, 0x28, 0xe2, 0x6b, 0xa2, 0x18, 0x58,
+ 0xcb, 0x10, 0xb1, 0x89, 0x02, 0x40, 0x7c, 0x41, 0x9f, 0xb5, 0x24, 0xb2,
+ 0x1a, 0x9a, 0xee, 0xcd, 0x44, 0x3b, 0x89, 0xa0, 0x66, 0xa2, 0x57, 0xec,
+ 0xcc, 0x5d, 0x91, 0x7f, 0xe0, 0x65, 0x3b, 0x3e, 0x88, 0x29, 0x92, 0x82,
+ 0xcf, 0x34, 0x38, 0x96, 0xa9, 0xe5, 0x88, 0x00, 0x14, 0x17, 0xe6, 0x9e,
+ 0xf9, 0x3a, 0x25, 0x5e, 0xc0, 0xf6, 0xbf, 0x34, 0x9b, 0x07, 0x17, 0x74,
+ 0x5d, 0x92, 0xef, 0x51, 0xe5, 0x38, 0xfe, 0xcb, 0xf3, 0x2a, 0xc1, 0x8a,
+ 0xc8, 0x81, 0x7c, 0xb4, 0xa0, 0x53, 0x73, 0x02, 0x85, 0x80, 0x88, 0xe4,
+ 0xcc, 0x50, 0xc2, 0x58, 0x1b, 0x2d, 0x45, 0xd1, 0xcd, 0xfd, 0x19, 0xf0,
+ 0xfb, 0x3c, 0xb5, 0x6e, 0xea, 0x0f, 0x4b, 0x2d, 0x08, 0x73, 0x4f, 0x5e,
+ 0xd3, 0xcf, 0xf8, 0xb4, 0x3d, 0x8c, 0x0a, 0xf8, 0x92, 0x5b, 0xb2, 0x03,
+ 0xbd, 0x2b, 0xe1, 0xa7, 0x94, 0x94, 0x31, 0x6d, 0xb1, 0xb8, 0xd0, 0x1a,
+ 0x4c, 0x41, 0xbf, 0xe6, 0x52, 0xee, 0x27, 0x87, 0x47, 0xe7, 0x60, 0x4a,
+ 0x47, 0xef, 0xbf, 0x86, 0x0f, 0xc7, 0x63, 0xf4, 0xd4, 0x66, 0xcd, 0x77,
+ 0x0d, 0xe3, 0xe9, 0xab, 0xec, 0xd8, 0x69, 0x8e, 0x2e, 0x77, 0xba, 0xf2,
+ 0x21, 0x03, 0x4e, 0x7f, 0xd7, 0x8c, 0xa6, 0x94, 0x15, 0x88, 0x83, 0x7d,
+ 0x7f, 0x76, 0x4f, 0xae, 0x56, 0x5c, 0x6b, 0xe8, 0xa8, 0x0b, 0xf4, 0x94,
+ 0x19, 0x91, 0xa1, 0xab, 0x98, 0x6b, 0x95, 0xd2, 0x50, 0xda, 0xb8, 0x0b,
+ 0x74, 0x8e, 0xe5, 0x8a, 0x75, 0x20, 0x8b, 0xed, 0x81, 0xb1, 0x31, 0x69,
+ 0xf5, 0xcd, 0xb3, 0x51, 0x6f, 0xb6, 0x14, 0x06, 0x2b, 0xf5, 0x93, 0x9c,
+ 0x2d, 0x7e, 0x89, 0xf6, 0x5d, 0x19, 0xda, 0xd6, 0xf9, 0x8a, 0x50, 0x59,
+ 0x4e, 0x51, 0x77, 0xb0, 0xe2, 0x7d, 0xbe, 0xd5, 0x5b, 0x4b, 0x6f, 0xf6,
+ 0x54, 0x74, 0x52, 0xa1, 0xf0, 0xc0, 0x73, 0x4e, 0xe7, 0x93, 0x63, 0x3d,
+ 0xbc, 0x36, 0x83, 0x4d, 0xb5, 0x08, 0x0b, 0xa0, 0x95, 0x7a, 0xb5, 0x0c,
+ 0xca, 0x51, 0xe0, 0xc9, 0xfa, 0x81, 0x51, 0x79, 0x3f, 0x1e, 0xec, 0x7f,
+ 0xfc, 0xea, 0xc3, 0xfb, 0xc3, 0x93, 0xa3, 0xf5, 0x2e, 0x45, 0x5e, 0x3a,
+ 0xe4, 0xc9, 0x1a, 0xd1, 0x00, 0x02, 0xdb, 0xe0, 0xe7, 0x68, 0xe3, 0xa8,
+ 0x03, 0x66, 0x0a, 0xbf, 0x01, 0x50, 0x47, 0x16, 0xbc, 0x6b, 0x16, 0x59,
+ 0x16, 0x53, 0x40, 0xfd, 0x78, 0x93, 0x57, 0x1c, 0x15, 0x31, 0xb7, 0xe8,
+ 0x00, 0x23, 0x16, 0x1a, 0xa2, 0x3f, 0x73, 0x58, 0x8d, 0x0a, 0xee, 0x41,
+ 0xc6, 0x7b, 0x25, 0x68, 0x5a, 0xaa, 0x3d, 0x32, 0x06, 0xb4, 0x18, 0x5a,
+ 0x62, 0xc6, 0x13, 0xd9, 0xee, 0xda, 0x25, 0x9f, 0x4d, 0x93, 0x75, 0x6a,
+ 0xc9, 0x50, 0xf2, 0x40, 0x06, 0x39, 0xa9, 0x9a, 0xf5, 0xbe, 0x4a, 0x2d,
+ 0xb9, 0x97, 0x71, 0x81, 0x0b, 0x3e, 0x80, 0xff, 0xa0, 0x8c, 0xba, 0x94,
+ 0xe9, 0x7a, 0x98, 0xdd, 0x67, 0x50, 0x17, 0xe5, 0xad, 0x03, 0x91, 0x0c,
+ 0xbe, 0x2f, 0x2b, 0xd8, 0x47, 0x0f, 0x9d, 0x84, 0xc0, 0x0f, 0x19, 0x0d,
+ 0x32, 0x8c, 0x5d, 0x24, 0x29, 0x20, 0x45, 0x59, 0x05, 0x54, 0x81, 0x3b,
+ 0xdb, 0xbf, 0xf8, 0x26, 0xea, 0x79, 0x77, 0xf5, 0x06, 0x85, 0x14, 0xad,
+ 0xdc, 0x66, 0x35, 0x05, 0x5f, 0x3d, 0xea, 0x5b, 0x9d, 0xc9, 0x90, 0x75,
+ 0x97, 0x61, 0x84, 0xda, 0x84, 0xa7, 0x3d, 0x58, 0x31, 0x95, 0xb3, 0x21,
+ 0xec, 0xcd, 0xc8, 0x6b, 0xbc, 0x3a, 0x37, 0x57, 0x0b, 0xff, 0x19, 0x0e,
+ 0xb8, 0x20, 0x00, 0xee, 0xdf, 0x97, 0x11, 0x81, 0x04, 0x3b, 0x8c, 0xc8,
+ 0xc9, 0x64, 0x9f, 0x60, 0xcb, 0x78, 0x92, 0x29, 0xb9, 0x0c, 0xca, 0xe0,
+ 0x94, 0x32, 0x9f, 0x62, 0x7e, 0x0f, 0xc6, 0x64, 0xf3, 0x37, 0x68, 0x58,
+ 0xb6, 0xfc, 0x84, 0x77, 0x19, 0x8c, 0x1f, 0x12, 0x2f, 0xb1, 0x26, 0xe4,
+ 0x70, 0x73, 0x11, 0x12, 0xf7, 0x7a, 0xc9, 0x46, 0x36, 0xbc, 0x32, 0xac,
+ 0xae, 0x47, 0x4d, 0xed, 0xec, 0xd1, 0xcf, 0x5d, 0xfc, 0x7c, 0xd6, 0x13,
+ 0xbf, 0x55, 0x2b, 0x1b, 0x8f, 0xf8, 0x57, 0x98, 0x86, 0xd7, 0xe2, 0x66,
+ 0xec, 0xdf, 0xcf, 0x2f, 0x1f, 0x21, 0x21, 0x91, 0xef, 0xa2, 0x98, 0x32,
+ 0x6e, 0x1d, 0x98, 0x59, 0x92, 0xf4, 0x40, 0x48, 0xa0, 0x54, 0xbd, 0xc3,
+ 0x4c, 0x70, 0xc2, 0x49, 0xdc, 0x5e, 0xd6, 0xd8, 0xc7, 0x2a, 0xbb, 0x4e,
+ 0xeb, 0xeb, 0x64, 0xd9, 0xe4, 0x14, 0x06, 0x10, 0x41, 0xba, 0x9e, 0xd9,
+ 0xb0, 0x75, 0xe9, 0x58, 0x71, 0xe2, 0xec, 0xce, 0xb2, 0xa5, 0x11, 0x69,
+ 0xd3, 0xf2, 0xc8, 0x40, 0x8a, 0x20, 0xc6, 0x18, 0x21, 0xa8, 0x95, 0x63,
+ 0xf1, 0xe8, 0x49, 0xbf, 0x24, 0xd5, 0x9c, 0xac, 0xa9, 0x88, 0x4d, 0xc8,
+ 0x2e, 0xcd, 0x9a, 0xe5, 0x1e, 0xd4, 0x00, 0x86, 0x1c, 0x66, 0x46, 0xf0,
+ 0x1d, 0x27, 0x51, 0x56, 0xf6, 0x6f, 0x70, 0x10, 0xab, 0xd2, 0xa1, 0x66,
+ 0x55, 0xf7, 0xb2, 0x79, 0x9a, 0xde, 0xc1, 0x5a, 0x19, 0xe0, 0x83, 0x79,
+ 0xbb, 0xcc, 0x96, 0x53, 0xcb, 0x94, 0xd8, 0x05, 0x84, 0x36, 0x06, 0x0d,
+ 0x6a, 0x51, 0x81, 0x7f, 0xed, 0xc9, 0xb9, 0x84, 0x8f, 0xd7, 0x1c, 0xe9,
+ 0x15, 0xd1, 0x55, 0x6f, 0x81, 0x18, 0x5b, 0x53, 0xfc, 0x23, 0xad, 0xd3,
+ 0x06, 0x95, 0xe3, 0xe0, 0xf2, 0x42, 0x29, 0xa2, 0xd7, 0x36, 0xc9, 0x40,
+ 0x25, 0xd1, 0x5b, 0x48, 0x98, 0xaf, 0xa3, 0xa8, 0xfc, 0x84, 0xf6, 0xc7,
+ 0xc5, 0x41, 0x90, 0x68, 0x04, 0x9d, 0x17, 0x61, 0x20, 0xe2, 0x36, 0x47,
+ 0x91, 0x48, 0xc3, 0x97, 0xb3, 0x66, 0xe2, 0x7d, 0x39, 0xcd, 0xd2, 0x59,
+ 0x12, 0x0b, 0x40, 0xbf, 0xe4, 0xe2, 0x92, 0x1a, 0x07, 0x00, 0xa1, 0xa8,
+ 0xd0, 0xe0, 0x01, 0x89, 0x20, 0xe6, 0x6c, 0xca, 0xa2, 0x05, 0x16, 0x79,
+ 0x09, 0xb4, 0x8b, 0xe0, 0xf8, 0x92, 0x22, 0xcf, 0xe9, 0x2c, 0x8a, 0x3c,
+ 0x00, 0xfd, 0xdc, 0x66, 0x0e, 0x20, 0x32, 0x12, 0x29, 0x97, 0xf6, 0x01,
+ 0xa4, 0x45, 0x70, 0x4e, 0x5c, 0x60, 0x3d, 0x50, 0xe8, 0x66, 0x54, 0xa3,
+ 0x13, 0x44, 0x43, 0x0d, 0xe4, 0xa7, 0x71, 0x3d, 0xd8, 0x42, 0xa1, 0x9b,
+ 0x72, 0x25, 0xc2, 0x42, 0x8e, 0x1d, 0x32, 0x0a, 0xe1, 0x20, 0x60, 0x2e,
+ 0x9a, 0x40, 0xc6, 0x05, 0x64, 0xb1, 0xfc, 0x0d, 0x9f, 0xae, 0xb4, 0x91,
+ 0x6a, 0x53, 0x34, 0x50, 0x01, 0x1e, 0xda, 0xdd, 0x8d, 0x7b, 0x39, 0x04,
+ 0x5e, 0x4c, 0x6c, 0x1a, 0xb4, 0x14, 0x83, 0x3a, 0xbd, 0xcc, 0xd4, 0xc2,
+ 0x47, 0xb5, 0x8b, 0x08, 0x58, 0x76, 0x62, 0x96, 0x8f, 0x03, 0xff, 0xf1,
+ 0x19, 0x29, 0x4d, 0x83, 0xb0, 0x9e, 0x06, 0x9d, 0x72, 0xd2, 0x25, 0x5c,
+ 0x8e, 0x4e, 0x42, 0xca, 0xb5, 0xc6, 0x5f, 0x27, 0xf5, 0x2c, 0x5f, 0xa8,
+ 0x53, 0xdf, 0xdc, 0xa6, 0xe0, 0xa8, 0xb8, 0x9f, 0x23, 0xc1, 0x21, 0x1d,
+ 0x18, 0x34, 0x48, 0xc3, 0xb7, 0xe4, 0x5d, 0x99, 0x26, 0x1b, 0xb6, 0x79,
+ 0x6e, 0xfd, 0xf9, 0xf6, 0x0e, 0xc6, 0xfb, 0x7c, 0xfb, 0x33, 0x3f, 0x49,
+ 0xda, 0x66, 0x93, 0x0a, 0xa0, 0xa8, 0x04, 0x9e, 0x3e, 0x96, 0x06, 0x31,
+ 0x23, 0xbd, 0x0c, 0xab, 0x9a, 0x19, 0x69, 0x11, 0xa6, 0x00, 0x49, 0xb1,
+ 0x1d, 0xe4, 0x05, 0x27, 0x74, 0x9a, 0x7f, 0x65, 0x27, 0x53, 0x0e, 0xb3,
+ 0xeb, 0x62, 0x7a, 0xa4, 0x0c, 0x5b, 0xc6, 0xa0, 0x15, 0x1c, 0xef, 0xce,
+ 0xd9, 0xb7, 0xed, 0xf4, 0x5b, 0x81, 0xcc, 0xd3, 0x5b, 0x06, 0x19, 0xc4,
+ 0x64, 0x37, 0x0c, 0x24, 0x47, 0xe5, 0x98, 0x40, 0x3d, 0xa2, 0x44, 0xdb,
+ 0x0b, 0xd2, 0x22, 0x44, 0x9a, 0x4d, 0xab, 0x66, 0x0b, 0x39, 0xb5, 0x1c,
+ 0x51, 0x9c, 0x4e, 0x08, 0x4d, 0xcb, 0x96, 0x02, 0x3c, 0x7f, 0x7b, 0xd0,
+ 0x69, 0x6e, 0xf7, 0xd9, 0xe7, 0x9f, 0xdb, 0xbc, 0xfe, 0x4c, 0x82, 0x24,
+ 0x1d, 0x74, 0xab, 0x11, 0xa1, 0x24, 0xdf, 0x88, 0xed, 0x80, 0x54, 0xc4,
+ 0x8d, 0x32, 0x31, 0x38, 0x6e, 0x28, 0xe4, 0xfa, 0xeb, 0xb2, 0xa6, 0xeb,
+ 0x1c, 0x32, 0xcc, 0x56, 0x2b, 0xad, 0x2f, 0x26, 0x75, 0x82, 0x3c, 0x38,
+ 0x4b, 0xd6, 0x00, 0xc5, 0x6e, 0x67, 0x0e, 0xc1, 0x97, 0x41, 0x14, 0xda,
+ 0x55, 0xc1, 0x29, 0xbc, 0x7f, 0xa3, 0x3b, 0xe4, 0x2a, 0x6b, 0xc2, 0x38,
+ 0x77, 0x81, 0x7c, 0x0b, 0xba, 0x58, 0x0d, 0x35, 0xa5, 0xb5, 0x12, 0x38,
+ 0x4a, 0xff, 0x35, 0x5f, 0x8f, 0x0a, 0x29, 0xe3, 0x15, 0x99, 0xfa, 0x12,
+ 0x44, 0xf4, 0xda, 0xda, 0xbc, 0x8b, 0xa8, 0x41, 0xfc, 0x4b, 0x85, 0x2f,
+ 0x13, 0x93, 0x0f, 0x70, 0xb5, 0x9a, 0x26, 0xd5, 0x1a, 0xa1, 0xb8, 0xee,
+ 0x29, 0x65, 0xd5, 0x42, 0xad, 0x2a, 0x02, 0x7a, 0xe0, 0xea, 0xc8, 0x25,
+ 0x32, 0xf1, 0xb5, 0x6d, 0x11, 0x18, 0x89, 0x9c, 0x32, 0x4c, 0x63, 0xc1,
+ 0x2a, 0xa0, 0x07, 0x0b, 0x0b, 0xd2, 0x20, 0xf6, 0xd4, 0xaf, 0x9e, 0xd5,
+ 0x8a, 0x99, 0x76, 0xef, 0x7b, 0xeb, 0x14, 0x9c, 0xfc, 0x23, 0x5b, 0x27,
+ 0x4c, 0x43, 0x70, 0x20, 0x55, 0xba, 0x68, 0x56, 0xd1, 0xb4, 0x5c, 0x10,
+ 0x6e, 0x5f, 0x0e, 0xfe, 0x3a, 0x3d, 0xd3, 0x3d, 0xf9, 0xf4, 0xce, 0xba,
+ 0xe6, 0x65, 0xfb, 0x76, 0x73, 0x50, 0x26, 0x0f, 0xc7, 0xa2, 0x07, 0xb2,
+ 0x1d, 0x9b, 0x7a, 0xb2, 0x19, 0xc7, 0x11, 0x55, 0x0e, 0x08, 0x4f, 0x7b,
+ 0x51, 0x7d, 0x66, 0xf0, 0xd6, 0x0e, 0xf4, 0xcd, 0x97, 0xad, 0xd6, 0xee,
+ 0xee, 0x86, 0xf3, 0x07, 0xfd, 0xae, 0x6e, 0x95, 0xec, 0x75, 0x49, 0x45,
+ 0x02, 0xa7, 0xca, 0x14, 0xe5, 0xb2, 0x6b, 0x7d, 0xdf, 0xb6, 0x2b, 0x90,
+ 0x67, 0xae, 0x76, 0xc5, 0x19, 0x59, 0x05, 0x9a, 0x2b, 0xc7, 0xf9, 0x8a,
+ 0xc2, 0x89, 0x48, 0xf6, 0x1d, 0x97, 0x86, 0xde, 0x94, 0x94, 0x28, 0x31,
+ 0xb1, 0xa9, 0x96, 0x93, 0x26, 0xbc, 0xf7, 0xb5, 0xec, 0x05, 0x2e, 0x02,
+ 0xf6, 0x3f, 0x68, 0xd1, 0x54, 0xd0, 0x59, 0xfb, 0xb4, 0x6b, 0x48, 0x1b,
+ 0x44, 0xc4, 0x98, 0x48, 0xb2, 0x0e, 0x9c, 0xce, 0xf5, 0x3e, 0x87, 0x53,
+ 0x4a, 0xbe, 0x9c, 0xcb, 0xe4, 0x5a, 0xb9, 0x94, 0xbd, 0xbb, 0x6c, 0xfc,
+ 0xe6, 0x4b, 0x72, 0xb8, 0xdc, 0x03, 0x5f, 0x88, 0xf1, 0x3e, 0x89, 0x8e,
+ 0xb6, 0xe8, 0xcf, 0x5e, 0x42, 0x2a, 0x4c, 0x64, 0x25, 0x0d, 0xfd, 0xad,
+ 0x6a, 0xd1, 0x4b, 0xc1, 0xf6, 0x5a, 0xbb, 0x2c, 0xcb, 0x95, 0x8d, 0xb9,
+ 0x1a, 0xb9, 0x58, 0x0d, 0x2f, 0x80, 0x8e, 0xe3, 0xd9, 0x1c, 0x61, 0x31,
+ 0x31, 0xd9, 0x3d, 0x92, 0xa3, 0x15, 0x4b, 0xce, 0x1a, 0x3f, 0x58, 0x70,
+ 0x70, 0x4d, 0xd4, 0x78, 0x23, 0xf5, 0xdb, 0x48, 0xde, 0x5a, 0xbd, 0x20,
+ 0xf4, 0xf4, 0x9b, 0x2f, 0x81, 0x8f, 0x42, 0xbf, 0xfe, 0xc5, 0xbe, 0x4d,
+ 0x3f, 0x0c, 0x5d, 0x9a, 0xb3, 0xbd, 0x72, 0x22, 0x46, 0x98, 0xd3, 0xc7,
+ 0xb7, 0x58, 0x42, 0x55, 0x59, 0x70, 0xbd, 0xbf, 0x4e, 0xfa, 0xdd, 0xfa,
+ 0x5f, 0xd6, 0x21, 0x45, 0xa8, 0x41, 0x01, 0x18, 0xf7, 0x5c, 0xb2, 0x7b,
+ 0x5a, 0x06, 0xb1, 0x2c, 0x14, 0xfa, 0x87, 0x27, 0xb8, 0xaa, 0xf9, 0x53,
+ 0x63, 0xfe, 0xa9, 0x67, 0x47, 0xfd, 0x53, 0xcf, 0x8d, 0xfb, 0xa7, 0x9e,
+ 0x1b, 0xf9, 0x4f, 0xbd, 0x5f, 0xb1, 0xa3, 0xeb, 0xdc, 0xbc, 0x6b, 0xdd,
+ 0x6b, 0xdc, 0x6b, 0xbb, 0xb7, 0xbe, 0xaa, 0x69, 0xdf, 0xfa, 0x8a, 0x2c,
+ 0x85, 0xa4, 0xb3, 0x4c, 0xe6, 0x00, 0xb9, 0x95, 0x90, 0xb2, 0x81, 0x3c,
+ 0xf1, 0x7e, 0x44, 0x1f, 0xf6, 0x1f, 0xa0, 0x45, 0xa5, 0x68, 0x89, 0x7a,
+ 0x46, 0xca, 0x84, 0xf3, 0xca, 0xd9, 0x0e, 0xec, 0x52, 0xab, 0x33, 0x25,
+ 0x70, 0xb1, 0xd9, 0xd7, 0x83, 0x33, 0x4a, 0xd6, 0xc1, 0xcb, 0x65, 0x05,
+ 0xa5, 0x5f, 0xaa, 0x88, 0x71, 0x1a, 0xa9, 0x42, 0xa4, 0x49, 0x5f, 0xef,
+ 0xf6, 0xdf, 0x7f, 0xd8, 0x3f, 0x79, 0x34, 0x8c, 0xc4, 0x8f, 0x11, 0xb5,
+ 0x86, 0x28, 0x88, 0xe4, 0xbe, 0xc6, 0x4a, 0x71, 0x95, 0x74, 0x87, 0x53,
+ 0x25, 0xd6, 0x1f, 0xe9, 0x4a, 0xff, 0x39, 0x1a, 0x81, 0xfb, 0xbd, 0x48,
+ 0xb1, 0x6f, 0x7d, 0xc4, 0xf3, 0x1b, 0xe6, 0x3f, 0x3d, 0x7d, 0x9f, 0x5e,
+ 0xef, 0x89, 0x29, 0xd7, 0x56, 0x36, 0x8b, 0x68, 0x0b, 0x96, 0xeb, 0x93,
+ 0xe4, 0xa2, 0xfa, 0x1a, 0x14, 0xd2, 0xbe, 0x57, 0xa9, 0x15, 0x7a, 0x09,
+ 0x2a, 0x68, 0x5f, 0xae, 0x36, 0x4b, 0xef, 0x1f, 0x1c, 0xb8, 0xb8, 0xec,
+ 0x76, 0x86, 0x67, 0x2b, 0x2e, 0xe5, 0xb7, 0x57, 0xf5, 0xb1, 0x70, 0x33,
+ 0xd4, 0x22, 0xa3, 0xd8, 0xd5, 0x41, 0x53, 0x72, 0x5e, 0xc4, 0x6b, 0x19,
+ 0xcd, 0x17, 0xf1, 0x48, 0x66, 0x32, 0x99, 0xf8, 0x82, 0xa6, 0x56, 0xa0,
+ 0x40, 0xad, 0x8d, 0x91, 0x18, 0x5d, 0xcf, 0xf6, 0x09, 0x36, 0x4e, 0x92,
+ 0x04, 0x58, 0x5b, 0x08, 0x62, 0xd8, 0x32, 0x85, 0x12, 0x76, 0xd3, 0xd7,
+ 0x64, 0x76, 0xd5, 0x33, 0x55, 0x28, 0xbb, 0x58, 0xce, 0x0d, 0xf5, 0x1a,
+ 0x89, 0x63, 0xba, 0x5e, 0x27, 0x4f, 0xc4, 0x19, 0x38, 0x9c, 0xaf, 0x12,
+ 0x3f, 0x11, 0xfe, 0xa0, 0x80, 0xcd, 0x91, 0x90, 0x8a, 0x7e, 0xf4, 0x6e,
+ 0xe8, 0x8d, 0x8e, 0x2f, 0x8e, 0x92, 0xfd, 0x0f, 0x17, 0xdf, 0xf4, 0xbc,
+ 0x02, 0x2c, 0xed, 0x0c, 0x1b, 0xa3, 0x2c, 0x54, 0x79, 0xa6, 0x08, 0xd9,
+ 0xb4, 0x76, 0x2c, 0xac, 0x45, 0xb0, 0x72, 0x3b, 0x1e, 0xf1, 0xce, 0x46,
+ 0xbf, 0x18, 0xbe, 0xd8, 0xec, 0x6c, 0xcc, 0x6a, 0x88, 0x2b, 0xaf, 0x6c,
+ 0x8c, 0xac, 0x16, 0x5d, 0x02, 0x1e, 0xca, 0x12, 0xc5, 0xe0, 0x6c, 0x39,
+ 0x84, 0x55, 0x88, 0xcc, 0x6a, 0x59, 0x0c, 0x73, 0x34, 0x6d, 0xc2, 0x2a,
+ 0xdb, 0xd8, 0x28, 0x00, 0xfb, 0x1e, 0x01, 0x68, 0x45, 0x4b, 0x94, 0xf1,
+ 0x0b, 0x26, 0xda, 0xe8, 0xe8, 0x48, 0x12, 0x93, 0x5a, 0x75, 0x09, 0x53,
+ 0x92, 0xaa, 0x15, 0xf8, 0x30, 0xf5, 0x21, 0xe8, 0x96, 0x0a, 0x10, 0x2e,
+ 0xd1, 0x23, 0x0a, 0x0b, 0x95, 0xcc, 0x73, 0xce, 0xb2, 0xf7, 0x20, 0xa6,
+ 0xba, 0x94, 0x2c, 0x4a, 0xd9, 0x8f, 0xfc, 0x6f, 0x9c, 0x07, 0x1c, 0x48,
+ 0xa5, 0x2b, 0x48, 0x0b, 0xf2, 0x02, 0xc3, 0xe9, 0x71, 0x74, 0x9d, 0x03,
+ 0xf2, 0x47, 0xe1, 0x2a, 0x76, 0x69, 0x60, 0x81, 0x43, 0x40, 0xd0, 0x8d,
+ 0xd1, 0x66, 0x62, 0x0b, 0x72, 0x91, 0x74, 0x2c, 0xed, 0x51, 0x7c, 0x65,
+ 0x27, 0x9e, 0x32, 0xc8, 0x6b, 0x8e, 0x41, 0x8d, 0x78, 0x27, 0x31, 0xbc,
+ 0x68, 0xc1, 0xfd, 0x26, 0x77, 0xd3, 0x78, 0xc6, 0x18, 0x97, 0xc5, 0x2c,
+ 0xb9, 0x06, 0x2c, 0x47, 0x6e, 0x1e, 0x7c, 0x7f, 0xd8, 0x29, 0x3e, 0xc9,
+ 0xe5, 0x1f, 0xd9, 0x9d, 0xcb, 0x31, 0xde, 0xab, 0xb2, 0x93, 0xbd, 0xe4,
+ 0x4a, 0x14, 0x4f, 0x27, 0x80, 0xf4, 0x69, 0x96, 0x2d, 0x2c, 0xde, 0x19,
+ 0xd0, 0xff, 0x59, 0x11, 0xa6, 0x22, 0xe8, 0x28, 0x77, 0x3e, 0x0f, 0xaf,
+ 0x1c, 0xeb, 0x3b, 0x62, 0x2e, 0xe0, 0x92, 0xc7, 0x08, 0xd3, 0xd4, 0xa8,
+ 0x59, 0xc9, 0xce, 0x67, 0xcf, 0x3e, 0x4f, 0x6a, 0xca, 0x4d, 0xc8, 0x3b,
+ 0x48, 0x31, 0x8c, 0x15, 0xb0, 0x3a, 0x47, 0x54, 0xe4, 0x66, 0x35, 0xf6,
+ 0x28, 0x2a, 0x5e, 0x4d, 0xc9, 0x87, 0xb8, 0xb9, 0x24, 0x7a, 0x3f, 0x4c,
+ 0x19, 0x34, 0x8b, 0xa8, 0x32, 0x23, 0x56, 0x0c, 0xf0, 0x0e, 0xb4, 0x5a,
+ 0x6c, 0x85, 0x19, 0xb6, 0xab, 0xcc, 0x13, 0xca, 0x6b, 0x3f, 0x39, 0x3f,
+ 0xba, 0x38, 0xef, 0x27, 0xa3, 0x8b, 0xd3, 0xf3, 0x15, 0x89, 0xbd, 0xcd,
+ 0x04, 0x4c, 0x8f, 0xd6, 0x8c, 0xc8, 0x86, 0xf0, 0x33, 0xd5, 0x90, 0xef,
+ 0x71, 0x0c, 0xda, 0x85, 0x94, 0x99, 0x08, 0xd4, 0xf0, 0xf9, 0x60, 0x55,
+ 0x3a, 0x77, 0x6b, 0xb5, 0x40, 0x36, 0x86, 0x97, 0x3f, 0x3a, 0x31, 0xde,
+ 0xf6, 0x4f, 0xa0, 0x10, 0xa2, 0x45, 0x9a, 0xae, 0x65, 0xd9, 0x18, 0xad,
+ 0x94, 0x8c, 0x72, 0x06, 0x49, 0x31, 0x65, 0xac, 0xa0, 0x10, 0xa6, 0x2c,
+ 0xb4, 0xe6, 0x40, 0xb5, 0x7b, 0x9a, 0x71, 0xd2, 0x4b, 0xc8, 0xf0, 0x7d,
+ 0x93, 0x79, 0x78, 0x5d, 0x4f, 0xd0, 0x6f, 0x5a, 0x93, 0x01, 0xc7, 0xab,
+ 0x5a, 0x43, 0x25, 0xa2, 0x58, 0xa4, 0x87, 0x81, 0x51, 0x19, 0x4f, 0x9d,
+ 0x58, 0x5c, 0x83, 0x58, 0xca, 0x93, 0xc5, 0x33, 0xa2, 0x5d, 0x5e, 0xb7,
+ 0x89, 0x2b, 0xa5, 0x50, 0x07, 0xef, 0x8b, 0x11, 0x70, 0x66, 0x0d, 0x90,
+ 0xa2, 0xd6, 0x75, 0x54, 0xeb, 0x96, 0xd4, 0x3a, 0x5c, 0x79, 0xa7, 0xcb,
+ 0x95, 0x29, 0xef, 0x27, 0xca, 0x59, 0xc8, 0x09, 0xdf, 0xca, 0x36, 0xd2,
+ 0x7a, 0xaf, 0x10, 0x04, 0x7c, 0x78, 0xda, 0x33, 0x79, 0x6a, 0x45, 0xdc,
+ 0xb2, 0x16, 0x07, 0x75, 0x51, 0x4c, 0xba, 0xe7, 0x9c, 0x89, 0xb3, 0xec,
+ 0xb2, 0xd3, 0x4e, 0x26, 0x4d, 0x57, 0x40, 0x55, 0x8c, 0x7d, 0x57, 0xa6,
+ 0x25, 0x19, 0x9c, 0x6d, 0xb9, 0x7c, 0x27, 0x05, 0xe9, 0x6a, 0xcd, 0x7c,
+ 0xe7, 0x57, 0x0b, 0x1e, 0x52, 0xcf, 0x42, 0xec, 0x17, 0x15, 0x02, 0x0f,
+ 0x8a, 0x6c, 0x45, 0xfd, 0x4c, 0x42, 0xf4, 0x2e, 0x38, 0xa1, 0x89, 0x53,
+ 0xa6, 0xb5, 0xc0, 0x82, 0xae, 0x24, 0xa5, 0xc2, 0x52, 0x5e, 0x2e, 0x2e,
+ 0xa8, 0x69, 0x09, 0x03, 0x27, 0x2d, 0x42, 0x18, 0x57, 0x02, 0x81, 0x15,
+ 0x21, 0x34, 0x7a, 0xa5, 0x48, 0x63, 0x62, 0x0c, 0xa9, 0x50, 0xa7, 0xbd,
+ 0x9d, 0x88, 0xc3, 0x46, 0xfa, 0xe0, 0x28, 0x9d, 0xf9, 0xdb, 0xc8, 0x1c,
+ 0x0e, 0x52, 0xb8, 0x63, 0x0c, 0x4d, 0xf5, 0x10, 0xe6, 0x6a, 0xf1, 0x6c,
+ 0xc3, 0x62, 0x47, 0x1c, 0x25, 0x86, 0x4c, 0x2a, 0xa9, 0x8a, 0xd0, 0x4e,
+ 0x51, 0xd2, 0x95, 0xec, 0xde, 0x67, 0x84, 0x88, 0x0d, 0x7a, 0x1b, 0xe4,
+ 0x8b, 0xa7, 0x93, 0x36, 0xc9, 0x10, 0xa9, 0x4e, 0x17, 0x17, 0xa4, 0xdd,
+ 0x42, 0x71, 0x5d, 0x5e, 0x5d, 0x21, 0x45, 0x20, 0x0f, 0x93, 0xb1, 0x6b,
+ 0x67, 0x7c, 0x14, 0x44, 0x0e, 0x23, 0x66, 0xd1, 0x98, 0x5b, 0x99, 0x68,
+ 0xdc, 0x99, 0xd0, 0x72, 0xed, 0x60, 0xd1, 0x56, 0xc6, 0x0a, 0xc0, 0x98,
+ 0x2c, 0x85, 0xa7, 0x26, 0x5e, 0x6a, 0x5a, 0x95, 0x0d, 0xa0, 0x97, 0x5b,
+ 0x87, 0xa0, 0x37, 0xe2, 0x20, 0xc4, 0x47, 0x72, 0xd5, 0x59, 0x8c, 0xd1,
+ 0x53, 0xa5, 0x25, 0x2b, 0xfd, 0xbe, 0x5a, 0x14, 0xfc, 0x7c, 0xb8, 0xbb,
+ 0xf9, 0x98, 0x6a, 0x41, 0x72, 0xbb, 0xe1, 0xfc, 0x19, 0x67, 0x2e, 0x19,
+ 0xfd, 0x8a, 0xd3, 0x47, 0x39, 0xfd, 0xb0, 0xe2, 0x9d, 0x55, 0x12, 0x57,
+ 0x92, 0x0a, 0x01, 0xa5, 0x69, 0x89, 0xba, 0xfb, 0x66, 0x8e, 0x59, 0xf3,
+ 0x64, 0x0a, 0xa0, 0x9a, 0x90, 0xd2, 0xe4, 0xcc, 0x5c, 0x2e, 0x76, 0x95,
+ 0xbd, 0xbc, 0xbb, 0x64, 0x03, 0xb1, 0x0b, 0x66, 0x1c, 0x9b, 0xdd, 0x8b,
+ 0x90, 0x50, 0x27, 0xd3, 0xdc, 0xd7, 0x64, 0xcc, 0xc1, 0x9b, 0x9b, 0x4f,
+ 0xc8, 0x29, 0x50, 0x99, 0x31, 0x10, 0x8c, 0xba, 0xd6, 0xb7, 0x12, 0x09,
+ 0x9b, 0x6c, 0xcf, 0xca, 0x45, 0xd7, 0xa2, 0xf7, 0xb3, 0x78, 0x21, 0x3d,
+ 0x9f, 0x14, 0xc5, 0x0d, 0x99, 0xb3, 0x59, 0xfb, 0xb5, 0x21, 0x96, 0x0b,
+ 0xd6, 0xe5, 0xca, 0xbb, 0x02, 0x68, 0xe9, 0x21, 0x35, 0x61, 0xf0, 0x74,
+ 0x76, 0x3a, 0x51, 0xf6, 0xbb, 0xdb, 0xc3, 0xfb, 0x2e, 0x3b, 0xad, 0xeb,
+ 0xd9, 0x60, 0x32, 0x99, 0xac, 0xe4, 0xa8, 0x07, 0x07, 0x07, 0xc9, 0xc6,
+ 0x01, 0x72, 0xbe, 0x0f, 0x64, 0x94, 0x07, 0xd7, 0x64, 0xa6, 0x99, 0x51,
+ 0x8d, 0x8d, 0xeb, 0x25, 0x59, 0xf5, 0x68, 0x28, 0xc2, 0x70, 0x46, 0xa3,
+ 0x93, 0xad, 0x8b, 0x93, 0x51, 0x37, 0xe4, 0x3c, 0x7d, 0x20, 0x5d, 0x8f,
+ 0x4b, 0x69, 0xb4, 0xf4, 0x16, 0x96, 0xdb, 0x00, 0xb7, 0xa4, 0x41, 0xab,
+ 0x4a, 0x57, 0xdc, 0x4b, 0x34, 0xb9, 0x62, 0x59, 0xa8, 0x7d, 0xdd, 0x2a,
+ 0x56, 0x45, 0x56, 0x20, 0x7e, 0x8b, 0x58, 0x1a, 0xa8, 0x4c, 0x2a, 0x75,
+ 0xbf, 0xdf, 0xbf, 0xa0, 0x22, 0x6d, 0x8d, 0xa4, 0x84, 0xac, 0x08, 0x88,
+ 0xb7, 0x60, 0x5d, 0xc8, 0xe4, 0x4c, 0x3d, 0x18, 0x73, 0xbd, 0x02, 0xc0,
+ 0x8a, 0xf2, 0x5a, 0xf9, 0xe2, 0x50, 0x22, 0x82, 0x23, 0x30, 0xaa, 0xb2,
+ 0xa2, 0x03, 0x7b, 0x07, 0x71, 0x58, 0x35, 0xfd, 0x59, 0x77, 0x36, 0x64,
+ 0xe7, 0x65, 0x78, 0xbf, 0xb5, 0x5e, 0xff, 0x91, 0x73, 0x1a, 0xb7, 0xa4,
+ 0xd7, 0x9f, 0x7f, 0xd5, 0x36, 0x21, 0x6a, 0x4b, 0x6c, 0xf1, 0xe6, 0x31,
+ 0xa5, 0x8c, 0x8b, 0x48, 0xa0, 0xa1, 0xdc, 0x8b, 0xe8, 0xdb, 0x26, 0xb1,
+ 0x36, 0x12, 0xca, 0x2f, 0x18, 0x74, 0xb5, 0xd9, 0xf4, 0x29, 0x4a, 0x8a,
+ 0x8c, 0x81, 0x5a, 0xcc, 0xdc, 0xe5, 0x2e, 0x0d, 0xd8, 0x86, 0x72, 0x0a,
+ 0x0f, 0x0f, 0xa1, 0x34, 0xcc, 0x85, 0x3d, 0xb6, 0x16, 0xb7, 0xbf, 0xca,
+ 0x16, 0xb3, 0x07, 0x2b, 0xa6, 0x49, 0xdb, 0xab, 0xf4, 0x37, 0x5f, 0xd8,
+ 0xf7, 0xd3, 0x3d, 0x75, 0x80, 0x75, 0xbb, 0x15, 0x74, 0x94, 0xe6, 0x5c,
+ 0x05, 0xbd, 0xcb, 0xd4, 0xa4, 0xe7, 0x4e, 0x99, 0xb4, 0x70, 0x87, 0x76,
+ 0xa3, 0x3b, 0xc4, 0x54, 0x1a, 0xdd, 0x8f, 0x73, 0x39, 0xf7, 0x72, 0x16,
+ 0xec, 0x3a, 0x10, 0x7d, 0x19, 0x62, 0xbb, 0x42, 0xa8, 0x27, 0xc3, 0x28,
+ 0x48, 0xd8, 0x81, 0x16, 0x10, 0xe8, 0xda, 0x25, 0xa4, 0xd8, 0xbc, 0x94,
+ 0x49, 0xec, 0xf8, 0x96, 0x78, 0xfd, 0x89, 0xab, 0x58, 0xd2, 0x17, 0xc4,
+ 0x53, 0xcd, 0x46, 0x8e, 0xec, 0x87, 0xfa, 0x89, 0x27, 0x54, 0xcb, 0xe3,
+ 0x2d, 0x7b, 0x10, 0xbd, 0x12, 0x06, 0xea, 0x19, 0x56, 0xf5, 0x5d, 0x35,
+ 0xd3, 0x95, 0xf5, 0xb2, 0x65, 0x8e, 0xe1, 0xaa, 0x6d, 0x6f, 0xca, 0x95,
+ 0x6d, 0xa4, 0x0a, 0xc3, 0xc3, 0x9c, 0xf9, 0x43, 0x64, 0xc2, 0x20, 0x6f,
+ 0x79, 0xcc, 0x20, 0xc6, 0xb7, 0x0a, 0xa2, 0x76, 0xb9, 0x6c, 0x68, 0xd2,
+ 0x5a, 0x8a, 0xdd, 0xdf, 0x03, 0x32, 0xcf, 0x4b, 0x50, 0x2e, 0xbb, 0xc8,
+ 0x1e, 0x2f, 0x44, 0xea, 0x70, 0xc1, 0xc4, 0xaf, 0x26, 0x40, 0x6b, 0x36,
+ 0x7d, 0x8f, 0x3d, 0xd4, 0x1a, 0xe7, 0xab, 0xa1, 0x20, 0x31, 0xb7, 0x0c,
+ 0x10, 0x29, 0x2a, 0xf3, 0x0b, 0xe0, 0x43, 0xf4, 0x76, 0x9a, 0x51, 0xdc,
+ 0x34, 0x89, 0x49, 0xc3, 0xe4, 0x24, 0x63, 0x8f, 0xd4, 0xfa, 0x97, 0xeb,
+ 0xa0, 0xbe, 0xf5, 0xd7, 0xeb, 0x12, 0xc6, 0x1c, 0xd6, 0xda, 0xa9, 0x04,
+ 0x3a, 0x9e, 0x86, 0xb0, 0xce, 0x26, 0xe7, 0x75, 0x1d, 0x84, 0x58, 0xe8,
+ 0x78, 0x64, 0x88, 0x49, 0x28, 0x24, 0xd9, 0xc0, 0x08, 0x7a, 0x24, 0x11,
+ 0x45, 0xf4, 0xd7, 0x36, 0x1e, 0xc7, 0x82, 0xb3, 0x6e, 0xc8, 0x53, 0xe4,
+ 0x66, 0xce, 0xdb, 0x5b, 0x65, 0xeb, 0x35, 0x32, 0x3e, 0xb8, 0x9a, 0x4a,
+ 0x2c, 0x90, 0xc1, 0xae, 0x8d, 0x8c, 0x87, 0x07, 0x82, 0x1c, 0xb6, 0xc9,
+ 0x24, 0xa7, 0x0c, 0x07, 0x88, 0x85, 0xe6, 0x4b, 0x23, 0xd2, 0x30, 0x79,
+ 0x63, 0xce, 0x08, 0x61, 0x36, 0x93, 0xee, 0x92, 0x5e, 0x96, 0xd2, 0x6e,
+ 0x02, 0x8e, 0xbd, 0x0b, 0x95, 0x3b, 0xb8, 0x22, 0x89, 0xf0, 0x6a, 0x56,
+ 0x8e, 0xcb, 0xcb, 0xcb, 0x47, 0xe4, 0x05, 0x4e, 0xf4, 0x46, 0x1b, 0x4c,
+ 0xa4, 0x3d, 0x4a, 0x74, 0xa2, 0xf7, 0xc6, 0x9c, 0x8f, 0x8f, 0x82, 0x7a,
+ 0x82, 0xea, 0x29, 0xf5, 0x86, 0x62, 0xf8, 0xee, 0x6a, 0x02, 0xd1, 0x64,
+ 0x2c, 0x4d, 0xe1, 0x30, 0xad, 0xa9, 0x98, 0x29, 0x91, 0x77, 0x0e, 0x17,
+ 0xd0, 0x1c, 0xc2, 0xff, 0xf8, 0xaf, 0x1f, 0x7f, 0x8e, 0x84, 0x3e, 0x93,
+ 0x66, 0xa3, 0x21, 0xa7, 0x08, 0x75, 0x61, 0x30, 0x15, 0xe8, 0x10, 0x24,
+ 0x87, 0xb8, 0x8a, 0x24, 0x52, 0x14, 0xd5, 0x4b, 0x73, 0x09, 0x19, 0x5c,
+ 0xed, 0x3a, 0x04, 0x6a, 0x5f, 0xd9, 0x68, 0x1c, 0x00, 0x01, 0xc9, 0x00,
+ 0x49, 0xcb, 0x79, 0xd3, 0x2c, 0x48, 0x85, 0xe8, 0xed, 0xe1, 0x81, 0xb2,
+ 0x60, 0x43, 0xd6, 0xbf, 0x2a, 0x7c, 0xf6, 0xc3, 0xf9, 0xb1, 0xd5, 0xe8,
+ 0xbc, 0x9d, 0xf8, 0x1a, 0x3b, 0x11, 0x2c, 0x9b, 0x43, 0xb7, 0xec, 0x77,
+ 0x41, 0x52, 0x1c, 0xd2, 0x17, 0xa9, 0xd5, 0x5c, 0x48, 0xad, 0x53, 0x6d,
+ 0x6f, 0xda, 0x8f, 0xc2, 0xb0, 0xf6, 0xbb, 0x50, 0xc5, 0x55, 0x88, 0xff,
+ 0xd7, 0xca, 0xe1, 0x94, 0xc0, 0x85, 0x00, 0x9a, 0xfa, 0x6b, 0x23, 0xbd,
+ 0x59, 0x10, 0xeb, 0x4e, 0xaa, 0x67, 0x0b, 0xe0, 0x9a, 0x2b, 0xab, 0x10,
+ 0xfd, 0xdf, 0xa1, 0x18, 0xa8, 0xd8, 0x86, 0xa2, 0x5a, 0xd1, 0x85, 0x03,
+ 0x88, 0x64, 0xd6, 0xa5, 0x50, 0x51, 0x6e, 0x05, 0x4f, 0x34, 0x98, 0x7d,
+ 0xfd, 0xdf, 0xd6, 0x1d, 0x30, 0x5f, 0x24, 0x99, 0x43, 0xc7, 0x1f, 0x20,
+ 0xe4, 0x0c, 0x8e, 0xfb, 0x6e, 0x94, 0xec, 0x09, 0xe7, 0x3b, 0xd7, 0xd6,
+ 0x8a, 0x1d, 0x47, 0xa0, 0xa9, 0x57, 0x0d, 0xe3, 0x9b, 0xa3, 0xfd, 0x43,
+ 0x9d, 0xeb, 0x3f, 0x05, 0xde, 0xc6, 0x9a, 0x47, 0xc6, 0x19, 0x03, 0x70,
+ 0x2f, 0x0b, 0x2d, 0xbe, 0x4b, 0x7b, 0xa2, 0x77, 0x07, 0xa8, 0xc3, 0x88,
+ 0xda, 0x54, 0xc2, 0x81, 0x48, 0x36, 0xa2, 0x3a, 0x8a, 0xdd, 0x69, 0xa5,
+ 0xf2, 0xe8, 0x19, 0xe6, 0xd4, 0xc6, 0x47, 0xa7, 0x97, 0x59, 0x9c, 0x47,
+ 0xbf, 0x7e, 0xa2, 0xe6, 0x6b, 0xfe, 0x77, 0x55, 0x79, 0xb8, 0x23, 0xc0,
+ 0x89, 0xca, 0xb3, 0x66, 0x31, 0x05, 0xfe, 0x4e, 0x19, 0xaf, 0xd2, 0x0c,
+ 0x94, 0x2e, 0xd2, 0x13, 0x68, 0x5e, 0x11, 0xe2, 0x43, 0x9c, 0xa8, 0x4a,
+ 0x0e, 0x7f, 0x15, 0xb8, 0x6c, 0xe5, 0x28, 0xc4, 0x62, 0xa5, 0x0a, 0x13,
+ 0x05, 0xcb, 0x33, 0x80, 0xa9, 0x80, 0xba, 0x4a, 0x70, 0x7f, 0x34, 0x57,
+ 0xe7, 0xd2, 0x07, 0xf8, 0x36, 0x5a, 0x19, 0xd9, 0xcc, 0x8d, 0x72, 0x6d,
+ 0xe4, 0x14, 0x1d, 0x2f, 0x3d, 0x76, 0x9d, 0x7a, 0x88, 0xe2, 0x05, 0xc3,
+ 0x8a, 0x07, 0x29, 0xb7, 0xd6, 0xea, 0x69, 0x8d, 0x1a, 0x80, 0xf0, 0x64,
+ 0x45, 0x9a, 0x8d, 0x7d, 0x4b, 0xda, 0x18, 0xf6, 0xa4, 0x03, 0x64, 0xa7,
+ 0xe2, 0xdc, 0xe4, 0x08, 0xfb, 0x94, 0xde, 0x7d, 0x67, 0x46, 0xf7, 0xc0,
+ 0xf9, 0xdd, 0xb4, 0x05, 0xf1, 0x70, 0xd7, 0x35, 0xa7, 0x15, 0x19, 0xa4,
+ 0xe6, 0x26, 0x99, 0xdc, 0x50, 0xd4, 0x7f, 0xdd, 0x2c, 0xc1, 0xdf, 0xd3,
+ 0x42, 0x15, 0x56, 0x1e, 0xa6, 0x03, 0x53, 0x99, 0x96, 0x43, 0xf8, 0x5e,
+ 0x57, 0xd4, 0x6e, 0x45, 0x9e, 0x04, 0xc9, 0x76, 0x84, 0x70, 0xa1, 0xe3,
+ 0x91, 0x3c, 0x59, 0xc5, 0x21, 0x56, 0xce, 0x4d, 0xb5, 0xf1, 0x70, 0x79,
+ 0x84, 0xa5, 0xeb, 0x49, 0x2b, 0xa5, 0x10, 0x1f, 0xd2, 0xba, 0xee, 0xa4,
+ 0xd8, 0xc9, 0x3a, 0x2a, 0xfb, 0xe0, 0xaa, 0x3d, 0x87, 0xac, 0x62, 0xe1,
+ 0x34, 0x68, 0xca, 0xb2, 0x3c, 0x86, 0xdd, 0x5f, 0xe5, 0xb7, 0x51, 0x28,
+ 0xeb, 0xd4, 0x0e, 0x8c, 0xc3, 0xae, 0xec, 0x05, 0xa2, 0x8e, 0xfd, 0xa4,
+ 0x14, 0x45, 0x8a, 0xb1, 0x90, 0x08, 0x1d, 0x58, 0x56, 0x36, 0xcc, 0x10,
+ 0xa5, 0x3b, 0x2c, 0xa5, 0xab, 0x7e, 0xcf, 0x10, 0x7e, 0xd2, 0xfb, 0xa6,
+ 0xac, 0x9b, 0xbd, 0x9e, 0x57, 0x6c, 0x4f, 0x24, 0x8b, 0x36, 0xe5, 0x08,
+ 0x9c, 0x6e, 0x10, 0x96, 0xc5, 0x12, 0x10, 0x1f, 0x40, 0x73, 0xb5, 0xc8,
+ 0xd3, 0xea, 0x83, 0x94, 0x14, 0x4d, 0x9b, 0xf0, 0x4e, 0x24, 0x3f, 0xcf,
+ 0x65, 0x0c, 0x94, 0xd2, 0xdd, 0xe5, 0x52, 0x35, 0x86, 0xf4, 0xc3, 0xe0,
+ 0x00, 0x9d, 0x0f, 0xbe, 0x41, 0x73, 0x7f, 0xe9, 0x59, 0xa5, 0xbb, 0xfb,
+ 0xd5, 0x5e, 0x2f, 0x1e, 0x04, 0xee, 0xae, 0x97, 0xda, 0xd6, 0xc6, 0x82,
+ 0x15, 0x5d, 0x06, 0xc8, 0xa0, 0xbe, 0xe6, 0x88, 0x6c, 0xe9, 0x86, 0x4b,
+ 0x94, 0x77, 0x11, 0x4d, 0x53, 0x92, 0x1c, 0x86, 0x05, 0x62, 0xf5, 0xa6,
+ 0x83, 0xf2, 0x72, 0x80, 0x92, 0x80, 0x54, 0xab, 0x9d, 0x1c, 0x2c, 0xde,
+ 0xa9, 0x03, 0xda, 0x32, 0x51, 0x12, 0x1d, 0xbf, 0xc8, 0x5d, 0x2d, 0x91,
+ 0xe2, 0x95, 0x55, 0x5b, 0x65, 0x40, 0xb2, 0x91, 0x7b, 0xa4, 0xea, 0xe8,
+ 0xeb, 0x16, 0xc9, 0x97, 0x52, 0x89, 0x04, 0xc8, 0x37, 0xa8, 0x26, 0x86,
+ 0xe0, 0xbc, 0x3e, 0xdf, 0xe7, 0x98, 0x35, 0xd8, 0xf0, 0x9c, 0x2d, 0x48,
+ 0x30, 0x01, 0x18, 0xbd, 0xff, 0x92, 0xcb, 0xc3, 0x46, 0x1d, 0xbe, 0x2e,
+ 0x1d, 0x64, 0x5f, 0xe1, 0xd5, 0x06, 0xa6, 0x23, 0x81, 0x07, 0x6d, 0xa7,
+ 0xd4, 0xaf, 0x02, 0x41, 0x1b, 0x11, 0x3a, 0xb2, 0x88, 0x9f, 0x9f, 0x0d,
+ 0x9f, 0x7d, 0x36, 0xdc, 0xee, 0x3b, 0x24, 0x9d, 0xc1, 0xc0, 0x2c, 0xdd,
+ 0xfd, 0xc3, 0xc0, 0xf1, 0x4c, 0x6c, 0xa5, 0x47, 0x5f, 0x41, 0x7d, 0x01,
+ 0x2a, 0x7a, 0x42, 0xeb, 0x31, 0x95, 0xfc, 0x5f, 0xb2, 0x80, 0x9a, 0x26,
+ 0x56, 0x05, 0xf6, 0x04, 0x3e, 0x97, 0x3f, 0x8a, 0x2f, 0x1f, 0xb4, 0xf4,
+ 0x96, 0xae, 0xa3, 0xc1, 0x7b, 0xc3, 0xe8, 0xf6, 0x92, 0x7f, 0x2f, 0xb3,
+ 0x9e, 0xd6, 0xa9, 0xda, 0x79, 0xb5, 0x6b, 0x14, 0x8e, 0xcf, 0x87, 0xdb,
+ 0xc3, 0x9d, 0xad, 0x4f, 0x75, 0x65, 0x3b, 0x5f, 0x36, 0xdf, 0x7a, 0x92,
+ 0x5e, 0xe7, 0xe8, 0x68, 0x8b, 0x75, 0x91, 0x98, 0x0f, 0x88, 0xde, 0x52,
+ 0x26, 0xee, 0x69, 0x25, 0x54, 0x14, 0x6b, 0xb1, 0x1c, 0xcf, 0xa7, 0x2f,
+ 0x92, 0xd7, 0xe6, 0x47, 0x18, 0xa4, 0x7d, 0x60, 0x5d, 0x86, 0xa8, 0x03,
+ 0x4e, 0x87, 0x48, 0x12, 0x0b, 0x59, 0xdc, 0xa4, 0x5f, 0x9f, 0xed, 0x9a,
+ 0xa6, 0xef, 0x53, 0x2d, 0x39, 0x34, 0xcd, 0xaf, 0xf2, 0x26, 0x9a, 0xe8,
+ 0x21, 0xaf, 0x3a, 0x07, 0x17, 0xed, 0xfc, 0xce, 0xee, 0xe7, 0xc9, 0x38,
+ 0x6f, 0x92, 0x77, 0x87, 0x2f, 0xb8, 0xe4, 0x7d, 0xbd, 0x9c, 0x2b, 0x7d,
+ 0x6a, 0x85, 0x18, 0x14, 0xef, 0x5a, 0xef, 0x5e, 0x14, 0x66, 0xe0, 0xb3,
+ 0x7c, 0x42, 0x49, 0x83, 0xfd, 0x56, 0xf9, 0xa8, 0x4b, 0x35, 0x68, 0x7a,
+ 0xd5, 0x98, 0xec, 0x49, 0xa2, 0x96, 0xc4, 0xa0, 0x1a, 0x51, 0xd5, 0xcd,
+ 0x1a, 0x98, 0xee, 0x6b, 0x2d, 0x95, 0xdd, 0x52, 0x0f, 0x3f, 0x6b, 0x9b,
+ 0x3d, 0x38, 0x26, 0x58, 0x11, 0x36, 0x07, 0x46, 0xfa, 0xbb, 0x0a, 0xa2,
+ 0x64, 0xe5, 0xde, 0x3e, 0xc6, 0xa3, 0x9c, 0x91, 0x20, 0x8f, 0x9f, 0xe0,
+ 0x71, 0x8b, 0x62, 0xe0, 0xb9, 0x30, 0xe8, 0x7c, 0xe6, 0x93, 0xe5, 0x8c,
+ 0x4a, 0x57, 0x86, 0x02, 0x0c, 0x22, 0x3e, 0x89, 0x2a, 0x15, 0x31, 0xa4,
+ 0x5a, 0x72, 0x85, 0xc3, 0xfd, 0x05, 0x45, 0xc5, 0x25, 0x3b, 0xc3, 0xfb,
+ 0xbe, 0x5f, 0x9e, 0x5b, 0x8a, 0x69, 0x51, 0x11, 0xee, 0xe0, 0xb2, 0x80,
+ 0x69, 0xbb, 0x33, 0x20, 0x6a, 0x9a, 0xc3, 0x11, 0x67, 0xe4, 0xda, 0xa9,
+ 0xf8, 0x4e, 0xdb, 0x35, 0x97, 0xc3, 0x55, 0x8a, 0x7a, 0x8c, 0x1e, 0xf5,
+ 0xe4, 0x7d, 0x60, 0x3d, 0x41, 0x04, 0x59, 0x31, 0x71, 0x91, 0x4f, 0x14,
+ 0xc9, 0x42, 0x8f, 0xa1, 0xc8, 0x2b, 0x12, 0x49, 0xab, 0x59, 0x44, 0xde,
+ 0x13, 0x61, 0x0d, 0x71, 0x6a, 0x07, 0x06, 0x21, 0xb0, 0x15, 0x8e, 0x2d,
+ 0x92, 0x45, 0x18, 0x90, 0x1c, 0xd1, 0x27, 0x59, 0xd4, 0x0a, 0x0e, 0x2e,
+ 0x8a, 0x18, 0x8d, 0x86, 0xc9, 0x02, 0x48, 0x62, 0xd1, 0x20, 0xe0, 0xe1,
+ 0xd0, 0x9b, 0xd5, 0xb1, 0x8a, 0x63, 0xb1, 0x29, 0x51, 0x9d, 0x9f, 0xad,
+ 0xb7, 0xc7, 0x27, 0x47, 0x9b, 0xc9, 0xdb, 0x0c, 0x08, 0x5e, 0x9d, 0x99,
+ 0x11, 0x03, 0xfc, 0x03, 0x7f, 0xa2, 0x3b, 0x24, 0x6a, 0x64, 0x2c, 0x87,
+ 0xca, 0x9a, 0x50, 0x21, 0x06, 0xf3, 0xb6, 0x41, 0xe0, 0xe5, 0x3c, 0x9f,
+ 0x12, 0xe1, 0x88, 0x5a, 0xcc, 0x49, 0x9d, 0x95, 0xd1, 0x15, 0x42, 0x94,
+ 0x96, 0xab, 0xda, 0xf6, 0xbd, 0x14, 0x74, 0x24, 0x80, 0x52, 0x0d, 0x5e,
+ 0x31, 0x3b, 0x4b, 0x23, 0x97, 0x78, 0x3b, 0xf5, 0x65, 0x72, 0xb9, 0xd3,
+ 0xd8, 0x59, 0xe0, 0x2a, 0xe4, 0xf9, 0x3f, 0x38, 0x3e, 0x19, 0x51, 0x21,
+ 0xf3, 0x72, 0x6a, 0x01, 0xbb, 0xb9, 0xb8, 0x1a, 0xcd, 0xd7, 0x67, 0x28,
+ 0x1e, 0x28, 0x59, 0x2c, 0x85, 0xf5, 0x8c, 0xf1, 0xc9, 0xe1, 0xb6, 0xf1,
+ 0x23, 0x0d, 0x58, 0x00, 0x77, 0x4a, 0x98, 0x6d, 0x66, 0x68, 0x63, 0xf7,
+ 0xb2, 0xa2, 0x89, 0xd0, 0x85, 0x0f, 0x0a, 0xd6, 0xf7, 0xfd, 0x01, 0x66,
+ 0xb6, 0x38, 0xea, 0x1c, 0x36, 0xb8, 0x5f, 0x68, 0x4c, 0x91, 0x54, 0x73,
+ 0xe0, 0x2c, 0xa5, 0xa0, 0x36, 0x63, 0x24, 0xee, 0x4b, 0xb8, 0xb9, 0x37,
+ 0x33, 0x23, 0xcb, 0x6f, 0xef, 0xed, 0xf8, 0xa5, 0x17, 0x0b, 0x29, 0x2b,
+ 0x4c, 0xf1, 0x58, 0x5b, 0xbf, 0x5f, 0xe4, 0xcd, 0xdf, 0x88, 0x34, 0xff,
+ 0xb6, 0x2c, 0x6e, 0x0c, 0x6d, 0xd5, 0x44, 0xc1, 0x83, 0x78, 0xf9, 0x67,
+ 0x39, 0x7d, 0xdf, 0x5b, 0xdf, 0x4b, 0xb7, 0x4e, 0x48, 0xab, 0xc2, 0x7d,
+ 0x2a, 0x3e, 0x7b, 0xa6, 0x8b, 0xd5, 0xd9, 0x44, 0x4e, 0xac, 0xc9, 0xc9,
+ 0xe3, 0x6b, 0x26, 0x4c, 0xb5, 0x84, 0x49, 0xf3, 0xeb, 0xc9, 0x70, 0x6c,
+ 0xb5, 0x63, 0x57, 0xc1, 0x3c, 0x66, 0x33, 0xa3, 0x0a, 0xe2, 0x2c, 0x14,
+ 0x5f, 0xdb, 0xfa, 0x83, 0xd0, 0x07, 0xc4, 0xab, 0x42, 0xf2, 0x21, 0x91,
+ 0xb3, 0x11, 0x41, 0x12, 0x6d, 0x99, 0x42, 0xa2, 0xe8, 0x9e, 0xa7, 0xf5,
+ 0xe8, 0xdc, 0x96, 0x9c, 0xbf, 0xa7, 0x85, 0x9c, 0x6a, 0x85, 0x2d, 0xd4,
+ 0x11, 0x26, 0xdd, 0xc1, 0x09, 0xf0, 0x09, 0xa4, 0x96, 0xf5, 0xe0, 0x5c,
+ 0x4e, 0x66, 0x25, 0xed, 0x0e, 0x59, 0x62, 0xbd, 0x95, 0xff, 0x77, 0x16,
+ 0x44, 0xe8, 0x32, 0x92, 0x93, 0x3e, 0x88, 0x44, 0x78, 0xf9, 0xd1, 0xed,
+ 0x9a, 0x82, 0x85, 0xfc, 0x26, 0x48, 0x38, 0xa7, 0x5e, 0x1b, 0x1c, 0xb8,
+ 0x6b, 0xb3, 0xb4, 0xe4, 0xc2, 0x8a, 0x02, 0x7b, 0x0e, 0xbc, 0x12, 0xbf,
+ 0x96, 0x5b, 0x1f, 0x9a, 0x63, 0x5b, 0xd6, 0x39, 0x2b, 0xc5, 0x2e, 0xfc,
+ 0xce, 0x53, 0xc2, 0xc3, 0x08, 0x1b, 0xcd, 0x4c, 0xb6, 0x60, 0x2f, 0x1c,
+ 0xe4, 0xa9, 0x96, 0x64, 0x0a, 0xd9, 0x88, 0x64, 0xfe, 0xc1, 0xec, 0x86,
+ 0x60, 0x07, 0x0f, 0x54, 0xd5, 0x5c, 0xf5, 0x64, 0xe9, 0xf8, 0x93, 0xa1,
+ 0x43, 0xa3, 0x71, 0x16, 0x54, 0xda, 0x68, 0xe3, 0x21, 0x6b, 0x36, 0x6d,
+ 0x4c, 0xb6, 0x04, 0xb5, 0xc5, 0xea, 0xf6, 0xf0, 0x49, 0xed, 0xe4, 0x61,
+ 0x92, 0x02, 0x2a, 0x2f, 0x31, 0x6a, 0x22, 0x5d, 0xd7, 0x15, 0x72, 0x95,
+ 0xc9, 0x4b, 0x22, 0x88, 0xd4, 0xab, 0x9a, 0xf3, 0x2f, 0xa5, 0x1b, 0xbe,
+ 0x94, 0xea, 0x58, 0xa8, 0x97, 0xe6, 0x9c, 0xf9, 0x26, 0x05, 0x2f, 0xfe,
+ 0x55, 0x74, 0x3e, 0x5b, 0x91, 0x4b, 0x78, 0x55, 0x4f, 0x5b, 0xeb, 0x75,
+ 0x05, 0xcf, 0xd1, 0x89, 0x9f, 0xe0, 0xcc, 0x66, 0x51, 0x07, 0xaa, 0xb9,
+ 0x6f, 0x8e, 0x46, 0xf0, 0x08, 0xe5, 0x78, 0xf0, 0x3a, 0x06, 0xd3, 0xd1,
+ 0xfc, 0xbe, 0xb9, 0x21, 0x2f, 0xb5, 0x9e, 0xb7, 0xaa, 0xc6, 0x74, 0x52,
+ 0xeb, 0x38, 0x5b, 0x12, 0x3b, 0x9e, 0x52, 0xd6, 0x44, 0xf7, 0x98, 0x3d,
+ 0x38, 0x78, 0x30, 0xce, 0x3e, 0x41, 0xdc, 0x3b, 0x9f, 0x58, 0x7f, 0x4c,
+ 0x7e, 0x85, 0xb8, 0xd5, 0x93, 0x45, 0xa5, 0x6d, 0x75, 0x44, 0xb7, 0x16,
+ 0x39, 0x74, 0x44, 0x7b, 0x02, 0xbe, 0x35, 0x60, 0x32, 0x96, 0x16, 0x6a,
+ 0x99, 0x33, 0x76, 0x17, 0x2a, 0x31, 0x8b, 0x81, 0x1f, 0x69, 0xf1, 0x1c,
+ 0xfa, 0x99, 0xd8, 0x9a, 0xb8, 0x2b, 0x4a, 0xdd, 0x22, 0xcf, 0xf3, 0x3a,
+ 0xbd, 0xbf, 0x1f, 0xd6, 0x19, 0x97, 0x6c, 0xad, 0xeb, 0x19, 0x72, 0x4a,
+ 0xdb, 0x35, 0x6e, 0x07, 0xdf, 0x4a, 0x81, 0xeb, 0xcb, 0xfc, 0x8a, 0x42,
+ 0x13, 0xf1, 0x6f, 0x2c, 0x83, 0x5e, 0x73, 0xe7, 0xa5, 0x4e, 0xb0, 0x7b,
+ 0xd0, 0xb1, 0x4b, 0xe0, 0x57, 0x49, 0x7c, 0x16, 0x73, 0x4d, 0x01, 0xc5,
+ 0x9b, 0x84, 0xa9, 0x39, 0xf4, 0xb6, 0xa4, 0x60, 0xe4, 0x5e, 0x9a, 0x01,
+ 0x76, 0xca, 0xf6, 0xc1, 0xd7, 0x3e, 0x96, 0xc3, 0xb5, 0xcb, 0xb2, 0x7e,
+ 0x57, 0x05, 0x94, 0xd2, 0xe8, 0x2a, 0x1c, 0x64, 0x45, 0xdb, 0x94, 0xc1,
+ 0xcc, 0x92, 0x35, 0x30, 0x4a, 0x1a, 0xd0, 0xe7, 0x55, 0x29, 0xef, 0xaa,
+ 0x80, 0x5c, 0xff, 0xd3, 0x1f, 0x41, 0xb0, 0x6f, 0xa7, 0x0b, 0x2d, 0xf7,
+ 0xc8, 0xda, 0x78, 0x5e, 0x39, 0xff, 0x41, 0x6d, 0xd5, 0x6b, 0xc7, 0x96,
+ 0xfc, 0xa2, 0x68, 0x2b, 0x16, 0x04, 0xf3, 0xe7, 0xb2, 0x68, 0x0e, 0x86,
+ 0x6e, 0x8c, 0x35, 0x37, 0x32, 0xa5, 0x11, 0x5d, 0x21, 0x91, 0xb0, 0x6a,
+ 0xae, 0x80, 0x22, 0x02, 0x85, 0x5f, 0xc7, 0xf3, 0x56, 0x4e, 0x28, 0x3f,
+ 0xd7, 0xda, 0x05, 0x19, 0xa3, 0x61, 0x02, 0xa9, 0x22, 0x04, 0xaa, 0x73,
+ 0xc5, 0x9e, 0xcd, 0x58, 0x62, 0x4c, 0xc4, 0x8f, 0xf6, 0x51, 0x04, 0x30,
+ 0x0e, 0x7c, 0x36, 0x52, 0x65, 0x7d, 0x2d, 0x81, 0xc8, 0x66, 0x9d, 0x6b,
+ 0x29, 0x50, 0xcf, 0x63, 0x8d, 0x80, 0xfe, 0xf2, 0x90, 0x13, 0x87, 0x02,
+ 0x53, 0x4b, 0xb0, 0xbd, 0xb7, 0x5f, 0xd6, 0xec, 0x5a, 0x0f, 0x59, 0x38,
+ 0xc8, 0x9c, 0x6c, 0xd0, 0x9d, 0x6c, 0xdb, 0x2c, 0x0d, 0xd3, 0x98, 0x91,
+ 0xc9, 0xef, 0x4a, 0x19, 0x17, 0xa7, 0x87, 0x92, 0x9b, 0x4d, 0x3b, 0x01,
+ 0xab, 0x7e, 0x62, 0x74, 0x76, 0x70, 0x36, 0x1d, 0xc7, 0x1b, 0x03, 0x66,
+ 0xda, 0xd4, 0x6e, 0xcb, 0xe3, 0x59, 0x94, 0x99, 0xe7, 0x53, 0xe2, 0xb0,
+ 0x4d, 0x75, 0x40, 0xf8, 0x7b, 0xda, 0x7e, 0x4e, 0x48, 0x27, 0x2c, 0xe8,
+ 0xc7, 0x77, 0xae, 0x04, 0x94, 0x73, 0x2c, 0x3a, 0x81, 0xd4, 0xf1, 0xdf,
+ 0xba, 0x13, 0x89, 0x06, 0xa9, 0x4b, 0x94, 0x90, 0x56, 0x7a, 0xe9, 0x36,
+ 0xc7, 0x30, 0x3c, 0x89, 0xbb, 0x9a, 0xc0, 0x75, 0x5d, 0xda, 0xf4, 0x5e,
+ 0x92, 0xfc, 0xf4, 0x53, 0x3f, 0x21, 0x08, 0xa0, 0x9f, 0x8c, 0x82, 0xf0,
+ 0x93, 0x21, 0xb9, 0x9f, 0xb8, 0x34, 0xcd, 0x4f, 0xb7, 0x86, 0x6b, 0xaf,
+ 0x0a, 0x58, 0xf7, 0xaa, 0x90, 0xa0, 0x62, 0x20, 0xb8, 0x95, 0x14, 0x60,
+ 0x22, 0x8b, 0x32, 0xa7, 0x88, 0xfa, 0x40, 0x44, 0x31, 0xdc, 0x64, 0xb3,
+ 0x33, 0xcb, 0x79, 0xc1, 0xe2, 0xba, 0xb0, 0x1a, 0x70, 0x01, 0xb0, 0x8a,
+ 0xf5, 0x3f, 0xae, 0xbb, 0xbd, 0xf1, 0x6a, 0x3a, 0x89, 0x52, 0x43, 0x0f,
+ 0x06, 0x06, 0x22, 0x66, 0x05, 0x0d, 0x17, 0x5b, 0x65, 0x0b, 0x0f, 0x1d,
+ 0x6e, 0x68, 0x01, 0xa7, 0x64, 0x8d, 0xb9, 0x43, 0x1d, 0x36, 0x50, 0x0e,
+ 0x6f, 0x30, 0x19, 0x92, 0x16, 0xd7, 0x0f, 0x10, 0xc2, 0x02, 0x01, 0xb8,
+ 0xc8, 0xda, 0xa7, 0x25, 0x9e, 0xd3, 0xa4, 0x2c, 0xd3, 0xe5, 0x9b, 0x59,
+ 0xbc, 0x91, 0x16, 0xdb, 0x35, 0xc3, 0x59, 0x1f, 0xac, 0xb7, 0x71, 0x00,
+ 0x57, 0x14, 0xe0, 0x73, 0x90, 0x3e, 0x5c, 0x80, 0x2f, 0x9a, 0xd6, 0xc0,
+ 0x0e, 0x3e, 0x4e, 0x7c, 0x1b, 0x33, 0x83, 0xb6, 0x66, 0x6b, 0x78, 0x15,
+ 0x54, 0xb1, 0x94, 0xfe, 0x55, 0xd7, 0x09, 0xcd, 0xb8, 0x30, 0x0e, 0x31,
+ 0x84, 0xbf, 0xce, 0x25, 0x6f, 0xfc, 0x0c, 0xc0, 0x01, 0x79, 0x74, 0xac,
+ 0xdb, 0x0d, 0xe5, 0xf1, 0x4a, 0x4e, 0x74, 0xc9, 0x8d, 0x1a, 0xf1, 0x10,
+ 0xe1, 0xd2, 0xfa, 0x26, 0x8d, 0xa3, 0x64, 0x8b, 0x24, 0xb9, 0xf3, 0xc1,
+ 0x62, 0x93, 0x51, 0xd9, 0xe7, 0xe2, 0x15, 0x56, 0xf7, 0x48, 0x5c, 0xc5,
+ 0xad, 0xa6, 0x8c, 0xb8, 0xfc, 0x02, 0x45, 0x84, 0xc6, 0xf3, 0x26, 0xe9,
+ 0xad, 0xbc, 0x06, 0x7b, 0xd1, 0xfa, 0x6e, 0x2a, 0xff, 0x53, 0x42, 0xe7,
+ 0x8d, 0xa0, 0xdc, 0x89, 0x84, 0xbc, 0xa1, 0xd7, 0xf9, 0xdf, 0xf5, 0x0a,
+ 0xdf, 0x14, 0x0b, 0x0c, 0xdb, 0xbd, 0x56, 0xa0, 0xa3, 0xf9, 0x37, 0xa4,
+ 0xc5, 0xa4, 0xc8, 0xe1, 0x01, 0x30, 0xef, 0x2d, 0x8b, 0xa9, 0xea, 0xf3,
+ 0x16, 0x4e, 0x6d, 0x35, 0xe3, 0xa5, 0xdc, 0x4c, 0xea, 0x51, 0x4c, 0x6d,
+ 0x9a, 0x4e, 0x62, 0x8b, 0x38, 0xc1, 0xac, 0x25, 0xa9, 0x1f, 0x24, 0x2d,
+ 0x12, 0x42, 0x53, 0xb0, 0x30, 0x3b, 0x9b, 0x36, 0xe9, 0x1c, 0x35, 0x84,
+ 0x11, 0x43, 0x9e, 0x8b, 0x25, 0xb9, 0x77, 0x5d, 0x32, 0x72, 0x44, 0x6f,
+ 0x2f, 0x39, 0x6e, 0xc4, 0x3d, 0xe4, 0xcd, 0x32, 0xbc, 0x22, 0x81, 0xcb,
+ 0xf1, 0xcd, 0xe9, 0xbb, 0x23, 0x1b, 0xcc, 0xca, 0x5a, 0x3e, 0x7d, 0x12,
+ 0xc5, 0x0e, 0x1a, 0x22, 0x26, 0x41, 0xd3, 0x81, 0xfb, 0x61, 0xc9, 0x12,
+ 0x5e, 0x22, 0xa3, 0xcb, 0x2f, 0xee, 0x96, 0xf9, 0x74, 0x03, 0x19, 0xdb,
+ 0x1f, 0xde, 0x1f, 0xff, 0x30, 0x80, 0x15, 0x83, 0x91, 0xb5, 0x6a, 0x4d,
+ 0x5a, 0xd6, 0x94, 0x67, 0x36, 0x56, 0xcd, 0x23, 0xb9, 0xff, 0x72, 0xab,
+ 0xf9, 0xd0, 0x57, 0xc8, 0xbf, 0xc8, 0x0b, 0x76, 0x88, 0x70, 0x83, 0x9b,
+ 0x74, 0xfe, 0x0d, 0x0f, 0x05, 0x6e, 0x07, 0x67, 0x53, 0x47, 0x02, 0x73,
+ 0xdb, 0x2b, 0x91, 0xec, 0x9f, 0x9d, 0x1d, 0xee, 0x5f, 0xec, 0xdb, 0xb9,
+ 0x01, 0x27, 0x03, 0x4c, 0x05, 0xba, 0x29, 0xc9, 0x6d, 0x52, 0xc1, 0x73,
+ 0xfd, 0x4f, 0x94, 0xb3, 0xd1, 0xbd, 0xeb, 0xcf, 0xce, 0x4f, 0xc9, 0xc6,
+ 0xf0, 0xa7, 0x9f, 0xf6, 0x5d, 0x35, 0x5a, 0x54, 0x9b, 0x0b, 0x6b, 0x82,
+ 0xee, 0x6e, 0xd2, 0xf8, 0xee, 0xec, 0xf8, 0xc4, 0xc9, 0xcf, 0xd9, 0xd1,
+ 0xc9, 0x47, 0xda, 0xd0, 0x6a, 0x62, 0x05, 0x27, 0x5d, 0x0d, 0x2c, 0x00,
+ 0x2a, 0x31, 0xac, 0x9e, 0x48, 0xe9, 0x98, 0x98, 0xc2, 0x86, 0xe8, 0x62,
+ 0xcd, 0x8c, 0xbc, 0x6f, 0x84, 0xd6, 0x06, 0xdc, 0x83, 0x02, 0xa3, 0x88,
+ 0xbe, 0xa6, 0xb4, 0x52, 0x5d, 0x70, 0xac, 0xee, 0xf6, 0x38, 0x78, 0x48,
+ 0x66, 0x00, 0x1c, 0xcc, 0x59, 0x72, 0x8d, 0xa1, 0xa1, 0x8c, 0xd6, 0x55,
+ 0x19, 0x0a, 0xce, 0x0e, 0x7b, 0x23, 0x0c, 0x9d, 0x2b, 0x3d, 0x0e, 0x43,
+ 0xbb, 0xf1, 0x60, 0x30, 0x50, 0xab, 0x32, 0x4f, 0xdc, 0x7c, 0x10, 0x3c,
+ 0xd4, 0x68, 0x25, 0x15, 0xe5, 0xf3, 0x71, 0x36, 0xe1, 0xf3, 0x87, 0xae,
+ 0x2c, 0x2f, 0xf8, 0x01, 0xf2, 0x14, 0x6a, 0x32, 0x22, 0xff, 0x30, 0x34,
+ 0x37, 0xaa, 0x35, 0xde, 0x3c, 0x5a, 0x2f, 0xc9, 0x5e, 0x43, 0x7f, 0x6d,
+ 0xed, 0x0c, 0xb7, 0x7b, 0xe1, 0xe8, 0x11, 0xcc, 0x0a, 0xa3, 0x98, 0x02,
+ 0x86, 0x32, 0x06, 0x6c, 0xf9, 0xf4, 0x00, 0x99, 0x81, 0x19, 0x89, 0x74,
+ 0x61, 0x3a, 0x88, 0x8e, 0x65, 0x70, 0x1a, 0x18, 0x2f, 0xd9, 0x2b, 0xe0,
+ 0x38, 0x62, 0x51, 0x22, 0x6d, 0x36, 0x25, 0x6d, 0x08, 0x86, 0x98, 0x5e,
+ 0x7c, 0x81, 0x8b, 0x29, 0x3b, 0x36, 0x3b, 0xeb, 0xfc, 0x28, 0x4a, 0xf5,
+ 0xea, 0x8c, 0x32, 0x4b, 0x03, 0xf6, 0xe3, 0x95, 0xdc, 0xae, 0x65, 0x79,
+ 0xbf, 0xc9, 0x8c, 0x14, 0x38, 0x43, 0xfa, 0x14, 0xd9, 0xd1, 0x5e, 0x73,
+ 0xe1, 0xd0, 0x10, 0xff, 0xdb, 0x8f, 0x25, 0xc9, 0x24, 0x7a, 0x16, 0x6f,
+ 0xa4, 0xbe, 0x16, 0x97, 0x08, 0x46, 0x0c, 0x6e, 0xb4, 0x2a, 0xa3, 0xa0,
+ 0x4e, 0x73, 0x46, 0xa6, 0x41, 0x96, 0xb6, 0x04, 0x8a, 0x5a, 0xe7, 0xb0,
+ 0x1d, 0x05, 0x69, 0xdf, 0x63, 0x91, 0x73, 0x6d, 0x17, 0x2a, 0x1d, 0x9a,
+ 0x33, 0x9a, 0x1b, 0xd5, 0x7c, 0x19, 0xc8, 0x0b, 0xdd, 0xd7, 0x87, 0xc4,
+ 0x62, 0xf3, 0xda, 0xcf, 0x09, 0x82, 0x49, 0x87, 0x9e, 0x28, 0xad, 0xc5,
+ 0x0f, 0xc5, 0xf9, 0x70, 0xa8, 0x02, 0x23, 0xe6, 0xa5, 0x60, 0x93, 0xe1,
+ 0x12, 0xbf, 0x38, 0x38, 0xfb, 0xf8, 0xed, 0xd1, 0xd1, 0xd9, 0xf1, 0xe1,
+ 0xc9, 0x91, 0x54, 0xd6, 0xb1, 0x1f, 0xbd, 0xbf, 0xf8, 0xee, 0xc4, 0xe1,
+ 0x93, 0x89, 0x6b, 0xa8, 0xab, 0xee, 0x53, 0xc8, 0x11, 0x35, 0x77, 0x92,
+ 0x17, 0xcb, 0x7b, 0x2a, 0x97, 0x35, 0x21, 0x5a, 0xde, 0x3f, 0xfe, 0xa1,
+ 0x9f, 0x7c, 0x73, 0x36, 0xf8, 0xf0, 0x43, 0x80, 0x02, 0xe1, 0x05, 0xf9,
+ 0x1a, 0x26, 0xd4, 0x15, 0x2c, 0x6d, 0xcc, 0x2f, 0x6a, 0x4a, 0xb8, 0xb9,
+ 0xab, 0xfe, 0x1b, 0x29, 0xb3, 0xf8, 0x5b, 0x9b, 0x02, 0xc3, 0x30, 0x8d,
+ 0xc2, 0x03, 0xb0, 0xf5, 0xa4, 0x78, 0xb9, 0x7b, 0x41, 0x9e, 0x2f, 0xb7,
+ 0xa5, 0x2c, 0x6d, 0x87, 0x00, 0x1f, 0x92, 0xd7, 0xe6, 0x47, 0x0c, 0x98,
+ 0x67, 0x6b, 0x34, 0xfa, 0x86, 0xaa, 0xd9, 0x3b, 0x14, 0x48, 0x6b, 0x6b,
+ 0x19, 0x6a, 0x80, 0x1f, 0x99, 0x69, 0xc8, 0x4a, 0xe2, 0xac, 0x36, 0x15,
+ 0x61, 0x07, 0x86, 0x4e, 0x5a, 0x1f, 0x47, 0x32, 0xb7, 0xda, 0x4f, 0x16,
+ 0x97, 0x2c, 0x7f, 0xc3, 0x34, 0x45, 0xd3, 0xe9, 0x93, 0x00, 0x72, 0xe1,
+ 0x1c, 0xe9, 0xd9, 0x61, 0xc7, 0x26, 0x80, 0x56, 0x30, 0x41, 0x5e, 0xb6,
+ 0x48, 0x39, 0x57, 0x06, 0x15, 0x6a, 0xe1, 0x66, 0x9a, 0xd3, 0x70, 0x78,
+ 0x74, 0xde, 0x67, 0x50, 0x39, 0x1f, 0x50, 0xce, 0x41, 0x28, 0x8a, 0xb6,
+ 0x10, 0x96, 0xb2, 0xf0, 0x36, 0xf5, 0x9f, 0x87, 0x25, 0x77, 0x53, 0x8d,
+ 0x93, 0xd7, 0x33, 0xf3, 0xe2, 0x6c, 0x45, 0x06, 0x27, 0x17, 0xfa, 0x72,
+ 0x05, 0xcb, 0x3a, 0xb0, 0x21, 0x22, 0x0c, 0xb2, 0x69, 0x04, 0xed, 0xac,
+ 0xd4, 0xf8, 0x1a, 0x58, 0x9b, 0xe8, 0x85, 0x20, 0xdb, 0x6d, 0x1d, 0x41,
+ 0xa6, 0xeb, 0xfd, 0x64, 0x9d, 0xb0, 0x51, 0xe8, 0x5f, 0x30, 0x54, 0xa9,
+ 0xf2, 0xb6, 0xde, 0x0f, 0xb5, 0xda, 0x75, 0x59, 0xf6, 0x75, 0xaa, 0xb7,
+ 0x25, 0xf1, 0x14, 0x70, 0xb1, 0x23, 0x59, 0x80, 0x80, 0x2c, 0x31, 0x16,
+ 0x0e, 0x53, 0x61, 0x07, 0xb9, 0x8b, 0x31, 0xa9, 0x03, 0x6c, 0x70, 0xdb,
+ 0x5c, 0x3b, 0xd5, 0x30, 0x58, 0xb0, 0x08, 0x87, 0xb6, 0xf8, 0xf5, 0xa9,
+ 0xc3, 0x44, 0x6e, 0xe1, 0xd6, 0x6b, 0x4d, 0xba, 0xe7, 0x96, 0x08, 0xe2,
+ 0x25, 0x56, 0x38, 0xf4, 0xbe, 0xe1, 0x14, 0x39, 0xba, 0xe7, 0x29, 0xb2,
+ 0x1b, 0x80, 0x9d, 0xdf, 0x91, 0x7a, 0xa5, 0x0e, 0x2c, 0x86, 0x63, 0x94,
+ 0xd8, 0x9b, 0x0a, 0x02, 0x4e, 0x04, 0xdb, 0x09, 0x00, 0xf8, 0x79, 0xf3,
+ 0x3b, 0x92, 0xce, 0x0c, 0x80, 0xf1, 0x79, 0xdd, 0x0c, 0xc8, 0x1f, 0xb4,
+ 0x3a, 0x8d, 0x5a, 0x32, 0x03, 0xd4, 0x23, 0xe5, 0x01, 0xb6, 0x32, 0x6b,
+ 0xe0, 0xaa, 0x38, 0x08, 0xa1, 0xaa, 0xb5, 0xb6, 0xec, 0x20, 0x86, 0xc8,
+ 0x6f, 0xce, 0x5b, 0x76, 0xd7, 0x72, 0x9b, 0x7a, 0x00, 0x37, 0xd6, 0x4f,
+ 0x9a, 0x5f, 0xda, 0x32, 0x49, 0x15, 0x10, 0x64, 0x23, 0xc8, 0x43, 0xf3,
+ 0x74, 0x72, 0x6d, 0xe4, 0xb2, 0x01, 0x22, 0x31, 0x7d, 0x04, 0x14, 0x84,
+ 0x7d, 0x76, 0x07, 0x4a, 0xf9, 0x72, 0x12, 0xde, 0x15, 0x2f, 0x13, 0xe7,
+ 0xa5, 0x41, 0xd0, 0x10, 0x6d, 0x3c, 0x19, 0x83, 0x12, 0xda, 0x44, 0x58,
+ 0x28, 0x80, 0x65, 0x65, 0xc1, 0x0d, 0xad, 0xbf, 0x2e, 0xe2, 0x91, 0x12,
+ 0xe4, 0x42, 0x8f, 0xb9, 0x0b, 0x9c, 0x4d, 0x9a, 0xbc, 0x3f, 0x19, 0xb9,
+ 0x24, 0x10, 0xd6, 0x8b, 0xa5, 0x20, 0x9e, 0x20, 0x7f, 0x46, 0x3d, 0x0a,
+ 0x7e, 0xf8, 0xd3, 0xc9, 0x71, 0xa4, 0xe2, 0x26, 0xe9, 0xda, 0x7b, 0xe6,
+ 0x2c, 0x41, 0xde, 0x46, 0x00, 0xb8, 0xfa, 0x32, 0x15, 0x13, 0x96, 0xf6,
+ 0x80, 0xdd, 0xc4, 0x2c, 0x68, 0xe7, 0x95, 0x9f, 0x09, 0xd4, 0x6d, 0xce,
+ 0x8c, 0xf2, 0x2f, 0x6c, 0xa2, 0x94, 0x00, 0x13, 0x8d, 0x5b, 0xab, 0x97,
+ 0xe3, 0x81, 0x97, 0x9a, 0xcb, 0x0c, 0x01, 0xd0, 0x31, 0xf9, 0x84, 0x14,
+ 0xe7, 0x9b, 0x30, 0xda, 0x63, 0xe3, 0xec, 0xf4, 0xec, 0x99, 0x90, 0x93,
+ 0xe4, 0x51, 0xb7, 0x9c, 0x87, 0x93, 0x84, 0xa4, 0x1f, 0x41, 0x6a, 0xa2,
+ 0x67, 0x6d, 0xf4, 0x27, 0x53, 0x57, 0xac, 0x48, 0x17, 0xa3, 0xb4, 0xd3,
+ 0x52, 0x74, 0x16, 0x53, 0x5c, 0x00, 0xed, 0x88, 0x31, 0xca, 0xea, 0xb4,
+ 0x61, 0x84, 0x11, 0x34, 0x0c, 0x75, 0xde, 0x2b, 0x19, 0x4a, 0x74, 0x7a,
+ 0x8b, 0x08, 0xf5, 0xd8, 0x7a, 0xc3, 0xa6, 0xb0, 0x99, 0x20, 0x2b, 0x83,
+ 0xaa, 0x67, 0xe7, 0x53, 0xce, 0xac, 0xae, 0xdb, 0xa9, 0xd5, 0x9c, 0x27,
+ 0x80, 0x22, 0x17, 0xe4, 0xa3, 0x05, 0x08, 0xd9, 0xaa, 0x9d, 0xd4, 0xe4,
+ 0x78, 0x0a, 0xe5, 0x24, 0xbb, 0x07, 0x07, 0x72, 0xfe, 0xc0, 0x0e, 0x29,
+ 0x8e, 0x19, 0xb4, 0xc9, 0xfb, 0x7d, 0x9f, 0x29, 0x44, 0xe0, 0xdb, 0xbd,
+ 0xe2, 0x5b, 0x9c, 0x8a, 0x64, 0x74, 0x59, 0x23, 0xa1, 0xd9, 0x95, 0x93,
+ 0x95, 0x12, 0x17, 0x8f, 0xcc, 0x9b, 0xfc, 0x3b, 0xe6, 0x97, 0x98, 0x0f,
+ 0x1c, 0xdb, 0x45, 0x3e, 0xa6, 0x65, 0x91, 0xff, 0x9d, 0xe2, 0xb9, 0x98,
+ 0xd5, 0x5f, 0x52, 0x58, 0x9d, 0xba, 0x80, 0x10, 0x84, 0x90, 0x37, 0xeb,
+ 0x35, 0x62, 0x8b, 0x64, 0x51, 0x22, 0x47, 0xf9, 0x26, 0xf3, 0xe3, 0x20,
+ 0xdb, 0x02, 0xd9, 0xee, 0x4e, 0x2b, 0x59, 0xbe, 0x55, 0xe3, 0x22, 0xea,
+ 0xea, 0x47, 0x15, 0x84, 0x4d, 0xb5, 0x76, 0xca, 0xa2, 0x73, 0x3c, 0x45,
+ 0xed, 0x42, 0xcd, 0xa5, 0x2f, 0x0e, 0xb2, 0xbf, 0xca, 0x80, 0x49, 0xd5,
+ 0x1d, 0x17, 0xf2, 0x03, 0x10, 0x74, 0xa9, 0x48, 0x48, 0x4d, 0x62, 0xcb,
+ 0x6b, 0x6c, 0x90, 0x74, 0x3d, 0xf1, 0xc3, 0xd4, 0xba, 0x45, 0x2e, 0x22,
+ 0x38, 0x12, 0x69, 0xf2, 0xec, 0x87, 0x1f, 0x92, 0x16, 0x34, 0xd7, 0x66,
+ 0x6b, 0xe3, 0x3c, 0x6f, 0xad, 0xd8, 0x46, 0xcc, 0x85, 0x1b, 0xe5, 0x09,
+ 0x4a, 0x00, 0x42, 0x5c, 0xe4, 0x74, 0x85, 0x56, 0x3c, 0xb4, 0x51, 0xc0,
+ 0x4d, 0x79, 0x95, 0x61, 0x1b, 0x98, 0x6c, 0xfc, 0xb0, 0x8f, 0xf0, 0x32,
+ 0x76, 0xf1, 0x13, 0x7d, 0x1b, 0xb8, 0xc8, 0x6e, 0x66, 0x44, 0xa3, 0xe8,
+ 0x62, 0xd1, 0x5a, 0xd5, 0xf6, 0x3a, 0x31, 0x42, 0xc0, 0x5d, 0x31, 0x8c,
+ 0x55, 0x25, 0xe9, 0x88, 0x18, 0x36, 0x00, 0x58, 0x22, 0x7e, 0xb8, 0x3c,
+ 0x0b, 0x0a, 0xaa, 0x90, 0xbd, 0xcd, 0xab, 0x06, 0x2b, 0xb1, 0xc6, 0x41,
+ 0xc0, 0x00, 0x1b, 0xf7, 0x29, 0x34, 0x00, 0x13, 0xa4, 0x84, 0x1a, 0xe6,
+ 0x40, 0x49, 0x03, 0xff, 0x98, 0x7a, 0xff, 0xfc, 0xbd, 0xc2, 0xe3, 0x31,
+ 0xa3, 0xc3, 0x1d, 0x4a, 0x87, 0x30, 0x2a, 0xa7, 0xd8, 0x23, 0x11, 0x26,
+ 0x20, 0x99, 0x1a, 0x4c, 0xfc, 0x7f, 0x76, 0xe5, 0x40, 0x6d, 0xc8, 0x1b,
+ 0x93, 0x5e, 0x90, 0x5d, 0x41, 0x2e, 0xfd, 0xa6, 0x5a, 0x62, 0x85, 0x48,
+ 0x0f, 0xa1, 0x1c, 0xaf, 0xd2, 0xe1, 0xf2, 0x90, 0x48, 0xa9, 0xe1, 0x10,
+ 0x00, 0xbe, 0xe7, 0x38, 0xe3, 0x39, 0x20, 0x48, 0x42, 0x87, 0xaf, 0xce,
+ 0x8c, 0x41, 0x15, 0x60, 0x53, 0x6b, 0x3b, 0x14, 0x07, 0x83, 0x79, 0x7a,
+ 0x3f, 0xc0, 0x63, 0x75, 0x00, 0xc1, 0xdc, 0x0a, 0xa3, 0x67, 0xf0, 0xbb,
+ 0x72, 0x26, 0x65, 0x58, 0xec, 0x9a, 0xa9, 0xba, 0x68, 0x23, 0xd9, 0x25,
+ 0xfe, 0x90, 0x48, 0xc8, 0x9c, 0xba, 0xaf, 0x8f, 0x2e, 0xba, 0x47, 0x0b,
+ 0xf9, 0x3c, 0xa2, 0x7b, 0x23, 0x84, 0x9c, 0x8a, 0x7b, 0x7c, 0xb8, 0xd8,
+ 0x74, 0xf6, 0x95, 0x69, 0xd9, 0x31, 0x02, 0xda, 0xb0, 0xe6, 0x10, 0x86,
+ 0x90, 0x83, 0xb6, 0x85, 0xc3, 0x02, 0x67, 0xd0, 0x9e, 0x09, 0x2a, 0x1a,
+ 0xf4, 0x6c, 0x7b, 0xa7, 0x6f, 0x7e, 0xec, 0xc2, 0x8c, 0xf5, 0x6c, 0xfb,
+ 0x99, 0xf5, 0xb7, 0xe8, 0x53, 0x81, 0x75, 0x7e, 0xca, 0x2f, 0x3a, 0x0b,
+ 0xff, 0xb3, 0xfb, 0x7b, 0x7c, 0xdc, 0xef, 0x66, 0xa2, 0xd6, 0x52, 0x65,
+ 0xe8, 0x11, 0x57, 0x84, 0x0e, 0xdc, 0xad, 0x38, 0xec, 0x51, 0xcb, 0x82,
+ 0xe3, 0x68, 0xc8, 0x96, 0x80, 0xb8, 0xf0, 0xe1, 0x6a, 0x8c, 0xa6, 0xa6,
+ 0x95, 0xfb, 0x49, 0x6b, 0xeb, 0xa3, 0x34, 0x19, 0x72, 0xa1, 0xf9, 0x6b,
+ 0x3f, 0x12, 0x65, 0x1e, 0x30, 0x46, 0x7a, 0x46, 0xf2, 0x18, 0xcd, 0x2a,
+ 0xdc, 0xbb, 0x35, 0xb2, 0x00, 0x57, 0x32, 0x11, 0xc3, 0x2c, 0x85, 0x15,
+ 0xa9, 0x4a, 0xbd, 0x0a, 0xfd, 0x6c, 0x8f, 0x22, 0x2b, 0xcd, 0xa9, 0xc0,
+ 0x0a, 0xeb, 0xaf, 0xbb, 0x1c, 0xb5, 0xc9, 0x7f, 0x3c, 0xf3, 0x55, 0x0b,
+ 0x2d, 0xe5, 0x14, 0x85, 0x30, 0xdf, 0xe7, 0xc2, 0x42, 0x9d, 0x50, 0x7f,
+ 0x3a, 0x83, 0xb4, 0x0b, 0x94, 0x02, 0x42, 0x82, 0xb4, 0x24, 0x11, 0x3b,
+ 0xbf, 0x25, 0x2b, 0x55, 0x91, 0x52, 0x01, 0xb4, 0x43, 0x40, 0x8a, 0xd3,
+ 0x0a, 0x52, 0x03, 0x9e, 0xe3, 0x41, 0x22, 0x5e, 0x67, 0xde, 0x66, 0x71,
+ 0x94, 0x4a, 0x4e, 0x02, 0x7b, 0x6c, 0x57, 0xe0, 0x9c, 0x30, 0x98, 0xb3,
+ 0x91, 0xed, 0x6f, 0xd3, 0x19, 0x03, 0xf3, 0xd8, 0xe8, 0xea, 0x4a, 0xc7,
+ 0xc4, 0x51, 0xb9, 0x2e, 0xa8, 0x89, 0xde, 0xfb, 0xc3, 0x93, 0x19, 0x0d,
+ 0x4f, 0x09, 0xdd, 0x2e, 0x34, 0x27, 0x06, 0x29, 0xd4, 0x12, 0xc7, 0x1f,
+ 0x4d, 0xd2, 0x04, 0xbb, 0x18, 0x40, 0xef, 0x7e, 0x6d, 0x44, 0x8e, 0x6c,
+ 0xba, 0xca, 0x0b, 0x8e, 0x28, 0xc8, 0xf4, 0x3e, 0x9f, 0x2f, 0xe7, 0x2e,
+ 0xc1, 0x0e, 0xef, 0xd9, 0x6a, 0x96, 0x0e, 0xe0, 0x95, 0x2b, 0xa1, 0xc6,
+ 0x68, 0x04, 0xc8, 0x6c, 0x2e, 0xdb, 0x17, 0xaa, 0x21, 0xe0, 0xc3, 0x14,
+ 0xa0, 0x42, 0xa2, 0xe2, 0x64, 0x01, 0x44, 0x4e, 0xa2, 0x2e, 0x10, 0x13,
+ 0x94, 0x06, 0x72, 0x30, 0x95, 0xf9, 0x30, 0xd7, 0x46, 0xbe, 0xc8, 0x74,
+ 0xdb, 0xd7, 0xa7, 0x2c, 0x1e, 0x63, 0x13, 0xec, 0x50, 0x51, 0x49, 0x94,
+ 0x23, 0x6a, 0xf0, 0x05, 0x5d, 0x07, 0x41, 0x20, 0xc8, 0xd8, 0x34, 0x71,
+ 0x97, 0x4f, 0x9b, 0x6b, 0x00, 0x2e, 0x6a, 0x4c, 0x13, 0x50, 0x40, 0xac,
+ 0xb0, 0x11, 0x49, 0xba, 0x89, 0x22, 0x63, 0xcb, 0x16, 0x61, 0x51, 0x13,
+ 0xc6, 0x36, 0xa1, 0xb0, 0x6f, 0xec, 0x03, 0x22, 0x26, 0xb7, 0xd8, 0xf8,
+ 0x62, 0xd3, 0xf8, 0x8d, 0xcc, 0xb7, 0xbc, 0x24, 0x24, 0xc5, 0x40, 0x7a,
+ 0xd4, 0x3c, 0x99, 0xa1, 0x9e, 0x09, 0x24, 0xe5, 0xdd, 0x30, 0x98, 0xd9,
+ 0xb7, 0xa2, 0x8f, 0x32, 0xe0, 0x14, 0x8e, 0x3f, 0x67, 0x69, 0x90, 0x7d,
+ 0x3e, 0xb9, 0xc9, 0x67, 0x81, 0x4d, 0x02, 0xbd, 0x9b, 0x6b, 0x6b, 0x7d,
+ 0xce, 0x29, 0x6e, 0xef, 0xd6, 0x25, 0x06, 0x84, 0x30, 0xd1, 0x32, 0x89,
+ 0xe7, 0xec, 0x0b, 0x36, 0xe2, 0xfa, 0x15, 0x77, 0xf3, 0xb5, 0x7b, 0xa8,
+ 0xd3, 0x9c, 0x0b, 0x01, 0x55, 0x23, 0x75, 0xbd, 0x97, 0xec, 0x6e, 0x6f,
+ 0x7f, 0x6b, 0x58, 0xec, 0x1c, 0x9b, 0xb2, 0xf3, 0x75, 0x74, 0x85, 0x78,
+ 0x81, 0x40, 0x43, 0x02, 0x4b, 0x92, 0xde, 0xc2, 0x94, 0x2c, 0x8b, 0xc6,
+ 0x05, 0x44, 0x0d, 0x03, 0x98, 0x2e, 0x3d, 0xeb, 0x5f, 0x74, 0xe3, 0x6c,
+ 0xd2, 0x29, 0x19, 0x1a, 0xbb, 0x18, 0x0b, 0x73, 0xa4, 0x1f, 0xd0, 0xce,
+ 0x5f, 0x9b, 0xdf, 0x32, 0x8f, 0x28, 0xd0, 0x4f, 0x24, 0xe7, 0xdc, 0xc8,
+ 0x1d, 0x84, 0x5e, 0xb7, 0xac, 0xa8, 0x54, 0x22, 0x02, 0x2c, 0x01, 0xfd,
+ 0x04, 0xe3, 0x67, 0xde, 0xb0, 0xdb, 0xa6, 0x28, 0x19, 0x4b, 0x04, 0x64,
+ 0xd1, 0xb4, 0xa6, 0x13, 0xb1, 0xc7, 0x11, 0x05, 0xe3, 0x86, 0xd7, 0x18,
+ 0xe4, 0xc1, 0x5f, 0x89, 0x3f, 0x62, 0x00, 0x7c, 0x08, 0xad, 0x4f, 0x91,
+ 0x21, 0xda, 0xfc, 0x9c, 0xb4, 0xee, 0x64, 0x89, 0x2e, 0xa5, 0x84, 0x09,
+ 0x69, 0x9d, 0xb0, 0x56, 0x62, 0x8e, 0x84, 0xd5, 0xbb, 0x10, 0x40, 0x4b,
+ 0x1a, 0x08, 0xb7, 0x0c, 0xc3, 0xea, 0x8c, 0x1e, 0x98, 0x91, 0x46, 0x5d,
+ 0x06, 0x89, 0x30, 0xb3, 0x05, 0x2c, 0xb6, 0xf6, 0x32, 0xf2, 0x06, 0x45,
+ 0x19, 0xbe, 0x13, 0xa0, 0x85, 0x53, 0xa2, 0xc8, 0xef, 0x68, 0x64, 0x02,
+ 0xae, 0x1d, 0xc3, 0x68, 0xbc, 0x36, 0x04, 0xfc, 0xc5, 0x8f, 0x54, 0x3c,
+ 0xf0, 0xe7, 0x48, 0x99, 0xc4, 0x54, 0x32, 0xa5, 0xe8, 0x28, 0x69, 0x3e,
+ 0x52, 0xe5, 0xaa, 0x78, 0xa0, 0x1d, 0x4e, 0xe7, 0xd5, 0x62, 0x85, 0xae,
+ 0xf8, 0x49, 0x3c, 0xd6, 0x56, 0x8d, 0xe5, 0x1b, 0x35, 0x81, 0xc6, 0xb4,
+ 0x80, 0xf2, 0x18, 0xff, 0x4b, 0x1b, 0xa2, 0x7b, 0xb1, 0x60, 0xf6, 0x84,
+ 0x80, 0xad, 0x2e, 0xd5, 0x4c, 0x52, 0xba, 0x45, 0x6c, 0x10, 0x13, 0x9a,
+ 0xd0, 0xf9, 0x8e, 0x97, 0xf5, 0x03, 0x61, 0x02, 0xb1, 0x73, 0xa0, 0x2e,
+ 0x2d, 0x30, 0x22, 0x16, 0x10, 0xc3, 0x0f, 0xe3, 0xbe, 0x08, 0xb6, 0x86,
+ 0x83, 0x7c, 0x9b, 0xd2, 0xdc, 0xf2, 0x69, 0x55, 0x19, 0x51, 0x4d, 0xb6,
+ 0x5a, 0x92, 0xd4, 0xcc, 0xd8, 0x49, 0xf5, 0x81, 0x39, 0xc8, 0x5a, 0xfd,
+ 0x4d, 0xdb, 0xcb, 0x45, 0x24, 0x50, 0x8b, 0xb2, 0x56, 0x03, 0xa8, 0xb0,
+ 0x56, 0x4a, 0xb8, 0xaa, 0x1f, 0x2a, 0x6e, 0x3e, 0xa6, 0x01, 0x9d, 0x10,
+ 0x97, 0x6d, 0x2b, 0x4c, 0x92, 0x14, 0xc7, 0xc2, 0x90, 0xa0, 0x82, 0xab,
+ 0x4f, 0x61, 0x45, 0x16, 0x72, 0xf2, 0x67, 0x87, 0x7e, 0xc7, 0x45, 0x53,
+ 0x20, 0x56, 0x7b, 0xaa, 0x54, 0x4d, 0x81, 0x0a, 0xa4, 0x29, 0x3a, 0x91,
+ 0xbc, 0x8c, 0x62, 0x59, 0xd3, 0x33, 0x25, 0x2b, 0x95, 0x6c, 0x4d, 0x68,
+ 0xaa, 0x72, 0xba, 0x9c, 0xc0, 0xc2, 0x42, 0x21, 0x69, 0x54, 0xe9, 0x7c,
+ 0xcc, 0x60, 0x5c, 0x9a, 0x1a, 0x4e, 0x4d, 0x5b, 0x79, 0xb8, 0xd3, 0x1c,
+ 0x6c, 0x85, 0x52, 0xa9, 0x08, 0x0f, 0xe2, 0x0f, 0x36, 0xfd, 0xd2, 0x3d,
+ 0x43, 0x3e, 0x3f, 0x8b, 0xdb, 0xda, 0x85, 0x4a, 0x2e, 0x2e, 0x57, 0x80,
+ 0x4f, 0xb3, 0x77, 0x91, 0xd4, 0x81, 0xfb, 0xc6, 0xc6, 0x54, 0xa4, 0x5c,
+ 0xb0, 0x1b, 0x92, 0xea, 0x57, 0x14, 0x07, 0xdb, 0x69, 0xcf, 0x87, 0x54,
+ 0x9e, 0xf7, 0x45, 0x40, 0x7f, 0xd4, 0x41, 0xf4, 0x4e, 0xef, 0x6a, 0xf0,
+ 0xac, 0x42, 0x2d, 0xfd, 0xbc, 0xaa, 0xcc, 0x8d, 0x14, 0x2a, 0xc2, 0x4c,
+ 0xa9, 0x24, 0x21, 0xc7, 0xc9, 0x28, 0x91, 0xc8, 0x03, 0xc3, 0x73, 0x86,
+ 0x1e, 0x5a, 0x96, 0xdc, 0xcd, 0x24, 0xb5, 0x13, 0x0e, 0x10, 0x8d, 0x54,
+ 0xeb, 0x22, 0x8c, 0x29, 0x47, 0x22, 0xf9, 0x5b, 0x39, 0x16, 0x05, 0x8f,
+ 0xe4, 0xd2, 0x58, 0x02, 0xd9, 0x25, 0x42, 0xb1, 0x0d, 0x8f, 0x35, 0xfc,
+ 0x9d, 0x43, 0x36, 0x68, 0x40, 0x45, 0xd6, 0x10, 0xb7, 0x41, 0xa0, 0x36,
+ 0x2c, 0x3d, 0x89, 0x94, 0xa5, 0x46, 0xe4, 0x2d, 0xf1, 0x00, 0xb2, 0xb4,
+ 0x75, 0x9a, 0xfb, 0x6c, 0xf8, 0x6c, 0x97, 0xd2, 0x7b, 0x7c, 0x66, 0x94,
+ 0x4e, 0x48, 0xdb, 0xaa, 0x13, 0x4d, 0x3f, 0x41, 0x56, 0x98, 0x70, 0x73,
+ 0xa9, 0x01, 0xbf, 0x14, 0x1e, 0x35, 0x08, 0xfd, 0xa0, 0xa2, 0x72, 0x64,
+ 0x84, 0x17, 0x57, 0x63, 0x01, 0x4d, 0x7b, 0xcb, 0x2a, 0x9d, 0x3c, 0x28,
+ 0x16, 0xad, 0x0b, 0xc1, 0xa2, 0x26, 0x4a, 0xa0, 0x47, 0xf0, 0xd3, 0x01,
+ 0xc4, 0x7a, 0x61, 0x07, 0x41, 0x5c, 0x3b, 0xaf, 0x19, 0xca, 0xa6, 0x53,
+ 0xf6, 0x46, 0x8e, 0xef, 0x40, 0x5b, 0x5b, 0xa1, 0x77, 0xfd, 0xa6, 0x2c,
+ 0xf7, 0x2a, 0x2f, 0x06, 0x2a, 0xd0, 0xbf, 0x96, 0x5f, 0x1e, 0x13, 0x00,
+ 0xf1, 0x86, 0x55, 0x01, 0x84, 0xaf, 0xca, 0xed, 0xac, 0xd6, 0xa7, 0x16,
+ 0xdd, 0x3e, 0xa2, 0xc1, 0x58, 0xc4, 0x1e, 0x69, 0xd5, 0x69, 0x16, 0x5e,
+ 0xf4, 0x0e, 0x0a, 0x4a, 0x4e, 0xca, 0x99, 0x35, 0x87, 0x45, 0x43, 0xd0,
+ 0x85, 0xaa, 0xb9, 0x5e, 0x14, 0xaf, 0x87, 0x0c, 0xaa, 0x33, 0x9a, 0x64,
+ 0xbf, 0x01, 0x2c, 0xb8, 0x64, 0x27, 0x06, 0x26, 0xe9, 0xe3, 0x77, 0xfb,
+ 0x67, 0x46, 0x30, 0x22, 0xf3, 0x20, 0x6e, 0xd5, 0xd1, 0x3b, 0x82, 0xc4,
+ 0x61, 0x53, 0x79, 0x7b, 0xf2, 0x8c, 0x62, 0x07, 0x01, 0xc0, 0x2b, 0xda,
+ 0xd4, 0x95, 0xdb, 0xc6, 0x1a, 0x3c, 0xd8, 0x5e, 0x38, 0xa9, 0x42, 0x46,
+ 0xb6, 0x3e, 0x82, 0xad, 0xdb, 0x7d, 0xf6, 0xf9, 0xf3, 0x3e, 0x7e, 0x7b,
+ 0xb1, 0xfd, 0x6a, 0x57, 0x3c, 0x9a, 0xc7, 0x47, 0x17, 0x6f, 0xbb, 0x1a,
+ 0x47, 0x65, 0x94, 0x35, 0xfe, 0x39, 0xc8, 0xd2, 0xea, 0x3a, 0xad, 0x1a,
+ 0x0a, 0x46, 0x1a, 0xd4, 0xf3, 0x66, 0x31, 0xd8, 0xde, 0x1e, 0x36, 0x86,
+ 0xa1, 0xb4, 0xea, 0xd0, 0x3e, 0x1f, 0x6e, 0x6f, 0xfe, 0x9e, 0x04, 0x44,
+ 0x16, 0xba, 0x01, 0x2d, 0x71, 0xf2, 0x7a, 0x45, 0x5d, 0xe3, 0x0d, 0x5a,
+ 0xc1, 0x4d, 0x2f, 0x30, 0x2c, 0x55, 0x68, 0x39, 0xbf, 0x8a, 0x74, 0x5e,
+ 0xb7, 0x63, 0x57, 0x1d, 0x01, 0x44, 0x2e, 0xec, 0xae, 0x73, 0x49, 0xf2,
+ 0x3a, 0x36, 0xd8, 0x3c, 0xd8, 0x3c, 0x6c, 0x72, 0x69, 0xb2, 0x54, 0x21,
+ 0xdf, 0x21, 0x41, 0x8a, 0x79, 0x30, 0x9a, 0xa0, 0x5c, 0x0b, 0xca, 0x41,
+ 0x95, 0x11, 0xb2, 0x0f, 0x5f, 0x42, 0x12, 0xa8, 0xa0, 0x05, 0x76, 0xbb,
+ 0xb3, 0xf2, 0xcd, 0x87, 0x2f, 0xda, 0xb5, 0x9f, 0xb1, 0x26, 0xe0, 0x7b,
+ 0xbf, 0x60, 0x4d, 0xda, 0x4b, 0xe2, 0x6e, 0x3e, 0x16, 0x29, 0x61, 0xb7,
+ 0x16, 0x7f, 0x58, 0x88, 0x67, 0x50, 0x2b, 0x86, 0xf6, 0xe3, 0xc3, 0xdc,
+ 0xee, 0x0e, 0xf3, 0x1e, 0x15, 0xb6, 0x60, 0x23, 0x7e, 0x0d, 0xf1, 0xfd,
+ 0x53, 0x34, 0x3f, 0x3c, 0xbe, 0xa1, 0x1a, 0xcc, 0xa6, 0x07, 0x02, 0x8d,
+ 0xbb, 0x51, 0x15, 0x3b, 0xf8, 0x2f, 0x63, 0xc2, 0x16, 0x1e, 0x75, 0xd6,
+ 0xbe, 0xbc, 0x9d, 0x4e, 0x06, 0xba, 0x04, 0x9f, 0xee, 0xb7, 0x81, 0x5c,
+ 0x22, 0x42, 0x30, 0xea, 0x6c, 0x51, 0xe6, 0x07, 0x8e, 0x8b, 0x9f, 0xe6,
+ 0x87, 0x82, 0x0b, 0x30, 0x49, 0x66, 0xf7, 0x08, 0xad, 0x33, 0x4a, 0xfd,
+ 0xcb, 0x67, 0xa1, 0x09, 0xfc, 0xf4, 0xe2, 0x68, 0x0f, 0x7a, 0x88, 0x4b,
+ 0x68, 0x52, 0x33, 0x15, 0xc7, 0xc1, 0x51, 0x3e, 0x35, 0x41, 0x8f, 0x10,
+ 0x30, 0xa9, 0x3f, 0x3b, 0xae, 0xb9, 0x14, 0xc1, 0xa3, 0x41, 0x3d, 0x68,
+ 0x76, 0x7f, 0x34, 0x2b, 0xb1, 0xc1, 0xb4, 0xc4, 0xb0, 0x35, 0x2e, 0x34,
+ 0xb1, 0x22, 0x8e, 0x97, 0x9c, 0xd5, 0x8b, 0x44, 0x59, 0x26, 0xcf, 0x60,
+ 0xa1, 0x98, 0x38, 0x58, 0x05, 0xb6, 0x2e, 0x2f, 0x2a, 0xfc, 0x9a, 0x55,
+ 0x41, 0xc8, 0x03, 0xd4, 0x6e, 0xf2, 0xd8, 0xd0, 0x62, 0x41, 0xca, 0x70,
+ 0x09, 0x09, 0x5d, 0xe2, 0xad, 0x26, 0x8b, 0xe6, 0x29, 0xe2, 0x1d, 0xd9,
+ 0xe8, 0xca, 0x36, 0xe9, 0xf6, 0x1d, 0xca, 0x31, 0x4b, 0x62, 0x1c, 0xff,
+ 0x06, 0xef, 0x50, 0xac, 0x3a, 0x28, 0x5b, 0x11, 0xc5, 0x9d, 0xc2, 0xfe,
+ 0x1a, 0x50, 0xbb, 0x8e, 0x4e, 0x83, 0x5d, 0x27, 0xf9, 0x22, 0xf7, 0x30,
+ 0x50, 0x6d, 0x70, 0x67, 0x98, 0xf9, 0x4d, 0x5e, 0x11, 0x34, 0x61, 0x0f,
+ 0x53, 0xe9, 0xd2, 0xc7, 0xb9, 0xed, 0x72, 0xf8, 0xc8, 0xd1, 0xf0, 0x07,
+ 0xe6, 0x8f, 0xab, 0x48, 0x6c, 0x8b, 0x5c, 0x54, 0xc8, 0x9a, 0x9e, 0x37,
+ 0xbe, 0x3b, 0x7f, 0xfb, 0x57, 0x9b, 0xb3, 0xb7, 0xd9, 0x8f, 0x1b, 0xd3,
+ 0x75, 0x06, 0x7e, 0xe1, 0x75, 0x2b, 0x41, 0x88, 0x48, 0xd1, 0x5a, 0x3b,
+ 0xf7, 0x47, 0x48, 0x6c, 0xd3, 0x12, 0x91, 0x3c, 0x1b, 0x54, 0xf3, 0x94,
+ 0x0a, 0x30, 0x8b, 0xd8, 0xff, 0x6c, 0xf8, 0x02, 0x8e, 0xa8, 0xb7, 0x07,
+ 0x2f, 0x9e, 0xed, 0xee, 0x6c, 0x0e, 0xc3, 0xdb, 0xe0, 0xc9, 0x69, 0xb6,
+ 0xb7, 0x2c, 0xbb, 0x5f, 0x10, 0xc1, 0x6c, 0x1c, 0xfd, 0x70, 0xf6, 0xde,
+ 0x9b, 0xa0, 0xdd, 0x93, 0x40, 0xac, 0xf3, 0x67, 0xc8, 0x5e, 0x47, 0x3b,
+ 0x47, 0x67, 0xec, 0x0c, 0xa8, 0x82, 0xd3, 0xee, 0x43, 0xc4, 0x87, 0xde,
+ 0xdb, 0x2a, 0xa7, 0x43, 0xd0, 0xa3, 0xf5, 0xe8, 0x9d, 0x18, 0xf9, 0xd5,
+ 0x28, 0x26, 0xa7, 0x04, 0xfa, 0x94, 0xf5, 0xba, 0x35, 0xd7, 0x9f, 0x87,
+ 0xfc, 0x4d, 0x0c, 0xd8, 0x50, 0x27, 0x23, 0x8a, 0xa4, 0xf2, 0x34, 0x07,
+ 0x6a, 0x61, 0x35, 0x01, 0x52, 0x80, 0xac, 0xf1, 0xb6, 0x16, 0x4d, 0xc6,
+ 0x86, 0x65, 0x18, 0x95, 0x27, 0x00, 0x81, 0xb1, 0x6e, 0x1b, 0xb9, 0x4f,
+ 0xfb, 0x8f, 0x40, 0x6a, 0xaa, 0xc4, 0xec, 0x4a, 0xc7, 0x84, 0xb5, 0xc6,
+ 0xac, 0x89, 0xdb, 0x0e, 0xa8, 0xa6, 0x1c, 0x1c, 0x23, 0x52, 0xd4, 0xcb,
+ 0x6a, 0xba, 0x9c, 0x9b, 0xf9, 0x7f, 0x65, 0x13, 0x79, 0x24, 0xf7, 0x80,
+ 0x35, 0xf6, 0x48, 0xb2, 0x40, 0xc6, 0x8e, 0xdf, 0x17, 0xdb, 0xad, 0xf6,
+ 0x86, 0x58, 0x05, 0x7f, 0x98, 0x14, 0xa6, 0xbd, 0x63, 0xa3, 0xb2, 0x49,
+ 0xfb, 0x87, 0x75, 0xb0, 0x6b, 0x73, 0xa3, 0x5b, 0xfb, 0xf7, 0x94, 0x2a,
+ 0xb2, 0x26, 0x25, 0xc9, 0xff, 0x89, 0xec, 0xf7, 0xc6, 0x87, 0xab, 0x64,
+ 0x2f, 0x3d, 0x97, 0x8c, 0x45, 0x9d, 0x2b, 0xba, 0xff, 0x85, 0x41, 0x12,
+ 0x3c, 0x50, 0x48, 0x5b, 0xef, 0xa4, 0x17, 0xcd, 0xc9, 0xd9, 0x00, 0x8b,
+ 0xb4, 0x29, 0xc0, 0x2c, 0xff, 0x3d, 0x4f, 0x36, 0x20, 0x96, 0x7d, 0xfe,
+ 0xe2, 0xf9, 0x26, 0x54, 0x7e, 0x1b, 0xa1, 0xb3, 0x19, 0x71, 0xbe, 0x61,
+ 0xd5, 0x96, 0xb5, 0x4d, 0x36, 0x9e, 0xe7, 0x28, 0xbb, 0x04, 0x3a, 0x77,
+ 0x69, 0x0c, 0xc8, 0xa4, 0x36, 0x27, 0x00, 0x16, 0x25, 0x89, 0x44, 0x08,
+ 0xec, 0x59, 0x08, 0x07, 0xe2, 0xaa, 0x4d, 0xc9, 0x86, 0x1c, 0x0e, 0x77,
+ 0x63, 0xd8, 0x34, 0x6f, 0x8e, 0x3d, 0xc7, 0xf5, 0x60, 0xd3, 0x18, 0x36,
+ 0xc9, 0x06, 0x16, 0xb3, 0x07, 0x43, 0xd7, 0xf0, 0xea, 0xa1, 0xa1, 0xf2,
+ 0x57, 0xe9, 0x5d, 0x44, 0xec, 0x0a, 0x10, 0x8b, 0xbf, 0xdc, 0x75, 0x49,
+ 0x0c, 0xb2, 0xd0, 0xc8, 0xaf, 0x9c, 0x89, 0x41, 0xb7, 0xa7, 0x5d, 0x48,
+ 0x0e, 0xc9, 0x05, 0x2c, 0x14, 0xed, 0xbf, 0xb6, 0x20, 0xf1, 0x3c, 0xae,
+ 0xfe, 0x58, 0x60, 0x6d, 0x9b, 0x67, 0x73, 0x85, 0x08, 0xe6, 0x5b, 0xbd,
+ 0xac, 0x5c, 0x19, 0x17, 0xb6, 0xe7, 0xf0, 0x15, 0x8d, 0xe0, 0xc0, 0x55,
+ 0x78, 0x0b, 0xae, 0x0a, 0xb0, 0x80, 0x03, 0xb4, 0x06, 0xb6, 0xa2, 0x6c,
+ 0x83, 0x25, 0x36, 0x3f, 0x6b, 0x57, 0xdc, 0x50, 0x88, 0x15, 0xd5, 0xdf,
+ 0x2d, 0x51, 0x86, 0xc5, 0x4c, 0xb8, 0xd3, 0xce, 0x32, 0xac, 0x18, 0x3c,
+ 0xd7, 0x33, 0x41, 0xba, 0x35, 0x54, 0x9b, 0x41, 0x98, 0x06, 0x92, 0x6c,
+ 0x60, 0xbc, 0x5b, 0x5b, 0x9b, 0x4f, 0x8e, 0x59, 0x1e, 0x7c, 0x6a, 0x8c,
+ 0x67, 0xac, 0x6e, 0xd0, 0xe2, 0x66, 0x0e, 0x95, 0xc7, 0x0d, 0x82, 0x3a,
+ 0xcd, 0x91, 0x18, 0x4b, 0xf4, 0xc3, 0xf1, 0x82, 0x36, 0xe0, 0xda, 0x48,
+ 0x42, 0xa1, 0x5d, 0x8a, 0xa7, 0xcc, 0xb3, 0x6b, 0x4f, 0x5c, 0x04, 0x57,
+ 0xce, 0x01, 0x17, 0x9e, 0xa0, 0x59, 0x10, 0x64, 0xbe, 0x9e, 0x05, 0x35,
+ 0xb9, 0x8a, 0x4e, 0x5d, 0x0a, 0x6f, 0x7e, 0xac, 0x09, 0x39, 0xa7, 0x32,
+ 0x1f, 0x0b, 0xc6, 0xbc, 0x50, 0xe7, 0x73, 0xc8, 0x8a, 0xf5, 0xe9, 0x4e,
+ 0x91, 0xb6, 0x10, 0xe1, 0x89, 0x1f, 0xa4, 0xc3, 0xa3, 0x0e, 0xe9, 0x90,
+ 0x36, 0x05, 0x6d, 0x42, 0x2b, 0x69, 0x71, 0x9b, 0x46, 0xcb, 0xbf, 0x71,
+ 0xf3, 0x66, 0xac, 0x36, 0xcd, 0x04, 0x73, 0x99, 0xf8, 0xc8, 0xea, 0x8c,
+ 0x03, 0x16, 0x58, 0xea, 0xc6, 0x9a, 0x69, 0x05, 0x32, 0x7c, 0xda, 0x5a,
+ 0xce, 0x3e, 0x1f, 0x52, 0xc4, 0xb0, 0xc7, 0x84, 0x60, 0x20, 0xe2, 0x3f,
+ 0x2a, 0xf6, 0x03, 0xf5, 0xc4, 0x0c, 0xab, 0x5d, 0x40, 0x9c, 0xb3, 0x86,
+ 0xc6, 0x76, 0xa1, 0x25, 0x28, 0x6d, 0xe8, 0xdd, 0xa0, 0x05, 0x59, 0x99,
+ 0x8a, 0xac, 0xa9, 0x26, 0x81, 0x61, 0x09, 0xe9, 0xa2, 0xec, 0xec, 0xa9,
+ 0xd9, 0x19, 0x49, 0x8b, 0x34, 0xc4, 0xc3, 0xa6, 0xfb, 0x8f, 0xf2, 0x4b,
+ 0x69, 0xb3, 0x0c, 0x36, 0xfd, 0x43, 0x11, 0x09, 0x26, 0x5f, 0xaf, 0x6d,
+ 0xf4, 0xbb, 0x04, 0x49, 0x11, 0x93, 0x64, 0x9d, 0x59, 0x25, 0xa0, 0xc4,
+ 0x79, 0xcb, 0x2d, 0x90, 0xf9, 0xc3, 0x22, 0x08, 0x2b, 0x9d, 0xd8, 0x48,
+ 0x2f, 0xce, 0x1c, 0x01, 0xc0, 0x01, 0x67, 0x55, 0xb8, 0xc0, 0x05, 0x28,
+ 0x07, 0x24, 0x05, 0xfb, 0xf8, 0x20, 0x5c, 0x88, 0x2b, 0x32, 0xba, 0xc0,
+ 0x88, 0x40, 0x86, 0x1b, 0xcc, 0x71, 0xc3, 0xdc, 0x0a, 0xc4, 0xcd, 0x9b,
+ 0xc5, 0xc6, 0xce, 0x26, 0xba, 0xd3, 0x9a, 0x24, 0x2b, 0xb2, 0x2c, 0xf9,
+ 0xaa, 0xd1, 0xe0, 0x2e, 0x2a, 0x43, 0xaa, 0x9e, 0x63, 0x78, 0x70, 0x09,
+ 0x8b, 0x9c, 0xe4, 0x3a, 0x90, 0x51, 0x2a, 0xd9, 0xa1, 0x1a, 0x29, 0x46,
+ 0xfe, 0xaf, 0x08, 0x71, 0x32, 0xb6, 0xd2, 0x82, 0xb2, 0x08, 0x6a, 0xae,
+ 0x0e, 0xb7, 0x91, 0x5b, 0x39, 0x99, 0xaf, 0x07, 0x2d, 0x99, 0x6a, 0x56,
+ 0x6f, 0x36, 0x1d, 0x20, 0x8d, 0xf2, 0xaa, 0x2a, 0x43, 0x0c, 0x4c, 0xca,
+ 0xc0, 0x92, 0x1b, 0x84, 0x3d, 0x58, 0xd1, 0x32, 0xb5, 0x3d, 0x4a, 0x78,
+ 0xe9, 0xd9, 0x1b, 0xde, 0xcb, 0xa9, 0xe9, 0xfa, 0x15, 0x5a, 0x5b, 0x1a,
+ 0x90, 0xe9, 0x7e, 0xf2, 0xf7, 0x65, 0x6e, 0xc8, 0x9a, 0xf6, 0x16, 0xe1,
+ 0x8c, 0xc8, 0x9f, 0xc8, 0x6c, 0x10, 0x80, 0xe1, 0x1e, 0x14, 0xe7, 0xc0,
+ 0xb9, 0x58, 0x64, 0xcf, 0x86, 0x4e, 0xaf, 0x54, 0x16, 0x29, 0xc7, 0x0b,
+ 0x63, 0xb3, 0x0a, 0x04, 0x80, 0xbf, 0x2d, 0x45, 0xdc, 0x44, 0x24, 0x1f,
+ 0xc7, 0x76, 0xb0, 0xe4, 0x4c, 0xac, 0x9d, 0xa9, 0x60, 0x55, 0x51, 0x96,
+ 0xf5, 0xf9, 0x03, 0x5d, 0x64, 0xeb, 0xed, 0xea, 0x2c, 0xeb, 0x35, 0x19,
+ 0x04, 0x9b, 0x75, 0x5d, 0x5f, 0x84, 0xeb, 0x3d, 0x52, 0xe0, 0x69, 0x55,
+ 0xd7, 0x4c, 0xda, 0xdc, 0x85, 0x6b, 0x9d, 0x1b, 0x77, 0x47, 0xf0, 0x7d,
+ 0x9f, 0x23, 0xca, 0xc7, 0x4b, 0x0a, 0x38, 0xe9, 0x34, 0x7d, 0xc8, 0xdc,
+ 0x9a, 0xa5, 0x02, 0x7e, 0x42, 0x8a, 0xc7, 0x21, 0x20, 0x90, 0x33, 0x39,
+ 0x6a, 0xca, 0xff, 0x9b, 0x0f, 0xa9, 0x04, 0xa3, 0x20, 0x2f, 0xa2, 0xee,
+ 0x6b, 0x1d, 0x0a, 0x75, 0x4b, 0xae, 0x05, 0xdf, 0x6f, 0x03, 0x6b, 0x77,
+ 0xa2, 0x13, 0xb9, 0x1b, 0x8a, 0x41, 0xf1, 0x9b, 0x8f, 0x39, 0xc7, 0xf1,
+ 0x3a, 0x3c, 0xb6, 0xf0, 0x90, 0xb3, 0xe6, 0xcb, 0x37, 0x8f, 0x98, 0x56,
+ 0xa5, 0x09, 0x0b, 0x69, 0x4f, 0x90, 0x82, 0xd7, 0xcb, 0xe2, 0xc6, 0x0c,
+ 0x21, 0x0c, 0x7b, 0x56, 0x27, 0x47, 0x4e, 0x67, 0xdb, 0x10, 0x08, 0xc0,
+ 0xcc, 0x1c, 0x5c, 0x03, 0xb7, 0x40, 0x60, 0x54, 0xb7, 0x10, 0x4b, 0x82,
+ 0x12, 0x21, 0xb1, 0xd1, 0xc9, 0x75, 0xc7, 0xa3, 0xb2, 0x0b, 0xf8, 0x58,
+ 0x7e, 0xa1, 0x57, 0x3f, 0xa1, 0xc8, 0xae, 0x10, 0x0e, 0x21, 0xf2, 0x28,
+ 0x67, 0x39, 0x2a, 0xcc, 0x0a, 0x14, 0x05, 0x35, 0x74, 0x06, 0x47, 0x76,
+ 0x59, 0x73, 0x4d, 0x33, 0xd9, 0x56, 0xa2, 0x52, 0x1f, 0x1d, 0x30, 0x32,
+ 0x12, 0xe1, 0xc3, 0x83, 0x48, 0x75, 0xbd, 0x8b, 0x2e, 0x0a, 0x62, 0xed,
+ 0xe3, 0xc3, 0xe2, 0xb5, 0x7e, 0x0b, 0x21, 0x96, 0x91, 0x06, 0x39, 0x34,
+ 0xbf, 0x89, 0x60, 0x26, 0x9b, 0x23, 0xb1, 0x61, 0x74, 0x8c, 0x72, 0xb6,
+ 0xe4, 0xb2, 0x4e, 0x64, 0x14, 0xa3, 0x34, 0x8d, 0x4d, 0x3d, 0x4d, 0x7c,
+ 0xfe, 0xd8, 0x70, 0xc1, 0x35, 0xd2, 0xf8, 0x22, 0x88, 0x81, 0x76, 0x22,
+ 0xe8, 0xdb, 0xb7, 0xf9, 0x72, 0x8c, 0xae, 0x6a, 0xef, 0xa4, 0x04, 0x78,
+ 0xcd, 0x2d, 0x10, 0x81, 0x7a, 0x5b, 0x2a, 0x9b, 0x0d, 0x2c, 0x48, 0xaa,
+ 0x4c, 0xf8, 0xeb, 0x61, 0x6d, 0xaa, 0x24, 0x1a, 0xb8, 0x9a, 0x49, 0x7e,
+ 0xd9, 0x00, 0x28, 0x1c, 0xd4, 0xd9, 0xa3, 0x41, 0x12, 0x8f, 0xc4, 0x04,
+ 0x46, 0xd7, 0xda, 0x15, 0xc9, 0x46, 0x38, 0x8a, 0x88, 0xfd, 0x32, 0x34,
+ 0x91, 0xd6, 0x1f, 0x30, 0xaa, 0xf9, 0x92, 0x1c, 0x0d, 0x81, 0xad, 0xd9,
+ 0xec, 0xca, 0x6c, 0xc9, 0xe8, 0xdb, 0xe4, 0xb4, 0x76, 0x22, 0x7a, 0x3a,
+ 0xa6, 0xcd, 0x19, 0x3f, 0xd8, 0x79, 0x6a, 0xea, 0x3a, 0x12, 0xcd, 0x55,
+ 0x9f, 0x0e, 0xc9, 0x43, 0x1f, 0xeb, 0xf4, 0xf3, 0x9d, 0xf0, 0xd6, 0x80,
+ 0x2c, 0xd8, 0x11, 0xe2, 0x63, 0x6d, 0xdc, 0x08, 0x3b, 0x51, 0x26, 0xbb,
+ 0x8c, 0xd8, 0x4c, 0xed, 0x60, 0x54, 0x5c, 0x27, 0x9b, 0x40, 0xaa, 0xc5,
+ 0xb6, 0xd9, 0x95, 0xc1, 0xaf, 0x6b, 0xc6, 0x49, 0xd9, 0x4e, 0x70, 0x32,
+ 0x47, 0xa7, 0x04, 0xbc, 0x75, 0x1c, 0x24, 0xe5, 0x48, 0xea, 0x61, 0xbe,
+ 0xd7, 0xc7, 0x92, 0x8d, 0xd1, 0xd9, 0xfb, 0xa3, 0xaf, 0x4f, 0x37, 0x9f,
+ 0x72, 0x2d, 0x90, 0x6a, 0x0e, 0x97, 0x1d, 0x82, 0x51, 0x70, 0xac, 0x70,
+ 0xc0, 0x23, 0x2d, 0xb1, 0xdb, 0xaa, 0xbc, 0x7f, 0xf0, 0xda, 0x8c, 0x05,
+ 0xdd, 0xf5, 0x39, 0xcd, 0x93, 0xcf, 0x2b, 0x03, 0xc6, 0xd9, 0xe1, 0xff,
+ 0xd2, 0x80, 0x7f, 0x96, 0xc0, 0x70, 0xe9, 0x7c, 0x3d, 0x1a, 0x0d, 0xf6,
+ 0xcf, 0x8e, 0x71, 0x13, 0x8f, 0x46, 0xe6, 0x97, 0x55, 0x88, 0xd4, 0xe0,
+ 0x65, 0x14, 0x4a, 0xf3, 0x5d, 0x3f, 0xf1, 0xc2, 0xfb, 0xe5, 0x4e, 0xcc,
+ 0x58, 0x60, 0xb6, 0x21, 0xfe, 0x2e, 0xa8, 0x9f, 0x3a, 0xe8, 0x5e, 0xb7,
+ 0x67, 0xc7, 0x5b, 0xe8, 0x0b, 0x7e, 0x0d, 0xac, 0x43, 0x3c, 0xa6, 0x6f,
+ 0x19, 0xd6, 0x57, 0xa2, 0x55, 0x45, 0xc6, 0x06, 0xe8, 0x53, 0xd9, 0x47,
+ 0x6a, 0xc4, 0x4f, 0x72, 0x00, 0x2f, 0x31, 0xb6, 0x48, 0x15, 0x56, 0x2f,
+ 0x62, 0x8b, 0xf1, 0xcd, 0x15, 0x74, 0xbd, 0x63, 0xc2, 0x87, 0x85, 0xd6,
+ 0xd6, 0x22, 0x37, 0xe2, 0x15, 0xfb, 0x8b, 0xbb, 0xc6, 0xbd, 0xf5, 0xc1,
+ 0x32, 0xd9, 0x43, 0x89, 0xcb, 0xac, 0xa0, 0xe2, 0xb5, 0x2d, 0xab, 0x99,
+ 0xb0, 0x60, 0x28, 0x0c, 0xf6, 0x42, 0x75, 0x69, 0x97, 0x66, 0x84, 0xcb,
+ 0xf8, 0xe8, 0xcc, 0x09, 0x25, 0xe9, 0x8a, 0xbd, 0x81, 0x1c, 0x9c, 0x3d,
+ 0xfd, 0xa7, 0x00, 0xce, 0xfa, 0x47, 0xc2, 0xcb, 0x1a, 0x7b, 0xec, 0x9a,
+ 0x17, 0x26, 0xe3, 0x32, 0xcc, 0xc4, 0xad, 0x61, 0x23, 0xc0, 0x2f, 0x0e,
+ 0xce, 0xbc, 0x30, 0x80, 0x7e, 0x68, 0xf5, 0x70, 0xe0, 0x2f, 0x92, 0xf5,
+ 0x5a, 0xd8, 0xd6, 0xe7, 0xc3, 0xc7, 0x2a, 0x06, 0x36, 0x9a, 0x50, 0xb1,
+ 0xea, 0xf6, 0xf3, 0x2f, 0x3f, 0x89, 0x45, 0x5d, 0x7d, 0xf5, 0xb9, 0x19,
+ 0x78, 0xb7, 0x9f, 0xfd, 0xb0, 0xb3, 0x34, 0x82, 0xd3, 0x94, 0x4f, 0xa3,
+ 0x99, 0x5a, 0xb2, 0x40, 0x5a, 0x64, 0x44, 0x96, 0x88, 0xf0, 0x75, 0x14,
+ 0x0b, 0xeb, 0xf8, 0xd0, 0x0c, 0x86, 0xe4, 0x30, 0x52, 0x40, 0xbf, 0x7a,
+ 0xb0, 0xf9, 0xe7, 0xa1, 0x00, 0xe9, 0xe2, 0x88, 0xf8, 0x3e, 0x41, 0x45,
+ 0x6c, 0xaf, 0x5c, 0x3a, 0x21, 0xe9, 0x79, 0x88, 0xd7, 0x12, 0x21, 0x25,
+ 0x38, 0x6c, 0x71, 0x00, 0x57, 0x22, 0x0e, 0x04, 0x1d, 0x5e, 0x2f, 0xb9,
+ 0x1e, 0xa6, 0xa0, 0xfc, 0xd8, 0x4a, 0x74, 0x55, 0x06, 0x47, 0x28, 0x0d,
+ 0xd8, 0x1b, 0x71, 0x50, 0xdc, 0x8e, 0x55, 0x72, 0x73, 0xe6, 0xe7, 0x92,
+ 0x82, 0x30, 0xae, 0xca, 0x1b, 0x73, 0x5a, 0xe9, 0x3d, 0xc8, 0xcd, 0xb4,
+ 0xf6, 0x2c, 0xc3, 0xa9, 0x6e, 0x69, 0x6e, 0x94, 0xa9, 0x75, 0x8c, 0x46,
+ 0x22, 0x50, 0x09, 0xd5, 0x5f, 0x92, 0xf5, 0x9c, 0x2c, 0xc4, 0x70, 0xeb,
+ 0xc8, 0xa7, 0x57, 0x80, 0x4e, 0x58, 0xd0, 0xa9, 0xae, 0xb4, 0x77, 0x4d,
+ 0x86, 0x1e, 0x6e, 0xc1, 0xc9, 0xff, 0xe7, 0xd1, 0x90, 0x25, 0x0b, 0x9f,
+ 0x86, 0x22, 0x7b, 0xde, 0x22, 0x26, 0x66, 0xfa, 0xaf, 0x0d, 0x55, 0x31,
+ 0x37, 0x27, 0xd3, 0x5c, 0xd7, 0x36, 0x8c, 0x92, 0x13, 0x03, 0x07, 0x47,
+ 0x03, 0x33, 0x35, 0xb4, 0x11, 0x8a, 0x4a, 0xe1, 0x20, 0x8e, 0xa9, 0xab,
+ 0x90, 0x23, 0x30, 0xa0, 0x7d, 0x66, 0xc6, 0xa1, 0x98, 0x81, 0x14, 0x13,
+ 0x7b, 0x6b, 0xb3, 0x66, 0x05, 0x26, 0x41, 0xfb, 0x03, 0x24, 0xb2, 0xdc,
+ 0xab, 0xb3, 0xf6, 0xaf, 0x3e, 0xd0, 0x07, 0xfa, 0x0a, 0x54, 0x0a, 0xc6,
+ 0x8d, 0xb7, 0x71, 0x32, 0x1c, 0xee, 0x6a, 0xf3, 0x69, 0xa9, 0x66, 0x8b,
+ 0xcf, 0x33, 0x18, 0xa3, 0x34, 0x39, 0xa2, 0xa0, 0x97, 0x88, 0x9e, 0xc3,
+ 0x15, 0xb5, 0x72, 0x9b, 0xc1, 0x93, 0x0b, 0xc6, 0x25, 0x3b, 0x25, 0x44,
+ 0x71, 0x4c, 0xd5, 0xe1, 0x60, 0xa1, 0x90, 0xb8, 0x9e, 0x6a, 0x4c, 0xe7,
+ 0xab, 0x1b, 0xb6, 0xe8, 0x0b, 0x70, 0x80, 0x7e, 0x60, 0xf1, 0xe2, 0xdf,
+ 0xba, 0x38, 0xef, 0x7e, 0xc2, 0x26, 0x24, 0xa8, 0x44, 0x1c, 0x4c, 0x19,
+ 0x9b, 0x6c, 0xe2, 0x3d, 0xe6, 0xbf, 0xb2, 0xf7, 0xf9, 0x76, 0x5f, 0x38,
+ 0x3e, 0x59, 0xed, 0xfc, 0x67, 0x10, 0x84, 0x14, 0xaa, 0x11, 0x80, 0xe4,
+ 0x2b, 0x1b, 0xfb, 0x64, 0xb7, 0xd0, 0xc3, 0xab, 0xe1, 0xf3, 0xcd, 0x16,
+ 0xbd, 0x34, 0xb3, 0x79, 0x57, 0x2e, 0x49, 0xde, 0x5f, 0x9c, 0xbc, 0x4b,
+ 0x02, 0x9b, 0x00, 0x2b, 0xcc, 0xb1, 0xef, 0x02, 0x63, 0x27, 0x62, 0xb1,
+ 0x29, 0x98, 0xdc, 0x08, 0x8f, 0xf9, 0x55, 0xc1, 0x80, 0x47, 0xef, 0xf2,
+ 0x49, 0x55, 0xd6, 0xe5, 0x25, 0xbb, 0x33, 0x55, 0xb9, 0x36, 0x5f, 0x1c,
+ 0x1f, 0x8f, 0x92, 0xbb, 0x6c, 0xac, 0x99, 0x56, 0x41, 0x68, 0x61, 0xc3,
+ 0xe4, 0x43, 0xd7, 0x67, 0x95, 0x67, 0x0d, 0x49, 0x1a, 0x6a, 0xd4, 0xa3,
+ 0xcc, 0x66, 0x7a, 0x27, 0x1b, 0x64, 0x85, 0xd1, 0x37, 0x33, 0xa8, 0x6e,
+ 0x84, 0xdf, 0x3f, 0x03, 0x57, 0x32, 0x02, 0x77, 0x19, 0xb1, 0xec, 0xf2,
+ 0x00, 0x94, 0xa5, 0x08, 0xd8, 0x3b, 0xdd, 0x15, 0xe3, 0xb4, 0xb6, 0xa0,
+ 0x4e, 0x39, 0x8a, 0x6f, 0x90, 0xac, 0x21, 0xe6, 0x98, 0x9b, 0x1c, 0xe9,
+ 0xf3, 0x41, 0x5a, 0xb9, 0xd4, 0x75, 0xec, 0xd8, 0x23, 0x8a, 0x69, 0x59,
+ 0xc1, 0x49, 0xe2, 0x81, 0x14, 0x03, 0xdf, 0x7f, 0x89, 0xf0, 0x4f, 0x70,
+ 0xcd, 0x87, 0x88, 0xc4, 0x7e, 0x5d, 0x0a, 0x66, 0x06, 0xaf, 0x34, 0x31,
+ 0x26, 0x4e, 0x0d, 0x44, 0x62, 0x86, 0xe0, 0xbe, 0x72, 0x3d, 0x21, 0xe5,
+ 0x24, 0x4f, 0x48, 0x78, 0xba, 0x1f, 0x2e, 0x3b, 0x49, 0x8c, 0xed, 0x87,
+ 0xf9, 0xd5, 0x0a, 0xe8, 0x79, 0x1b, 0xef, 0xec, 0x89, 0x98, 0x34, 0x1a,
+ 0x61, 0x97, 0x2a, 0x59, 0x06, 0x05, 0x4e, 0x62, 0x30, 0x1b, 0x2d, 0xc9,
+ 0xd2, 0x50, 0xdb, 0xf0, 0x71, 0xa5, 0xe3, 0x71, 0xb1, 0x12, 0x97, 0x9e,
+ 0x64, 0x8f, 0x6a, 0x52, 0x68, 0x60, 0x1d, 0x7d, 0x24, 0x45, 0xd4, 0xc9,
+ 0x8f, 0x34, 0x9f, 0xe1, 0x3f, 0xa3, 0x60, 0x9b, 0x3b, 0x6c, 0x25, 0x19,
+ 0x3b, 0xc4, 0x28, 0x10, 0xcd, 0x06, 0xf8, 0x9e, 0xf1, 0x8a, 0xc4, 0x6c,
+ 0x50, 0xca, 0x43, 0x7e, 0x02, 0x5e, 0xdd, 0x4c, 0xcb, 0x65, 0x63, 0x41,
+ 0xc3, 0xe9, 0x06, 0xe7, 0xcb, 0xfb, 0x3f, 0xfe, 0x2b, 0xcc, 0x47, 0xfa,
+ 0xf1, 0x67, 0x98, 0xae, 0x80, 0x4b, 0x61, 0x21, 0x1a, 0x94, 0x6c, 0x6a,
+ 0x57, 0x50, 0x83, 0x76, 0x88, 0xf0, 0x97, 0xc4, 0x29, 0x47, 0x12, 0x1f,
+ 0x65, 0x47, 0x74, 0x85, 0x53, 0x8d, 0xb9, 0xd6, 0x0a, 0x85, 0x32, 0x3a,
+ 0x65, 0xfc, 0xa8, 0xf2, 0x93, 0x7a, 0x56, 0x34, 0x55, 0x3e, 0x05, 0xa1,
+ 0x79, 0xba, 0x0a, 0xe0, 0x5b, 0x81, 0x5c, 0x04, 0x22, 0x59, 0xf1, 0x58,
+ 0x08, 0x41, 0x83, 0xfd, 0x3e, 0x98, 0x01, 0x5d, 0x2c, 0x88, 0xc6, 0xcc,
+ 0x8b, 0x10, 0xa7, 0x94, 0xf7, 0x56, 0xfc, 0x1b, 0xff, 0x61, 0x36, 0xa3,
+ 0xdf, 0xdc, 0x95, 0xff, 0x35, 0xa4, 0x88, 0x46, 0x70, 0xde, 0x41, 0xc9,
+ 0xb5, 0xab, 0x3f, 0xfe, 0x71, 0x87, 0x42, 0x88, 0x7a, 0x61, 0x4d, 0x6a,
+ 0x2c, 0x82, 0xee, 0xb3, 0x85, 0xb7, 0x59, 0x01, 0x8b, 0xda, 0xee, 0x8e,
+ 0x7a, 0xe9, 0xd3, 0x25, 0xf0, 0x5f, 0x43, 0xfa, 0xf9, 0xe3, 0xce, 0xe0,
+ 0xc5, 0xcf, 0xb6, 0xd7, 0x3f, 0xee, 0x7c, 0xfc, 0xe3, 0x6e, 0x2f, 0x16,
+ 0x22, 0x26, 0x79, 0x81, 0xed, 0x80, 0xbe, 0x1a, 0x45, 0x41, 0x25, 0x82,
+ 0x56, 0x84, 0x7f, 0xe7, 0xbc, 0x45, 0xc5, 0x93, 0x48, 0xda, 0x07, 0x59,
+ 0xa1, 0xe2, 0x10, 0x84, 0x52, 0xf5, 0x9d, 0xa3, 0xef, 0x5c, 0x79, 0x5c,
+ 0xcf, 0x1b, 0x2a, 0xd5, 0x62, 0x9d, 0x2b, 0x47, 0xcc, 0x99, 0x81, 0xe5,
+ 0x94, 0x92, 0x54, 0xa7, 0x0f, 0xe6, 0xa2, 0x63, 0x04, 0x53, 0x0b, 0x14,
+ 0xa0, 0xa2, 0xa3, 0x90, 0xad, 0xe0, 0x5e, 0x6d, 0xb8, 0x28, 0x28, 0xe0,
+ 0xb5, 0x6d, 0xc6, 0x2c, 0x13, 0xce, 0x24, 0xe4, 0x68, 0x7e, 0x2c, 0x32,
+ 0x29, 0x1d, 0x5e, 0x26, 0x76, 0x77, 0x80, 0xba, 0x30, 0xa2, 0xd1, 0xe3,
+ 0xe3, 0xb5, 0x95, 0xfa, 0xde, 0x29, 0x2e, 0x07, 0x24, 0x59, 0xc5, 0x99,
+ 0x7a, 0xd0, 0x18, 0x03, 0x2f, 0x23, 0xf9, 0xb5, 0x7b, 0xef, 0x6c, 0x9c,
+ 0x3a, 0x3d, 0x67, 0x96, 0xb5, 0xc0, 0xe3, 0xfd, 0x97, 0x3d, 0x6f, 0x78,
+ 0x96, 0x68, 0x95, 0x71, 0x43, 0x21, 0x4d, 0x88, 0xf0, 0x31, 0xdc, 0x8c,
+ 0x66, 0x51, 0x28, 0xd2, 0x37, 0x9b, 0xce, 0x2d, 0x9c, 0x98, 0x04, 0x74,
+ 0x27, 0x35, 0x17, 0xab, 0x21, 0xa5, 0x90, 0x61, 0x4c, 0xc9, 0xee, 0x2f,
+ 0xd0, 0xa5, 0x41, 0x9e, 0x82, 0x54, 0xa0, 0xed, 0x5b, 0xe8, 0xe4, 0x6c,
+ 0x56, 0x87, 0xb4, 0x71, 0x40, 0xae, 0x1e, 0xc2, 0x88, 0x6b, 0x90, 0x36,
+ 0xde, 0x77, 0xb3, 0xb4, 0x69, 0x89, 0xe9, 0xad, 0x73, 0xe1, 0xd8, 0x23,
+ 0xaa, 0x51, 0xf2, 0xab, 0x32, 0xbf, 0x87, 0x9d, 0xdb, 0xc3, 0x46, 0x1e,
+ 0xa5, 0xb6, 0x4c, 0x94, 0x4b, 0x2d, 0x74, 0x29, 0xf0, 0xb1, 0x64, 0x56,
+ 0xd4, 0x0f, 0x00, 0x87, 0xe2, 0xa4, 0x2f, 0x1d, 0x82, 0x8c, 0xc0, 0x73,
+ 0xa4, 0x08, 0xb0, 0x0b, 0x3d, 0xcb, 0x48, 0x5f, 0xf1, 0xc2, 0x04, 0xc2,
+ 0x6d, 0x42, 0x2c, 0xda, 0xcb, 0x59, 0x7a, 0xf5, 0x87, 0x28, 0xfc, 0xab,
+ 0xf8, 0x07, 0x89, 0x13, 0x01, 0xf6, 0x15, 0xfd, 0x02, 0x3f, 0xc1, 0x73,
+ 0x6d, 0x31, 0x32, 0x88, 0x99, 0x76, 0xce, 0x25, 0x3e, 0xfe, 0xb4, 0xbb,
+ 0x1d, 0xb2, 0x62, 0x07, 0x0a, 0xa4, 0x25, 0x7e, 0x88, 0x9c, 0x6a, 0xa5,
+ 0x27, 0x96, 0x27, 0x5d, 0x2d, 0x81, 0x0c, 0x39, 0x43, 0xe4, 0xd2, 0x1f,
+ 0x10, 0x31, 0x05, 0x3a, 0xae, 0xeb, 0x38, 0x1a, 0x7c, 0xfa, 0x6b, 0x59,
+ 0xcb, 0x53, 0x9c, 0xc5, 0xdc, 0x5e, 0x74, 0xe3, 0xef, 0x0e, 0xc6, 0x99,
+ 0xb9, 0x79, 0xba, 0x73, 0xdc, 0xe0, 0xd0, 0x52, 0x4e, 0x3c, 0x6f, 0xc7,
+ 0x50, 0x51, 0x5f, 0x5f, 0xe1, 0x9d, 0xe4, 0x02, 0x3a, 0x1d, 0xd1, 0xf5,
+ 0x29, 0x55, 0x0a, 0x4f, 0x76, 0x87, 0xdb, 0x22, 0xf8, 0x3d, 0x9a, 0xfe,
+ 0xca, 0xc8, 0x1a, 0xad, 0x36, 0xf4, 0x76, 0x46, 0xa5, 0x9e, 0xe2, 0x6f,
+ 0xcb, 0xa2, 0x0d, 0x77, 0x1f, 0x73, 0x73, 0x61, 0xbf, 0x45, 0xc2, 0xe7,
+ 0x78, 0x95, 0x56, 0x80, 0x92, 0x1e, 0x71, 0x31, 0xa7, 0x00, 0x06, 0x0f,
+ 0x16, 0xac, 0xc1, 0x32, 0x94, 0x32, 0xd0, 0xe0, 0xaa, 0xc2, 0x0c, 0x38,
+ 0xd7, 0x32, 0x5a, 0x19, 0xae, 0x62, 0x84, 0x68, 0xc4, 0x53, 0x95, 0x89,
+ 0x97, 0xac, 0xe9, 0x16, 0x7c, 0x3a, 0x7f, 0x7b, 0xd0, 0x69, 0xee, 0xe5,
+ 0x67, 0x2f, 0xb6, 0x7f, 0xcf, 0x78, 0x94, 0x56, 0xa1, 0x88, 0xc7, 0x0b,
+ 0xf1, 0xfc, 0x9a, 0x3a, 0x3c, 0x2b, 0x0b, 0xf1, 0x88, 0xe6, 0xf6, 0x29,
+ 0x75, 0x78, 0x6c, 0x19, 0x9e, 0x38, 0xfa, 0x40, 0x37, 0x4b, 0xd1, 0x45,
+ 0xfb, 0xf8, 0x35, 0x86, 0x50, 0x00, 0xb1, 0xf6, 0x6c, 0xa3, 0x88, 0xf8,
+ 0x5a, 0x16, 0x11, 0x1f, 0xab, 0x98, 0xc0, 0x21, 0xe9, 0xd9, 0xca, 0xcc,
+ 0x07, 0xa7, 0xef, 0xdf, 0x1f, 0x1d, 0xd8, 0xac, 0xd3, 0x9a, 0xa7, 0x69,
+ 0xf9, 0x5d, 0x6a, 0x11, 0x7e, 0xe2, 0x85, 0x78, 0x10, 0xc7, 0x2a, 0x4e,
+ 0x06, 0xee, 0xdf, 0xfc, 0x71, 0x27, 0x11, 0xba, 0xfa, 0x25, 0x13, 0x9f,
+ 0x84, 0xee, 0xcb, 0xdd, 0x10, 0x51, 0x41, 0xe3, 0xf5, 0x57, 0xc4, 0xa9,
+ 0xc5, 0xc9, 0xef, 0x60, 0xa1, 0x61, 0x0d, 0x16, 0x08, 0x8e, 0x5e, 0x05,
+ 0x16, 0xe9, 0xfb, 0xff, 0x4b, 0xf5, 0x57, 0xbe, 0x91, 0xe8, 0x85, 0x0e,
+ 0xc6, 0x6c, 0xa4, 0x54, 0x1a, 0x57, 0x27, 0x1a, 0x67, 0x5e, 0x5c, 0x43,
+ 0x18, 0x41, 0x61, 0xc9, 0xc1, 0x25, 0xe4, 0x51, 0x60, 0x6d, 0xed, 0xfc,
+ 0xde, 0xe3, 0xcc, 0xee, 0xef, 0xaa, 0x9a, 0x2a, 0x21, 0xea, 0x1a, 0xba,
+ 0x5d, 0x81, 0xbb, 0xf6, 0x2b, 0x4a, 0x9f, 0xac, 0x0e, 0xa1, 0xa0, 0xc2,
+ 0x31, 0x56, 0x40, 0x1b, 0x2c, 0xfa, 0xca, 0x11, 0x1a, 0xca, 0xbd, 0x9a,
+ 0xc5, 0x2c, 0xe8, 0x66, 0x74, 0x08, 0xb1, 0x65, 0x2a, 0x56, 0xd6, 0xb3,
+ 0x31, 0xb8, 0xb7, 0xef, 0xc6, 0x30, 0x19, 0x10, 0x93, 0x12, 0xc4, 0xc6,
+ 0x14, 0x03, 0x34, 0x65, 0x75, 0x7a, 0x2d, 0xee, 0x22, 0x98, 0xeb, 0x7c,
+ 0x26, 0x30, 0x12, 0x22, 0xe6, 0x0a, 0x76, 0x71, 0x77, 0x84, 0x02, 0x63,
+ 0x8f, 0xd5, 0x95, 0xe6, 0xe6, 0x06, 0x9f, 0x69, 0xce, 0x7f, 0xde, 0x48,
+ 0x3d, 0x53, 0xd4, 0xa7, 0xc0, 0x81, 0xb6, 0xb9, 0x40, 0xb5, 0x20, 0x5a,
+ 0x9b, 0x4e, 0x06, 0x81, 0x57, 0x76, 0x86, 0xdc, 0xd4, 0xaa, 0xa4, 0x03,
+ 0x04, 0xc9, 0x0e, 0x18, 0xe5, 0xee, 0x78, 0x78, 0xcb, 0xd0, 0xe1, 0x0e,
+ 0x91, 0xa0, 0x56, 0xab, 0xdc, 0xda, 0xf0, 0x77, 0x71, 0xd1, 0x30, 0xba,
+ 0x80, 0xa4, 0x7e, 0x89, 0x79, 0x5b, 0x39, 0x85, 0x88, 0x87, 0xa4, 0xb6,
+ 0xc6, 0x35, 0x32, 0x16, 0x70, 0x14, 0x5e, 0x45, 0x96, 0x4a, 0x57, 0xaa,
+ 0x29, 0x3d, 0x46, 0xdf, 0xae, 0xe5, 0xbd, 0x32, 0x00, 0x9a, 0x21, 0xaf,
+ 0xce, 0xd9, 0xb2, 0x52, 0xdb, 0x04, 0x79, 0x36, 0xaa, 0x4b, 0xe9, 0xd6,
+ 0xb2, 0xda, 0x42, 0xd0, 0x5f, 0x41, 0x39, 0xd2, 0x25, 0xe9, 0x4a, 0x5c,
+ 0xef, 0xba, 0x8c, 0xac, 0x21, 0x23, 0xef, 0x63, 0xc9, 0x4c, 0xd3, 0xc2,
+ 0xc2, 0xc5, 0xac, 0x31, 0x77, 0xd0, 0x13, 0x02, 0x5a, 0xc5, 0x98, 0x79,
+ 0x5a, 0xf5, 0xf6, 0xb8, 0x7b, 0xd8, 0x16, 0x40, 0xf2, 0x9f, 0xb8, 0x3a,
+ 0x1e, 0x0d, 0xfb, 0xc8, 0x51, 0x6d, 0x80, 0x87, 0xea, 0x0a, 0xd8, 0xea,
+ 0x52, 0x12, 0x94, 0x71, 0x1c, 0x16, 0x63, 0x32, 0xa3, 0x88, 0xde, 0x75,
+ 0x9f, 0x17, 0x68, 0x10, 0x34, 0xe2, 0x22, 0xcc, 0x42, 0x69, 0x9e, 0x70,
+ 0xab, 0x58, 0x7d, 0x5a, 0xdf, 0xd4, 0xab, 0x61, 0x86, 0x5a, 0x21, 0x1d,
+ 0x66, 0x74, 0x5e, 0x75, 0x0e, 0x6d, 0x95, 0x51, 0x5f, 0x1b, 0x7f, 0x94,
+ 0xb4, 0x57, 0xed, 0xe6, 0xec, 0x16, 0x05, 0x60, 0x61, 0x81, 0x56, 0x6a,
+ 0x8b, 0x74, 0x04, 0xda, 0x2a, 0x7f, 0x3d, 0xcc, 0x92, 0x1e, 0x95, 0xef,
+ 0xe8, 0xf9, 0xc9, 0x47, 0x92, 0xaf, 0xa7, 0xaf, 0x12, 0x16, 0x8d, 0x19,
+ 0xaa, 0x0b, 0x03, 0x0f, 0x25, 0x42, 0xbd, 0x1e, 0xc4, 0x3a, 0x44, 0x5b,
+ 0xb6, 0xf1, 0xa1, 0xc8, 0xef, 0xc1, 0x7f, 0x43, 0xd4, 0x3f, 0x3b, 0xef,
+ 0x47, 0x46, 0xa5, 0x05, 0xa1, 0x76, 0xb6, 0x87, 0x3b, 0xad, 0xd1, 0xe1,
+ 0x52, 0xa7, 0x50, 0x08, 0xbf, 0x9d, 0xc8, 0x5d, 0x18, 0xb3, 0xfa, 0xfa,
+ 0x1d, 0xcc, 0x1f, 0x86, 0x5e, 0x78, 0x4a, 0xd0, 0x85, 0x84, 0xb0, 0x74,
+ 0x5b, 0x1e, 0x78, 0xda, 0x88, 0x90, 0xda, 0x82, 0xa2, 0x79, 0x62, 0x25,
+ 0xd8, 0x35, 0xcd, 0xc6, 0xab, 0xbc, 0x3e, 0x8d, 0x0f, 0x68, 0x75, 0x39,
+ 0x76, 0xdb, 0xff, 0xff, 0x86, 0x60, 0xa7, 0x9e, 0xfe, 0xc3, 0xdc, 0xa5,
+ 0x5b, 0xc0, 0x18, 0xc3, 0x07, 0x03, 0x07, 0xac, 0xe4, 0xca, 0xed, 0x02,
+ 0x69, 0xc3, 0xec, 0x20, 0xad, 0x6f, 0x87, 0xd6, 0xcf, 0x04, 0xff, 0xa5,
+ 0xab, 0x78, 0xd1, 0xa9, 0xd0, 0x81, 0x7a, 0xef, 0x1d, 0xc4, 0x23, 0xdb,
+ 0xa6, 0xc5, 0x58, 0x19, 0x0c, 0xc4, 0x44, 0x3f, 0xc8, 0x16, 0x70, 0xf2,
+ 0xe2, 0x35, 0x30, 0x50, 0xb3, 0x42, 0x5e, 0xa8, 0x00, 0xbd, 0xf6, 0xe7,
+ 0x3f, 0x3b, 0x1e, 0xd5, 0x2e, 0x69, 0xb6, 0xf3, 0x6a, 0xf8, 0xc2, 0x19,
+ 0xaa, 0x18, 0x24, 0x20, 0xe9, 0xed, 0xfd, 0x88, 0xb4, 0x98, 0x9f, 0x07,
+ 0x3f, 0x9a, 0x3f, 0x7f, 0xee, 0x59, 0x46, 0x89, 0x38, 0xb1, 0x76, 0xf9,
+ 0x3d, 0x9b, 0xb4, 0x41, 0xcf, 0xd8, 0x70, 0x6a, 0xc8, 0x5c, 0xe4, 0x49,
+ 0xc4, 0x41, 0xe4, 0xc4, 0x6a, 0x9e, 0xa9, 0x18, 0xb1, 0x38, 0xbf, 0x1e,
+ 0xae, 0x76, 0xa2, 0x14, 0xbb, 0x96, 0x9a, 0xe0, 0xc5, 0x49, 0xd3, 0x78,
+ 0xb1, 0xaf, 0x3e, 0x58, 0xb2, 0x36, 0xdc, 0x31, 0xdb, 0x49, 0x35, 0x0d,
+ 0x9f, 0x39, 0xf4, 0x30, 0xd9, 0x57, 0x63, 0x08, 0x7f, 0xb0, 0x66, 0x41,
+ 0x74, 0x28, 0x0d, 0x54, 0x6a, 0xc5, 0x73, 0xb8, 0x02, 0xcb, 0x41, 0x99,
+ 0x8d, 0x24, 0xb2, 0x19, 0x97, 0x32, 0xc5, 0xfa, 0x86, 0x66, 0x28, 0x99,
+ 0xce, 0x09, 0x83, 0xb2, 0xad, 0x79, 0x42, 0x30, 0x46, 0xa6, 0xe9, 0xc1,
+ 0x04, 0x16, 0xae, 0x41, 0xd3, 0x2d, 0x79, 0x9f, 0x0a, 0x9a, 0xbd, 0x5e,
+ 0x5c, 0x57, 0xa6, 0xe1, 0x47, 0x40, 0x30, 0xcd, 0x53, 0xfc, 0x8c, 0xa5,
+ 0x5a, 0x0f, 0xe5, 0xf1, 0xf7, 0x54, 0x47, 0x18, 0x5d, 0x65, 0x45, 0x25,
+ 0xd0, 0x0b, 0xe6, 0xf4, 0x0e, 0x8a, 0xa3, 0x02, 0x00, 0x5e, 0xc3, 0x89,
+ 0x86, 0x2f, 0x77, 0x5e, 0x6e, 0x19, 0x46, 0xf2, 0x6c, 0xb8, 0x6b, 0xc3,
+ 0x37, 0xcc, 0x11, 0x33, 0x63, 0xe8, 0x5e, 0x9e, 0x7e, 0xa9, 0x59, 0x94,
+ 0xbd, 0x2b, 0x13, 0x0f, 0x50, 0x46, 0xae, 0x33, 0x97, 0xa6, 0x60, 0x36,
+ 0xdd, 0x0c, 0xc9, 0xe5, 0x4f, 0x04, 0x79, 0x21, 0xce, 0x45, 0x42, 0x22,
+ 0x0d, 0x8d, 0x45, 0x7d, 0x03, 0x4b, 0x29, 0x3d, 0x3d, 0xce, 0xcd, 0xed,
+ 0xdf, 0x94, 0x4b, 0xf8, 0x1f, 0xc9, 0xe1, 0xa1, 0x75, 0x7b, 0x08, 0x30,
+ 0x2c, 0x26, 0xcd, 0x5b, 0xfc, 0x15, 0x9e, 0x01, 0x8c, 0xda, 0xe3, 0x07,
+ 0x0f, 0x5d, 0x9c, 0x66, 0x4f, 0x2c, 0x0d, 0xc5, 0x07, 0xb8, 0x98, 0x09,
+ 0x5d, 0xc9, 0x93, 0x87, 0xee, 0x3d, 0xf2, 0x8d, 0xa1, 0xcc, 0x5b, 0x12,
+ 0xd9, 0xb5, 0xf8, 0xa9, 0x24, 0x9b, 0xb3, 0x8b, 0x34, 0xe5, 0xc5, 0x40,
+ 0xcd, 0x0f, 0x38, 0xc1, 0xe4, 0x03, 0x8e, 0x96, 0x8f, 0xd5, 0x8b, 0xf4,
+ 0xb3, 0x2c, 0xda, 0x00, 0xb2, 0x0c, 0x03, 0x42, 0xd8, 0xb3, 0xc0, 0x21,
+ 0x64, 0x05, 0xea, 0x4e, 0x0a, 0x12, 0x43, 0x19, 0x7c, 0x34, 0xb7, 0xe4,
+ 0xb1, 0xb2, 0x73, 0x82, 0xb4, 0xf3, 0xdf, 0x8f, 0x2c, 0x76, 0xff, 0x7f,
+ 0xb2, 0xf8, 0x67, 0x92, 0xc5, 0xab, 0x18, 0x59, 0x3c, 0xfb, 0xef, 0x47,
+ 0x16, 0xcf, 0xfe, 0x7f, 0xb2, 0xf8, 0x27, 0x92, 0xc5, 0xee, 0xcb, 0x76,
+ 0x7a, 0x1c, 0xd4, 0x49, 0x73, 0xc9, 0xa9, 0x56, 0x19, 0xc0, 0x8b, 0x33,
+ 0x61, 0x74, 0x21, 0x9d, 0x24, 0xcd, 0x4c, 0x60, 0x0d, 0x9d, 0x4a, 0x8a,
+ 0x5a, 0x4d, 0x04, 0xb4, 0xa7, 0x40, 0x7a, 0xa1, 0x45, 0x82, 0x00, 0x39,
+ 0xd3, 0xd9, 0x30, 0x39, 0xb3, 0x6f, 0x91, 0x91, 0x8f, 0x3e, 0x5b, 0x72,
+ 0x94, 0x45, 0x76, 0x09, 0x81, 0x0a, 0x72, 0x4a, 0x1f, 0x5f, 0x42, 0x8e,
+ 0x22, 0xab, 0xd1, 0x20, 0xc8, 0x8e, 0xa2, 0x57, 0xd4, 0xf9, 0x8f, 0x76,
+ 0x48, 0x03, 0x4d, 0x5d, 0x3a, 0x8b, 0x26, 0x51, 0xae, 0x1b, 0x69, 0x8a,
+ 0xa0, 0x81, 0x5d, 0xf1, 0x9f, 0x45, 0x95, 0x85, 0x85, 0x88, 0xee, 0xd9,
+ 0x31, 0xfe, 0x8f, 0xac, 0x2a, 0x13, 0x4d, 0xeb, 0x17, 0x2c, 0x36, 0x54,
+ 0xec, 0x52, 0x31, 0xc1, 0x7d, 0x48, 0xbd, 0x06, 0x5a, 0xc6, 0x9f, 0x51,
+ 0xc8, 0x90, 0xf1, 0xf7, 0x08, 0xe6, 0xc3, 0x26, 0xd7, 0x20, 0x4d, 0x3d,
+ 0x57, 0xab, 0x9b, 0x5b, 0x38, 0x95, 0x88, 0x11, 0xbe, 0x1f, 0x9c, 0x03,
+ 0x12, 0x5a, 0xc8, 0x70, 0xe0, 0x07, 0x1e, 0x5b, 0x45, 0xf3, 0x92, 0x01,
+ 0x88, 0x78, 0x38, 0xb6, 0x4e, 0xc7, 0x30, 0x22, 0xa7, 0x1f, 0x66, 0xc5,
+ 0x83, 0x06, 0x79, 0xb8, 0xd0, 0x00, 0x68, 0xce, 0xb7, 0xa2, 0xfd, 0xdb,
+ 0x62, 0x6f, 0x1a, 0xeb, 0x62, 0x87, 0x18, 0x0e, 0xa9, 0x3d, 0xe6, 0x26,
+ 0x12, 0x2d, 0xf7, 0xc6, 0x2e, 0x83, 0x04, 0xc3, 0xf9, 0x6b, 0xb1, 0x81,
+ 0x74, 0x1c, 0xf5, 0x8b, 0xa1, 0x3f, 0x6d, 0xf1, 0xd1, 0x65, 0xe0, 0xbc,
+ 0x5a, 0xb6, 0x6f, 0xd4, 0xcb, 0xf1, 0xdf, 0x88, 0x4b, 0x81, 0x30, 0x67,
+ 0x29, 0xb2, 0xd6, 0x5a, 0x25, 0x28, 0xa9, 0x1c, 0xcb, 0x72, 0x2c, 0x5e,
+ 0x9c, 0xb0, 0x39, 0xf3, 0x21, 0x3c, 0x76, 0xb6, 0xa2, 0x8d, 0xd0, 0x99,
+ 0x17, 0xf0, 0x13, 0x4c, 0xca, 0x8b, 0x5b, 0x09, 0xf6, 0x5d, 0xcf, 0x13,
+ 0xa9, 0x0b, 0xb5, 0x44, 0x28, 0xf8, 0x9b, 0x65, 0x57, 0x53, 0xa4, 0x58,
+ 0x8d, 0xcf, 0xa1, 0xc7, 0x57, 0xb6, 0x65, 0xa8, 0xb5, 0x4f, 0x5e, 0xd4,
+ 0xba, 0xff, 0x67, 0xfa, 0x27, 0xae, 0x30, 0xb5, 0xc0, 0x8f, 0x35, 0x98,
+ 0x8f, 0x1e, 0xc7, 0xd1, 0xc0, 0xeb, 0xab, 0x3a, 0x78, 0x43, 0xdf, 0x72,
+ 0x0f, 0x8f, 0xb7, 0x0d, 0x37, 0xe9, 0x2f, 0xe8, 0xe0, 0x43, 0xa1, 0x89,
+ 0xf3, 0x4a, 0xe6, 0x0b, 0x0b, 0xc3, 0x63, 0x54, 0xe3, 0xaa, 0xe0, 0x48,
+ 0x3c, 0x36, 0xe9, 0x89, 0x71, 0x27, 0xa1, 0x0c, 0x28, 0x42, 0x6b, 0x09,
+ 0x13, 0x3b, 0x08, 0xed, 0x9b, 0x18, 0x1f, 0xec, 0x55, 0xb4, 0xb7, 0x9c,
+ 0xee, 0x28, 0xb0, 0x9a, 0x1a, 0xb9, 0xb6, 0x28, 0x1b, 0x75, 0xd8, 0x25,
+ 0x53, 0xd2, 0x3c, 0x2a, 0xba, 0x1c, 0x22, 0x80, 0xec, 0xba, 0x11, 0x5a,
+ 0xda, 0x8b, 0x9a, 0xa5, 0x06, 0x97, 0x0b, 0xc2, 0x4d, 0x12, 0xa8, 0x0f,
+ 0x66, 0x68, 0x02, 0x01, 0xa5, 0x94, 0xcb, 0x3d, 0x77, 0x23, 0x5c, 0x10,
+ 0x7e, 0x81, 0x2b, 0xcf, 0x22, 0x84, 0xde, 0x96, 0x39, 0xe0, 0x6f, 0x91,
+ 0xbf, 0x39, 0xfc, 0xd4, 0x2a, 0xce, 0x6d, 0x33, 0x66, 0xdf, 0xab, 0x0a,
+ 0x97, 0xd6, 0x7e, 0x1a, 0x45, 0x18, 0x5e, 0x66, 0x75, 0x6e, 0xa3, 0x2b,
+ 0x51, 0xfe, 0xbf, 0x21, 0xe2, 0x22, 0xb5, 0x65, 0x87, 0xdc, 0x36, 0x60,
+ 0x94, 0x5c, 0x04, 0x85, 0x52, 0x3a, 0x26, 0x59, 0x04, 0x1b, 0xd4, 0xa1,
+ 0x49, 0x3f, 0x05, 0x27, 0xb1, 0x1b, 0xdc, 0x27, 0x9c, 0x70, 0xfd, 0xf4,
+ 0xad, 0x12, 0xb9, 0x54, 0xe4, 0x4e, 0xf1, 0x38, 0xa3, 0xc0, 0x52, 0xea,
+ 0xe5, 0x88, 0xac, 0xab, 0x15, 0x94, 0xcc, 0x40, 0x42, 0x77, 0xfe, 0xdb,
+ 0x15, 0x22, 0x2b, 0x18, 0xe9, 0x25, 0xc2, 0xa1, 0x9e, 0x98, 0xca, 0xfd,
+ 0xc3, 0x20, 0x2d, 0x1e, 0xc8, 0xc7, 0x16, 0x9d, 0x80, 0x4d, 0x3a, 0x46,
+ 0xfa, 0x92, 0x21, 0x9a, 0x9c, 0xeb, 0xc6, 0x74, 0xc2, 0x9a, 0x35, 0xd2,
+ 0x4b, 0x31, 0x96, 0xe7, 0xcb, 0xc0, 0xf8, 0x87, 0x47, 0xe9, 0x22, 0x67,
+ 0x14, 0xf8, 0xc6, 0xc1, 0x06, 0xaa, 0xf7, 0x47, 0x8e, 0x09, 0x63, 0x7e,
+ 0x09, 0xe8, 0x17, 0x68, 0x8b, 0xfc, 0x3e, 0x71, 0x4b, 0xfb, 0x96, 0x4d,
+ 0x57, 0xac, 0xa8, 0xea, 0xd2, 0xc0, 0xf0, 0xba, 0x45, 0x07, 0xf4, 0xeb,
+ 0x59, 0x6c, 0xca, 0xa8, 0xbf, 0xfa, 0xe8, 0x84, 0xa9, 0xf3, 0x95, 0x10,
+ 0x55, 0x89, 0x3f, 0x53, 0x9d, 0xd9, 0x2a, 0xbf, 0x09, 0x4f, 0x52, 0xe6,
+ 0xf8, 0x81, 0xd3, 0x61, 0xd0, 0x26, 0x60, 0x60, 0x89, 0xcd, 0xd0, 0xb2,
+ 0x78, 0x7d, 0x31, 0x04, 0x72, 0x30, 0x61, 0x18, 0x7f, 0x19, 0xb4, 0x97,
+ 0x9f, 0x93, 0xe3, 0xe0, 0xe4, 0xba, 0xee, 0x20, 0x65, 0x57, 0x62, 0x98,
+ 0xf8, 0xe0, 0xdb, 0xe8, 0x88, 0x06, 0x96, 0xb7, 0xd3, 0x16, 0x78, 0x8d,
+ 0xa6, 0x88, 0x0a, 0x7b, 0x84, 0xac, 0xfd, 0x55, 0xe2, 0x10, 0xb2, 0xee,
+ 0x08, 0xc4, 0x12, 0xfc, 0xeb, 0x16, 0x89, 0xfb, 0x8f, 0xac, 0x92, 0xf4,
+ 0x15, 0x85, 0xc2, 0xf5, 0x97, 0x29, 0x98, 0xd1, 0xaa, 0x74, 0x8c, 0xe8,
+ 0x59, 0x45, 0x57, 0x4f, 0x66, 0x66, 0x60, 0x8a, 0x41, 0x62, 0xb3, 0x37,
+ 0xe1, 0x47, 0xa7, 0x68, 0x07, 0xd4, 0x9a, 0x65, 0x57, 0x08, 0x5f, 0x31,
+ 0x10, 0x41, 0xca, 0x6e, 0x11, 0xc6, 0xa3, 0x5a, 0xb3, 0x8d, 0xbc, 0xfb,
+ 0xf4, 0xe9, 0x53, 0xac, 0xdf, 0x6f, 0xb9, 0xa7, 0x88, 0x32, 0x6d, 0xed,
+ 0x28, 0xba, 0x68, 0x4d, 0xe5, 0x51, 0x1f, 0xa7, 0x4c, 0x63, 0x67, 0xb8,
+ 0x0d, 0xde, 0x7b, 0xff, 0x80, 0x48, 0xab, 0x3d, 0xba, 0xc9, 0x7e, 0xee,
+ 0xb2, 0xe0, 0x0f, 0x56, 0x8c, 0xf7, 0xca, 0x07, 0xb3, 0x8b, 0x89, 0xde,
+ 0xd7, 0x91, 0x69, 0x29, 0x47, 0x07, 0xa3, 0x28, 0xd8, 0x38, 0xab, 0xeb,
+ 0x91, 0xe4, 0x8d, 0x57, 0x8e, 0x84, 0xf2, 0xc0, 0xf1, 0xf2, 0xce, 0xf6,
+ 0xe7, 0xdb, 0xd1, 0x00, 0x00, 0x08, 0x14, 0x1a, 0xef, 0x32, 0xc9, 0xbc,
+ 0x8a, 0x93, 0xb9, 0xab, 0x36, 0xe4, 0xf9, 0x8f, 0xd4, 0xf7, 0x47, 0x6e,
+ 0xb4, 0xd8, 0x3d, 0x00, 0xa7, 0x5a, 0x2e, 0xc6, 0x66, 0x31, 0xd0, 0x5a,
+ 0x88, 0x32, 0x75, 0x3e, 0x59, 0xbf, 0x8f, 0x75, 0x2e, 0x45, 0x92, 0xaa,
+ 0x9d, 0xa3, 0x9d, 0xfb, 0xa7, 0x75, 0xf1, 0x44, 0x79, 0x6b, 0xd3, 0xf5,
+ 0x25, 0x3c, 0x79, 0x70, 0xa7, 0xb5, 0x29, 0xcb, 0xf1, 0x23, 0xb5, 0x74,
+ 0xc8, 0x84, 0xc8, 0xf1, 0xaa, 0x8f, 0x96, 0xd1, 0xb1, 0xd9, 0x36, 0x1c,
+ 0xa6, 0x29, 0x31, 0xae, 0x41, 0xb9, 0xa5, 0x7f, 0x7e, 0x19, 0x9d, 0xbf,
+ 0xdb, 0xc4, 0x18, 0x4e, 0x83, 0xb1, 0xf8, 0x14, 0x14, 0xf2, 0xe9, 0x4a,
+ 0x7b, 0x96, 0x9e, 0x88, 0x6d, 0xf1, 0x99, 0xb5, 0xe8, 0x5a, 0x90, 0x5b,
+ 0xee, 0x97, 0x10, 0xf4, 0xdd, 0xc3, 0xa8, 0xb6, 0x2b, 0x21, 0x22, 0x02,
+ 0x97, 0x8e, 0x70, 0x25, 0xbf, 0xa6, 0x64, 0x04, 0xdf, 0x53, 0xb3, 0xb1,
+ 0x65, 0x10, 0xb1, 0x42, 0x85, 0x75, 0x96, 0x56, 0x46, 0xc6, 0xa2, 0xd0,
+ 0x34, 0x6f, 0x72, 0xff, 0x83, 0xda, 0x45, 0x59, 0x51, 0x57, 0xff, 0x20,
+ 0xe2, 0x07, 0xdc, 0x1a, 0xb1, 0x33, 0x70, 0x04, 0x98, 0x6a, 0xb2, 0xc1,
+ 0x57, 0xe3, 0xbc, 0xa9, 0x52, 0xa9, 0xcd, 0x22, 0xf5, 0x22, 0x3c, 0x37,
+ 0x25, 0xb2, 0xd1, 0xab, 0x84, 0x5e, 0x8b, 0xba, 0xc6, 0x86, 0xc9, 0xff,
+ 0x40, 0xa7, 0xf2, 0x36, 0x0b, 0x32, 0xf0, 0x8d, 0x7f, 0x75, 0xf4, 0xf6,
+ 0xf4, 0xfc, 0xa8, 0x8d, 0x8a, 0xc5, 0xc0, 0xf4, 0x8c, 0xca, 0xdf, 0x1d,
+ 0xdd, 0xdf, 0x28, 0x5d, 0xab, 0x85, 0xe8, 0xa1, 0x10, 0xf7, 0x67, 0xdf,
+ 0x1f, 0x7a, 0x1e, 0x0a, 0xad, 0x64, 0xe2, 0x01, 0x2e, 0x95, 0x91, 0xc2,
+ 0x3c, 0xe4, 0x67, 0xda, 0x74, 0xa0, 0xc8, 0x76, 0x7c, 0x0c, 0x45, 0x8b,
+ 0x48, 0x09, 0x95, 0xd8, 0x90, 0x2a, 0x52, 0xd7, 0x64, 0xb2, 0xb0, 0x8d,
+ 0x06, 0x5e, 0xca, 0x8c, 0x70, 0x8e, 0x91, 0x75, 0xa4, 0xb2, 0x4f, 0xca,
+ 0xa1, 0x90, 0x14, 0x1f, 0x39, 0x4c, 0xc2, 0x8e, 0x34, 0x46, 0x00, 0xbd,
+ 0xc4, 0x0c, 0x3c, 0x14, 0x5d, 0xc6, 0xd1, 0x70, 0xcc, 0x3a, 0x82, 0x50,
+ 0xb8, 0x7e, 0xf2, 0x37, 0x2e, 0x3a, 0x74, 0xc9, 0xa8, 0xbd, 0x6e, 0x21,
+ 0x23, 0x57, 0x95, 0xe9, 0x73, 0xa3, 0x26, 0x95, 0xd3, 0x1b, 0xaa, 0xfd,
+ 0x26, 0x51, 0xde, 0xbc, 0xfe, 0xe7, 0x75, 0xa7, 0x9d, 0x73, 0xc9, 0x81,
+ 0x78, 0x1e, 0x9f, 0x03, 0x23, 0xd8, 0x7c, 0x2a, 0xa0, 0x47, 0x67, 0x3c,
+ 0xd4, 0x7a, 0xb1, 0x71, 0x1f, 0xaa, 0x56, 0x83, 0x54, 0x5f, 0x87, 0xd6,
+ 0x37, 0x14, 0xbe, 0xa4, 0xad, 0xf0, 0x59, 0x63, 0xc8, 0x64, 0xf8, 0xf4,
+ 0x03, 0x53, 0x8a, 0x0b, 0x40, 0x40, 0xf1, 0x54, 0x29, 0x3f, 0xf5, 0x57,
+ 0xcd, 0xf8, 0x03, 0x74, 0x56, 0xfd, 0x50, 0x34, 0xf0, 0x2b, 0x33, 0xb8,
+ 0xc2, 0xa4, 0xac, 0xe0, 0x8a, 0x4f, 0x42, 0x32, 0xb6, 0xfb, 0x05, 0xf0,
+ 0x69, 0xb2, 0xdc, 0xbd, 0x7a, 0xf1, 0x8a, 0x0e, 0x1e, 0x42, 0x56, 0x24,
+ 0x2f, 0x5f, 0x52, 0x19, 0x90, 0x23, 0xd2, 0x1e, 0xf3, 0x20, 0x08, 0x76,
+ 0xa4, 0xb6, 0x44, 0x39, 0x18, 0x67, 0x33, 0xae, 0x7b, 0x30, 0xf2, 0x1a,
+ 0x19, 0x3e, 0x1a, 0x1b, 0xb2, 0x2a, 0xec, 0x83, 0x19, 0x9d, 0x94, 0xd7,
+ 0x31, 0xfb, 0x90, 0xde, 0x48, 0x74, 0x99, 0x9c, 0x06, 0x6e, 0xbc, 0xaf,
+ 0xbb, 0xff, 0xc8, 0xe8, 0x84, 0x14, 0x28, 0x84, 0xd0, 0x10, 0x26, 0x39,
+ 0xa0, 0x36, 0xfe, 0x75, 0xb3, 0x5d, 0xd8, 0x96, 0x9c, 0x99, 0x79, 0xb1,
+ 0xcc, 0x5a, 0xc8, 0x6f, 0xab, 0x9a, 0xbb, 0x04, 0xc3, 0x32, 0x8b, 0xd7,
+ 0xcd, 0xd4, 0xe3, 0x12, 0x93, 0x4d, 0xb9, 0x48, 0x52, 0xad, 0x56, 0x2a,
+ 0x7b, 0x1f, 0x06, 0x37, 0xa3, 0x34, 0x0f, 0xd2, 0x42, 0xc6, 0x8c, 0x91,
+ 0xaf, 0xd7, 0x97, 0x11, 0x39, 0x0a, 0x84, 0x77, 0x08, 0x35, 0x0a, 0xfe,
+ 0x05, 0x5c, 0xdc, 0x66, 0xae, 0xe6, 0xc2, 0x8c, 0xb0, 0xa6, 0xbf, 0xb7,
+ 0x59, 0x92, 0x20, 0xfc, 0xc8, 0x39, 0xd2, 0x28, 0x36, 0x1c, 0x65, 0x61,
+ 0x76, 0x96, 0x99, 0x19, 0x0a, 0x09, 0x53, 0xd6, 0xb9, 0x24, 0xb7, 0x60,
+ 0x75, 0xa2, 0x6d, 0x2a, 0xf6, 0x65, 0xc4, 0xad, 0x41, 0xdd, 0x3c, 0xb0,
+ 0x52, 0x9f, 0xcd, 0x09, 0x0c, 0x05, 0xa5, 0xa2, 0x11, 0xe7, 0x24, 0x25,
+ 0x9c, 0x90, 0x1a, 0x35, 0x08, 0x0b, 0x97, 0x33, 0x19, 0xbc, 0xb5, 0xf6,
+ 0x65, 0xd1, 0x01, 0xd4, 0x96, 0x45, 0x99, 0x52, 0x16, 0xb7, 0x89, 0x17,
+ 0x87, 0xa7, 0xb4, 0x92, 0xe2, 0x42, 0xe0, 0x9d, 0xeb, 0xab, 0x6a, 0xc1,
+ 0xa0, 0x19, 0x49, 0x24, 0x0b, 0xdf, 0x8f, 0x6b, 0xe4, 0x47, 0x95, 0x53,
+ 0xd8, 0xd2, 0x8c, 0xfc, 0xee, 0xf1, 0x61, 0x0b, 0x70, 0x89, 0xa3, 0xae,
+ 0xc7, 0x0f, 0xf1, 0xe6, 0x1c, 0xdc, 0x13, 0xc5, 0xe2, 0xb8, 0xbb, 0xc4,
+ 0x36, 0xe5, 0x24, 0xb8, 0xb1, 0x66, 0x5c, 0xe0, 0xbb, 0x78, 0x73, 0xd2,
+ 0x0a, 0x87, 0xf3, 0x70, 0x1b, 0xda, 0x30, 0x48, 0x45, 0x21, 0x6a, 0x89,
+ 0x18, 0x08, 0x68, 0x50, 0xbb, 0x09, 0x63, 0xe9, 0xae, 0xe7, 0xe5, 0x94,
+ 0xe3, 0x3c, 0x9e, 0x5c, 0x8b, 0x79, 0x39, 0xf5, 0xd8, 0xa6, 0x98, 0x2b,
+ 0x6b, 0x1f, 0x0c, 0x12, 0xed, 0x8c, 0x73, 0x1b, 0xee, 0x1b, 0x6f, 0xce,
+ 0x4d, 0x15, 0x62, 0x0d, 0x9a, 0xc7, 0x9b, 0xfe, 0x14, 0x8a, 0xa4, 0x9c,
+ 0x34, 0xde, 0x0c, 0xe8, 0x81, 0x78, 0x73, 0xe2, 0x79, 0x0e, 0x67, 0x46,
+ 0x76, 0x2b, 0x84, 0xa1, 0x3e, 0x3e, 0x33, 0x7e, 0x30, 0xd8, 0x64, 0xf3,
+ 0x21, 0x33, 0xf1, 0x60, 0x87, 0x57, 0xcf, 0x2c, 0xb6, 0xc3, 0x18, 0x41,
+ 0x77, 0x83, 0x35, 0x46, 0xa1, 0x4a, 0xa2, 0x8c, 0xdc, 0xe1, 0x90, 0xf1,
+ 0xea, 0x48, 0x04, 0xee, 0x23, 0x1b, 0x2c, 0xbd, 0x04, 0xab, 0x30, 0x2b,
+ 0xa4, 0x1e, 0xc6, 0x47, 0x46, 0x79, 0x20, 0xdc, 0xc9, 0xe6, 0xe3, 0xe3,
+ 0x0b, 0x32, 0x2b, 0xb4, 0x46, 0x17, 0xf0, 0x84, 0x2c, 0xb3, 0x90, 0x04,
+ 0x8a, 0xb4, 0x5d, 0xbd, 0x4b, 0x50, 0xa2, 0x56, 0x90, 0xbd, 0xeb, 0xcf,
+ 0x15, 0x43, 0x5a, 0x94, 0x39, 0x23, 0x4c, 0xdb, 0x18, 0x50, 0x7f, 0x88,
+ 0x49, 0xac, 0x68, 0x8e, 0x97, 0xe4, 0x15, 0x4c, 0x71, 0x7e, 0x43, 0x86,
+ 0x2a, 0x2b, 0x1a, 0x7c, 0x5c, 0x1d, 0x22, 0x03, 0x3a, 0xe6, 0xc7, 0x1d,
+ 0x1d, 0xf3, 0xac, 0x6c, 0xec, 0x97, 0x0d, 0xb6, 0x7f, 0x7a, 0xb7, 0xdb,
+ 0x5d, 0xda, 0x33, 0xd9, 0x1d, 0xdf, 0xe2, 0x6e, 0xaa, 0x9d, 0xd3, 0xaf,
+ 0xda, 0xb1, 0x5f, 0x02, 0xda, 0x82, 0x74, 0x90, 0xe8, 0xca, 0x8d, 0x5d,
+ 0xaa, 0x60, 0xbd, 0x62, 0x29, 0xe2, 0x29, 0x02, 0x41, 0xe7, 0x15, 0x17,
+ 0x6d, 0x57, 0x10, 0x7b, 0x6c, 0xc7, 0xea, 0xc5, 0x91, 0xa7, 0xdd, 0x10,
+ 0x99, 0xbf, 0xfb, 0x58, 0x75, 0xe1, 0x02, 0xad, 0x66, 0x78, 0xd2, 0x6b,
+ 0xe7, 0x40, 0x4c, 0x33, 0xaa, 0x0f, 0x28, 0xa4, 0x40, 0x59, 0x24, 0xdc,
+ 0x90, 0xf2, 0xbd, 0xc7, 0x08, 0x69, 0xe5, 0x1a, 0x57, 0xf3, 0x27, 0x0e,
+ 0xb9, 0x79, 0xc0, 0xcd, 0x8a, 0x82, 0x48, 0xbd, 0x59, 0x05, 0x27, 0x53,
+ 0x8e, 0xf1, 0x8a, 0x95, 0x5f, 0x35, 0x82, 0x16, 0x15, 0x3e, 0x36, 0x12,
+ 0x7a, 0x30, 0x36, 0x18, 0xaf, 0xac, 0x20, 0x39, 0x35, 0x1e, 0x3c, 0x4e,
+ 0x19, 0x6f, 0x4e, 0x86, 0xeb, 0xde, 0x93, 0xe5, 0xe9, 0x5b, 0xf0, 0x14,
+ 0x51, 0xe4, 0x49, 0x7f, 0x0e, 0x69, 0x43, 0x0f, 0xf8, 0x2f, 0x62, 0x10,
+ 0xa4, 0xae, 0xcd, 0xbc, 0x43, 0x38, 0xa8, 0x90, 0x65, 0x82, 0xc0, 0xa2,
+ 0xd7, 0xf8, 0x27, 0x1a, 0x4e, 0xbf, 0xa5, 0x1a, 0xd6, 0x16, 0x41, 0xd5,
+ 0x21, 0xe6, 0x12, 0x5e, 0x44, 0x62, 0x27, 0x04, 0x3f, 0x2c, 0xa1, 0x49,
+ 0x1b, 0x14, 0xc5, 0xc6, 0xe1, 0xd3, 0x24, 0x23, 0x50, 0x0a, 0x5f, 0x70,
+ 0xa9, 0x9b, 0xb5, 0xd9, 0x94, 0x6a, 0x63, 0x50, 0xd5, 0xb7, 0x8c, 0xaa,
+ 0xde, 0x57, 0x6d, 0x4c, 0xe4, 0x25, 0x0d, 0x4e, 0xa4, 0x4f, 0x52, 0x49,
+ 0x33, 0x4e, 0x80, 0x92, 0xd7, 0xf5, 0x00, 0x9f, 0x53, 0xbf, 0x75, 0x98,
+ 0x24, 0x01, 0x6f, 0xaf, 0x93, 0xe4, 0x09, 0x43, 0x38, 0x58, 0xc0, 0xed,
+ 0xc1, 0xf3, 0x57, 0xaf, 0x5a, 0x57, 0x9a, 0xaf, 0x37, 0xbf, 0xd8, 0xde,
+ 0x66, 0x64, 0xe5, 0xee, 0x6b, 0xe6, 0x8b, 0xc1, 0x2b, 0xbc, 0xd8, 0x7e,
+ 0x8d, 0x51, 0xfd, 0x57, 0xbf, 0x37, 0xa0, 0x6f, 0x22, 0xdd, 0x41, 0xbb,
+ 0x5f, 0xf9, 0xd6, 0x2b, 0xea, 0x2e, 0xf2, 0x16, 0x1e, 0xe6, 0x75, 0x2c,
+ 0x2f, 0x2f, 0x09, 0x56, 0x94, 0x9e, 0xe4, 0x02, 0xdf, 0x65, 0x75, 0x97,
+ 0x56, 0xd3, 0x70, 0xba, 0xdb, 0xfd, 0xc1, 0xce, 0xaa, 0xe9, 0xc2, 0x22,
+ 0x40, 0x23, 0xc1, 0x76, 0x92, 0x02, 0x65, 0x84, 0xe7, 0x8d, 0x6f, 0x36,
+ 0x63, 0xb3, 0xff, 0x6c, 0x7b, 0xbb, 0xff, 0x92, 0xfe, 0x7d, 0xf5, 0x6a,
+ 0xa5, 0xbb, 0xca, 0xf5, 0xf1, 0x4c, 0xa7, 0xd6, 0x1a, 0xad, 0x69, 0x27,
+ 0xd2, 0xfa, 0x8e, 0x69, 0x75, 0xe7, 0xd5, 0xab, 0x3e, 0xf5, 0xf2, 0xe2,
+ 0x93, 0x5a, 0x6f, 0xee, 0x4a, 0x67, 0x67, 0xa1, 0xd7, 0x1d, 0x39, 0xd6,
+ 0x9d, 0x19, 0x90, 0x36, 0x40, 0x0e, 0x51, 0x42, 0x9b, 0x4e, 0x3c, 0x1c,
+ 0x29, 0x17, 0xf2, 0xed, 0x57, 0x11, 0x44, 0xd8, 0xc0, 0x02, 0xd8, 0x00,
+ 0x50, 0x30, 0x59, 0x61, 0x49, 0x5d, 0xc0, 0x85, 0x9a, 0xf6, 0x5d, 0x4a,
+ 0xd6, 0x29, 0xdb, 0xd1, 0xae, 0xf2, 0xc6, 0x21, 0x07, 0xd4, 0xc9, 0x86,
+ 0x21, 0x17, 0x46, 0x2c, 0x65, 0x48, 0x64, 0xf1, 0x74, 0xae, 0x23, 0x34,
+ 0x90, 0x41, 0xcd, 0xd6, 0x49, 0x99, 0xa0, 0xbc, 0xd6, 0x3c, 0x9b, 0x4d,
+ 0xad, 0x0b, 0x50, 0x13, 0x7c, 0xf8, 0xc9, 0x01, 0x3f, 0xc3, 0x07, 0x0d,
+ 0x5a, 0xe0, 0xbd, 0x54, 0xc7, 0xa3, 0xc0, 0x8c, 0x4e, 0xaf, 0x89, 0xc5,
+ 0xa4, 0x76, 0x39, 0x00, 0x5c, 0x88, 0x06, 0x81, 0x80, 0x6e, 0x9a, 0xeb,
+ 0xb5, 0x57, 0x8d, 0x4d, 0xad, 0x4b, 0x7e, 0xbd, 0xea, 0x69, 0xa6, 0x45,
+ 0x8e, 0x3a, 0x30, 0x7a, 0xf6, 0x7d, 0x36, 0xe1, 0x2c, 0xab, 0x0e, 0x12,
+ 0x10, 0x12, 0xbc, 0x34, 0x9f, 0x9c, 0xd3, 0x3b, 0x49, 0xab, 0xbd, 0x4b,
+ 0xab, 0x4c, 0x91, 0x30, 0x8c, 0xb2, 0xad, 0x1c, 0xc0, 0x56, 0x2f, 0x95,
+ 0xf4, 0x0a, 0xc1, 0x2b, 0x73, 0xe9, 0x33, 0x5a, 0x8b, 0x8a, 0xfd, 0x9e,
+ 0x5a, 0xba, 0x32, 0x95, 0x04, 0x1e, 0x8e, 0x80, 0x6c, 0x45, 0xe2, 0xd3,
+ 0x7d, 0x43, 0xcc, 0x43, 0x63, 0x1f, 0xb9, 0x4a, 0xc8, 0x5a, 0x27, 0xfc,
+ 0xfe, 0x2a, 0xe3, 0xf0, 0x76, 0x2e, 0xbb, 0xa1, 0x39, 0xc7, 0x6e, 0x16,
+ 0x60, 0x47, 0x80, 0xe9, 0xa1, 0xdf, 0x78, 0xf1, 0x5d, 0xc9, 0x2c, 0xb5,
+ 0x33, 0xc0, 0xbc, 0xca, 0x35, 0x4c, 0x80, 0x97, 0xd7, 0xda, 0x31, 0xb3,
+ 0x57, 0x96, 0x09, 0x9a, 0x4d, 0x4b, 0x36, 0xbc, 0x08, 0x08, 0xd0, 0x96,
+ 0xa7, 0x77, 0x6b, 0x75, 0x9b, 0x92, 0xdd, 0xf9, 0x9b, 0x43, 0x1e, 0x00,
+ 0x3c, 0x4d, 0xbc, 0x13, 0xc0, 0x33, 0xf4, 0xb7, 0x34, 0xbb, 0x6f, 0x50,
+ 0x90, 0x0a, 0x4f, 0xea, 0xbd, 0x34, 0x3a, 0xfe, 0x9f, 0x47, 0xc3, 0xdf,
+ 0x22, 0x4e, 0xb7, 0x63, 0x69, 0x3c, 0xf7, 0x72, 0x12, 0xe9, 0xb5, 0x28,
+ 0x84, 0x38, 0x67, 0x99, 0x7a, 0x67, 0xcb, 0xe9, 0xdf, 0x5e, 0xb4, 0x2e,
+ 0x68, 0x06, 0x09, 0xb5, 0x16, 0xa5, 0x34, 0x28, 0xad, 0xda, 0xa4, 0xf3,
+ 0x45, 0x24, 0x95, 0xb5, 0xaf, 0x00, 0x9f, 0x0a, 0x55, 0x4a, 0x36, 0x0e,
+ 0x1b, 0x17, 0x22, 0x81, 0xd0, 0xa1, 0x2c, 0xe2, 0xe5, 0xd8, 0xf2, 0xb6,
+ 0x53, 0x5d, 0x56, 0x12, 0x98, 0xb0, 0x00, 0xd4, 0x97, 0x6f, 0x32, 0xa6,
+ 0x9b, 0xd8, 0xe8, 0xa4, 0x78, 0x3c, 0x9a, 0x04, 0xcf, 0x98, 0x37, 0x7e,
+ 0xe6, 0xa0, 0x15, 0x87, 0x78, 0x7e, 0xb3, 0x4c, 0xe1, 0x39, 0xe0, 0x67,
+ 0xf1, 0x2b, 0x10, 0x45, 0xb2, 0x0f, 0x6a, 0x73, 0xe1, 0x57, 0x9c, 0xde,
+ 0xc7, 0x5d, 0x03, 0x49, 0x8f, 0x15, 0x08, 0x46, 0xe5, 0xab, 0x1d, 0xde,
+ 0x2a, 0x20, 0xa7, 0xb4, 0xb4, 0x21, 0x3f, 0x1e, 0xd4, 0xef, 0x26, 0x98,
+ 0x09, 0x18, 0x17, 0x08, 0x8b, 0xc0, 0x45, 0x6f, 0xd7, 0x61, 0xb9, 0x93,
+ 0xec, 0x6a, 0xea, 0x03, 0xb8, 0xb5, 0x57, 0xe1, 0xce, 0x86, 0xa8, 0xd9,
+ 0x02, 0xc8, 0x70, 0x30, 0xd8, 0xc8, 0x89, 0x74, 0x26, 0x56, 0x0b, 0x42,
+ 0x22, 0x83, 0xf1, 0xdd, 0xe6, 0xa0, 0xc2, 0x86, 0x16, 0xcc, 0xb4, 0x41,
+ 0xe2, 0x9b, 0x57, 0xfa, 0x0b, 0xa9, 0xa6, 0x48, 0x85, 0x82, 0x48, 0xaf,
+ 0x67, 0x53, 0x52, 0x2e, 0xc4, 0x34, 0x49, 0xa1, 0xc0, 0x28, 0x7a, 0x18,
+ 0xe0, 0x36, 0x98, 0x7e, 0x51, 0xab, 0xbc, 0x6f, 0x56, 0xe2, 0x2e, 0x28,
+ 0xb1, 0xd7, 0xf2, 0xae, 0x7a, 0xe9, 0xb4, 0x14, 0xd4, 0xf1, 0x58, 0x66,
+ 0x13, 0x1b, 0x30, 0xdb, 0xc1, 0x23, 0x29, 0x67, 0x6e, 0xd2, 0xa2, 0xd2,
+ 0xac, 0x6d, 0x16, 0x73, 0x1d, 0xb5, 0xd4, 0x4e, 0xb3, 0x54, 0xe1, 0x20,
+ 0xcc, 0xa6, 0x1a, 0x72, 0x0d, 0x53, 0x7a, 0xef, 0xb2, 0x2a, 0x73, 0x00,
+ 0xa9, 0x88, 0x9c, 0x32, 0xa7, 0x6f, 0x98, 0x8c, 0x4a, 0xf3, 0x7c, 0xa4,
+ 0x04, 0x92, 0x66, 0x33, 0xb4, 0x00, 0x13, 0x31, 0x1c, 0x57, 0xa4, 0x98,
+ 0x92, 0x77, 0xd9, 0x00, 0xdc, 0x9e, 0x6f, 0x04, 0x63, 0x89, 0x0c, 0xb5,
+ 0xe3, 0xcc, 0xee, 0xaa, 0xc5, 0x16, 0x63, 0x86, 0xd3, 0x1b, 0x18, 0x3a,
+ 0x1b, 0xf4, 0x24, 0xb3, 0x94, 0xe0, 0x9f, 0xbc, 0xe6, 0x1e, 0x4b, 0xd3,
+ 0xda, 0x79, 0xd5, 0x8e, 0x70, 0xa3, 0x2a, 0x5c, 0x33, 0xc3, 0xcf, 0x5f,
+ 0x93, 0x33, 0x0c, 0xbe, 0xb0, 0xbd, 0x15, 0x19, 0x3d, 0x67, 0xea, 0x61,
+ 0x49, 0xc9, 0x94, 0x6c, 0xf8, 0xe7, 0xdc, 0xcb, 0xf1, 0xb8, 0x64, 0x71,
+ 0xd0, 0x4e, 0x14, 0x19, 0x15, 0x36, 0x4b, 0x65, 0x91, 0xe6, 0xd5, 0x30,
+ 0xf0, 0xb0, 0x29, 0x7e, 0x9a, 0x8b, 0xcd, 0xb7, 0x15, 0x88, 0xc1, 0x90,
+ 0x34, 0x2e, 0x72, 0xa3, 0xde, 0x74, 0xb5, 0xe8, 0x57, 0xc9, 0xed, 0x76,
+ 0x24, 0x0c, 0x6d, 0x26, 0xc8, 0xf1, 0xb0, 0x36, 0xd8, 0x3a, 0x84, 0x8c,
+ 0xed, 0x39, 0x7b, 0x48, 0x64, 0xd2, 0x53, 0xaf, 0xf8, 0x41, 0x80, 0xc8,
+ 0x22, 0x3e, 0x14, 0xca, 0x72, 0xa7, 0xd3, 0x4f, 0xc7, 0xca, 0xcc, 0xaf,
+ 0xe4, 0xe4, 0xc3, 0xad, 0xac, 0x99, 0x6c, 0x31, 0xd0, 0x51, 0x02, 0x0a,
+ 0x2f, 0x52, 0x4e, 0x38, 0x52, 0xed, 0x20, 0x28, 0xba, 0xde, 0x31, 0x8d,
+ 0x93, 0x83, 0x87, 0xf9, 0x87, 0xef, 0x3b, 0x74, 0xf9, 0x39, 0x5e, 0x62,
+ 0x75, 0xc4, 0x40, 0xab, 0x91, 0xf4, 0x76, 0xb9, 0xad, 0xdf, 0x4d, 0xb1,
+ 0x84, 0xda, 0x85, 0x62, 0xe8, 0x05, 0x86, 0x4f, 0xe4, 0xa4, 0x84, 0x58,
+ 0x01, 0xaf, 0x22, 0xf3, 0xae, 0x1d, 0x1b, 0xf9, 0xd5, 0x86, 0x71, 0xb1,
+ 0x90, 0x76, 0xb2, 0x6c, 0x32, 0x8e, 0x20, 0x12, 0x69, 0x2e, 0x83, 0xe0,
+ 0x28, 0x2e, 0xcd, 0xd5, 0x07, 0x66, 0xca, 0xa7, 0xc7, 0xf9, 0xb8, 0x44,
+ 0x73, 0x4e, 0x55, 0x4c, 0xf8, 0x23, 0x6e, 0x59, 0xcc, 0xa3, 0xe1, 0xc6,
+ 0xc9, 0xd6, 0x3e, 0x1e, 0xca, 0xb2, 0x33, 0x7c, 0xd6, 0x3e, 0x03, 0xa4,
+ 0x12, 0xc6, 0xea, 0x1f, 0x1c, 0x73, 0x85, 0x1c, 0x70, 0x43, 0x2e, 0xda,
+ 0x80, 0x60, 0x25, 0xe2, 0xf7, 0x6c, 0x64, 0xc8, 0x24, 0x70, 0x85, 0x83,
+ 0x1a, 0xb0, 0x66, 0xb4, 0x4e, 0x5c, 0x29, 0x22, 0x08, 0xc4, 0x70, 0xde,
+ 0x23, 0x85, 0x77, 0xe5, 0xae, 0x71, 0x1d, 0x3b, 0x8d, 0x88, 0x67, 0x2d,
+ 0x96, 0x63, 0xe2, 0x64, 0x88, 0x7d, 0x59, 0x2e, 0x86, 0x61, 0x75, 0x86,
+ 0xc6, 0x15, 0x7c, 0x94, 0xf7, 0x4d, 0xf7, 0xdb, 0x7e, 0x42, 0x1c, 0x84,
+ 0x36, 0x89, 0x2c, 0xad, 0xbd, 0xe2, 0x6a, 0xe1, 0xbe, 0x09, 0x27, 0x25,
+ 0xff, 0x95, 0x9d, 0x2f, 0x4f, 0x97, 0x33, 0x59, 0x18, 0xe5, 0x6a, 0xcf,
+ 0x2c, 0x88, 0xd4, 0xde, 0xea, 0x73, 0x5e, 0x1a, 0xc4, 0xa0, 0xe7, 0xf7,
+ 0xf7, 0xe1, 0x4e, 0xb8, 0xea, 0xda, 0xc4, 0xa7, 0xd4, 0x51, 0xfc, 0xe2,
+ 0xfe, 0xbe, 0xfd, 0xe5, 0x63, 0x45, 0x93, 0x61, 0x93, 0xe3, 0xfa, 0x50,
+ 0xa5, 0xac, 0x56, 0x1a, 0x59, 0x47, 0x56, 0x94, 0xee, 0x52, 0x04, 0x53,
+ 0x86, 0xbe, 0x20, 0x68, 0x7f, 0xe2, 0x2d, 0x77, 0x77, 0x04, 0x01, 0x33,
+ 0x5d, 0x9b, 0x13, 0xc9, 0x15, 0x24, 0x84, 0xe2, 0xa5, 0x41, 0xb3, 0x6e,
+ 0x4b, 0xcd, 0x79, 0xea, 0x06, 0x29, 0xa4, 0xb9, 0x2c, 0x7b, 0x8e, 0x6a,
+ 0xc4, 0x4d, 0x3e, 0xa3, 0xd7, 0x50, 0x30, 0xcf, 0xb4, 0xb0, 0x63, 0x96,
+ 0x3f, 0x2f, 0x96, 0x4d, 0xa6, 0x20, 0x68, 0xe8, 0x53, 0xcf, 0x63, 0x6c,
+ 0xd9, 0x67, 0x30, 0xf2, 0xab, 0x5f, 0x1f, 0x95, 0x11, 0x3d, 0x94, 0x10,
+ 0x8c, 0x4b, 0x20, 0xf9, 0x34, 0x9e, 0x99, 0x49, 0x76, 0x80, 0x57, 0x63,
+ 0x87, 0xd9, 0x5e, 0x42, 0x12, 0xcf, 0x9a, 0xdd, 0x9b, 0xd5, 0xe6, 0xc0,
+ 0xbf, 0x04, 0x79, 0x8c, 0x46, 0xd3, 0x23, 0xce, 0x75, 0x55, 0x56, 0x66,
+ 0x53, 0xe7, 0x43, 0x0f, 0xe9, 0x25, 0x08, 0x1a, 0xe0, 0xae, 0x6c, 0x21,
+ 0x3d, 0xb3, 0x0d, 0xae, 0x76, 0x76, 0x53, 0x36, 0x22, 0xa4, 0xda, 0xe2,
+ 0x1f, 0x72, 0x17, 0xe8, 0xb8, 0x1f, 0xbb, 0x8a, 0x76, 0xfd, 0x63, 0xf8,
+ 0xdb, 0x67, 0x00, 0x79, 0x6b, 0xf4, 0x48, 0xf9, 0x3f, 0x97, 0x98, 0x57,
+ 0xcf, 0xb2, 0x6c, 0xa1, 0x2b, 0x26, 0x55, 0xc1, 0xe5, 0x34, 0xea, 0x61,
+ 0x84, 0x14, 0xc0, 0x54, 0x88, 0x63, 0xbf, 0xea, 0x80, 0xe3, 0xf6, 0x26,
+ 0xbf, 0x93, 0x66, 0x85, 0x47, 0xb9, 0x08, 0x20, 0xc8, 0xad, 0x30, 0xb3,
+ 0xfa, 0x44, 0xba, 0x2d, 0xc3, 0x58, 0xec, 0xb6, 0x59, 0xa2, 0x91, 0xc5,
+ 0xde, 0xec, 0xc6, 0xc5, 0xaf, 0x45, 0xa2, 0x5f, 0x21, 0x0e, 0xc2, 0x4e,
+ 0x78, 0x05, 0xb9, 0x47, 0xb8, 0x1f, 0xf2, 0x0e, 0xb9, 0xee, 0x2a, 0x22,
+ 0x07, 0xbc, 0xa2, 0x9b, 0xbc, 0x82, 0x21, 0xab, 0x45, 0x18, 0x78, 0x0b,
+ 0x2c, 0xc0, 0x65, 0xe0, 0xfa, 0x92, 0x99, 0x3f, 0x78, 0x1f, 0x4a, 0x2e,
+ 0x28, 0x4e, 0xf8, 0xcf, 0x21, 0x88, 0x27, 0x4b, 0x42, 0x5e, 0xc8, 0xb1,
+ 0xe3, 0xeb, 0x47, 0x98, 0x3d, 0x8a, 0xc3, 0x28, 0x4b, 0xf6, 0x51, 0xbb,
+ 0xec, 0x96, 0xab, 0x02, 0x15, 0x98, 0xc1, 0x84, 0xb3, 0xe8, 0xa8, 0x00,
+ 0xfe, 0x92, 0xd2, 0x34, 0x08, 0x9c, 0x61, 0x83, 0xd0, 0xc5, 0x64, 0x68,
+ 0x9b, 0xf4, 0xf1, 0xac, 0xa4, 0xb0, 0xdd, 0xda, 0x2a, 0x5e, 0x55, 0x80,
+ 0xa6, 0x02, 0x98, 0x7b, 0xe6, 0x36, 0x53, 0xbf, 0xc4, 0x95, 0x54, 0xb8,
+ 0x7a, 0x5f, 0x52, 0x66, 0xb3, 0xad, 0x5f, 0x61, 0xdb, 0x91, 0x37, 0x43,
+ 0x30, 0x7b, 0xb4, 0xe3, 0x95, 0xc6, 0xe9, 0xb7, 0x41, 0x38, 0x64, 0xd8,
+ 0x48, 0x59, 0x87, 0x27, 0xf7, 0x5a, 0x50, 0xa8, 0xe9, 0x8a, 0x8b, 0x14,
+ 0xac, 0x04, 0x53, 0x26, 0xbf, 0x25, 0x82, 0x1e, 0x68, 0x3a, 0x91, 0x72,
+ 0x5c, 0xd8, 0x00, 0xd3, 0x46, 0x5e, 0x4e, 0x11, 0x2e, 0x21, 0x35, 0x79,
+ 0x82, 0x52, 0xb1, 0x82, 0xfe, 0x24, 0x83, 0x59, 0x47, 0xea, 0x3c, 0x97,
+ 0x23, 0x42, 0x13, 0x7d, 0x81, 0x86, 0x6b, 0xd5, 0xfa, 0x1c, 0x26, 0xb6,
+ 0x62, 0x4f, 0x1c, 0xcb, 0xd6, 0xb0, 0x30, 0xd0, 0xae, 0x54, 0x84, 0xd7,
+ 0x4a, 0x92, 0x96, 0xd5, 0xfe, 0x13, 0x99, 0x54, 0x8d, 0xea, 0xc6, 0xf9,
+ 0x2c, 0x8c, 0xbf, 0x1f, 0xe5, 0x33, 0xd1, 0xc5, 0xfe, 0xbe, 0xcc, 0xa9,
+ 0x0c, 0x13, 0x52, 0xd9, 0x0f, 0x4b, 0xda, 0xfc, 0x5a, 0xc2, 0x78, 0xaf,
+ 0x20, 0x85, 0x71, 0x04, 0x11, 0x34, 0x01, 0xe1, 0x2b, 0xa6, 0xfb, 0x40,
+ 0x85, 0x25, 0xfc, 0xdb, 0x61, 0x62, 0xeb, 0x52, 0x00, 0x8e, 0x7c, 0x6e,
+ 0x6e, 0xa9, 0xa1, 0x45, 0xd5, 0x36, 0x3c, 0x21, 0x02, 0x38, 0x0f, 0xa4,
+ 0x8f, 0xfa, 0x26, 0x94, 0x40, 0xfb, 0xad, 0x60, 0x72, 0x38, 0xed, 0xc5,
+ 0x0d, 0xd1, 0x50, 0x7e, 0x82, 0xd1, 0xfc, 0xb6, 0x18, 0x7c, 0x4b, 0x0b,
+ 0x77, 0x53, 0x4b, 0x1a, 0xa7, 0xdc, 0x25, 0x9b, 0x56, 0x98, 0x5e, 0x9d,
+ 0xd6, 0xb3, 0x41, 0xde, 0x25, 0x7c, 0x46, 0x96, 0x74, 0x01, 0x3a, 0x5e,
+ 0xb9, 0x11, 0x4a, 0x45, 0x1a, 0xed, 0x13, 0x34, 0x6c, 0x80, 0x37, 0xf9,
+ 0x08, 0xbb, 0x79, 0xb6, 0xd3, 0x52, 0x85, 0x46, 0xd8, 0x0a, 0xb3, 0xb2,
+ 0x03, 0xac, 0x62, 0x1c, 0xf3, 0x59, 0xf9, 0xf9, 0x80, 0xab, 0x80, 0x3b,
+ 0x31, 0x0b, 0x5b, 0x02, 0x71, 0xc8, 0xed, 0x41, 0x0d, 0x90, 0x46, 0xb2,
+ 0x85, 0x04, 0xc5, 0xc0, 0x11, 0xbf, 0xd0, 0x9a, 0x73, 0x3d, 0xe3, 0x60,
+ 0x29, 0xa9, 0xab, 0xd9, 0xd7, 0x2a, 0x9b, 0x0c, 0x82, 0x74, 0x51, 0x3d,
+ 0x68, 0x90, 0x1e, 0xa5, 0xd6, 0x5e, 0x9c, 0x8c, 0xfc, 0x24, 0x70, 0x31,
+ 0x1f, 0x84, 0x9c, 0x87, 0x92, 0xd0, 0x58, 0x7e, 0x86, 0x25, 0x12, 0xd5,
+ 0x7d, 0xfd, 0x37, 0x6c, 0x7d, 0x5f, 0xb6, 0xab, 0x6a, 0x0d, 0x0d, 0x31,
+ 0x9b, 0x75, 0x29, 0x92, 0x3b, 0x1e, 0x26, 0x9e, 0x91, 0x82, 0x53, 0xbf,
+ 0xcd, 0xe0, 0x07, 0x9a, 0x8b, 0x4e, 0x2c, 0x02, 0xd3, 0x31, 0x3c, 0xed,
+ 0xef, 0xac, 0x3b, 0xb3, 0x0a, 0x30, 0x08, 0xac, 0x20, 0x4d, 0x42, 0x08,
+ 0x9b, 0x33, 0xb8, 0xb4, 0xb3, 0x62, 0x52, 0x3d, 0xb4, 0x40, 0xc1, 0xa7,
+ 0x9f, 0x50, 0x7e, 0xce, 0xbf, 0xee, 0x08, 0x2a, 0x94, 0x58, 0x12, 0xa1,
+ 0x63, 0x4b, 0x4d, 0x42, 0xf3, 0x89, 0x1d, 0xa0, 0x36, 0x06, 0x62, 0x31,
+ 0xe7, 0x7a, 0x07, 0x45, 0x3f, 0xbb, 0xcd, 0xf9, 0x25, 0xc5, 0x19, 0x44,
+ 0x0d, 0x81, 0x32, 0x7c, 0x34, 0xac, 0x6e, 0x32, 0x5e, 0x36, 0x1e, 0x32,
+ 0x21, 0xb9, 0x99, 0xd8, 0xab, 0xd1, 0xdd, 0xe4, 0x25, 0xcc, 0xa2, 0x92,
+ 0x47, 0xd7, 0xd9, 0x6d, 0x2c, 0x4f, 0x24, 0x58, 0x4e, 0xc1, 0xaf, 0xfc,
+ 0xdd, 0x37, 0x3b, 0xc9, 0x69, 0x73, 0x76, 0xf3, 0x35, 0xf3, 0xa2, 0x55,
+ 0x98, 0x3b, 0x98, 0x0e, 0x9f, 0xc3, 0xc6, 0xa5, 0xf4, 0x7d, 0xd2, 0xb6,
+ 0xdb, 0x8d, 0xfe, 0xe4, 0x3a, 0x99, 0x2b, 0x76, 0xc3, 0x6d, 0x87, 0xec,
+ 0x07, 0xa2, 0x9d, 0x1c, 0xc9, 0x80, 0x40, 0x92, 0x8d, 0x74, 0x1a, 0x47,
+ 0xc4, 0x41, 0xd5, 0xed, 0x17, 0x5c, 0x65, 0x25, 0x6d, 0x5a, 0x08, 0xc8,
+ 0xb4, 0x29, 0xbc, 0x27, 0x8f, 0x6c, 0x49, 0x08, 0xe1, 0x9b, 0x3e, 0xb1,
+ 0x25, 0x10, 0x61, 0x09, 0x98, 0x2c, 0x88, 0x5d, 0x67, 0x83, 0xa2, 0x3f,
+ 0xc1, 0xa6, 0x15, 0xf2, 0x4f, 0xf7, 0x08, 0x6a, 0x86, 0xa4, 0x48, 0x26,
+ 0xf0, 0x2b, 0x69, 0x13, 0x36, 0xdc, 0x5d, 0x38, 0x16, 0x5a, 0x7f, 0xd3,
+ 0x28, 0x17, 0x50, 0x33, 0xab, 0xed, 0x87, 0xcf, 0xd6, 0x8e, 0x7e, 0xbf,
+ 0x3a, 0xda, 0x1f, 0x5d, 0x0c, 0xbb, 0x57, 0x4e, 0x90, 0xdc, 0x42, 0xdb,
+ 0xe7, 0x10, 0x04, 0xc9, 0xaa, 0x48, 0x45, 0x5a, 0x2b, 0x8b, 0xe2, 0x86,
+ 0xc1, 0xf1, 0xd8, 0x6a, 0xbb, 0x1b, 0x64, 0xab, 0x8c, 0xc1, 0xe9, 0x40,
+ 0x44, 0x84, 0xc3, 0x73, 0x9c, 0xcf, 0x30, 0x05, 0x33, 0x30, 0xc3, 0x7b,
+ 0xe7, 0xb5, 0x84, 0xf4, 0x51, 0xbd, 0xf5, 0xa4, 0x9c, 0x91, 0x59, 0x24,
+ 0x02, 0xac, 0x1d, 0x14, 0xaf, 0xdc, 0x3f, 0x7f, 0x7f, 0xfc, 0xfe, 0xeb,
+ 0xbd, 0xd6, 0x9d, 0x39, 0x2b, 0xcb, 0x3a, 0x13, 0x1f, 0x3d, 0xa3, 0x90,
+ 0xf3, 0x72, 0xb1, 0xfd, 0xd8, 0x42, 0x40, 0x44, 0x2e, 0x71, 0x82, 0xda,
+ 0xd3, 0x5b, 0x89, 0x4d, 0x73, 0x52, 0xe8, 0x84, 0x24, 0x9e, 0xe1, 0xe3,
+ 0x55, 0x67, 0xeb, 0x72, 0x72, 0x53, 0x3f, 0x67, 0x63, 0xd7, 0x23, 0x91,
+ 0xdf, 0xed, 0xba, 0xd5, 0xa3, 0xd3, 0x83, 0x6f, 0x47, 0xcf, 0x9f, 0x0c,
+ 0xf9, 0xe6, 0x37, 0xc2, 0xa4, 0xc9, 0x27, 0x82, 0xbe, 0x1f, 0x29, 0x33,
+ 0x1f, 0x39, 0x56, 0xae, 0x9c, 0x06, 0xd9, 0x42, 0xc8, 0xcc, 0x95, 0x97,
+ 0x4b, 0x0b, 0xe7, 0xee, 0x41, 0x27, 0xf5, 0xf9, 0xb0, 0x11, 0xb4, 0x55,
+ 0xa4, 0x66, 0x9e, 0xd6, 0xda, 0xf0, 0xaa, 0x6b, 0x04, 0xd1, 0x71, 0x04,
+ 0x0a, 0xc1, 0xc6, 0x92, 0xcf, 0xfa, 0x5d, 0x71, 0xc7, 0x70, 0x0a, 0x23,
+ 0xff, 0xcd, 0x96, 0xd4, 0x37, 0xd0, 0x23, 0xac, 0x09, 0x6f, 0x55, 0xc9,
+ 0x51, 0x59, 0x79, 0x8d, 0x26, 0xa7, 0x2b, 0xd4, 0x0d, 0x56, 0x36, 0x3b,
+ 0x95, 0xa7, 0xf6, 0xb6, 0xb6, 0x9c, 0x45, 0x8b, 0x63, 0x0b, 0x87, 0xbf,
+ 0x9f, 0x56, 0xc0, 0x7d, 0xa6, 0xbf, 0x8a, 0x28, 0xd2, 0x4f, 0xa3, 0x8a,
+ 0x40, 0x4a, 0xfe, 0x85, 0x54, 0xf1, 0xf9, 0x2a, 0x66, 0x1b, 0x29, 0xb3,
+ 0xf2, 0x24, 0x5d, 0x48, 0xcd, 0x95, 0xff, 0x46, 0x54, 0x91, 0x26, 0x9f,
+ 0x46, 0x17, 0x69, 0x97, 0x30, 0x22, 0x19, 0xca, 0xbf, 0x27, 0xc2, 0x21,
+ 0x46, 0xf1, 0x62, 0x60, 0xb1, 0xda, 0x7f, 0x05, 0xc5, 0xbc, 0x90, 0x99,
+ 0x6e, 0xc0, 0x08, 0x2c, 0x0e, 0x4e, 0xc5, 0x11, 0x54, 0x5b, 0xfc, 0x0a,
+ 0xc0, 0x78, 0x96, 0x48, 0x36, 0xf5, 0x32, 0x58, 0xcd, 0x83, 0x22, 0xd4,
+ 0x15, 0x84, 0x33, 0xff, 0x72, 0x5a, 0xfb, 0x3f, 0x82, 0x03, 0xbd, 0x70,
+ 0x48, 0xfb, 0x9f, 0x42, 0x72, 0x2f, 0xae, 0x2d, 0xc9, 0xc5, 0x4a, 0x50,
+ 0x2a, 0x6f, 0xfa, 0xad, 0x49, 0xae, 0x23, 0x7b, 0x04, 0x72, 0x95, 0xae,
+ 0x3a, 0x80, 0x0e, 0x2a, 0xa3, 0x61, 0xd3, 0x2f, 0x1e, 0x96, 0x3b, 0x3b,
+ 0x41, 0x34, 0xe1, 0x24, 0xb0, 0xe8, 0x61, 0x6a, 0x36, 0xb3, 0xd7, 0x73,
+ 0x35, 0x30, 0x36, 0x92, 0x19, 0x41, 0x70, 0x67, 0xbe, 0x78, 0x92, 0xd8,
+ 0x83, 0x6c, 0x29, 0xa1, 0x77, 0x25, 0xee, 0x01, 0x97, 0x1b, 0x50, 0x1a,
+ 0xb7, 0x8e, 0x8a, 0x48, 0x4c, 0x21, 0x9c, 0xc1, 0xb3, 0xa7, 0xef, 0x5a,
+ 0x9f, 0xce, 0x2d, 0x1b, 0x4d, 0x02, 0xd8, 0xc8, 0xc7, 0x12, 0xac, 0xfe,
+ 0x4f, 0xe1, 0xa1, 0x2f, 0x3e, 0x8d, 0x9c, 0xff, 0x19, 0x37, 0xeb, 0x7f,
+ 0x23, 0xe2, 0x8d, 0x6d, 0xf3, 0x86, 0x20, 0x65, 0xb1, 0x72, 0xc8, 0x17,
+ 0xcb, 0x26, 0xe3, 0x9e, 0x58, 0x21, 0x1e, 0xab, 0x78, 0x7c, 0xf6, 0xdd,
+ 0x4b, 0x04, 0xbf, 0x8d, 0x42, 0xa0, 0xf7, 0x93, 0xc3, 0xfd, 0xb3, 0xc8,
+ 0xcd, 0x70, 0x65, 0x54, 0xfe, 0x45, 0x3e, 0x20, 0xb5, 0x8a, 0x4c, 0x70,
+ 0xaf, 0xe5, 0x17, 0x22, 0xf1, 0x98, 0x91, 0x51, 0x0d, 0xa4, 0xfa, 0x3c,
+ 0x23, 0x49, 0xb3, 0xc7, 0x18, 0xb3, 0x14, 0xfd, 0x8c, 0x0c, 0x90, 0x93,
+ 0xf9, 0x74, 0x8b, 0xff, 0x1c, 0x5c, 0xfe, 0x7d, 0x1a, 0xaa, 0x7a, 0x3e,
+ 0x4a, 0x73, 0x2b, 0x33, 0x4e, 0xa0, 0xaf, 0xf3, 0x66, 0x55, 0x41, 0xe0,
+ 0x7a, 0xcf, 0x3f, 0xe6, 0x89, 0xa4, 0x7a, 0x42, 0xf7, 0x5d, 0x35, 0x31,
+ 0x0c, 0x2f, 0xc0, 0xe2, 0x87, 0xef, 0x12, 0x10, 0xf8, 0xf4, 0xed, 0x96,
+ 0xd7, 0x90, 0x6d, 0xfd, 0xb1, 0xc6, 0x23, 0x09, 0x3c, 0xae, 0xaf, 0x2d,
+ 0x02, 0x7c, 0x93, 0x17, 0xb9, 0x23, 0x56, 0x6b, 0x82, 0x2f, 0x2f, 0x81,
+ 0xf7, 0x5a, 0x67, 0x75, 0x50, 0x13, 0x23, 0x93, 0x74, 0x26, 0x6f, 0x0c,
+ 0x76, 0xd7, 0xb9, 0x80, 0x8a, 0x80, 0x93, 0x15, 0x93, 0x7c, 0x91, 0xce,
+ 0x24, 0xcd, 0xf0, 0xd1, 0x4a, 0x3e, 0xdd, 0x42, 0x28, 0xed, 0x09, 0x19,
+ 0x65, 0xbb, 0x5b, 0x5c, 0x8c, 0xc8, 0xdf, 0xc3, 0xaf, 0xd5, 0x02, 0x67,
+ 0x9a, 0xcb, 0x8b, 0xdd, 0xc3, 0x01, 0x15, 0x3d, 0x1d, 0xb1, 0xfb, 0xc4,
+ 0xf2, 0xf0, 0x40, 0x98, 0x94, 0x44, 0x46, 0x12, 0xca, 0x1e, 0xda, 0x79,
+ 0xf5, 0x72, 0x27, 0xa9, 0xd3, 0x07, 0x60, 0x75, 0xd4, 0xf2, 0xf2, 0xf3,
+ 0xe1, 0xb3, 0xad, 0xe7, 0xc3, 0xe7, 0x89, 0xab, 0x73, 0x8a, 0x84, 0x1f,
+ 0x69, 0xde, 0xb0, 0xce, 0x00, 0xa3, 0xa1, 0x11, 0x2e, 0xfe, 0xfe, 0xe8,
+ 0x80, 0xa4, 0x11, 0xcd, 0x39, 0xed, 0x28, 0x78, 0x09, 0xaf, 0x1b, 0x2d,
+ 0x9c, 0xd6, 0xe9, 0x89, 0x29, 0xa5, 0x91, 0xe5, 0x50, 0xd2, 0x44, 0xf0,
+ 0x7e, 0x61, 0x07, 0x42, 0xbc, 0x92, 0xa9, 0x54, 0xd6, 0x25, 0x0a, 0x48,
+ 0xe1, 0x2f, 0x89, 0xb7, 0x60, 0xc3, 0xc7, 0x6b, 0xd3, 0xd4, 0x8d, 0xd1,
+ 0x52, 0xab, 0x78, 0x94, 0xd0, 0xb9, 0x18, 0x23, 0x39, 0xe0, 0x82, 0xaa,
+ 0x2f, 0xb3, 0xfb, 0x56, 0xde, 0x11, 0x6b, 0x66, 0x3b, 0xa7, 0x42, 0x23,
+ 0x60, 0x22, 0x75, 0x17, 0x5b, 0xd9, 0x0c, 0x52, 0x6e, 0x06, 0x75, 0x6a,
+ 0xd7, 0x07, 0xeb, 0x7a, 0x4d, 0x69, 0xfc, 0x0c, 0x75, 0xd6, 0xb0, 0xc5,
+ 0xb4, 0x5b, 0xa1, 0xe0, 0x37, 0x97, 0x5b, 0x1b, 0xba, 0x0d, 0x9a, 0x6c,
+ 0x56, 0x64, 0x8d, 0x14, 0x3f, 0x4c, 0x5e, 0x9f, 0x9e, 0x5d, 0xbc, 0xb9,
+ 0x4d, 0x67, 0x41, 0x8c, 0x07, 0x61, 0xfa, 0x69, 0xa9, 0x48, 0x6b, 0xcd,
+ 0xa5, 0x37, 0xbd, 0xdc, 0xa8, 0x91, 0x4d, 0x12, 0xf2, 0x8a, 0x4a, 0x06,
+ 0xb9, 0x40, 0x17, 0x17, 0x7f, 0x3d, 0x3b, 0x7a, 0xf3, 0x9a, 0x6c, 0xc1,
+ 0x5f, 0x90, 0x3d, 0xbe, 0x6e, 0x99, 0x86, 0xa9, 0x28, 0x71, 0x78, 0x33,
+ 0xfe, 0x70, 0x78, 0x3c, 0x3a, 0x3b, 0x39, 0x3d, 0x78, 0xf3, 0xfa, 0x07,
+ 0xf2, 0x60, 0x9a, 0xd5, 0x7b, 0xf0, 0xde, 0xb5, 0x9f, 0xd9, 0x7c, 0x87,
+ 0xb0, 0x14, 0xdb, 0xd1, 0xf7, 0x1f, 0x8f, 0xde, 0x7f, 0xf7, 0xe6, 0xf5,
+ 0x6d, 0x5a, 0xf5, 0x69, 0x7e, 0xfc, 0x36, 0x01, 0x41, 0x44, 0x6a, 0xf4,
+ 0x7a, 0x6b, 0x74, 0x41, 0x6b, 0xb4, 0x5c, 0x50, 0xe8, 0xe0, 0x23, 0x61,
+ 0x65, 0xe0, 0xb2, 0xae, 0xf6, 0x59, 0x9b, 0x3a, 0xbc, 0x10, 0x36, 0x4d,
+ 0xf0, 0xd2, 0xa2, 0x0c, 0x1f, 0xce, 0x4f, 0x20, 0xb5, 0x47, 0x8b, 0x95,
+ 0x71, 0x7d, 0x00, 0x57, 0x1e, 0x42, 0x6c, 0x43, 0xae, 0x61, 0x94, 0x62,
+ 0x38, 0xb0, 0xc9, 0x6d, 0x02, 0x60, 0xf9, 0x68, 0x0c, 0x1d, 0xf3, 0x2e,
+ 0x04, 0xd3, 0xda, 0x72, 0xa6, 0x88, 0x1e, 0xe2, 0x4a, 0x5c, 0x66, 0x0a,
+ 0x39, 0x32, 0xe8, 0xb7, 0x34, 0xe7, 0x77, 0x16, 0x9a, 0xbc, 0xbc, 0x98,
+ 0x79, 0xb8, 0xde, 0x05, 0x16, 0xaa, 0xe4, 0x6a, 0x74, 0x18, 0x8f, 0x22,
+ 0x10, 0xb7, 0x67, 0x21, 0xa0, 0x52, 0xf1, 0x0a, 0x0a, 0xb3, 0x19, 0xa0,
+ 0xb5, 0x6f, 0xec, 0xb8, 0x2a, 0xa6, 0xdf, 0x76, 0xf2, 0x83, 0xe6, 0xa6,
+ 0x79, 0x81, 0x85, 0x91, 0xf4, 0xb8, 0x36, 0xdc, 0x26, 0x87, 0x33, 0x92,
+ 0x48, 0x49, 0xa9, 0x7b, 0x66, 0xac, 0x2e, 0x6c, 0x98, 0x37, 0xd6, 0x81,
+ 0x35, 0x87, 0xbe, 0x4c, 0x54, 0x08, 0xb7, 0x67, 0x4e, 0x0f, 0x5b, 0x69,
+ 0x41, 0xaa, 0x37, 0x46, 0x9b, 0x36, 0xdb, 0x91, 0x5a, 0x3c, 0xfb, 0xe0,
+ 0xf0, 0x4b, 0x23, 0xb9, 0xf1, 0xc1, 0x21, 0xec, 0x0a, 0xca, 0x6e, 0xa1,
+ 0x7a, 0x83, 0x1e, 0x15, 0x3a, 0x11, 0x4f, 0x17, 0xca, 0x9c, 0xa8, 0xa5,
+ 0xdf, 0x70, 0x06, 0xaa, 0x72, 0xed, 0x52, 0xe9, 0xd3, 0x68, 0xa9, 0x0e,
+ 0x4e, 0xf5, 0x4a, 0xf6, 0x25, 0x0e, 0x29, 0x6b, 0xd5, 0xe2, 0xe0, 0x3e,
+ 0x86, 0xbd, 0xa4, 0x55, 0x4d, 0x85, 0x3d, 0x6f, 0x9b, 0x41, 0x52, 0xdf,
+ 0x03, 0x5f, 0x11, 0x9e, 0x14, 0x6f, 0x03, 0xfe, 0x4c, 0xf7, 0x34, 0xd4,
+ 0xce, 0xd0, 0xe0, 0x56, 0x18, 0x1b, 0xca, 0x8b, 0x54, 0xf4, 0x00, 0xa7,
+ 0x06, 0x0a, 0x37, 0xd7, 0x9c, 0xa6, 0xec, 0x74, 0x84, 0x2f, 0xd8, 0x14,
+ 0x02, 0x76, 0x35, 0x89, 0x47, 0x51, 0xda, 0x84, 0x30, 0x1f, 0x83, 0x10,
+ 0xe2, 0x4d, 0x8c, 0x2c, 0xea, 0x5f, 0x3b, 0x02, 0x32, 0xb1, 0xc2, 0xc1,
+ 0x85, 0x8b, 0xda, 0xa3, 0xa0, 0xbb, 0x48, 0x7e, 0xbd, 0x14, 0x7b, 0x1b,
+ 0x5c, 0x04, 0xe8, 0x64, 0xf4, 0x02, 0x85, 0xac, 0x79, 0xa1, 0xec, 0x88,
+ 0x10, 0xa5, 0xb9, 0x33, 0x25, 0x49, 0xce, 0x0d, 0x84, 0x8a, 0xa1, 0x84,
+ 0xcf, 0x92, 0x3b, 0x64, 0x45, 0x5e, 0x73, 0x9d, 0xf4, 0xae, 0x66, 0xe5,
+ 0x78, 0x6c, 0x26, 0xd5, 0xd3, 0x3b, 0xce, 0x8c, 0x30, 0xad, 0xae, 0x20,
+ 0xf4, 0xf6, 0x15, 0xbf, 0xce, 0x1d, 0x56, 0x94, 0x54, 0x42, 0x5f, 0xab,
+ 0x72, 0x73, 0x69, 0x77, 0xc5, 0xb5, 0x23, 0xbb, 0x8a, 0x62, 0x47, 0x0f,
+ 0x5e, 0x21, 0x46, 0x8e, 0xc4, 0xc2, 0xe7, 0x89, 0xf6, 0x1f, 0x84, 0xf1,
+ 0x52, 0x2e, 0xa9, 0x4b, 0xfb, 0x14, 0xe6, 0x03, 0x96, 0x23, 0x65, 0x6e,
+ 0xf2, 0x48, 0x9e, 0x27, 0x4d, 0xd8, 0x4c, 0xa0, 0xf7, 0x1f, 0x34, 0x8a,
+ 0x9d, 0x3e, 0xfd, 0xdc, 0xfd, 0xaf, 0x9e, 0x56, 0x33, 0xa2, 0xfa, 0x71,
+ 0x3c, 0xf8, 0x86, 0x0a, 0xc8, 0xd4, 0x5a, 0x42, 0x29, 0x52, 0x31, 0x89,
+ 0xdc, 0x86, 0x2b, 0x5b, 0xcf, 0xe7, 0x57, 0x3f, 0xee, 0x0c, 0x76, 0xb6,
+ 0xb7, 0xb7, 0x7f, 0x1e, 0x2e, 0x68, 0xe9, 0x2e, 0xd1, 0xbc, 0xf9, 0x39,
+ 0x5c, 0xe4, 0x13, 0x32, 0xe4, 0x9b, 0xcd, 0xcc, 0x53, 0x6a, 0x7a, 0x8b,
+ 0xfb, 0xdb, 0xf2, 0x6e, 0xfe, 0x66, 0xb2, 0x18, 0x14, 0x65, 0x2c, 0x44,
+ 0xe6, 0x62, 0x59, 0xa1, 0x2c, 0x83, 0xd6, 0x02, 0xfd, 0xf8, 0xfe, 0xf4,
+ 0xf0, 0xe8, 0x64, 0xff, 0xaf, 0x1a, 0x63, 0x6b, 0x81, 0x13, 0x68, 0x24,
+ 0x1f, 0xb3, 0xb4, 0x7e, 0xf8, 0x58, 0x67, 0x8d, 0xf9, 0x72, 0xe3, 0xd9,
+ 0x26, 0x05, 0xa1, 0x05, 0xd5, 0xa0, 0xaf, 0xb2, 0x56, 0x55, 0x7b, 0x89,
+ 0x57, 0x72, 0xb7, 0x77, 0x47, 0x46, 0xd9, 0x69, 0x07, 0xbe, 0x36, 0xe4,
+ 0x0f, 0x19, 0xcf, 0x6e, 0xea, 0xfc, 0x1f, 0xe6, 0xde, 0x21, 0xa4, 0xbf,
+ 0x30, 0x9e, 0xf9, 0x02, 0x08, 0x0a, 0xe4, 0xd6, 0xa6, 0xdf, 0x92, 0xaf,
+ 0x4e, 0xbe, 0xa5, 0x30, 0x72, 0xab, 0xd3, 0xcc, 0x39, 0x65, 0x3f, 0xf9,
+ 0xe2, 0xc5, 0xce, 0xee, 0xa6, 0x2d, 0x6f, 0xc1, 0xc9, 0x28, 0x74, 0x38,
+ 0x03, 0xb7, 0xfa, 0x3f, 0x32, 0xaf, 0xce, 0x00, 0x73, 0x65, 0xe7, 0x61,
+ 0x44, 0x68, 0x8b, 0x5e, 0x73, 0xc0, 0xa0, 0x83, 0x27, 0xb8, 0x01, 0xe8,
+ 0x1f, 0x25, 0x8a, 0x04, 0xd0, 0x39, 0x17, 0x2e, 0x1b, 0x7c, 0x48, 0x81,
+ 0x4a, 0xaa, 0xd9, 0x98, 0xe1, 0x48, 0x7e, 0x49, 0x5c, 0x36, 0xf9, 0xad,
+ 0x65, 0x9d, 0x27, 0x3d, 0x55, 0x66, 0xb5, 0x67, 0x35, 0x39, 0x89, 0x49,
+ 0xfe, 0x48, 0x5e, 0xeb, 0x6f, 0x5f, 0x84, 0x91, 0x75, 0x09, 0xdc, 0x6c,
+ 0x5d, 0x58, 0x24, 0x88, 0x2d, 0xf0, 0x9e, 0x53, 0x48, 0x23, 0x71, 0x5a,
+ 0x3e, 0x69, 0x52, 0xb1, 0x5b, 0xcf, 0xd1, 0x8a, 0x0a, 0xbf, 0xc4, 0xda,
+ 0x7a, 0xa3, 0xf3, 0xb3, 0x5e, 0x5f, 0x1c, 0x78, 0xa6, 0x8f, 0x81, 0xf9,
+ 0xdb, 0x8c, 0x18, 0xe8, 0x9d, 0x2f, 0xb6, 0x5f, 0x3c, 0x17, 0xfb, 0x1e,
+ 0x06, 0x8a, 0xd4, 0xd3, 0xb0, 0x02, 0x00, 0xbe, 0xb3, 0xd5, 0x7b, 0x81,
+ 0x7d, 0xe1, 0xf2, 0xec, 0x0c, 0xe5, 0xb5, 0x27, 0xc9, 0x16, 0x93, 0xbe,
+ 0x42, 0xdc, 0xaf, 0x8c, 0x8a, 0x90, 0x3d, 0x03, 0x4f, 0xc1, 0x20, 0xc3,
+ 0x62, 0xdf, 0xcf, 0x3b, 0x0b, 0x69, 0xc7, 0xf0, 0x5a, 0x7f, 0x8b, 0x2d,
+ 0xa4, 0x5f, 0x68, 0x58, 0x8a, 0xa4, 0x59, 0x9c, 0x1f, 0x5a, 0xe4, 0x38,
+ 0x1e, 0xd8, 0x4a, 0x6f, 0x8a, 0x62, 0x8e, 0x7b, 0x73, 0x1c, 0xaa, 0x83,
+ 0x54, 0x70, 0x6d, 0xdc, 0xe2, 0xb9, 0xec, 0x16, 0x4a, 0x3f, 0x1e, 0x3e,
+ 0x1e, 0x14, 0xda, 0x9d, 0x1e, 0x5a, 0x78, 0x4d, 0x3f, 0xa3, 0xd3, 0xa2,
+ 0x2f, 0x9c, 0xd2, 0xf9, 0xfb, 0x4e, 0x4b, 0xb2, 0x29, 0xda, 0xab, 0x6e,
+ 0x27, 0x17, 0xa8, 0xce, 0xcd, 0xd3, 0x7b, 0x77, 0xbb, 0x33, 0xdc, 0x8e,
+ 0x3a, 0x39, 0xdf, 0x52, 0x41, 0xb5, 0x36, 0x98, 0x19, 0x4d, 0x47, 0xd1,
+ 0x60, 0xc9, 0x4f, 0x09, 0x06, 0x61, 0x75, 0x30, 0x05, 0xaa, 0x5a, 0x01,
+ 0x3b, 0x46, 0x2f, 0x5b, 0xa4, 0x83, 0x56, 0xc5, 0x90, 0xe7, 0xc1, 0xc9,
+ 0x34, 0x83, 0xda, 0xf9, 0x75, 0x83, 0xda, 0xf9, 0x5d, 0x07, 0xb5, 0xfb,
+ 0xeb, 0x06, 0xb5, 0xfb, 0x7b, 0x0d, 0xaa, 0x1a, 0x68, 0x5e, 0x46, 0x1c,
+ 0xb1, 0xf8, 0x5c, 0xab, 0x87, 0x90, 0xc4, 0x43, 0xf8, 0x7e, 0xc4, 0x4e,
+ 0x2f, 0x84, 0xa3, 0x0f, 0x8e, 0xe4, 0x5d, 0x17, 0x41, 0xc3, 0x32, 0x43,
+ 0x18, 0x39, 0x6b, 0xeb, 0x58, 0xd9, 0x98, 0xc3, 0xba, 0x5d, 0x02, 0x93,
+ 0xdd, 0xb5, 0xcb, 0x42, 0xbb, 0x71, 0x71, 0x43, 0x10, 0xea, 0x82, 0x79,
+ 0x4e, 0xb2, 0x5c, 0xc0, 0x54, 0x9f, 0x8a, 0xd0, 0x7e, 0xd9, 0x9e, 0x30,
+ 0x41, 0xe7, 0x44, 0x75, 0x32, 0x2d, 0x38, 0x4b, 0xbe, 0x7d, 0x5c, 0x63,
+ 0xf4, 0xe4, 0x74, 0xc9, 0xc9, 0x49, 0x28, 0x56, 0x9d, 0x17, 0x12, 0xe3,
+ 0xcb, 0x96, 0x45, 0x73, 0x37, 0x5f, 0x95, 0xf8, 0x93, 0xc6, 0xd9, 0x0f,
+ 0x0c, 0x3b, 0x54, 0xa1, 0x07, 0x77, 0x5e, 0xc6, 0x60, 0x9b, 0x14, 0xd7,
+ 0x9f, 0x17, 0x5c, 0x66, 0x8b, 0x6b, 0xdd, 0x97, 0x1e, 0x44, 0x99, 0xc8,
+ 0xb0, 0x2c, 0x83, 0x7f, 0x08, 0x5c, 0xe9, 0x24, 0x32, 0x53, 0x5c, 0x0a,
+ 0x05, 0x73, 0x89, 0xc6, 0x22, 0xe9, 0x73, 0xb6, 0x5e, 0xa1, 0xd6, 0xf4,
+ 0x59, 0x61, 0x07, 0x88, 0xfb, 0x5e, 0x7c, 0xeb, 0x34, 0xe2, 0x67, 0x06,
+ 0xb7, 0x7d, 0xae, 0x5a, 0x3a, 0x2e, 0x6b, 0x44, 0x5b, 0xcb, 0xa2, 0x05,
+ 0x36, 0xa3, 0x7a, 0x92, 0xe7, 0xbf, 0xa7, 0x93, 0x8c, 0x7b, 0x45, 0x37,
+ 0x8f, 0x6f, 0x18, 0x85, 0xc4, 0x62, 0xcb, 0x64, 0xcf, 0x5a, 0x9b, 0x66,
+ 0xf7, 0x8c, 0xb6, 0xcc, 0xee, 0xd8, 0xff, 0x7b, 0x36, 0xcc, 0xfc, 0x3f,
+ 0xd5, 0xe6, 0xa5, 0xa4, 0xc3, 0x7c, 0x96, 0xc2, 0x96, 0x24, 0x4b, 0xc3,
+ 0xd8, 0xb6, 0xb3, 0x2c, 0xa5, 0xdc, 0x74, 0x35, 0x61, 0x5f, 0x67, 0xf7,
+ 0xac, 0xfc, 0x87, 0x97, 0x3d, 0xe7, 0x31, 0x5e, 0xab, 0xd9, 0x6c, 0x7f,
+ 0x74, 0x70, 0x7c, 0xdc, 0x32, 0x22, 0xd2, 0xb2, 0x21, 0x88, 0x4f, 0x52,
+ 0xb2, 0x6a, 0xca, 0x71, 0x71, 0xea, 0x55, 0x60, 0x73, 0xa0, 0xf4, 0x4e,
+ 0xc0, 0x64, 0x52, 0x85, 0xe1, 0xb4, 0xce, 0x35, 0x9f, 0x36, 0xe5, 0x60,
+ 0xad, 0x65, 0x41, 0xd6, 0x01, 0x4a, 0x6c, 0xb8, 0x5e, 0x1a, 0x59, 0xb7,
+ 0xfe, 0xad, 0x09, 0x72, 0xf8, 0x7b, 0x93, 0x5e, 0x24, 0xf7, 0xf1, 0xac,
+ 0xd2, 0xfc, 0xcc, 0x54, 0xa2, 0xf6, 0x25, 0x7f, 0x91, 0x40, 0x74, 0x48,
+ 0x09, 0x64, 0x0a, 0x34, 0x83, 0xd4, 0xf1, 0xa2, 0x44, 0x99, 0x95, 0x90,
+ 0x03, 0xcb, 0x08, 0xcc, 0x50, 0x75, 0xb7, 0x2e, 0x76, 0x9b, 0x4b, 0x2f,
+ 0xfb, 0x5a, 0xe0, 0x0f, 0x22, 0xc4, 0xde, 0x4a, 0x11, 0xc9, 0xcb, 0x52,
+ 0xf4, 0x4a, 0xfb, 0x51, 0xee, 0x94, 0x5e, 0xf4, 0x7e, 0x21, 0x4f, 0xd6,
+ 0x9d, 0x1f, 0xaf, 0xd6, 0x3c, 0x4c, 0x4e, 0xed, 0xc6, 0x0c, 0x8a, 0x3e,
+ 0xd0, 0x22, 0x9b, 0x6a, 0x22, 0xb1, 0x79, 0xf8, 0x7d, 0xa0, 0x99, 0xae,
+ 0x31, 0x5e, 0x20, 0x45, 0x4b, 0xc8, 0xec, 0xfb, 0xe0, 0x80, 0xfe, 0x3c,
+ 0x68, 0x15, 0xae, 0x35, 0xe9, 0x94, 0x87, 0x85, 0x51, 0x0a, 0x16, 0x92,
+ 0xed, 0x16, 0x68, 0x47, 0x3c, 0x89, 0x28, 0xba, 0x61, 0x7c, 0xbe, 0x82,
+ 0xe7, 0xb6, 0x98, 0xe5, 0x0d, 0x2a, 0x58, 0xda, 0xec, 0x29, 0x09, 0xb9,
+ 0x9e, 0x94, 0x33, 0x73, 0xac, 0x03, 0x03, 0x3f, 0xe5, 0x5a, 0xe8, 0x21,
+ 0x20, 0x6b, 0xeb, 0x7c, 0x51, 0x1a, 0xd5, 0x53, 0x00, 0x90, 0xd9, 0xf0,
+ 0x85, 0x37, 0x55, 0xc9, 0xf5, 0xaa, 0x39, 0x86, 0x70, 0xa0, 0x2d, 0xed,
+ 0x0d, 0x79, 0x5a, 0xba, 0x19, 0x46, 0x35, 0xef, 0x73, 0xf0, 0x59, 0x3c,
+ 0x6f, 0x85, 0xef, 0xd2, 0x6f, 0x0d, 0x21, 0x65, 0x55, 0x59, 0x27, 0xdf,
+ 0xbd, 0xd0, 0x2c, 0xf5, 0xef, 0xf3, 0x62, 0x4a, 0xc7, 0x98, 0x0b, 0x84,
+ 0x5b, 0x2b, 0xc8, 0x83, 0x4b, 0xc6, 0x8e, 0xb2, 0x36, 0x75, 0xad, 0xea,
+ 0xeb, 0x52, 0x63, 0x9e, 0xcd, 0x64, 0x9d, 0x99, 0x00, 0x0e, 0xd9, 0x0c,
+ 0x92, 0x90, 0x79, 0x02, 0x0b, 0x5c, 0x3b, 0x81, 0x9e, 0xf1, 0xe7, 0x88,
+ 0x01, 0x3f, 0x24, 0xe5, 0xb8, 0x61, 0x0c, 0x7e, 0x3b, 0xea, 0x8b, 0x7c,
+ 0x72, 0x93, 0xb9, 0x1a, 0xd1, 0xd3, 0x32, 0x8c, 0x1c, 0x87, 0x3e, 0x41,
+ 0x6d, 0x6a, 0x40, 0x6e, 0x47, 0xe0, 0xbd, 0x26, 0x64, 0x9b, 0x6b, 0x8a,
+ 0x01, 0x27, 0xbb, 0x12, 0x0c, 0x6c, 0x6b, 0x2b, 0x72, 0x92, 0x71, 0x1b,
+ 0x13, 0x9a, 0xa7, 0xa8, 0x53, 0x6e, 0x67, 0x02, 0xf0, 0x08, 0x21, 0xca,
+ 0xb4, 0x7e, 0xac, 0x3c, 0x67, 0xbf, 0xe5, 0x1f, 0xe4, 0x05, 0xeb, 0x4b,
+ 0xd0, 0x63, 0x25, 0xa6, 0x79, 0x5b, 0x58, 0x98, 0x97, 0x33, 0xc2, 0x79,
+ 0x29, 0xd6, 0xbf, 0x86, 0x3d, 0x16, 0x66, 0x4a, 0xae, 0xc4, 0x75, 0xe9,
+ 0xf0, 0xcd, 0x43, 0x8a, 0x2e, 0x3b, 0x87, 0xc5, 0xdf, 0x2a, 0x22, 0x40,
+ 0xce, 0xa0, 0x4a, 0x0e, 0xcb, 0xbb, 0x62, 0x70, 0x42, 0xa1, 0xaf, 0xc9,
+ 0x49, 0x79, 0x65, 0x96, 0xea, 0x7d, 0xd4, 0x62, 0xfa, 0xe1, 0xec, 0x7d,
+ 0xb2, 0xf1, 0x81, 0xe6, 0x74, 0x66, 0x9d, 0x52, 0xf4, 0xe4, 0xa6, 0xd4,
+ 0xfc, 0x34, 0xfc, 0xc7, 0x43, 0x5b, 0xef, 0x27, 0x47, 0x3f, 0xec, 0xbf,
+ 0x3b, 0x3b, 0x39, 0xfa, 0x69, 0x85, 0xd6, 0x48, 0x1f, 0x7f, 0xa9, 0x43,
+ 0xa7, 0xd2, 0xd2, 0x52, 0xc4, 0xc2, 0xdc, 0x8a, 0xb3, 0x87, 0xd5, 0x5c,
+ 0x80, 0x0f, 0x8e, 0x12, 0xdf, 0x68, 0x74, 0x76, 0x3c, 0x90, 0x3c, 0x7f,
+ 0x29, 0x77, 0xcf, 0xd0, 0x69, 0x38, 0xbf, 0x92, 0xf6, 0xf6, 0x6d, 0x18,
+ 0xec, 0xab, 0x67, 0xa1, 0xef, 0xa1, 0xd1, 0x9a, 0xb1, 0xc7, 0x40, 0x62,
+ 0x45, 0x51, 0x45, 0xe7, 0x08, 0xbe, 0xa5, 0x48, 0xcb, 0x68, 0x9d, 0x4a,
+ 0xd4, 0x66, 0x9f, 0xa1, 0xe8, 0xd9, 0x6a, 0xde, 0x09, 0x60, 0x0b, 0x6c,
+ 0xa0, 0xe7, 0x02, 0x58, 0x0b, 0xd0, 0x5e, 0x6a, 0x57, 0x88, 0xda, 0xd2,
+ 0x06, 0x73, 0x0b, 0x57, 0xd5, 0x91, 0xd9, 0xc1, 0x9e, 0x91, 0x11, 0x96,
+ 0xc9, 0x5e, 0xef, 0x77, 0x14, 0xa2, 0x3e, 0x58, 0xff, 0xfd, 0x6f, 0x7f,
+ 0x81, 0x48, 0x38, 0xc6, 0x13, 0x17, 0xc8, 0xa3, 0xe4, 0x40, 0xb7, 0xa8,
+ 0x12, 0xc4, 0xe3, 0x14, 0x31, 0x2d, 0x85, 0xe6, 0xbb, 0x7e, 0x9a, 0x5f,
+ 0x45, 0x04, 0x6e, 0xdf, 0x03, 0x85, 0xf7, 0x57, 0x51, 0x81, 0xee, 0x7b,
+ 0x18, 0x9e, 0xf7, 0xa9, 0x74, 0xf0, 0xe1, 0xf7, 0xa5, 0x03, 0x14, 0x0f,
+ 0x7e, 0xfd, 0xe1, 0xfc, 0x64, 0xd5, 0x96, 0xa7, 0x30, 0xee, 0x12, 0xa2,
+ 0x01, 0x95, 0xb7, 0x0f, 0xca, 0xa2, 0xc0, 0x1d, 0x42, 0x57, 0x38, 0xf1,
+ 0x62, 0x5b, 0x14, 0x25, 0xac, 0xc7, 0xa7, 0xf9, 0xbd, 0xca, 0xbc, 0x4c,
+ 0xa3, 0x94, 0x74, 0x8d, 0x2b, 0xc1, 0x43, 0x81, 0x7d, 0x22, 0x7e, 0x46,
+ 0xdd, 0x07, 0x98, 0x6d, 0x1b, 0xad, 0x53, 0x70, 0x24, 0x2f, 0x4a, 0x5b,
+ 0xb2, 0x0e, 0xa6, 0xf3, 0xd8, 0x9d, 0x4b, 0x13, 0x22, 0x70, 0x0a, 0x76,
+ 0x90, 0xf6, 0x6d, 0x36, 0xd9, 0xa0, 0xa4, 0x43, 0x21, 0x22, 0xb8, 0xa4,
+ 0x3e, 0x20, 0x6b, 0xdf, 0xa5, 0xd2, 0xc7, 0x5c, 0x44, 0xb6, 0xb8, 0xb2,
+ 0xae, 0xa9, 0x2f, 0x96, 0x46, 0x92, 0x01, 0x2d, 0xe8, 0x1e, 0x2d, 0x28,
+ 0xee, 0x25, 0x54, 0x39, 0x51, 0xc1, 0x70, 0xab, 0x49, 0x67, 0x37, 0xc8,
+ 0xf5, 0x1e, 0x26, 0xef, 0x78, 0x71, 0xcd, 0x00, 0x09, 0xc4, 0x35, 0x06,
+ 0xab, 0x3b, 0x5e, 0x5e, 0x5d, 0xa1, 0x8a, 0xc3, 0x3e, 0x0b, 0x94, 0xb5,
+ 0xd6, 0xa5, 0x03, 0x2d, 0xad, 0x7f, 0xb1, 0x2e, 0x99, 0xb5, 0x3d, 0x29,
+ 0x64, 0x4b, 0xfa, 0x4d, 0x8f, 0xf5, 0x8b, 0x10, 0xfd, 0x8b, 0x68, 0xbf,
+ 0x9f, 0xac, 0xbf, 0x8e, 0xbf, 0xc4, 0xaa, 0x35, 0x03, 0x6d, 0x4d, 0xac,
+ 0x6f, 0xce, 0x2c, 0xe4, 0x75, 0x6e, 0x24, 0xd4, 0x22, 0x8c, 0xae, 0xe7,
+ 0x64, 0x78, 0x8e, 0x95, 0x60, 0x2d, 0x3e, 0x8d, 0x0e, 0xf2, 0x5f, 0xb5,
+ 0x3f, 0x2d, 0xcd, 0x02, 0x68, 0xbc, 0xcb, 0x32, 0xc0, 0xaa, 0x15, 0x58,
+ 0x2c, 0xe9, 0x3f, 0x74, 0xcd, 0xc2, 0x13, 0x2a, 0xa0, 0x20, 0xca, 0x4d,
+ 0xa4, 0x56, 0x0f, 0x91, 0x1f, 0xe7, 0x06, 0x4b, 0xa1, 0x59, 0x15, 0x6c,
+ 0x78, 0xbb, 0xcd, 0x8e, 0xe5, 0x21, 0x98, 0xb5, 0x4a, 0x47, 0x56, 0x99,
+ 0x71, 0x35, 0x19, 0x00, 0x28, 0x53, 0x51, 0xf2, 0x59, 0x09, 0x10, 0xb7,
+ 0xcb, 0x48, 0x7d, 0x09, 0x91, 0x6c, 0xd4, 0x19, 0xe9, 0xce, 0x0d, 0xe7,
+ 0x15, 0x68, 0x4e, 0x04, 0x29, 0x8d, 0x78, 0x30, 0x2b, 0xb8, 0xa8, 0x8a,
+ 0x18, 0xf9, 0xfb, 0x21, 0x24, 0x33, 0xe3, 0x04, 0x68, 0xe9, 0x42, 0xab,
+ 0x52, 0xb4, 0x55, 0x62, 0x0d, 0x1f, 0xf8, 0xb5, 0x5a, 0x55, 0xab, 0x31,
+ 0x5f, 0xab, 0x8a, 0x78, 0x1a, 0xfd, 0xec, 0xb2, 0x36, 0xd6, 0x2a, 0x52,
+ 0xca, 0x3c, 0x46, 0x73, 0x47, 0x0f, 0x22, 0x00, 0x82, 0x4e, 0x98, 0xd1,
+ 0xdb, 0x21, 0x60, 0x74, 0xb9, 0xce, 0xa1, 0xe0, 0xd3, 0xaa, 0x33, 0x4c,
+ 0xdd, 0xf1, 0x58, 0x34, 0x64, 0x7a, 0x29, 0xb8, 0x31, 0x99, 0x83, 0x66,
+ 0x19, 0x8a, 0x92, 0x13, 0xdc, 0x21, 0x43, 0x1d, 0x07, 0x56, 0x4f, 0x73,
+ 0x6a, 0xac, 0x4b, 0x96, 0x85, 0x6c, 0xee, 0x57, 0x04, 0xb4, 0xa6, 0x92,
+ 0xe4, 0x76, 0x22, 0x19, 0x30, 0x17, 0x81, 0x6c, 0x49, 0x38, 0xae, 0x22,
+ 0x08, 0x10, 0xb9, 0x27, 0xcd, 0xf6, 0x3e, 0xb3, 0x60, 0xb3, 0x3e, 0x07,
+ 0x52, 0x9f, 0xbf, 0xd4, 0xe9, 0x95, 0xc6, 0x3d, 0xf1, 0x32, 0x1a, 0xa3,
+ 0x4d, 0x72, 0x66, 0x8f, 0x9f, 0xed, 0xc1, 0x8e, 0x40, 0xe0, 0x34, 0xac,
+ 0x2a, 0x33, 0x4a, 0x1a, 0xe0, 0xd4, 0x26, 0x4b, 0x52, 0xf1, 0xe1, 0x6e,
+ 0x0d, 0xab, 0x3d, 0xba, 0x3b, 0x05, 0x5a, 0x49, 0xd2, 0xfb, 0x52, 0x6d,
+ 0x0b, 0x3d, 0x31, 0x48, 0x01, 0xab, 0xd1, 0x96, 0x95, 0x54, 0x5d, 0xbc,
+ 0x71, 0xcb, 0x11, 0x71, 0xb9, 0xb0, 0xaf, 0x14, 0xd8, 0x0c, 0xb4, 0x6b,
+ 0xa6, 0xd5, 0x41, 0x2f, 0xaa, 0x61, 0xd9, 0x79, 0x27, 0x52, 0xe6, 0xa3,
+ 0x7d, 0xb4, 0xb4, 0x8b, 0x3b, 0xcd, 0x6f, 0x42, 0x41, 0xa0, 0x26, 0x6f,
+ 0x96, 0xa1, 0x17, 0xc3, 0xa2, 0xa7, 0xc2, 0x45, 0x05, 0x1e, 0x4c, 0x4b,
+ 0xee, 0xfc, 0x48, 0x38, 0x4b, 0x64, 0x3b, 0x69, 0x10, 0x21, 0xc9, 0xf6,
+ 0x98, 0xb1, 0x42, 0x12, 0x77, 0x15, 0xff, 0x7d, 0xd3, 0xa3, 0x1b, 0x5d,
+ 0xdb, 0x8b, 0x61, 0xde, 0xfe, 0xd3, 0x7f, 0xe8, 0x97, 0xc0, 0x80, 0xfc,
+ 0x2f, 0xf5, 0xb9, 0xaa, 0xd3, 0x38, 0x8d, 0xf3, 0xb3, 0xe4, 0x4f, 0x58,
+ 0x15, 0x60, 0x58, 0xf3, 0xd2, 0x00, 0xa2, 0x86, 0x1a, 0xfc, 0xd3, 0xd0,
+ 0xba, 0x8a, 0xa5, 0x91, 0x54, 0xcb, 0x84, 0x87, 0xdc, 0x96, 0x8f, 0xf1,
+ 0x4f, 0x05, 0xd5, 0x2f, 0xd3, 0xfa, 0xe1, 0x82, 0xf9, 0xc0, 0xe4, 0xf5,
+ 0x53, 0x25, 0x4c, 0xb3, 0x49, 0xc7, 0x8c, 0xc1, 0x2b, 0x9f, 0x87, 0x16,
+ 0x21, 0x8a, 0xc3, 0xd8, 0xc3, 0x6e, 0xfc, 0x69, 0xc0, 0x00, 0x9f, 0x42,
+ 0xe1, 0x82, 0xd7, 0xab, 0x9f, 0xf1, 0xc6, 0xdc, 0xe5, 0xc5, 0xb3, 0xdd,
+ 0x81, 0x27, 0xa6, 0xf4, 0xa3, 0xa1, 0x6c, 0x6c, 0xdb, 0x2c, 0x27, 0x13,
+ 0xb8, 0xa2, 0xc8, 0x0e, 0x0d, 0x6b, 0xed, 0x9f, 0x12, 0x81, 0x89, 0x41,
+ 0xa6, 0xf1, 0x12, 0x52, 0xd9, 0x9d, 0x53, 0x4b, 0x57, 0xba, 0x7f, 0x9e,
+ 0x20, 0x1e, 0x07, 0xe1, 0x14, 0x8b, 0xf5, 0x91, 0x02, 0xec, 0x1f, 0xe1,
+ 0x6f, 0xe2, 0x57, 0x0f, 0xf8, 0xa3, 0xc1, 0x05, 0x7d, 0xa4, 0x61, 0x5d,
+ 0x92, 0xc6, 0x4b, 0xda, 0xaf, 0x06, 0x7c, 0xf6, 0x93, 0x10, 0x4d, 0x27,
+ 0x89, 0x85, 0xc9, 0x50, 0xec, 0xa8, 0x39, 0xd2, 0xc1, 0x38, 0xf5, 0x34,
+ 0x7d, 0xe4, 0xb2, 0x3f, 0xf9, 0x6d, 0xf6, 0x78, 0x6b, 0x40, 0x2a, 0x25,
+ 0x27, 0xfa, 0x9c, 0xc4, 0x4f, 0x67, 0xe8, 0xf3, 0xfd, 0xa1, 0x1c, 0x09,
+ 0xc6, 0xa0, 0x13, 0xc3, 0xa7, 0x9a, 0xf3, 0x60, 0xcd, 0xbd, 0x32, 0x74,
+ 0xe6, 0x8a, 0x63, 0xcc, 0x68, 0xf2, 0xa7, 0xcd, 0x40, 0xb9, 0xdc, 0xee,
+ 0x13, 0x73, 0x2d, 0xd9, 0x2e, 0x8a, 0x80, 0x08, 0xaf, 0xda, 0x4d, 0x1b,
+ 0x9a, 0x08, 0x7c, 0x3f, 0x6a, 0xde, 0x4b, 0xa2, 0x7b, 0x9b, 0x1c, 0x53,
+ 0xea, 0x34, 0x62, 0x63, 0x44, 0x5a, 0xc9, 0x01, 0xcb, 0x3b, 0x56, 0xb0,
+ 0x50, 0xdb, 0xd3, 0xe3, 0xcd, 0xd9, 0x51, 0xf0, 0x35, 0x3d, 0xf0, 0x24,
+ 0xac, 0x61, 0x37, 0xef, 0x6a, 0x27, 0x08, 0xc3, 0xbd, 0x6c, 0x16, 0x1f,
+ 0x81, 0xbe, 0xf9, 0x11, 0x60, 0x5c, 0x17, 0x9e, 0xe9, 0x00, 0x1f, 0x60,
+ 0xbd, 0x18, 0x2f, 0xcd, 0x28, 0xda, 0xb9, 0x94, 0x0b, 0x99, 0x95, 0x90,
+ 0xa1, 0x42, 0x6c, 0xa9, 0x70, 0xe5, 0x3a, 0x15, 0x04, 0xd4, 0x95, 0xd2,
+ 0x49, 0xb0, 0x7a, 0x1e, 0x0c, 0x8c, 0xc2, 0x16, 0x3e, 0x02, 0xa5, 0xc4,
+ 0x52, 0x88, 0xb9, 0x38, 0xb2, 0x8a, 0x80, 0xdc, 0x3b, 0x30, 0x26, 0x0c,
+ 0x6b, 0x87, 0x4c, 0xd3, 0x65, 0xa1, 0xe1, 0x12, 0x8f, 0x0f, 0x0c, 0x42,
+ 0xbe, 0x96, 0xf6, 0xd3, 0x32, 0x22, 0x14, 0x4f, 0x84, 0x8c, 0x6d, 0x33,
+ 0x50, 0x12, 0xb5, 0xd5, 0xdb, 0x3e, 0x0c, 0x6b, 0x95, 0x27, 0x41, 0x56,
+ 0xe4, 0xe7, 0xc3, 0x5d, 0xc6, 0xb6, 0x9d, 0xe5, 0xa9, 0xc3, 0x08, 0xe4,
+ 0x19, 0xe0, 0x98, 0x60, 0xbe, 0x40, 0x22, 0xbb, 0x2e, 0xef, 0x9e, 0x3c,
+ 0x5c, 0x1c, 0x26, 0x42, 0x32, 0xdd, 0x70, 0xc5, 0xca, 0x70, 0x65, 0x71,
+ 0xad, 0x35, 0x69, 0x97, 0x86, 0x97, 0x44, 0x2e, 0xe8, 0xee, 0xa2, 0xc4,
+ 0x42, 0xca, 0x92, 0x15, 0x08, 0x31, 0xc9, 0x86, 0x56, 0x3f, 0x66, 0xf5,
+ 0x74, 0xd3, 0x1e, 0x04, 0x56, 0xf8, 0xb4, 0x30, 0xc9, 0x53, 0xcd, 0x81,
+ 0xbb, 0x04, 0xf9, 0xfb, 0xe1, 0x86, 0x23, 0x52, 0xee, 0x63, 0xbe, 0xf0,
+ 0x59, 0x42, 0xab, 0x64, 0xb9, 0xf5, 0x7b, 0x09, 0xbc, 0x29, 0x05, 0xdc,
+ 0x09, 0x13, 0xa3, 0x53, 0xf4, 0xd4, 0x38, 0x26, 0x88, 0x0d, 0x60, 0xa4,
+ 0x07, 0x2f, 0xeb, 0x76, 0xa0, 0xf2, 0x86, 0xd8, 0x81, 0x8e, 0xcf, 0x6e,
+ 0x9f, 0x27, 0xa1, 0xdd, 0xa7, 0xf3, 0x9f, 0x79, 0xea, 0x65, 0xfb, 0x70,
+ 0xbd, 0x8a, 0xa4, 0xe8, 0xf0, 0x94, 0xb8, 0x2a, 0x9b, 0x4e, 0x49, 0x06,
+ 0xef, 0xa7, 0x4f, 0x78, 0x93, 0x68, 0x8f, 0xf3, 0xf1, 0x31, 0x78, 0x93,
+ 0x78, 0x72, 0x24, 0xa6, 0x27, 0x25, 0x19, 0x2a, 0x8d, 0xf9, 0xde, 0x76,
+ 0x6c, 0xee, 0xda, 0xc4, 0x7e, 0x01, 0x38, 0x89, 0x5c, 0xf1, 0x6e, 0x26,
+ 0x50, 0x79, 0x70, 0x08, 0x06, 0x8f, 0x8f, 0xe4, 0x32, 0x38, 0xd1, 0x31,
+ 0x80, 0x06, 0x1a, 0x83, 0x42, 0x0d, 0xd4, 0x76, 0x0c, 0xd8, 0x56, 0xef,
+ 0x63, 0x21, 0xdc, 0x0c, 0x75, 0x21, 0x04, 0xbd, 0xe6, 0x53, 0x4e, 0xf4,
+ 0x2a, 0x42, 0x0b, 0xc7, 0xa1, 0x9d, 0x7d, 0x64, 0x32, 0x86, 0xbd, 0x53,
+ 0x61, 0x90, 0x2c, 0xc0, 0x46, 0x2a, 0xab, 0xa1, 0x36, 0xcb, 0x01, 0x34,
+ 0x7a, 0x1a, 0xd2, 0x13, 0x6b, 0x41, 0x51, 0x75, 0x76, 0x3a, 0x92, 0x49,
+ 0xa2, 0x57, 0xb6, 0x40, 0x3a, 0x10, 0x2a, 0x01, 0x58, 0xc5, 0x84, 0xd2,
+ 0x52, 0x1e, 0x6f, 0x0e, 0xe0, 0x74, 0xb6, 0x41, 0x1b, 0x67, 0x0f, 0x18,
+ 0x0f, 0x16, 0x6c, 0xcd, 0x6d, 0x98, 0x78, 0x79, 0xf4, 0x9f, 0xc2, 0xa8,
+ 0x22, 0x4b, 0x42, 0x0c, 0xda, 0x1e, 0xbe, 0x0b, 0x3f, 0x4e, 0xd6, 0x9c,
+ 0x41, 0x3d, 0x82, 0xff, 0xfb, 0x84, 0x1a, 0x3d, 0x6d, 0x65, 0xd5, 0x39,
+ 0x4f, 0x4f, 0xcd, 0x21, 0x4a, 0xe2, 0x32, 0x07, 0x3d, 0x6d, 0xfe, 0x1c,
+ 0xfe, 0xc9, 0x87, 0x8d, 0x22, 0xb9, 0x3e, 0x2a, 0xe8, 0x29, 0x8f, 0x84,
+ 0x31, 0x99, 0x1c, 0x7e, 0x11, 0xc7, 0x5f, 0xf1, 0xc5, 0x45, 0xa4, 0xae,
+ 0x4f, 0x47, 0xe2, 0xa6, 0xd0, 0x9a, 0x98, 0x15, 0x92, 0xc7, 0x5a, 0x53,
+ 0xd7, 0xa3, 0x6d, 0x0a, 0x8a, 0xfb, 0x13, 0xe4, 0x4a, 0xf5, 0x27, 0xa2,
+ 0x3d, 0xea, 0x49, 0x90, 0x95, 0xe4, 0x2e, 0x1f, 0x99, 0x81, 0xa7, 0xc6,
+ 0x3c, 0xde, 0xa3, 0x7f, 0xce, 0xe2, 0x5d, 0x4b, 0x3c, 0x67, 0xf2, 0x69,
+ 0x4b, 0xb7, 0x32, 0x04, 0xd5, 0x48, 0xf2, 0xd9, 0xd4, 0xed, 0x03, 0xb5,
+ 0x95, 0x92, 0xb5, 0xcf, 0x43, 0xa4, 0xe5, 0x67, 0x3c, 0x29, 0xd3, 0x08,
+ 0x8b, 0xf5, 0xb2, 0x62, 0x78, 0xc9, 0xa7, 0xef, 0x68, 0xd5, 0xa8, 0x6d,
+ 0x7b, 0x14, 0x67, 0x47, 0xa3, 0x5b, 0x10, 0x6e, 0x20, 0x80, 0x8c, 0x56,
+ 0x8c, 0xca, 0x4e, 0x11, 0x8b, 0xab, 0xc3, 0xd2, 0x48, 0xd6, 0xdf, 0x68,
+ 0x54, 0xdc, 0xda, 0xa7, 0x8c, 0xa9, 0x9e, 0x7d, 0x34, 0x43, 0x30, 0xea,
+ 0xb0, 0xd9, 0xf6, 0xda, 0xc8, 0xe1, 0x4f, 0x4b, 0xeb, 0xfc, 0x9c, 0xd2,
+ 0x1c, 0x81, 0x05, 0x98, 0x31, 0x57, 0xc9, 0x24, 0x33, 0xaa, 0x37, 0x4a,
+ 0xd9, 0xb2, 0x79, 0x0e, 0xbf, 0x3f, 0x41, 0x82, 0x1c, 0xfc, 0xad, 0x32,
+ 0x9c, 0x55, 0x47, 0x86, 0x04, 0x99, 0x07, 0x23, 0x17, 0xf5, 0xa0, 0x6d,
+ 0x45, 0x72, 0x5a, 0x92, 0xae, 0xdd, 0xb4, 0xf6, 0xea, 0x38, 0x0d, 0x1f,
+ 0x01, 0xda, 0xb4, 0xfd, 0x1b, 0x45, 0x25, 0x5d, 0x2c, 0xe4, 0x88, 0x3f,
+ 0x3d, 0x77, 0x06, 0x39, 0xe2, 0xa4, 0x9e, 0x12, 0x85, 0x8a, 0x60, 0x44,
+ 0x68, 0xca, 0xf2, 0x26, 0x61, 0x1b, 0x84, 0x44, 0xfa, 0x36, 0x69, 0xf5,
+ 0x44, 0x73, 0x0c, 0x54, 0xc7, 0x8f, 0x13, 0xc2, 0xc7, 0x68, 0xf4, 0x0d,
+ 0xc1, 0x58, 0x5a, 0x7e, 0xb3, 0xe5, 0x1c, 0x76, 0x2c, 0x4b, 0x3f, 0x75,
+ 0x09, 0xda, 0xda, 0x81, 0x58, 0x07, 0x6b, 0xf2, 0xf9, 0xd4, 0x65, 0x68,
+ 0x8b, 0x95, 0xbf, 0xd3, 0x44, 0x2f, 0x0e, 0xce, 0xec, 0x04, 0x13, 0x5b,
+ 0x15, 0xc3, 0x1f, 0xfb, 0xc6, 0x53, 0x74, 0x2e, 0x12, 0x69, 0x7b, 0x8e,
+ 0xd1, 0x19, 0x91, 0x3a, 0x44, 0x26, 0xc7, 0xe5, 0xe2, 0xff, 0x81, 0x8d,
+ 0x45, 0x26, 0x24, 0x09, 0xf2, 0x9c, 0x61, 0x0b, 0x03, 0xee, 0xd3, 0x43,
+ 0xa6, 0x6a, 0x46, 0xf1, 0xf2, 0x5e, 0x31, 0xb5, 0x59, 0x20, 0xb7, 0xc8,
+ 0x02, 0x17, 0x19, 0xb6, 0xad, 0x8e, 0xfd, 0x8b, 0xc6, 0xcc, 0x09, 0x33,
+ 0x0a, 0xa2, 0x46, 0x43, 0x86, 0xed, 0xc6, 0x62, 0x3e, 0x9a, 0x1b, 0xdc,
+ 0xe8, 0x7f, 0x9f, 0xa4, 0x85, 0xb3, 0x41, 0x98, 0x51, 0x8f, 0x09, 0x1d,
+ 0xc0, 0xb6, 0xea, 0xea, 0xc4, 0x19, 0x39, 0x9e, 0xa2, 0xf1, 0x9e, 0x64,
+ 0x13, 0xa9, 0xa4, 0x40, 0xa1, 0x4a, 0x62, 0xe5, 0x21, 0xad, 0x8a, 0x9a,
+ 0xe9, 0xd9, 0xfd, 0x22, 0xb9, 0x6a, 0x81, 0x6a, 0x3a, 0x29, 0x67, 0xec,
+ 0x50, 0xb9, 0x05, 0xee, 0x6c, 0x7c, 0x2f, 0x9c, 0xe4, 0x15, 0x27, 0x10,
+ 0xc2, 0x5c, 0xc4, 0x3a, 0x0b, 0x7c, 0xa5, 0x3e, 0xff, 0x24, 0x9b, 0x32,
+ 0x2c, 0x6e, 0x61, 0x97, 0x87, 0x89, 0x84, 0xc9, 0xb4, 0x6f, 0xcf, 0x06,
+ 0x97, 0x70, 0xfb, 0x34, 0x52, 0x60, 0xa3, 0xa5, 0x85, 0xbd, 0xeb, 0x80,
+ 0xe2, 0x21, 0xb9, 0x8b, 0xbe, 0x14, 0x40, 0xe6, 0xbb, 0xb4, 0x7e, 0x6a,
+ 0x74, 0x29, 0x17, 0x53, 0x6b, 0x2f, 0x82, 0x0b, 0x79, 0xb2, 0x97, 0x4c,
+ 0x92, 0xdd, 0x67, 0x61, 0xd5, 0x8a, 0x18, 0x8b, 0x97, 0x20, 0x1f, 0xc4,
+ 0x58, 0xdb, 0x8c, 0x09, 0x6f, 0xbd, 0x7c, 0x90, 0xb7, 0x27, 0xa5, 0xd8,
+ 0x98, 0x60, 0x8f, 0xb1, 0x62, 0xe4, 0x9f, 0x7e, 0x7c, 0x7e, 0x1f, 0x16,
+ 0xc7, 0x31, 0x31, 0xa8, 0xac, 0x10, 0x1e, 0x9e, 0x71, 0xf6, 0xa9, 0x4a,
+ 0x15, 0xf0, 0xb6, 0xda, 0xc7, 0xa8, 0xcb, 0x20, 0x64, 0xe7, 0x23, 0x20,
+ 0xa1, 0x11, 0xc9, 0x40, 0x76, 0xc0, 0xab, 0x73, 0xc6, 0x10, 0xc3, 0x8a,
+ 0x91, 0x6e, 0x34, 0x53, 0x3a, 0x3e, 0x4d, 0xf6, 0x29, 0x37, 0x0d, 0xdd,
+ 0xff, 0xf1, 0x33, 0x23, 0xb2, 0x62, 0x4b, 0x7e, 0x0b, 0xd7, 0x59, 0xf3,
+ 0xd4, 0x24, 0xde, 0x10, 0x4e, 0x87, 0x4f, 0x21, 0x23, 0x32, 0x61, 0x64,
+ 0x52, 0x28, 0x0a, 0xf3, 0xb1, 0x18, 0x8e, 0xec, 0xf9, 0x50, 0x57, 0xc3,
+ 0x3c, 0x7f, 0x52, 0x55, 0xcb, 0x05, 0x84, 0x16, 0xdc, 0x79, 0x19, 0xb5,
+ 0xb8, 0x22, 0xd9, 0x44, 0x8d, 0x98, 0x3c, 0x21, 0x78, 0x77, 0xad, 0xc9,
+ 0x89, 0x5c, 0x92, 0x19, 0x97, 0x02, 0x71, 0x39, 0x1e, 0xd0, 0x2e, 0x48,
+ 0x78, 0x79, 0x62, 0x04, 0x62, 0x97, 0x54, 0xdf, 0xdb, 0x3a, 0x70, 0x46,
+ 0xc8, 0x32, 0xa9, 0x5e, 0x07, 0x56, 0x81, 0x6d, 0x6e, 0xe5, 0xde, 0xe3,
+ 0xcd, 0x89, 0xa3, 0xee, 0xf7, 0x28, 0x64, 0xe0, 0xa1, 0x17, 0xbc, 0xfe,
+ 0x51, 0xd3, 0x4e, 0xf7, 0xb6, 0xb6, 0x7e, 0xfe, 0xb1, 0x15, 0x06, 0xf1,
+ 0xe5, 0xcf, 0x9f, 0x52, 0xc4, 0xb7, 0x9d, 0x4a, 0xc9, 0x68, 0x3d, 0x31,
+ 0x53, 0x37, 0xf7, 0x17, 0xba, 0x85, 0x72, 0x17, 0x9b, 0x9f, 0x26, 0xde,
+ 0x60, 0xbc, 0x92, 0x97, 0xe5, 0x8a, 0xc2, 0xb8, 0x2d, 0x64, 0x70, 0x6e,
+ 0xdf, 0x02, 0x7c, 0x71, 0x51, 0x63, 0x0b, 0x77, 0xd4, 0xf7, 0x10, 0x6e,
+ 0xfa, 0x51, 0x7c, 0x07, 0xea, 0x92, 0xc2, 0xff, 0x1c, 0x2a, 0x09, 0x1c,
+ 0x45, 0xac, 0x38, 0xb5, 0xb0, 0xc0, 0x81, 0xbb, 0x61, 0x83, 0xd0, 0x63,
+ 0xc8, 0xe6, 0x02, 0xf2, 0x9a, 0xbc, 0x2f, 0x1d, 0x18, 0x84, 0x07, 0xa8,
+ 0x21, 0x59, 0x5c, 0xec, 0xde, 0x20, 0x44, 0x48, 0x52, 0x9f, 0x6d, 0x06,
+ 0x4f, 0x80, 0x78, 0x4b, 0x35, 0xbe, 0xe0, 0xb1, 0xb1, 0x55, 0x88, 0x19,
+ 0x44, 0x53, 0x56, 0x55, 0x9a, 0x17, 0x68, 0x39, 0x67, 0x9e, 0xcc, 0x8b,
+ 0x58, 0x68, 0x25, 0xa3, 0x62, 0xc4, 0x00, 0x37, 0x25, 0x31, 0xfc, 0x11,
+ 0x28, 0x10, 0x35, 0x27, 0xf9, 0x5b, 0x29, 0x79, 0xd7, 0x41, 0x10, 0x34,
+ 0x63, 0x85, 0x30, 0x87, 0x5c, 0x0d, 0x0d, 0x12, 0xf8, 0x63, 0xb3, 0xfb,
+ 0x9c, 0x91, 0x73, 0xfd, 0x28, 0x12, 0xcf, 0x4d, 0x22, 0x26, 0xa5, 0x3a,
+ 0x8b, 0x04, 0xcb, 0x59, 0x24, 0x14, 0xcd, 0x5a, 0x3d, 0x96, 0x78, 0xb4,
+ 0xf5, 0x95, 0x09, 0xca, 0xd4, 0x10, 0xba, 0x4b, 0xd7, 0x22, 0x32, 0xa9,
+ 0xc3, 0xcd, 0xaf, 0x39, 0x3f, 0xfb, 0x1e, 0x19, 0x5c, 0x3d, 0x24, 0x69,
+ 0xea, 0x98, 0x63, 0x91, 0xf6, 0xe4, 0x79, 0xb3, 0x8e, 0x57, 0x4f, 0xc8,
+ 0x91, 0xf8, 0x2d, 0x4a, 0x7c, 0x45, 0x8c, 0x69, 0xe1, 0x17, 0x96, 0x96,
+ 0x24, 0xb1, 0xc8, 0x65, 0x62, 0x64, 0x21, 0x36, 0x6d, 0x80, 0xb6, 0x0c,
+ 0x97, 0x23, 0xd4, 0x49, 0xe1, 0xf3, 0xd4, 0x00, 0x07, 0x27, 0x8b, 0x7a,
+ 0x45, 0x7a, 0xa6, 0xf9, 0x9a, 0xbc, 0xb8, 0x4a, 0x1c, 0xf1, 0x5a, 0xd9,
+ 0x13, 0x7f, 0x88, 0xec, 0xe3, 0x97, 0x2a, 0xc7, 0xd6, 0x17, 0xe5, 0x98,
+ 0x20, 0x60, 0x5c, 0x49, 0x54, 0x48, 0x43, 0x30, 0xbb, 0x4b, 0xbb, 0x4c,
+ 0xcd, 0xd2, 0xc8, 0x3a, 0xb3, 0xb0, 0xba, 0x35, 0xbc, 0x95, 0xcc, 0x90,
+ 0x24, 0x7f, 0x67, 0xb0, 0x50, 0x1e, 0xd4, 0x9d, 0xec, 0x83, 0x34, 0xb2,
+ 0xc2, 0x6b, 0xf6, 0x41, 0x62, 0xef, 0xbc, 0xd0, 0xab, 0x56, 0xc0, 0xb5,
+ 0xab, 0x1e, 0x16, 0xd2, 0x2a, 0xed, 0xc1, 0x5a, 0x68, 0x92, 0xe3, 0x92,
+ 0x1d, 0x5e, 0x64, 0x05, 0xcf, 0xba, 0x8d, 0xf2, 0x41, 0xdd, 0xe1, 0xca,
+ 0xf3, 0x4a, 0x80, 0xa6, 0x93, 0x10, 0x43, 0xa1, 0x82, 0xc2, 0x8a, 0xa2,
+ 0x17, 0x5f, 0xba, 0x64, 0xd1, 0x3f, 0x3d, 0xdf, 0x26, 0xe6, 0xa2, 0x8d,
+ 0xa4, 0x7e, 0xc4, 0xd3, 0x9f, 0x9e, 0xa5, 0x8f, 0x30, 0x4c, 0xa8, 0x50,
+ 0x01, 0xbb, 0xe4, 0xda, 0x37, 0xe9, 0x44, 0x6a, 0xb8, 0xdc, 0xa5, 0x1a,
+ 0xb0, 0x29, 0x94, 0x1b, 0x20, 0x81, 0xc6, 0x0e, 0x53, 0xdf, 0x8f, 0xed,
+ 0x6f, 0x7c, 0x66, 0x22, 0x9c, 0x77, 0x43, 0x18, 0x55, 0x37, 0x8d, 0x59,
+ 0xab, 0xa2, 0xa3, 0x3c, 0x2a, 0xbc, 0x49, 0xb4, 0x29, 0x7f, 0x5e, 0x1d,
+ 0x89, 0xfc, 0xdb, 0x5d, 0x5d, 0x3f, 0x70, 0x11, 0x11, 0xe6, 0xca, 0x2b,
+ 0x4b, 0x62, 0x73, 0x8e, 0xce, 0xc8, 0x26, 0x17, 0xa7, 0x5a, 0x4f, 0x43,
+ 0xdf, 0x94, 0x5c, 0x31, 0x3f, 0x1d, 0x93, 0xda, 0x5a, 0x16, 0x64, 0x95,
+ 0x88, 0x40, 0x2e, 0xb7, 0x5c, 0x85, 0x38, 0xb3, 0x36, 0x8d, 0xe8, 0xa2,
+ 0x75, 0xff, 0x75, 0x41, 0x9d, 0x23, 0xb5, 0x25, 0x3a, 0x95, 0xdb, 0x65,
+ 0x28, 0xae, 0x88, 0x06, 0x96, 0x46, 0xca, 0x08, 0xb8, 0x9c, 0x41, 0xc8,
+ 0x74, 0x5f, 0x1f, 0x5d, 0x6c, 0x86, 0x18, 0xb4, 0xe9, 0xd4, 0x1f, 0x18,
+ 0x52, 0xb5, 0xf4, 0x88, 0xa7, 0xb6, 0x64, 0x8b, 0x4d, 0x9d, 0x2d, 0x08,
+ 0x0d, 0xc4, 0xc8, 0x56, 0x45, 0x1c, 0x4b, 0xf2, 0xc0, 0x2c, 0x03, 0x65,
+ 0xe5, 0xbb, 0x58, 0x24, 0xdf, 0xc6, 0x57, 0x7b, 0x31, 0xd3, 0x94, 0xa1,
+ 0xcf, 0x02, 0xeb, 0xe1, 0xd1, 0xc9, 0xd1, 0xc5, 0x51, 0x1f, 0x00, 0x27,
+ 0x81, 0x21, 0x77, 0x86, 0xdb, 0xab, 0xc9, 0x26, 0xd7, 0x85, 0xa1, 0xf9,
+ 0x2b, 0xda, 0x0e, 0xe4, 0x3d, 0x7f, 0x9f, 0x8d, 0x0f, 0xf7, 0xbf, 0xa3,
+ 0x8a, 0x68, 0x74, 0x66, 0xce, 0xce, 0x4f, 0xcf, 0xde, 0x1e, 0xbf, 0x3f,
+ 0xec, 0x27, 0x07, 0xa7, 0x67, 0x7f, 0xed, 0x27, 0xef, 0x4e, 0xbf, 0x3b,
+ 0x8a, 0x84, 0xd8, 0x52, 0xa8, 0x58, 0x24, 0xf0, 0x49, 0xaa, 0x8e, 0xd8,
+ 0x40, 0x6a, 0xae, 0xb5, 0xd1, 0x8a, 0x30, 0x27, 0x96, 0x8c, 0xea, 0x22,
+ 0xe2, 0x7c, 0x32, 0x4b, 0x69, 0x06, 0xfc, 0xcd, 0xd1, 0xfe, 0x61, 0x57,
+ 0x1c, 0x38, 0x3b, 0x1d, 0x5d, 0x60, 0x5e, 0x34, 0x41, 0x3b, 0x6f, 0x62,
+ 0xdf, 0x86, 0x59, 0x92, 0x9d, 0x9b, 0x94, 0xcc, 0x9b, 0xcc, 0xc3, 0xd0,
+ 0x34, 0x47, 0x00, 0x56, 0xb2, 0xe9, 0xca, 0x6a, 0xca, 0x08, 0x81, 0xb0,
+ 0x91, 0x72, 0x8f, 0xdd, 0x84, 0xe4, 0xe5, 0xf6, 0x01, 0xeb, 0x13, 0xf1,
+ 0x2c, 0x00, 0x60, 0xd4, 0xc2, 0x36, 0xe5, 0x85, 0xb7, 0xe5, 0x6b, 0x51,
+ 0xe7, 0x09, 0x2b, 0x3f, 0x16, 0x80, 0x07, 0xa2, 0x12, 0x87, 0x3f, 0xa4,
+ 0x12, 0xc0, 0x36, 0xce, 0x28, 0xf1, 0xa6, 0x46, 0xc1, 0x1d, 0x2f, 0xea,
+ 0x3a, 0xce, 0xde, 0x35, 0x82, 0x11, 0x21, 0x4e, 0x10, 0xd4, 0xc8, 0x06,
+ 0x49, 0xeb, 0xe7, 0x3a, 0xd4, 0xe2, 0x09, 0x3f, 0xf0, 0xc2, 0x26, 0x31,
+ 0xe0, 0x06, 0x08, 0x14, 0xcb, 0x4b, 0x43, 0x9b, 0x19, 0x47, 0x8b, 0xf0,
+ 0x56, 0x95, 0x2e, 0x0c, 0xf1, 0x98, 0x8e, 0xf8, 0x35, 0x4e, 0x48, 0xfc,
+ 0x0a, 0xd8, 0x78, 0xbb, 0xe2, 0x74, 0xfb, 0x45, 0xc0, 0xa4, 0x45, 0xef,
+ 0xb0, 0x9d, 0x1c, 0x9b, 0x7d, 0xa5, 0xa3, 0xde, 0x8d, 0x22, 0x44, 0xe6,
+ 0x13, 0x97, 0x79, 0xcd, 0x69, 0xab, 0x71, 0xd4, 0x4d, 0x5b, 0x61, 0xc7,
+ 0x04, 0x1c, 0x1c, 0xed, 0x99, 0xbe, 0x78, 0xaa, 0xeb, 0xc0, 0x0c, 0x76,
+ 0x7e, 0x74, 0x71, 0xde, 0xf1, 0xea, 0xbf, 0x8c, 0xd8, 0xf2, 0x36, 0x08,
+ 0xa8, 0x78, 0x33, 0xf1, 0xba, 0x75, 0xfd, 0xd2, 0x57, 0x4f, 0xf4, 0xfb,
+ 0x58, 0x4a, 0xee, 0xb3, 0x18, 0xc8, 0xf0, 0x06, 0x43, 0x22, 0x47, 0x66,
+ 0x49, 0x5f, 0x3c, 0xd2, 0xdb, 0x37, 0x47, 0x27, 0x67, 0xe1, 0x2c, 0xbf,
+ 0x3b, 0x7f, 0xfb, 0xd7, 0xe1, 0x23, 0xc9, 0x96, 0xbf, 0x7d, 0x4c, 0xef,
+ 0x7d, 0xda, 0x34, 0x51, 0x74, 0x71, 0x73, 0x59, 0x72, 0xa5, 0x17, 0x0d,
+ 0x71, 0x02, 0xb8, 0x03, 0x17, 0x55, 0x6b, 0x56, 0x22, 0x0f, 0x9b, 0xa9,
+ 0x07, 0x62, 0x83, 0x4a, 0x58, 0x5c, 0x39, 0xda, 0xb0, 0x56, 0x2e, 0x52,
+ 0x56, 0xb8, 0x82, 0x74, 0x12, 0x61, 0x42, 0x43, 0xc9, 0xc7, 0x54, 0xab,
+ 0xa4, 0x95, 0xd4, 0x1e, 0x11, 0x5e, 0x25, 0x2c, 0x17, 0xbd, 0x59, 0xe9,
+ 0xe5, 0x7e, 0x7a, 0x35, 0x2c, 0xab, 0x9c, 0xec, 0x73, 0x52, 0x41, 0x8e,
+ 0x5b, 0x4b, 0x50, 0x29, 0x95, 0x0e, 0x2d, 0x31, 0x80, 0x58, 0x73, 0x12,
+ 0x31, 0x94, 0x68, 0x86, 0x7a, 0xbb, 0xdd, 0x39, 0x54, 0x7b, 0x04, 0x13,
+ 0xd9, 0x36, 0x87, 0x56, 0x0b, 0x88, 0x04, 0x00, 0x51, 0xc5, 0x55, 0xb3,
+ 0xd1, 0xf3, 0xc4, 0x71, 0x14, 0xd5, 0x38, 0xec, 0x94, 0xdd, 0x5c, 0x29,
+ 0xa6, 0xeb, 0x2e, 0xad, 0x0a, 0x2e, 0x82, 0x1e, 0x60, 0x29, 0xd7, 0xcb,
+ 0xd6, 0x86, 0x3d, 0x20, 0x88, 0x92, 0xdc, 0x24, 0x52, 0x36, 0x82, 0x7e,
+ 0x46, 0x0a, 0x05, 0xa5, 0xce, 0xd5, 0x43, 0x13, 0x22, 0x77, 0xb2, 0xd4,
+ 0x3d, 0xe0, 0x97, 0xb9, 0xc4, 0xc1, 0xb8, 0xe3, 0x20, 0x49, 0xa6, 0xcb,
+ 0x2a, 0x4c, 0xe3, 0x4d, 0x13, 0xaf, 0x43, 0x06, 0x6b, 0xe9, 0xb7, 0x3c,
+ 0x6e, 0x14, 0x88, 0x08, 0xa0, 0x09, 0x36, 0x9d, 0x99, 0xee, 0xbd, 0x17,
+ 0x82, 0x39, 0x39, 0x64, 0x68, 0x0b, 0x39, 0xe7, 0x0d, 0x49, 0x09, 0x75,
+ 0x47, 0x81, 0xfa, 0x49, 0x9d, 0xe0, 0x6c, 0xf4, 0xbf, 0x3e, 0x5e, 0xae,
+ 0x89, 0x63, 0xb9, 0x7d, 0x48, 0x24, 0x96, 0xbd, 0x96, 0xb5, 0xd6, 0x05,
+ 0xa1, 0x9d, 0x48, 0x52, 0x18, 0x35, 0x12, 0xac, 0xc9, 0x5a, 0xd4, 0xd7,
+ 0x49, 0x25, 0x6a, 0x9a, 0x89, 0x07, 0x73, 0x8d, 0xf8, 0x38, 0xf3, 0xa5,
+ 0xa1, 0x64, 0x16, 0x10, 0x0c, 0x93, 0xef, 0x33, 0x46, 0x05, 0xca, 0xe2,
+ 0xc9, 0x7b, 0x83, 0x88, 0x4d, 0x88, 0x4c, 0x5f, 0x2b, 0x58, 0xf3, 0x6f,
+ 0x77, 0x8a, 0xff, 0xea, 0x88, 0x82, 0x17, 0xf1, 0x35, 0xfe, 0xf8, 0x45,
+ 0x64, 0xe1, 0x95, 0xc3, 0x60, 0x2f, 0xdc, 0x86, 0x21, 0xff, 0x16, 0x7d,
+ 0x0c, 0x82, 0x5c, 0xd0, 0xe9, 0xa6, 0x58, 0x35, 0xbd, 0xed, 0x16, 0x33,
+ 0x17, 0xdd, 0xa7, 0x6d, 0xaa, 0x68, 0x91, 0x44, 0x44, 0x29, 0xe5, 0x3d,
+ 0xe6, 0x4c, 0x8d, 0x9c, 0x8a, 0xc1, 0xd2, 0x6d, 0x8a, 0xb3, 0x93, 0xfd,
+ 0x9e, 0x78, 0x64, 0xff, 0x00, 0x1e, 0x19, 0xd5, 0x94, 0xc4, 0x01, 0x78,
+ 0x3d, 0x25, 0x2b, 0xa0, 0x11, 0xfa, 0xc8, 0xef, 0x6f, 0x9a, 0xfe, 0xe2,
+ 0x3f, 0xe3, 0x25, 0x1d, 0xb5, 0xd6, 0xb1, 0x9f, 0xdd, 0xce, 0xce, 0x03,
+ 0xd2, 0xb0, 0x6c, 0xb9, 0xbc, 0x79, 0x39, 0x15, 0x3c, 0xae, 0xb4, 0xd1,
+ 0x95, 0x8e, 0x70, 0x0d, 0x5e, 0x77, 0x2d, 0x5d, 0x44, 0xe7, 0xd0, 0x3c,
+ 0xde, 0x27, 0x2d, 0xa8, 0x2c, 0x56, 0x36, 0x29, 0xa6, 0x6e, 0xfa, 0x36,
+ 0x42, 0x78, 0x6c, 0x27, 0x0c, 0xa6, 0xa3, 0xea, 0x11, 0x99, 0x52, 0x58,
+ 0xc2, 0x33, 0x97, 0x11, 0x1e, 0x62, 0xb5, 0xaf, 0x8e, 0x84, 0x00, 0x99,
+ 0x7d, 0x10, 0xe9, 0x88, 0xc4, 0x45, 0x46, 0x27, 0xa4, 0x78, 0x66, 0x5b,
+ 0xcb, 0xd1, 0x0c, 0xb2, 0x56, 0x4c, 0x39, 0x0a, 0xd0, 0x00, 0x56, 0x7c,
+ 0x6a, 0xa3, 0x19, 0x63, 0x1a, 0x91, 0x16, 0x27, 0x43, 0xf1, 0x55, 0x48,
+ 0x67, 0x3c, 0x2f, 0xcd, 0xb8, 0xc1, 0x90, 0x92, 0x8d, 0x39, 0x4d, 0x65,
+ 0x53, 0x0d, 0xd2, 0xd1, 0xad, 0xb0, 0x10, 0x78, 0x5c, 0x35, 0xca, 0x22,
+ 0xe5, 0x98, 0x96, 0xa9, 0x11, 0x41, 0xc9, 0x01, 0x2e, 0x0e, 0xd7, 0x88,
+ 0xeb, 0x2c, 0x49, 0x90, 0x27, 0xd1, 0xb4, 0xab, 0x61, 0x68, 0x92, 0x0b,
+ 0xd9, 0xc1, 0x15, 0x50, 0xc0, 0x7f, 0x5f, 0xcd, 0x71, 0x04, 0x96, 0x95,
+ 0x6c, 0x0c, 0x36, 0xad, 0xe0, 0x87, 0x2a, 0x5c, 0x4c, 0x1b, 0xa1, 0xfb,
+ 0x3a, 0x75, 0x41, 0xa7, 0x36, 0x39, 0x82, 0x31, 0xec, 0xe5, 0x34, 0x6a,
+ 0x86, 0x38, 0xf5, 0xb6, 0xc5, 0x46, 0x64, 0x65, 0x97, 0xc4, 0x8e, 0x02,
+ 0xb9, 0xac, 0xd3, 0x56, 0x91, 0xdd, 0xf9, 0x6d, 0x39, 0xa5, 0xcb, 0xb6,
+ 0xf7, 0x3b, 0x9e, 0xa9, 0x6b, 0x96, 0x4a, 0x67, 0x8b, 0xc0, 0x1e, 0x41,
+ 0xce, 0x7e, 0xfa, 0xc2, 0x7b, 0xf8, 0x1d, 0x57, 0xcb, 0x29, 0xc2, 0x88,
+ 0xa0, 0x77, 0xf8, 0x70, 0x98, 0x1c, 0x4a, 0x64, 0x3f, 0x72, 0xd3, 0x97,
+ 0xd2, 0x02, 0xc2, 0xbd, 0xbd, 0x66, 0xbe, 0x93, 0x4c, 0x9a, 0xc8, 0x96,
+ 0xca, 0xfb, 0xb5, 0x9f, 0x87, 0x2f, 0x5e, 0x09, 0x06, 0xcb, 0x12, 0x15,
+ 0x7d, 0x96, 0x8f, 0xf1, 0xb7, 0x5a, 0x2b, 0x73, 0x04, 0xa8, 0xd6, 0xc3,
+ 0x88, 0xbd, 0x81, 0xfd, 0x1c, 0xd0, 0x54, 0x9c, 0x87, 0x42, 0x4d, 0xfa,
+ 0xfa, 0x3e, 0xa9, 0x4e, 0x9c, 0x27, 0x63, 0x9b, 0x8e, 0xa5, 0xd4, 0x43,
+ 0x4f, 0x7a, 0x56, 0x4d, 0xe1, 0xc6, 0x7b, 0xa0, 0x47, 0xab, 0xb4, 0x62,
+ 0xd5, 0xaf, 0xb8, 0x51, 0x73, 0x2f, 0x1b, 0x31, 0xb2, 0xc9, 0xb2, 0x69,
+ 0x63, 0x05, 0xfa, 0x0e, 0x51, 0xb9, 0xc3, 0x79, 0x58, 0x1b, 0x70, 0xdc,
+ 0x88, 0x80, 0xde, 0x3b, 0x53, 0x53, 0xef, 0x5e, 0x6f, 0x53, 0x9c, 0x59,
+ 0xec, 0x97, 0x94, 0x8f, 0x63, 0x79, 0xf9, 0x3a, 0xe6, 0x2a, 0x63, 0xd4,
+ 0x30, 0xa4, 0xe9, 0x42, 0x8c, 0x89, 0x76, 0x6f, 0x68, 0xa7, 0x9a, 0xc6,
+ 0xfa, 0x7e, 0xcb, 0x05, 0x99, 0xbd, 0xae, 0xad, 0x51, 0x4d, 0x6a, 0x35,
+ 0x77, 0xbb, 0x8f, 0xf4, 0x0c, 0xd5, 0xd7, 0x68, 0xa6, 0x36, 0xf2, 0x5b,
+ 0x5f, 0xd5, 0xf5, 0x0f, 0xc2, 0xc0, 0x11, 0x59, 0xe5, 0xf0, 0xd8, 0x48,
+ 0xfe, 0xc6, 0x47, 0x36, 0x73, 0x2e, 0x98, 0xc5, 0x4d, 0x35, 0x7e, 0x6e,
+ 0xfe, 0xf9, 0x96, 0xfe, 0x21, 0x46, 0x41, 0x2a, 0x12, 0x83, 0x20, 0x33,
+ 0x8e, 0x52, 0xc8, 0x13, 0xa8, 0xc8, 0x0f, 0xeb, 0x95, 0x23, 0x50, 0xd1,
+ 0x5b, 0xfc, 0x52, 0x65, 0x8f, 0xbc, 0x63, 0xe6, 0xf6, 0x0f, 0xb2, 0x7a,
+ 0x2e, 0x8d, 0x92, 0x60, 0x28, 0x71, 0xc2, 0x16, 0xb5, 0xb9, 0xe5, 0x26,
+ 0xa8, 0x84, 0x6b, 0x51, 0x52, 0x18, 0x57, 0x0d, 0x06, 0x50, 0x98, 0x16,
+ 0xf2, 0x15, 0xee, 0xcb, 0xd5, 0xfd, 0x21, 0x9f, 0x31, 0x89, 0xa6, 0x35,
+ 0x3e, 0x3a, 0xb7, 0x43, 0xca, 0x17, 0x13, 0x09, 0x0b, 0x9b, 0x81, 0xa4,
+ 0x9f, 0xd4, 0xee, 0xcd, 0x78, 0x99, 0x6b, 0xcd, 0x5a, 0x3c, 0x3a, 0xd4,
+ 0x04, 0x3c, 0xce, 0xbe, 0x5c, 0x31, 0x4e, 0x4e, 0x5f, 0x43, 0x51, 0x22,
+ 0xa4, 0x0a, 0xdd, 0x58, 0x24, 0x94, 0x79, 0x36, 0x27, 0xbc, 0x45, 0x9b,
+ 0xa6, 0xc6, 0x22, 0x18, 0xa5, 0x14, 0x53, 0x77, 0x2b, 0xdc, 0x49, 0x53,
+ 0x4a, 0x5b, 0x26, 0xe5, 0x9a, 0x43, 0xde, 0xff, 0x10, 0xd8, 0x96, 0xeb,
+ 0x87, 0x62, 0x72, 0x7d, 0xf8, 0x7e, 0xb4, 0xb6, 0xda, 0x51, 0xef, 0x4d,
+ 0x0e, 0x4f, 0x57, 0x65, 0x41, 0x39, 0x4e, 0x5e, 0xf4, 0x42, 0xc8, 0x02,
+ 0x46, 0x67, 0xef, 0x8f, 0xbe, 0x3e, 0xd5, 0x7f, 0x7e, 0xc9, 0xb2, 0x9e,
+ 0xa4, 0xd5, 0x55, 0x16, 0x41, 0x90, 0x0c, 0x46, 0xa4, 0x98, 0x36, 0x9e,
+ 0x38, 0x6b, 0x48, 0x63, 0x46, 0xaf, 0x33, 0x55, 0xf4, 0x85, 0x38, 0xf0,
+ 0xd1, 0x0a, 0x87, 0x2f, 0xf8, 0xff, 0xee, 0xd7, 0x5f, 0x85, 0xbc, 0xfe,
+ 0xf0, 0xfd, 0x8a, 0xee, 0xe8, 0x9b, 0x81, 0x5e, 0xed, 0x62, 0xd5, 0xf2,
+ 0x32, 0xc7, 0xc3, 0x53, 0x23, 0xb0, 0xc1, 0xf1, 0x01, 0x28, 0xa6, 0xf0,
+ 0x13, 0xc7, 0xc8, 0x3c, 0x21, 0xff, 0x3c, 0xfa, 0xa0, 0x00, 0x94, 0xc5,
+ 0xbb, 0x62, 0xe4, 0xb2, 0x11, 0x17, 0x95, 0x3a, 0xe7, 0x98, 0x9a, 0x33,
+ 0x31, 0xb2, 0x6e, 0x3e, 0xb6, 0x47, 0xf1, 0xe6, 0x88, 0x01, 0x44, 0xca,
+ 0x0e, 0xbd, 0x33, 0xe2, 0x01, 0xf1, 0xe5, 0x4f, 0xde, 0x3e, 0x7d, 0x21,
+ 0xd9, 0x18, 0x1b, 0x4e, 0x6f, 0xef, 0x86, 0x67, 0x62, 0x0e, 0x7c, 0xce,
+ 0x68, 0x6b, 0xf1, 0xe6, 0x5e, 0x7c, 0xfe, 0xe2, 0xf9, 0xe6, 0x66, 0xdf,
+ 0xc2, 0x49, 0x68, 0x0e, 0x13, 0xe5, 0xd2, 0xe6, 0x74, 0x86, 0x58, 0xc5,
+ 0x31, 0xa2, 0xe1, 0x35, 0x74, 0x66, 0x0b, 0x81, 0x11, 0x6f, 0x8e, 0x58,
+ 0xa0, 0xbe, 0x47, 0xd3, 0x23, 0x14, 0x04, 0xb0, 0x16, 0x8b, 0x45, 0x40,
+ 0xac, 0x2b, 0xe3, 0x07, 0x36, 0xd4, 0x32, 0xbf, 0xd2, 0x23, 0xce, 0x85,
+ 0xc0, 0x2d, 0x08, 0x08, 0xfb, 0x43, 0xe0, 0x39, 0x50, 0x26, 0x4d, 0xd8,
+ 0xc7, 0x6f, 0x8f, 0x4f, 0x8e, 0xec, 0xf1, 0xfb, 0x5f, 0x5b, 0x43, 0x1a,
+ 0x63, 0x35, 0x09, 0x73, 0xf9, 0x20, 0xd9, 0x78, 0xe9, 0xbd, 0xfd, 0x04,
+ 0xb5, 0x08, 0xbf, 0xed, 0xb3, 0x7e, 0x85, 0x8f, 0x9d, 0x69, 0xd6, 0x34,
+ 0x7c, 0xf4, 0xfe, 0xbb, 0xe3, 0xf3, 0xd3, 0xf7, 0xef, 0x8e, 0xde, 0xdb,
+ 0x48, 0x7c, 0xba, 0x86, 0x62, 0x9e, 0xab, 0x3a, 0x74, 0x0a, 0xe4, 0x94,
+ 0xcb, 0x41, 0x22, 0x12, 0x39, 0x69, 0x68, 0x16, 0x66, 0xbf, 0xe4, 0xaf,
+ 0xa1, 0xdf, 0x9c, 0xf7, 0x90, 0x6e, 0x1d, 0x49, 0xe2, 0x0b, 0x8a, 0xa0,
+ 0x9d, 0x52, 0xa6, 0xd3, 0x90, 0xd3, 0x12, 0xd8, 0x01, 0x91, 0xb3, 0xf3,
+ 0xec, 0x7e, 0x92, 0x09, 0xf8, 0x79, 0xed, 0x15, 0x5b, 0xd3, 0xbc, 0x1c,
+ 0x97, 0xbd, 0xd4, 0x1a, 0x84, 0xa3, 0x76, 0x2e, 0x46, 0xcd, 0xe5, 0xdb,
+ 0x62, 0x7e, 0x38, 0x20, 0x0d, 0x34, 0x9e, 0xc7, 0xe6, 0x5a, 0xfc, 0x19,
+ 0xf0, 0x6f, 0xb0, 0xd3, 0xde, 0x03, 0xab, 0x77, 0x10, 0x9c, 0xea, 0xc8,
+ 0xee, 0x2a, 0xa4, 0xde, 0x0c, 0x5a, 0x2e, 0x6e, 0x54, 0x59, 0xf8, 0x42,
+ 0xfc, 0xd9, 0x21, 0xe8, 0x5c, 0xed, 0x3b, 0x8d, 0x2c, 0x94, 0x87, 0xa6,
+ 0xf6, 0xc3, 0xd9, 0xb6, 0xe6, 0xc5, 0xbe, 0x8e, 0x3e, 0x9e, 0x9d, 0x9f,
+ 0xfe, 0xf0, 0xd7, 0xdf, 0xb8, 0x8b, 0x91, 0x9b, 0xc6, 0x8f, 0x74, 0x51,
+ 0x68, 0xe3, 0x3f, 0xff, 0xe6, 0xbd, 0xb5, 0x9b, 0xef, 0x7b, 0x20, 0xee,
+ 0x51, 0x84, 0x70, 0x38, 0x87, 0xb8, 0x18, 0x44, 0xe2, 0xbc, 0x45, 0x5e,
+ 0x70, 0xab, 0x65, 0x11, 0x70, 0x6d, 0xd7, 0x6d, 0xe2, 0x4c, 0x43, 0xdf,
+ 0xdb, 0x30, 0x41, 0x41, 0x36, 0x92, 0x31, 0xc2, 0xb2, 0x6c, 0x7d, 0x54,
+ 0x01, 0xc0, 0xa5, 0x69, 0xd7, 0x63, 0xff, 0xe4, 0xe4, 0x37, 0x5d, 0x04,
+ 0xe8, 0xe3, 0x6e, 0x2e, 0x03, 0x2b, 0xc6, 0xa9, 0x2f, 0x39, 0x90, 0x4e,
+ 0x5a, 0xaa, 0xfb, 0xfb, 0x53, 0x19, 0x0d, 0xbb, 0xa2, 0x06, 0x75, 0x66,
+ 0x04, 0x5e, 0x78, 0x02, 0xc8, 0x94, 0x4c, 0xb7, 0x1b, 0x6a, 0x98, 0x7f,
+ 0x11, 0x08, 0x4c, 0x14, 0x8c, 0x4d, 0xb2, 0xb4, 0xad, 0xd0, 0x21, 0xae,
+ 0x5b, 0x86, 0xa9, 0x41, 0x5e, 0x74, 0x69, 0xfd, 0xa8, 0x5c, 0x2d, 0x43,
+ 0xcb, 0x20, 0x45, 0x7c, 0xdf, 0x64, 0xc6, 0xa4, 0x48, 0x9a, 0x2a, 0xaf,
+ 0x6f, 0x90, 0x50, 0x4e, 0x87, 0x52, 0xca, 0x84, 0x36, 0xa8, 0x99, 0x8c,
+ 0x82, 0xf7, 0x34, 0x14, 0x33, 0x76, 0x1e, 0xb1, 0xf9, 0x79, 0x71, 0x7a,
+ 0x70, 0x7a, 0x62, 0x7e, 0x39, 0x7a, 0x7b, 0xfc, 0x83, 0x63, 0x68, 0x5c,
+ 0x3d, 0xa3, 0xa5, 0x35, 0xb8, 0x52, 0x1a, 0x1d, 0x87, 0x6a, 0x0c, 0xd0,
+ 0x58, 0xca, 0xf1, 0xae, 0x39, 0x4f, 0xba, 0x0d, 0xe9, 0x10, 0xbf, 0xa2,
+ 0x07, 0x84, 0xf0, 0x58, 0x04, 0x87, 0x1f, 0xf9, 0xd2, 0xda, 0x25, 0x26,
+ 0xc1, 0x16, 0x86, 0x72, 0x2b, 0x00, 0x40, 0x06, 0x57, 0x56, 0xb6, 0x0c,
+ 0x5f, 0xe3, 0x9b, 0x00, 0x3b, 0x5a, 0xbf, 0x07, 0xce, 0x6b, 0xf4, 0x3f,
+ 0x7f, 0x92, 0xaa, 0x0a, 0xda, 0x18, 0x0c, 0xd4, 0xdb, 0x21, 0x1e, 0xe6,
+ 0xbb, 0x5d, 0x3a, 0x21, 0x2f, 0xf0, 0x07, 0xda, 0x16, 0xdb, 0x73, 0x92,
+ 0x05, 0x90, 0x6c, 0x5c, 0xe4, 0x73, 0xc1, 0xc9, 0xec, 0x04, 0x7d, 0x1b,
+ 0xb0, 0x12, 0x45, 0x4e, 0x90, 0xa2, 0xd0, 0x84, 0x59, 0x79, 0x9b, 0x72,
+ 0xf5, 0xd2, 0x4b, 0x5b, 0x63, 0xa3, 0xd3, 0x46, 0xfa, 0xab, 0x1a, 0x49,
+ 0xdb, 0xad, 0xbc, 0xf8, 0x35, 0x8d, 0xbc, 0xe8, 0xb4, 0x71, 0xfd, 0xab,
+ 0x1a, 0xb1, 0x55, 0xa0, 0xcc, 0xb5, 0xf8, 0xc3, 0xf1, 0x45, 0x72, 0x70,
+ 0x7a, 0xe8, 0x68, 0xf4, 0x42, 0x32, 0x74, 0x2b, 0xc6, 0x4a, 0x19, 0x2f,
+ 0x0b, 0x92, 0x25, 0xe8, 0x40, 0x71, 0x29, 0x4c, 0x57, 0x59, 0x9d, 0x3c,
+ 0xfb, 0x6a, 0x35, 0xcd, 0x72, 0xfa, 0xbb, 0xe2, 0xac, 0x38, 0x1f, 0xdb,
+ 0x51, 0x8b, 0xb0, 0xa3, 0xa0, 0xa8, 0x9c, 0x44, 0x22, 0x6d, 0x42, 0x82,
+ 0x4f, 0x2b, 0xb1, 0x20, 0x27, 0xe3, 0x94, 0x1c, 0x7c, 0x05, 0x3b, 0x46,
+ 0x8d, 0x6c, 0xb2, 0xdf, 0xb4, 0x22, 0xf1, 0x4a, 0x9b, 0x65, 0x0b, 0x93,
+ 0x03, 0xe5, 0xa2, 0x22, 0x3e, 0x86, 0xd5, 0xdc, 0xbc, 0xd1, 0xa1, 0xf8,
+ 0xe9, 0xbd, 0x3b, 0xc2, 0x09, 0x8b, 0x16, 0xc5, 0x48, 0x19, 0x00, 0x48,
+ 0x5e, 0xa4, 0x93, 0xc0, 0xbb, 0x82, 0x03, 0x49, 0xb7, 0x62, 0x61, 0x75,
+ 0x56, 0xa9, 0x50, 0x1a, 0xb0, 0x28, 0xdb, 0x84, 0xed, 0x67, 0x97, 0xff,
+ 0x79, 0xcb, 0x05, 0xb3, 0xcd, 0xf9, 0x93, 0xbc, 0xd0, 0xfc, 0x1f, 0xde,
+ 0x1d, 0xfd, 0xcc, 0x85, 0x44, 0xcc, 0xd3, 0x19, 0x07, 0xaa, 0x48, 0x32,
+ 0xff, 0x43, 0xd1, 0xa4, 0xf7, 0x88, 0x2d, 0x22, 0x91, 0x08, 0x6b, 0x38,
+ 0xf1, 0xd8, 0xe0, 0x73, 0x61, 0xce, 0xaa, 0xc1, 0xc2, 0xca, 0xb7, 0x70,
+ 0xb9, 0x00, 0x5c, 0x97, 0xc6, 0x8f, 0x4e, 0x54, 0x24, 0x23, 0x5e, 0x40,
+ 0xb3, 0x2e, 0x54, 0x8f, 0x34, 0xee, 0xc8, 0xd4, 0xb7, 0xc9, 0xd0, 0xad,
+ 0x30, 0x38, 0xd4, 0x01, 0x7d, 0x4a, 0x9e, 0xec, 0x7c, 0x92, 0x23, 0xed,
+ 0x87, 0x0b, 0xb2, 0xa3, 0xcc, 0x1b, 0x16, 0x6d, 0x10, 0xb7, 0x20, 0xfa,
+ 0x28, 0x0d, 0x2a, 0x7a, 0x4c, 0x4b, 0x2c, 0x23, 0xc7, 0xfb, 0xa0, 0x16,
+ 0xa3, 0xf9, 0xe6, 0x81, 0x47, 0x4c, 0x07, 0xbe, 0x8c, 0x20, 0xec, 0xd8,
+ 0x8d, 0x11, 0xed, 0xd1, 0x29, 0x6a, 0x2f, 0xd4, 0x93, 0x2e, 0x9c, 0xdc,
+ 0x95, 0x1d, 0x13, 0x26, 0xce, 0xa6, 0x0d, 0x31, 0x90, 0xca, 0x3d, 0xc3,
+ 0xf5, 0xc7, 0x26, 0xc8, 0x08, 0x63, 0xb1, 0x33, 0x58, 0x8d, 0xba, 0x13,
+ 0xda, 0xfc, 0xb2, 0xd3, 0x8f, 0x76, 0x43, 0x4d, 0xf1, 0xbe, 0x71, 0x17,
+ 0xdd, 0x44, 0x02, 0x6a, 0x3e, 0x6c, 0xed, 0xb3, 0x2e, 0x89, 0x68, 0x50,
+ 0x3f, 0x01, 0x34, 0x96, 0x7e, 0x7a, 0xcf, 0xe7, 0xf2, 0xa4, 0xd1, 0xdd,
+ 0xef, 0x32, 0x32, 0x90, 0xc8, 0x95, 0x5a, 0x65, 0x8b, 0x99, 0x9d, 0x9d,
+ 0x86, 0xa4, 0x32, 0xd6, 0x0a, 0xdc, 0x63, 0x92, 0x6b, 0x3a, 0x91, 0xf1,
+ 0x86, 0x41, 0x4e, 0xbe, 0xc0, 0xf8, 0xca, 0x75, 0x92, 0xa4, 0x48, 0x00,
+ 0x21, 0x32, 0x29, 0x72, 0x4b, 0x92, 0x52, 0x59, 0x15, 0x1f, 0x51, 0x0e,
+ 0x33, 0x70, 0xd9, 0xf4, 0x6f, 0x79, 0x23, 0x88, 0xcd, 0xeb, 0x44, 0x96,
+ 0xd3, 0x2a, 0x2c, 0x2b, 0x46, 0x11, 0x71, 0xf5, 0x11, 0xd4, 0xdd, 0x2d,
+ 0x29, 0xbe, 0x28, 0xe0, 0x6d, 0xa6, 0xf5, 0x2e, 0xcc, 0x4b, 0x2d, 0x2f,
+ 0x1b, 0x0b, 0xa2, 0x44, 0xe6, 0xdf, 0xa9, 0x57, 0x0f, 0x08, 0x97, 0xb2,
+ 0x6b, 0x14, 0xe7, 0x40, 0x6f, 0x1e, 0x44, 0xb9, 0x85, 0x09, 0xd7, 0x0e,
+ 0x3f, 0xce, 0xad, 0xc3, 0xce, 0x4e, 0x67, 0xb1, 0xcf, 0xf6, 0x47, 0x23,
+ 0x5d, 0x6a, 0xd4, 0x88, 0xd0, 0xf5, 0xe4, 0x15, 0x94, 0xf4, 0x0b, 0x82,
+ 0x70, 0x53, 0x18, 0xcd, 0x88, 0xba, 0x23, 0x8d, 0x74, 0xf2, 0xb6, 0x76,
+ 0x9e, 0xb9, 0x35, 0xb7, 0x9d, 0x7d, 0xc7, 0xad, 0xf5, 0x3f, 0xb1, 0xb3,
+ 0x68, 0x5f, 0xdf, 0x45, 0xfa, 0x7a, 0xde, 0x99, 0xd7, 0xee, 0xee, 0x67,
+ 0x82, 0x95, 0x31, 0x94, 0xe2, 0xd9, 0xae, 0x33, 0xe9, 0x8d, 0x99, 0x85,
+ 0x79, 0x70, 0x00, 0x93, 0x5c, 0xa4, 0x2f, 0xa1, 0x0a, 0x1a, 0x8c, 0xd7,
+ 0xd5, 0x0b, 0x37, 0x2d, 0xa3, 0x34, 0x51, 0x7b, 0x64, 0xa2, 0xe7, 0x63,
+ 0x12, 0x9c, 0x1e, 0x5b, 0x37, 0xed, 0x98, 0x46, 0x66, 0xc4, 0xb0, 0x15,
+ 0x99, 0x70, 0x3a, 0x0c, 0xaf, 0x9f, 0xcf, 0x6c, 0x3f, 0x76, 0xe4, 0xa4,
+ 0xd4, 0x30, 0x5c, 0xd7, 0xd0, 0xe7, 0x08, 0x42, 0x23, 0x5e, 0x90, 0xbf,
+ 0x84, 0x01, 0x45, 0xc2, 0x49, 0xf9, 0x6d, 0xd7, 0x0b, 0x1f, 0xbf, 0x33,
+ 0xa2, 0x62, 0xa9, 0x46, 0x32, 0x4c, 0x4e, 0xa1, 0x84, 0xb5, 0x50, 0x4b,
+ 0xa1, 0xca, 0xd2, 0x71, 0xb7, 0x38, 0xf3, 0xfe, 0x69, 0xdf, 0x79, 0xe5,
+ 0xad, 0x89, 0x0e, 0x4b, 0xfd, 0x68, 0x5b, 0x7a, 0x7c, 0x2c, 0x0b, 0x51,
+ 0x1f, 0x79, 0x86, 0xa0, 0x05, 0x4a, 0xe9, 0x01, 0xf0, 0x6a, 0x97, 0xc5,
+ 0x9a, 0x33, 0xb5, 0x69, 0x03, 0x04, 0x2e, 0xc1, 0x49, 0xbc, 0x3b, 0xc8,
+ 0x51, 0xf2, 0xdf, 0x97, 0xc4, 0x90, 0x70, 0xeb, 0x12, 0x74, 0x13, 0xff,
+ 0xa9, 0xef, 0x31, 0x06, 0x08, 0x15, 0x2d, 0xc2, 0xad, 0xec, 0x92, 0x5e,
+ 0xe4, 0x64, 0xd8, 0xf5, 0x77, 0x19, 0x88, 0x28, 0x10, 0xc0, 0x6c, 0x4d,
+ 0x40, 0x00, 0x86, 0x92, 0xd8, 0x66, 0xe1, 0x30, 0x40, 0x50, 0xee, 0x22,
+ 0xe1, 0x44, 0xfa, 0xd0, 0x2f, 0x64, 0x3b, 0x57, 0xae, 0x6f, 0xcb, 0x8d,
+ 0xbb, 0x00, 0x30, 0x74, 0xe9, 0xa4, 0x0b, 0xb1, 0x10, 0x3c, 0xdf, 0xde,
+ 0x0e, 0x9b, 0x4b, 0xc7, 0xe5, 0xad, 0x46, 0x51, 0x0a, 0xb6, 0x09, 0x5e,
+ 0x61, 0xa5, 0x19, 0xd2, 0x45, 0x4d, 0x42, 0xea, 0xe0, 0x92, 0x6c, 0x02,
+ 0xb4, 0x62, 0xea, 0xa3, 0xf0, 0xd6, 0x8d, 0x4f, 0xe5, 0xf7, 0xc0, 0x5a,
+ 0x91, 0x35, 0x6b, 0x9f, 0x45, 0x86, 0x61, 0xd1, 0x12, 0x02, 0xa9, 0xa6,
+ 0xa5, 0xc3, 0x96, 0x26, 0x5e, 0xfb, 0x60, 0x64, 0x82, 0x9b, 0xeb, 0x75,
+ 0xf3, 0x22, 0x42, 0x11, 0xc9, 0xe8, 0xe2, 0xf4, 0x3c, 0x11, 0x22, 0x0b,
+ 0xd9, 0x2e, 0xd2, 0x05, 0xe9, 0x09, 0x1b, 0x49, 0xda, 0x8f, 0x38, 0xc6,
+ 0xad, 0xe1, 0x99, 0x73, 0x18, 0x09, 0xaf, 0xcb, 0xf5, 0xfa, 0xd2, 0x05,
+ 0xb1, 0xc9, 0xdc, 0xbe, 0x4b, 0x2b, 0x20, 0x32, 0x69, 0x35, 0x13, 0x2d,
+ 0x8d, 0xec, 0xbd, 0xc4, 0x07, 0xed, 0x74, 0x09, 0x62, 0x67, 0x2b, 0x2b,
+ 0xd1, 0x91, 0xd8, 0x5b, 0x29, 0x70, 0x53, 0x6c, 0x62, 0xd6, 0x59, 0xd5,
+ 0xa5, 0x45, 0x3e, 0x44, 0xa7, 0xae, 0x5e, 0x0d, 0xfb, 0xb5, 0x87, 0x9d,
+ 0x70, 0x3e, 0x7c, 0x0e, 0xc4, 0x26, 0x09, 0x12, 0x10, 0x1a, 0xc2, 0x9d,
+ 0x10, 0x16, 0xfd, 0x9c, 0x18, 0xc9, 0x88, 0xa3, 0x29, 0x4b, 0x0d, 0xc2,
+ 0x50, 0x69, 0xd1, 0x49, 0x59, 0xdb, 0x6e, 0x9d, 0xcf, 0x4e, 0xcf, 0x2f,
+ 0x12, 0x1d, 0x1c, 0x5f, 0x9c, 0xf8, 0xa8, 0x73, 0x84, 0x08, 0xda, 0x0b,
+ 0x1a, 0x9c, 0x03, 0xdd, 0x08, 0xb4, 0x52, 0x91, 0x08, 0x1b, 0x6d, 0x42,
+ 0xdb, 0x20, 0xc0, 0xcf, 0xea, 0x41, 0xa3, 0x9c, 0x00, 0xcf, 0x6b, 0x79,
+ 0x8e, 0xc4, 0x6b, 0x11, 0x83, 0x8e, 0x3b, 0x20, 0x9d, 0x4c, 0xf3, 0x6c,
+ 0x27, 0x42, 0x1d, 0xa4, 0x40, 0x9f, 0x1f, 0x51, 0xf5, 0xec, 0x8b, 0x6b,
+ 0xfe, 0x2d, 0x18, 0x39, 0x5b, 0x0f, 0xe5, 0xc3, 0x68, 0xd8, 0x04, 0xa8,
+ 0x83, 0x32, 0x50, 0x28, 0x2c, 0x9a, 0xda, 0xb7, 0xc6, 0x61, 0x6f, 0xcd,
+ 0x9e, 0x79, 0xd9, 0xc6, 0xe0, 0x9c, 0x42, 0x2b, 0x38, 0xe4, 0xf8, 0xa0,
+ 0x27, 0x9d, 0xf4, 0xcc, 0x9d, 0xcb, 0x87, 0xa2, 0xac, 0x6e, 0xbc, 0x16,
+ 0x9e, 0x7b, 0xdc, 0x82, 0xb8, 0xbb, 0x34, 0x70, 0xac, 0xfe, 0x5e, 0xfa,
+ 0xd0, 0x06, 0x96, 0x5e, 0x65, 0x85, 0x12, 0x06, 0x3f, 0xe7, 0xda, 0x79,
+ 0x61, 0xbd, 0x24, 0x2a, 0x1f, 0x79, 0x43, 0xa1, 0x8f, 0x35, 0xc9, 0x13,
+ 0x41, 0x65, 0x1d, 0xb2, 0x7b, 0xf6, 0xd2, 0xae, 0x22, 0x29, 0x13, 0x36,
+ 0x6e, 0x81, 0xa7, 0xef, 0x5d, 0x46, 0x14, 0xf8, 0x91, 0x17, 0xcb, 0x4c,
+ 0x2c, 0x66, 0x69, 0x35, 0xcb, 0x91, 0x1e, 0x34, 0x8e, 0x59, 0x77, 0x6d,
+ 0xc2, 0xb2, 0xeb, 0x47, 0x6e, 0xa2, 0xe3, 0x93, 0x23, 0xb7, 0x5b, 0x8c,
+ 0xaa, 0x85, 0x93, 0xec, 0x84, 0x3c, 0x73, 0x70, 0x0b, 0x7b, 0x5d, 0x0c,
+ 0x93, 0x33, 0xaa, 0x1e, 0x06, 0xa7, 0x4d, 0xfd, 0x6f, 0xae, 0x35, 0x3e,
+ 0x2c, 0x30, 0xc6, 0x98, 0xfb, 0x13, 0xd2, 0x69, 0x5e, 0x98, 0xcd, 0xc5,
+ 0x27, 0xf4, 0xab, 0x57, 0xf8, 0x29, 0x98, 0xf2, 0x2b, 0xf7, 0x72, 0x6d,
+ 0x26, 0x62, 0xf4, 0xb4, 0xee, 0x23, 0xcf, 0x85, 0xb6, 0x8c, 0x12, 0xc7,
+ 0x05, 0xe8, 0xcb, 0x86, 0xf9, 0x33, 0x9d, 0xe9, 0x8a, 0x0b, 0x34, 0x4c,
+ 0xb9, 0x85, 0x4b, 0x7d, 0x46, 0xe5, 0x58, 0x7e, 0xce, 0x35, 0xc5, 0x97,
+ 0xc2, 0x3e, 0xaf, 0x13, 0x02, 0xba, 0xcd, 0xb9, 0x19, 0xa7, 0x93, 0x1b,
+ 0xd3, 0x56, 0x41, 0x1c, 0x77, 0xa6, 0xe6, 0xf2, 0x56, 0x6a, 0x0e, 0x16,
+ 0x56, 0xf0, 0xed, 0x42, 0x6c, 0xd5, 0x4e, 0x29, 0xb4, 0xe7, 0x4c, 0x8d,
+ 0x96, 0x74, 0xec, 0x3d, 0xd6, 0x1a, 0x1d, 0x75, 0xec, 0x12, 0x5b, 0x68,
+ 0xbb, 0xc9, 0x34, 0x64, 0xae, 0x79, 0x5f, 0xba, 0x7b, 0xfe, 0xc2, 0x35,
+ 0x75, 0x49, 0x08, 0x57, 0xb6, 0x2d, 0xc7, 0x83, 0x1c, 0x9c, 0x7e, 0x6e,
+ 0x1f, 0x13, 0x45, 0x81, 0xef, 0xb2, 0x71, 0x04, 0xa6, 0xd7, 0x5f, 0x13,
+ 0x26, 0x86, 0x8b, 0x92, 0x34, 0x9f, 0xe2, 0xc1, 0x01, 0x5a, 0x0c, 0x39,
+ 0x2a, 0x8e, 0x6d, 0x10, 0x5c, 0xad, 0xc0, 0x42, 0x5d, 0xb0, 0xb6, 0x29,
+ 0x0a, 0xfa, 0x3c, 0xbd, 0x0f, 0xae, 0xfa, 0xf9, 0x72, 0x2e, 0x79, 0xfc,
+ 0x5e, 0x4f, 0x9f, 0x8b, 0x36, 0x7b, 0x53, 0x18, 0x92, 0xb4, 0x70, 0x7f,
+ 0x2e, 0x6a, 0xbd, 0x54, 0x65, 0xc9, 0x7a, 0xd6, 0x0c, 0xf1, 0x20, 0x74,
+ 0xd6, 0x66, 0x76, 0x84, 0xd8, 0x99, 0x14, 0x55, 0x8e, 0x0b, 0x59, 0x04,
+ 0x45, 0x55, 0x2c, 0x4b, 0x0f, 0x86, 0x91, 0x16, 0x5c, 0x9e, 0xe3, 0xaf,
+ 0xd4, 0xa5, 0x17, 0xfa, 0xa6, 0xab, 0xec, 0x6f, 0xa8, 0x89, 0x38, 0xe4,
+ 0x4b, 0x87, 0x81, 0x90, 0x78, 0x96, 0xe4, 0x9a, 0x77, 0x2c, 0xef, 0xf9,
+ 0x2b, 0x31, 0x55, 0x88, 0x2a, 0xac, 0x75, 0xfa, 0xba, 0x96, 0xe6, 0x17,
+ 0x3b, 0x2e, 0x64, 0x3f, 0xcb, 0xaa, 0xf5, 0x9a, 0xb9, 0x83, 0x97, 0x3c,
+ 0x6f, 0x18, 0xdc, 0x68, 0xf4, 0x4d, 0xf2, 0xee, 0xf0, 0x05, 0xa5, 0x6f,
+ 0x5e, 0x65, 0x15, 0xd5, 0xc0, 0x74, 0xba, 0xd8, 0xe9, 0xb7, 0x5e, 0x63,
+ 0xbb, 0xce, 0x88, 0x24, 0x57, 0x6d, 0x2e, 0xa7, 0x17, 0xa8, 0xcc, 0xc5,
+ 0x03, 0x61, 0xc0, 0x5d, 0xf5, 0xc5, 0x7d, 0xc2, 0x66, 0x10, 0x5a, 0x48,
+ 0x85, 0x47, 0x64, 0xd1, 0xa5, 0x1b, 0xff, 0xdf, 0x66, 0x62, 0x2f, 0x9e,
+ 0x39, 0x26, 0x56, 0x3d, 0x2c, 0x08, 0xa3, 0xbd, 0xb8, 0x22, 0x89, 0x3a,
+ 0x72, 0xa2, 0x5e, 0x30, 0xe3, 0x3c, 0xe0, 0x73, 0x4f, 0xe2, 0x6c, 0xf8,
+ 0x1a, 0xa0, 0xe8, 0xe0, 0xed, 0xf0, 0xde, 0x7b, 0xe1, 0xab, 0x93, 0x46,
+ 0x20, 0xc7, 0xbd, 0x68, 0xd6, 0x0f, 0xf5, 0x5f, 0x49, 0x56, 0xf1, 0x9e,
+ 0x7d, 0x69, 0x9f, 0x25, 0xe3, 0x41, 0x5e, 0x78, 0x75, 0x2c, 0x56, 0xbc,
+ 0x21, 0x42, 0x30, 0x8b, 0x06, 0x2e, 0x9c, 0x80, 0x25, 0x1f, 0x6f, 0xed,
+ 0xbd, 0x57, 0x5e, 0xb5, 0xb5, 0x65, 0x14, 0x59, 0x73, 0xb5, 0xc3, 0x69,
+ 0x52, 0xf9, 0xe2, 0xda, 0x3f, 0x9c, 0x2f, 0xf9, 0xa6, 0x3e, 0x23, 0x2c,
+ 0x84, 0xd6, 0x7e, 0x2a, 0x13, 0xcc, 0x7c, 0x17, 0x9c, 0x9e, 0x75, 0xa6,
+ 0xfd, 0x83, 0x7d, 0x7d, 0x23, 0x28, 0x6b, 0x4d, 0xd4, 0xee, 0x75, 0xb2,
+ 0x23, 0x67, 0xc6, 0x4c, 0xb9, 0xbc, 0x2a, 0xf2, 0x7f, 0x10, 0xa1, 0xe9,
+ 0x0d, 0xad, 0x35, 0x48, 0xbc, 0xc7, 0x77, 0x85, 0x61, 0xdc, 0xa6, 0xb3,
+ 0x5c, 0x98, 0x22, 0xd9, 0xd1, 0xdd, 0x03, 0xcf, 0x84, 0x6a, 0xef, 0x73,
+ 0x3a, 0xa2, 0xd0, 0x02, 0x50, 0x8d, 0x8a, 0x3c, 0x38, 0x59, 0x0b, 0x5a,
+ 0xe3, 0xe5, 0x73, 0x91, 0xbd, 0x54, 0x48, 0xa6, 0x7b, 0x89, 0x16, 0x62,
+ 0x06, 0xe4, 0xec, 0x2e, 0x9b, 0x7e, 0x29, 0x57, 0x9f, 0x6c, 0xa5, 0xad,
+ 0x43, 0x52, 0x69, 0x09, 0x1d, 0xfa, 0xf5, 0x2e, 0x2f, 0x24, 0x23, 0x27,
+ 0x78, 0xfd, 0xe5, 0x0a, 0x13, 0x54, 0xcd, 0xf7, 0xe6, 0x11, 0x68, 0xc9,
+ 0x7b, 0xfe, 0x33, 0x7b, 0x12, 0x3c, 0xd8, 0x71, 0x4d, 0x31, 0x41, 0x20,
+ 0x99, 0xd6, 0x7e, 0xd0, 0x83, 0x04, 0xb5, 0x7f, 0xe1, 0x4a, 0x1c, 0x47,
+ 0xd2, 0xdf, 0x2e, 0x6d, 0xf7, 0xb3, 0xf2, 0x2a, 0xc9, 0xbd, 0x63, 0xfc,
+ 0x92, 0x49, 0xea, 0x2d, 0x6a, 0xfa, 0xe9, 0x39, 0x20, 0x6e, 0xe2, 0x97,
+ 0xde, 0x72, 0x4f, 0xbf, 0x12, 0xda, 0xd0, 0xfb, 0x52, 0xc5, 0xd4, 0x95,
+ 0x6f, 0x7c, 0xb6, 0xed, 0x0b, 0xad, 0x53, 0xb2, 0xd4, 0x33, 0xa8, 0xe1,
+ 0xca, 0x17, 0x98, 0x32, 0x8e, 0xcd, 0x35, 0x72, 0x65, 0x88, 0x1a, 0xcf,
+ 0x38, 0x34, 0x4f, 0xf7, 0xd8, 0x6e, 0x8b, 0xe9, 0x5e, 0xf8, 0x22, 0x54,
+ 0x72, 0x7c, 0xe8, 0x3d, 0xf8, 0xcc, 0x4d, 0x30, 0x9d, 0x91, 0x34, 0xf0,
+ 0xc0, 0x86, 0x88, 0x5a, 0xaa, 0x9f, 0x79, 0x8f, 0x3e, 0x97, 0xc4, 0x0a,
+ 0xce, 0x65, 0xc2, 0xfa, 0x07, 0xcf, 0x30, 0x39, 0x1c, 0x20, 0x0f, 0xaa,
+ 0x01, 0x06, 0x40, 0xa1, 0xfe, 0x82, 0xee, 0xde, 0x7f, 0xf6, 0xf2, 0x91,
+ 0x67, 0xe5, 0xd2, 0xac, 0xed, 0x55, 0xef, 0xbd, 0xf7, 0x59, 0x78, 0xcc,
+ 0x55, 0x2d, 0x50, 0xa8, 0x12, 0x39, 0x69, 0xc9, 0x06, 0x41, 0xdc, 0xfd,
+ 0x9b, 0x5a, 0x7e, 0x2a, 0xca, 0x07, 0xab, 0xff, 0xcd, 0x1f, 0xef, 0xe7,
+ 0x3e, 0xde, 0x09, 0x9b, 0x7d, 0x6c, 0x05, 0x5e, 0xbf, 0x2e, 0x9f, 0x8b,
+ 0x70, 0xc6, 0xea, 0x78, 0x2d, 0xf0, 0x9e, 0x1b, 0x39, 0x62, 0x59, 0x38,
+ 0xce, 0xc1, 0x8a, 0xa0, 0xc0, 0x44, 0x6a, 0xb4, 0xb1, 0x8c, 0xee, 0x1b,
+ 0xb3, 0xa9, 0xa0, 0x0e, 0xcf, 0x78, 0xb6, 0xdd, 0x39, 0x06, 0xf5, 0xf5,
+ 0x92, 0x35, 0x6f, 0x3b, 0x23, 0x07, 0x4f, 0xe4, 0xbd, 0xb6, 0xeb, 0xb8,
+ 0x97, 0x5c, 0xfb, 0x0c, 0x3a, 0x73, 0x40, 0x09, 0x6c, 0xac, 0x9e, 0x27,
+ 0x20, 0x45, 0xc4, 0xb7, 0x57, 0x5c, 0xf8, 0x5b, 0xc1, 0x47, 0x37, 0xd2,
+ 0x78, 0x2a, 0xbe, 0xa0, 0x87, 0x78, 0xdd, 0x88, 0x68, 0x43, 0x21, 0xda,
+ 0x66, 0x97, 0xae, 0xb3, 0xc9, 0x8d, 0x1e, 0x19, 0xdb, 0x46, 0xe4, 0xad,
+ 0xe7, 0x76, 0x69, 0x89, 0xfa, 0xce, 0xce, 0x8f, 0xba, 0x8a, 0x80, 0x7b,
+ 0x94, 0xa9, 0xe6, 0xfc, 0x62, 0x74, 0xb6, 0x47, 0xe3, 0x65, 0x1f, 0x8c,
+ 0x39, 0x10, 0x07, 0xa3, 0xec, 0xef, 0x92, 0x77, 0x5a, 0xbb, 0xa7, 0x5f,
+ 0xae, 0x78, 0x7a, 0x24, 0x91, 0x45, 0xc7, 0x53, 0xe2, 0xbe, 0x66, 0x1f,
+ 0xfc, 0x97, 0x3e, 0x93, 0x0c, 0x7e, 0xb5, 0xee, 0xb2, 0xf1, 0x88, 0x46,
+ 0x66, 0x93, 0x3c, 0xdc, 0xc3, 0x9f, 0x3b, 0x9b, 0xcd, 0xf5, 0xb2, 0xb8,
+ 0xb1, 0xf2, 0xa2, 0x04, 0x6a, 0xe9, 0x06, 0xbb, 0x17, 0x5e, 0xe9, 0xd1,
+ 0xf0, 0x50, 0xa4, 0xac, 0xfb, 0xbb, 0x2f, 0x96, 0x0a, 0x8d, 0xa2, 0x64,
+ 0xff, 0x91, 0xe1, 0xaf, 0x4b, 0x6f, 0x0d, 0x7e, 0xf8, 0x81, 0x59, 0x74,
+ 0xa9, 0x91, 0x09, 0xe2, 0x19, 0xb0, 0xc5, 0x67, 0x0d, 0x4b, 0xe3, 0x32,
+ 0x0a, 0x74, 0x3a, 0x60, 0x4f, 0xaf, 0xb2, 0x59, 0x46, 0x38, 0xd2, 0xac,
+ 0x66, 0x80, 0x2e, 0x63, 0x59, 0x6a, 0x14, 0xb4, 0x0a, 0xa7, 0x08, 0x25,
+ 0x83, 0xc2, 0x1c, 0x57, 0x50, 0xa4, 0xa3, 0x98, 0x9b, 0xcc, 0x86, 0xed,
+ 0x7f, 0xb8, 0xf8, 0xe6, 0xf4, 0x7c, 0x94, 0x6c, 0x11, 0xe0, 0xdf, 0xc5,
+ 0xf9, 0xf1, 0x57, 0x1f, 0x8c, 0xf6, 0x6e, 0xbd, 0x2a, 0x87, 0xa9, 0xd1,
+ 0xea, 0x67, 0x14, 0x17, 0x9a, 0x15, 0x66, 0x1f, 0xae, 0xb4, 0xc2, 0x21,
+ 0x22, 0x65, 0xe8, 0xaa, 0x2b, 0x2b, 0x2e, 0xae, 0x83, 0x34, 0xa2, 0xeb,
+ 0x52, 0x16, 0x93, 0xe3, 0xbb, 0x0a, 0x0e, 0xfe, 0x2f, 0x9d, 0x6a, 0x9a,
+ 0x77, 0xf0, 0x0a, 0xd5, 0x39, 0x9a, 0x5c, 0x7c, 0xb3, 0xff, 0xfe, 0xdb,
+ 0x91, 0x22, 0x9e, 0x7f, 0xff, 0xfd, 0xf7, 0xbe, 0xd3, 0x7e, 0x6f, 0x6b,
+ 0x0b, 0x12, 0xe2, 0x75, 0x7a, 0x7f, 0x3f, 0xac, 0xb3, 0xb5, 0xb5, 0xb7,
+ 0xce, 0xd5, 0xe6, 0xca, 0x53, 0xd6, 0x4b, 0x23, 0x18, 0x98, 0xaf, 0xb7,
+ 0x16, 0xcb, 0x31, 0x95, 0xc3, 0xdc, 0x5a, 0x36, 0xf9, 0xcc, 0xdc, 0x27,
+ 0x59, 0x8d, 0xb7, 0xb7, 0xd6, 0xd6, 0x46, 0x47, 0x47, 0xc9, 0xfe, 0xc9,
+ 0xe8, 0xd4, 0x7b, 0x77, 0x63, 0x67, 0xd3, 0x08, 0x4e, 0x57, 0x59, 0xb3,
+ 0x41, 0xd8, 0x99, 0x27, 0xfb, 0x17, 0xa4, 0xb1, 0x7e, 0x77, 0x74, 0x3e,
+ 0x3a, 0x3e, 0x7d, 0x4f, 0xbb, 0x43, 0x71, 0x75, 0xe9, 0xec, 0x8e, 0xc2,
+ 0x2a, 0x2f, 0x73, 0x00, 0x99, 0xdc, 0x69, 0xad, 0x49, 0x42, 0x64, 0x36,
+ 0x92, 0x1d, 0x0b, 0xe2, 0x1c, 0x05, 0xa1, 0x35, 0xee, 0x39, 0x7a, 0xb4,
+ 0x21, 0xbd, 0x51, 0x78, 0x1a, 0xad, 0x80, 0x35, 0x5b, 0x71, 0x00, 0x4b,
+ 0x36, 0xe6, 0x68, 0xdd, 0x3e, 0xa7, 0xff, 0xc3, 0x4d, 0xe1, 0x85, 0xf7,
+ 0x45, 0x27, 0x3e, 0x3a, 0xa6, 0x6a, 0x13, 0xc9, 0x87, 0xd1, 0xfe, 0xd7,
+ 0x47, 0xf4, 0xe8, 0xd7, 0x59, 0xe3, 0xb6, 0x83, 0x6b, 0x62, 0x52, 0x27,
+ 0xef, 0xb3, 0xa6, 0x9e, 0xa4, 0x0b, 0xca, 0x72, 0x36, 0xdd, 0x0c, 0xf8,
+ 0x1a, 0xf1, 0xda, 0x66, 0x51, 0xde, 0x15, 0x0e, 0x2d, 0xe4, 0x79, 0x54,
+ 0xf5, 0xf4, 0xdb, 0x3d, 0x3f, 0xda, 0x3f, 0x7c, 0x77, 0xa4, 0x21, 0xdf,
+ 0x7c, 0xed, 0x9a, 0x46, 0xaf, 0x4b, 0x2a, 0xe4, 0x6e, 0x0d, 0xd9, 0x74,
+ 0xb5, 0xd3, 0xe2, 0x9b, 0x6f, 0xa8, 0xac, 0x66, 0xbc, 0x3b, 0xb7, 0x51,
+ 0x78, 0x76, 0x78, 0x99, 0x6f, 0x71, 0xeb, 0xda, 0x5f, 0x6a, 0x97, 0x44,
+ 0x81, 0x9e, 0x45, 0xdc, 0x65, 0x9b, 0x04, 0x6c, 0x19, 0x9f, 0x6f, 0x6f,
+ 0x6f, 0x3f, 0x32, 0x0f, 0x68, 0x03, 0x72, 0x69, 0x9a, 0xa9, 0xec, 0xd1,
+ 0xe3, 0x5b, 0xae, 0x7d, 0x37, 0xe2, 0x99, 0xa4, 0x94, 0x53, 0xe5, 0xab,
+ 0x82, 0x6d, 0x28, 0x79, 0x93, 0xc5, 0x87, 0x3c, 0x29, 0x4b, 0xbb, 0x03,
+ 0xad, 0xc5, 0x99, 0x12, 0x34, 0x77, 0xde, 0x68, 0x38, 0x23, 0xde, 0xe0,
+ 0x81, 0x1b, 0x05, 0x06, 0x31, 0x65, 0xd5, 0x43, 0xb7, 0x49, 0xfa, 0xc6,
+ 0xb4, 0x49, 0xff, 0x0c, 0xcb, 0xea, 0x6a, 0x6b, 0xbe, 0x07, 0x89, 0xc4,
+ 0x3c, 0xf4, 0x96, 0x90, 0x26, 0x12, 0x23, 0xd9, 0xda, 0x28, 0xe7, 0x9a,
+ 0x16, 0x96, 0xd2, 0x31, 0x3e, 0x61, 0x5c, 0xbf, 0x60, 0x15, 0x38, 0xa0,
+ 0xe9, 0x52, 0x67, 0xae, 0xe5, 0xef, 0x22, 0x9d, 0xd4, 0xb4, 0x61, 0x64,
+ 0x31, 0x1c, 0x1a, 0x06, 0x62, 0x7a, 0xa1, 0x98, 0x33, 0x90, 0x88, 0xf9,
+ 0xb5, 0x32, 0x24, 0x33, 0x6c, 0xee, 0xc1, 0x36, 0xa5, 0x12, 0x23, 0xe3,
+ 0xee, 0x91, 0x17, 0x7b, 0x41, 0xb9, 0x80, 0x15, 0x6a, 0x4d, 0xa0, 0x07,
+ 0xca, 0x2f, 0x94, 0x28, 0x78, 0x1b, 0xc0, 0x43, 0x0d, 0x77, 0xfb, 0x1c,
+ 0x0c, 0x40, 0x3f, 0xb5, 0xa5, 0x96, 0x4f, 0xe8, 0xdc, 0x9b, 0x14, 0xaf,
+ 0x7e, 0x21, 0xb7, 0xac, 0x47, 0x3b, 0x23, 0x33, 0x8a, 0xa0, 0xaf, 0xa5,
+ 0x2b, 0x26, 0x59, 0x73, 0x77, 0xf5, 0xb5, 0x39, 0xbf, 0x43, 0xaf, 0x5c,
+ 0x0b, 0x61, 0x75, 0x6d, 0x21, 0x39, 0xe9, 0x93, 0x7b, 0x3a, 0x38, 0x93,
+ 0xdf, 0x28, 0x21, 0x32, 0xbf, 0xa5, 0x25, 0xb8, 0xc9, 0x30, 0x7b, 0x5f,
+ 0x31, 0x78, 0x64, 0x30, 0x7b, 0x66, 0x15, 0xe8, 0x8d, 0xff, 0xb5, 0x35,
+ 0xac, 0xeb, 0xeb, 0xad, 0x7c, 0xfa, 0x71, 0x5a, 0xa7, 0x14, 0xd3, 0xb4,
+ 0x1c, 0x07, 0x1f, 0x0f, 0xcd, 0x87, 0xc9, 0x4f, 0x2d, 0xae, 0x5f, 0x4f,
+ 0xe2, 0x33, 0xf9, 0x5f, 0x5b, 0x14, 0x3f, 0x8a, 0xe2, 0x53, 0xde, 0xc2,
+ 0x45, 0x78, 0x87, 0x99, 0x15, 0x07, 0x10, 0x9b, 0xc3, 0x18, 0xa7, 0x8c,
+ 0x9e, 0xd0, 0xda, 0x8f, 0xbb, 0xdb, 0xdb, 0x3b, 0x7b, 0x3b, 0x9f, 0xbf,
+ 0xda, 0xde, 0xdb, 0xd9, 0xd9, 0xd9, 0xdd, 0xdb, 0xd9, 0xdb, 0xdb, 0xdd,
+ 0xfe, 0x79, 0xab, 0xb7, 0xb6, 0x76, 0x78, 0xfa, 0xfd, 0xfb, 0x93, 0xd3,
+ 0xfd, 0xc3, 0xe4, 0xe2, 0x34, 0xd9, 0x87, 0xcd, 0x29, 0x72, 0xc8, 0x81,
+ 0x52, 0x4f, 0x29, 0x68, 0x9c, 0xfe, 0xee, 0x55, 0x52, 0x17, 0x03, 0x89,
+ 0x0d, 0xbc, 0xc1, 0xb2, 0x74, 0x57, 0xac, 0x84, 0x4e, 0x41, 0x2d, 0x0d,
+ 0xaf, 0x9b, 0xf9, 0xd3, 0xec, 0xec, 0x53, 0x7a, 0xee, 0xb3, 0x23, 0xd8,
+ 0xa9, 0x8d, 0x18, 0x8e, 0x92, 0xad, 0x24, 0x79, 0x88, 0x33, 0x45, 0x5c,
+ 0xa8, 0x36, 0x25, 0x61, 0x83, 0xe3, 0x86, 0x5c, 0x01, 0x70, 0x2e, 0x2c,
+ 0x5f, 0x87, 0x58, 0x19, 0x28, 0xf4, 0x2c, 0x3e, 0x7a, 0x5c, 0xf0, 0x24,
+ 0x10, 0x6d, 0x06, 0x13, 0x3c, 0x5d, 0x39, 0x25, 0x73, 0x11, 0x65, 0xf7,
+ 0x98, 0x75, 0x9b, 0x71, 0x70, 0xa4, 0xac, 0x9b, 0x1d, 0x50, 0xd8, 0x55,
+ 0x11, 0xce, 0x2b, 0x1d, 0x32, 0x62, 0x8b, 0x22, 0xdd, 0x51, 0x3f, 0xca,
+ 0x4f, 0x5c, 0x17, 0xf4, 0x8d, 0x7f, 0x09, 0x6d, 0x59, 0xdb, 0x22, 0x0f,
+ 0xe0, 0xc3, 0xe8, 0xf8, 0xfd, 0xd7, 0xf0, 0x1e, 0x7e, 0x7f, 0x7a, 0x7e,
+ 0x38, 0x32, 0xcd, 0xd2, 0xed, 0xbc, 0x06, 0xf3, 0x12, 0x1d, 0x63, 0x19,
+ 0x15, 0x1f, 0x0a, 0xea, 0xfa, 0xcf, 0x50, 0xd8, 0xa6, 0x7d, 0x9b, 0x36,
+ 0x8e, 0x61, 0x7a, 0xc2, 0x36, 0xe5, 0x82, 0xc7, 0x59, 0x1e, 0x08, 0x81,
+ 0x5f, 0xff, 0x72, 0x9e, 0x52, 0xad, 0x90, 0x6c, 0xc8, 0x51, 0xbb, 0x08,
+ 0xf3, 0xda, 0xa2, 0xbc, 0x84, 0x2d, 0x12, 0xfa, 0xb7, 0x9a, 0x12, 0xcc,
+ 0x03, 0xad, 0x94, 0x95, 0x8d, 0x2d, 0x6a, 0xad, 0x08, 0x9d, 0xba, 0xcb,
+ 0x59, 0x7a, 0x85, 0x0e, 0xc3, 0x03, 0xe9, 0x75, 0x26, 0xdd, 0x7f, 0x6a,
+ 0x97, 0xc4, 0xf3, 0xd0, 0xde, 0x31, 0x08, 0x00, 0xf0, 0x50, 0x48, 0x70,
+ 0x17, 0xaf, 0x07, 0x4b, 0x4c, 0xe4, 0x22, 0x46, 0x44, 0x09, 0x15, 0x94,
+ 0xed, 0x56, 0x83, 0x41, 0x85, 0x4f, 0xc6, 0xd5, 0x30, 0xf2, 0xff, 0xc0,
+ 0xc3, 0xe7, 0x60, 0xc5, 0x88, 0x5a, 0xf2, 0xec, 0x0f, 0xb5, 0x0b, 0x89,
+ 0x43, 0xcd, 0x0f, 0xa8, 0xdb, 0xbc, 0xe4, 0x34, 0x18, 0x20, 0xcb, 0xd4,
+ 0x1a, 0x6b, 0x25, 0x22, 0x5c, 0x8f, 0xaa, 0x7a, 0x51, 0xa4, 0x44, 0x4f,
+ 0xc1, 0x22, 0x5c, 0xf1, 0x00, 0xe7, 0xde, 0xac, 0x1b, 0x33, 0x94, 0x94,
+ 0xea, 0xc3, 0x71, 0xc5, 0x78, 0xc1, 0x0e, 0x36, 0xa2, 0x3c, 0x67, 0x78,
+ 0xf6, 0x34, 0xde, 0x82, 0x5b, 0xc9, 0x6b, 0x46, 0x60, 0xb6, 0x89, 0xf0,
+ 0xc4, 0x79, 0x19, 0xd7, 0x66, 0x4d, 0xdc, 0xd9, 0x8e, 0xc9, 0x3b, 0xb3,
+ 0x19, 0x31, 0x68, 0x23, 0x81, 0x1a, 0xee, 0xc9, 0x94, 0x23, 0xe9, 0x88,
+ 0x5e, 0x25, 0xc7, 0xd6, 0xb2, 0xf9, 0x95, 0xe7, 0x03, 0x3e, 0xdb, 0x4e,
+ 0x41, 0x5e, 0x43, 0x16, 0x92, 0x85, 0xa1, 0xf0, 0x96, 0x87, 0x83, 0xba,
+ 0xdc, 0xab, 0xb4, 0x17, 0x79, 0x53, 0x67, 0xb3, 0x4b, 0x01, 0x0d, 0x69,
+ 0x60, 0x14, 0xa4, 0xa9, 0xb8, 0x06, 0xd6, 0x34, 0x6d, 0x84, 0x7c, 0x72,
+ 0x85, 0x85, 0x32, 0x28, 0x85, 0x67, 0x5c, 0x81, 0x95, 0x0a, 0x0a, 0x49,
+ 0x9b, 0x51, 0xb0, 0xdb, 0x6d, 0xa8, 0x45, 0x50, 0xd6, 0x12, 0x5b, 0xbf,
+ 0xa5, 0x33, 0x05, 0x5b, 0xd3, 0x02, 0x35, 0x05, 0x40, 0x1d, 0xde, 0x83,
+ 0xcb, 0xb1, 0x59, 0x6d, 0xfb, 0x1c, 0xad, 0x1d, 0x02, 0xcf, 0xa8, 0x39,
+ 0x78, 0x00, 0xf1, 0xbc, 0x8d, 0xb9, 0x5c, 0x06, 0xd0, 0x28, 0xb9, 0x00,
+ 0xcc, 0x98, 0x83, 0x86, 0x34, 0xa7, 0x65, 0x6d, 0x57, 0x74, 0x91, 0x1b,
+ 0x1d, 0x87, 0x2f, 0xb8, 0x35, 0x44, 0x24, 0x86, 0xc7, 0x50, 0x38, 0xd2,
+ 0xea, 0x73, 0xf8, 0xf4, 0x11, 0x0c, 0x87, 0xa4, 0x4a, 0xc0, 0xec, 0x81,
+ 0x4f, 0x49, 0x5e, 0x3c, 0x7e, 0x18, 0x65, 0x10, 0x9f, 0xd4, 0x31, 0xe6,
+ 0x2a, 0x80, 0x12, 0x30, 0x75, 0xbb, 0x60, 0x30, 0x76, 0xaf, 0x23, 0xdf,
+ 0xa0, 0x13, 0x36, 0x4f, 0xa3, 0x6b, 0xc5, 0xae, 0xe2, 0x20, 0x70, 0x82,
+ 0xd8, 0x5e, 0xf2, 0x55, 0x5a, 0xe7, 0x93, 0x7e, 0x72, 0x98, 0x5f, 0x01,
+ 0xe1, 0x80, 0x53, 0x4e, 0xcc, 0x1b, 0xae, 0xbe, 0xd6, 0x06, 0x67, 0x4c,
+ 0x6c, 0x0e, 0x93, 0xef, 0xb5, 0x24, 0x9e, 0xb9, 0x8e, 0x81, 0x0e, 0x49,
+ 0x26, 0x5a, 0x6a, 0xad, 0x85, 0x36, 0x22, 0xb6, 0x75, 0xbf, 0x18, 0x38,
+ 0x3a, 0x71, 0xb5, 0x33, 0xb0, 0xab, 0x69, 0x7d, 0x63, 0xbd, 0x13, 0xd8,
+ 0x2b, 0x39, 0xa2, 0x40, 0x23, 0x63, 0x01, 0x89, 0xd5, 0xbd, 0x72, 0x69,
+ 0x5d, 0xfe, 0xf8, 0xdb, 0x92, 0xbb, 0x16, 0xb2, 0x84, 0x4d, 0xac, 0x96,
+ 0x58, 0x31, 0x75, 0xe8, 0xd3, 0xb5, 0x44, 0xcd, 0xd9, 0xa3, 0x3b, 0x18,
+ 0x98, 0x05, 0xa3, 0xa5, 0x11, 0xc6, 0x72, 0x7a, 0x71, 0xf4, 0x87, 0x64,
+ 0xbf, 0xeb, 0xd0, 0x24, 0x8e, 0xdd, 0xc2, 0x16, 0xe9, 0x3b, 0x02, 0xc3,
+ 0xd8, 0x39, 0x3c, 0xac, 0x90, 0x6a, 0x87, 0xb4, 0xfd, 0x6b, 0x92, 0x1e,
+ 0xe9, 0x2c, 0x77, 0x75, 0x29, 0xb1, 0xae, 0xcd, 0x83, 0xc2, 0x68, 0xd3,
+ 0x6b, 0x30, 0xf3, 0x7a, 0x95, 0x34, 0x38, 0x02, 0x35, 0x4f, 0x19, 0x6d,
+ 0x82, 0x40, 0x84, 0xcc, 0xa6, 0x14, 0x7c, 0x26, 0x11, 0x16, 0xcb, 0x06,
+ 0x7e, 0x46, 0xe9, 0xc9, 0x1b, 0xc8, 0xcf, 0xf0, 0xd8, 0x4b, 0x2d, 0x2c,
+ 0xaf, 0x56, 0x64, 0xea, 0xe3, 0x39, 0x7d, 0xa4, 0xa3, 0xf6, 0x51, 0x19,
+ 0xae, 0x5c, 0x0d, 0x3c, 0x16, 0x29, 0x33, 0xde, 0x26, 0x59, 0x3d, 0x76,
+ 0xcc, 0xe5, 0xcf, 0x34, 0x38, 0x0c, 0x1b, 0x31, 0x01, 0x5a, 0x0a, 0xd7,
+ 0xa8, 0x12, 0xfb, 0xaf, 0x9e, 0x6e, 0x9f, 0x61, 0x03, 0xff, 0x08, 0xa8,
+ 0x2b, 0xa8, 0xfb, 0x2a, 0xd5, 0x5a, 0x38, 0x10, 0xd7, 0xb4, 0xda, 0x0e,
+ 0x9d, 0x46, 0x4e, 0x05, 0x56, 0x95, 0x46, 0xc1, 0x60, 0x63, 0x7e, 0xe8,
+ 0x72, 0xcd, 0xc5, 0x17, 0x13, 0xad, 0x2f, 0xda, 0x21, 0xe8, 0xe1, 0x1a,
+ 0xdd, 0x44, 0xd6, 0x86, 0x85, 0xda, 0xba, 0xb6, 0x0e, 0x8a, 0x17, 0x37,
+ 0xf8, 0xd6, 0x02, 0x4f, 0x49, 0xb3, 0x54, 0x8c, 0x6d, 0x92, 0x79, 0x59,
+ 0x13, 0x45, 0xb9, 0xe6, 0xdd, 0x08, 0x4c, 0x3f, 0x65, 0x2d, 0xf5, 0x75,
+ 0x73, 0x46, 0x25, 0xe2, 0x5a, 0x4e, 0xe3, 0x8c, 0x01, 0xd6, 0x0d, 0x95,
+ 0xf0, 0x2e, 0x02, 0xb3, 0x8f, 0x4e, 0x20, 0x53, 0xe6, 0x1c, 0xc4, 0xbd,
+ 0xe6, 0xa8, 0x9b, 0xd8, 0xf6, 0xaa, 0x79, 0x4a, 0x16, 0xad, 0xb5, 0x61,
+ 0xb2, 0x48, 0x41, 0x32, 0x75, 0x21, 0x55, 0x81, 0x60, 0x11, 0x90, 0x51,
+ 0xd3, 0xee, 0x40, 0xe2, 0x2b, 0xac, 0xfc, 0xa1, 0x9b, 0xde, 0x42, 0xd7,
+ 0x22, 0x9e, 0x32, 0x4d, 0xe6, 0x0f, 0x92, 0x2e, 0x20, 0x77, 0x26, 0x65,
+ 0x82, 0x43, 0xd5, 0xfc, 0xfc, 0xf3, 0x40, 0x46, 0xba, 0xb7, 0x4f, 0xef,
+ 0x99, 0xaf, 0x3d, 0x95, 0x76, 0x46, 0xce, 0x7f, 0x52, 0x21, 0x21, 0x9f,
+ 0x59, 0xbd, 0x36, 0xa2, 0x31, 0x78, 0x48, 0x41, 0xdc, 0xa3, 0xb5, 0x95,
+ 0x07, 0x54, 0xd6, 0x77, 0x39, 0x0d, 0x6b, 0xac, 0x33, 0xf1, 0x40, 0xd3,
+ 0x9a, 0x83, 0x48, 0x56, 0x28, 0x11, 0xca, 0x26, 0xbb, 0xa3, 0xf5, 0xa4,
+ 0x49, 0x23, 0xd1, 0x0e, 0x49, 0x00, 0x25, 0xe1, 0x78, 0x54, 0x4a, 0xc3,
+ 0xb4, 0xc8, 0x32, 0x18, 0x4b, 0x1d, 0x1d, 0x3a, 0xb2, 0x35, 0xf0, 0x1c,
+ 0x8f, 0xf8, 0xb0, 0x7a, 0x38, 0x1f, 0x7e, 0xcd, 0x70, 0xf6, 0x93, 0x47,
+ 0xc3, 0xe6, 0xa5, 0xc2, 0x21, 0x71, 0xfc, 0x5a, 0x1c, 0x5e, 0xd3, 0x12,
+ 0x54, 0xad, 0x1a, 0x28, 0xaf, 0xd1, 0x84, 0x1c, 0x5e, 0xe3, 0x76, 0x79,
+ 0xa3, 0x50, 0xdb, 0x2c, 0x4a, 0x7e, 0x1a, 0xc2, 0x3e, 0xb5, 0xdf, 0xd7,
+ 0xa1, 0x7c, 0xea, 0x70, 0x19, 0x4f, 0x2e, 0xb1, 0x79, 0x31, 0x1d, 0xf8,
+ 0x42, 0x49, 0x45, 0xd9, 0x19, 0x6e, 0xfb, 0xa8, 0x28, 0x36, 0x41, 0xa5,
+ 0x02, 0xf0, 0x62, 0x03, 0x00, 0x1a, 0x57, 0xd8, 0x97, 0x66, 0x82, 0xc4,
+ 0xfb, 0xce, 0x6b, 0xf2, 0xd9, 0x0e, 0x83, 0xd1, 0x9a, 0x93, 0x24, 0x15,
+ 0x3a, 0x08, 0x65, 0x23, 0x9b, 0x2f, 0x10, 0xc8, 0xaf, 0x1c, 0xd0, 0x17,
+ 0x02, 0x70, 0x8e, 0x9e, 0xbb, 0x23, 0xf5, 0xc2, 0x6e, 0xb7, 0x8c, 0x91,
+ 0xe3, 0xbc, 0xa5, 0x52, 0x31, 0x87, 0x5a, 0x43, 0x28, 0xcb, 0x32, 0x6e,
+ 0xa9, 0x59, 0x99, 0x70, 0x74, 0xd0, 0xce, 0xe1, 0x23, 0x7a, 0xc6, 0x65,
+ 0x9b, 0x5c, 0x2e, 0x2b, 0x30, 0x5e, 0x81, 0x1e, 0x13, 0xd4, 0x0a, 0x6a,
+ 0x95, 0x62, 0x26, 0x23, 0x9c, 0x06, 0xe9, 0xa4, 0x19, 0x6a, 0x0f, 0xd3,
+ 0xb9, 0x66, 0x93, 0x27, 0xf2, 0xeb, 0xa5, 0xc8, 0x94, 0xf3, 0x87, 0x58,
+ 0x43, 0x9a, 0x69, 0x77, 0x96, 0x9b, 0x01, 0xad, 0x03, 0xbc, 0x41, 0x0b,
+ 0xab, 0x0a, 0x2f, 0xb4, 0xa8, 0x6c, 0x8a, 0x43, 0xdc, 0xae, 0x5c, 0x1a,
+ 0xd6, 0xac, 0xe9, 0x32, 0x5d, 0xbe, 0x06, 0xfa, 0xc9, 0xe0, 0x7f, 0xc8,
+ 0xca, 0x90, 0xd8, 0x4a, 0xf1, 0x3c, 0x00, 0xaa, 0x5f, 0x78, 0x38, 0x7e,
+ 0x92, 0x76, 0x05, 0x86, 0x4f, 0xc1, 0x7a, 0x3a, 0x0f, 0x9b, 0xd2, 0xa8,
+ 0x59, 0x1b, 0xe0, 0x7f, 0x6f, 0x7d, 0xc4, 0xc6, 0x56, 0x31, 0x59, 0x61,
+ 0x15, 0xdc, 0xdc, 0x9a, 0x45, 0xbe, 0xe7, 0x08, 0xae, 0x60, 0xc0, 0xf6,
+ 0x22, 0xfb, 0x8a, 0x2a, 0x83, 0x1d, 0x94, 0xa9, 0xbf, 0xac, 0xaa, 0xe3,
+ 0xac, 0xe9, 0x48, 0x99, 0xf8, 0x95, 0x4f, 0xf4, 0x38, 0x73, 0x70, 0x60,
+ 0x5e, 0x18, 0x7c, 0x10, 0xc3, 0xc3, 0x97, 0xdc, 0xc3, 0x10, 0xb6, 0x54,
+ 0xee, 0xe1, 0x0c, 0xe5, 0x50, 0xf5, 0x81, 0x3d, 0x79, 0x89, 0xd2, 0x0d,
+ 0x7b, 0x62, 0x76, 0x68, 0xaf, 0x0a, 0x3f, 0xaf, 0xe9, 0x88, 0x54, 0x4b,
+ 0x13, 0x53, 0x18, 0xb0, 0x91, 0x9d, 0x0e, 0x19, 0xff, 0xca, 0xef, 0x8a,
+ 0x52, 0xf5, 0x40, 0x4d, 0x0c, 0x39, 0x0e, 0x5a, 0x0c, 0x0e, 0xbb, 0x3b,
+ 0x5b, 0x3c, 0x98, 0x2d, 0x6e, 0x80, 0xe5, 0x3a, 0x21, 0x49, 0xe7, 0x98,
+ 0x57, 0x90, 0x12, 0xff, 0xe6, 0xa2, 0xd0, 0x6d, 0x0a, 0xa8, 0x98, 0x73,
+ 0x31, 0x71, 0xae, 0xe7, 0x46, 0x57, 0x93, 0xb9, 0x6b, 0x01, 0x7a, 0x22,
+ 0x69, 0x65, 0x84, 0x17, 0x6e, 0x37, 0xa8, 0x6f, 0x45, 0x3e, 0x43, 0x4a,
+ 0x83, 0x5b, 0x2f, 0x9e, 0x80, 0xb2, 0xf3, 0x80, 0xaa, 0x67, 0x2e, 0xf4,
+ 0x3b, 0x9b, 0xd3, 0x04, 0x64, 0x8f, 0x42, 0xdc, 0xb0, 0xe7, 0xfb, 0xef,
+ 0xbf, 0x3e, 0x82, 0x24, 0x00, 0xde, 0x4e, 0x07, 0x34, 0x27, 0x6a, 0x9f,
+ 0x2e, 0x27, 0xd0, 0x1e, 0xcc, 0x8a, 0x21, 0x1e, 0x09, 0xf8, 0xa3, 0x5a,
+ 0x0f, 0x0c, 0x25, 0xce, 0x40, 0xbc, 0xd8, 0x6e, 0x89, 0x32, 0x5a, 0x4b,
+ 0xd4, 0x4c, 0x06, 0x09, 0x82, 0x14, 0x29, 0x4a, 0x42, 0x28, 0x91, 0x6a,
+ 0x3d, 0x5e, 0xa4, 0x02, 0x64, 0x91, 0xfa, 0x40, 0x07, 0x62, 0x7f, 0x18,
+ 0xb6, 0xcf, 0xe2, 0x9a, 0xa6, 0x1c, 0x58, 0x5d, 0xb7, 0x82, 0xae, 0x3b,
+ 0xf4, 0x2d, 0x3f, 0x9c, 0xde, 0xbf, 0xb3, 0xbd, 0xed, 0x2a, 0x4c, 0xa4,
+ 0xb6, 0xc1, 0x80, 0x5b, 0x56, 0xc9, 0xf6, 0xe0, 0xd5, 0xab, 0x55, 0x8c,
+ 0xd0, 0x36, 0x0a, 0xd4, 0x84, 0x17, 0x9f, 0xdc, 0xe6, 0x80, 0x1e, 0x5d,
+ 0xd5, 0x66, 0x44, 0xa3, 0x41, 0x2d, 0x6a, 0x89, 0xf0, 0xaa, 0xad, 0xd4,
+ 0x22, 0x96, 0x0f, 0xb6, 0xc0, 0xc3, 0x23, 0x52, 0x58, 0xb5, 0x86, 0x96,
+ 0x72, 0xcd, 0x21, 0xc4, 0x22, 0x69, 0x5f, 0x8d, 0x24, 0x0b, 0x0a, 0xf2,
+ 0xca, 0xad, 0x5f, 0xed, 0x93, 0x16, 0xc6, 0x53, 0x6c, 0x57, 0x2c, 0xd1,
+ 0x65, 0x38, 0x1b, 0x15, 0x09, 0x3e, 0x9c, 0x91, 0x5d, 0xec, 0xf8, 0xfd,
+ 0xd7, 0x6c, 0x26, 0x30, 0x3a, 0x2f, 0x0c, 0xa4, 0x5b, 0x1d, 0x0d, 0xf8,
+ 0x03, 0x17, 0x8a, 0xa0, 0x00, 0x3f, 0x38, 0xd4, 0xb9, 0xda, 0x63, 0x5e,
+ 0x30, 0x2b, 0xf0, 0x2a, 0x73, 0x47, 0x0d, 0x74, 0x83, 0x8b, 0x64, 0xe0,
+ 0x09, 0x27, 0x52, 0x27, 0x82, 0x24, 0x93, 0xf9, 0x83, 0x6a, 0x46, 0xd2,
+ 0x03, 0x5a, 0x57, 0x73, 0xbb, 0x6d, 0x96, 0x6d, 0x61, 0xac, 0xce, 0x82,
+ 0x82, 0x02, 0xd9, 0x24, 0xd2, 0x25, 0x77, 0x83, 0xf3, 0xdd, 0x91, 0x44,
+ 0x3e, 0x6d, 0x28, 0x2d, 0x13, 0x60, 0xbb, 0xb2, 0x18, 0x49, 0x56, 0x7d,
+ 0xb5, 0x89, 0x74, 0xcd, 0x73, 0x5c, 0x78, 0xd8, 0xe7, 0xea, 0xb4, 0xdb,
+ 0xa8, 0x42, 0x58, 0x96, 0xff, 0xfb, 0xe3, 0x7c, 0x64, 0x84, 0x74, 0x50,
+ 0xe9, 0xa6, 0x2a, 0xa6, 0xce, 0x06, 0x20, 0x23, 0x8e, 0x5a, 0xb7, 0x2f,
+ 0xf8, 0x7d, 0xee, 0x3a, 0x8d, 0x77, 0xc7, 0xef, 0xeb, 0xd2, 0x44, 0x0e,
+ 0x00, 0x89, 0xb4, 0x52, 0x47, 0xc4, 0x26, 0x03, 0xaa, 0x2e, 0x43, 0x52,
+ 0x38, 0x38, 0x47, 0xde, 0x16, 0x4b, 0xd6, 0x12, 0xc9, 0x39, 0x46, 0x95,
+ 0x11, 0xa2, 0x21, 0xc0, 0x4e, 0xe3, 0xf2, 0xba, 0xc9, 0xa5, 0xce, 0x16,
+ 0x30, 0x56, 0x51, 0x39, 0xf7, 0xd8, 0x22, 0xe1, 0x38, 0xb8, 0xdb, 0x6a,
+ 0x59, 0x08, 0xef, 0x23, 0x7d, 0xcb, 0x0c, 0x3e, 0xad, 0xaf, 0x11, 0xca,
+ 0x65, 0x4d, 0x34, 0xa1, 0x78, 0x85, 0xee, 0x05, 0xbb, 0xd5, 0xc8, 0x53,
+ 0x2c, 0x4c, 0x41, 0xb8, 0x6e, 0x2d, 0x45, 0x7b, 0x05, 0x3c, 0x8b, 0xc6,
+ 0xa7, 0x9e, 0x02, 0x96, 0xa9, 0x23, 0x0e, 0x1c, 0x1c, 0x04, 0x8f, 0xb9,
+ 0x44, 0xc9, 0xaf, 0x6d, 0x11, 0xf2, 0xe5, 0x73, 0x18, 0x60, 0xa0, 0x2d,
+ 0x01, 0x92, 0xa8, 0xb3, 0x84, 0x50, 0xa2, 0x81, 0x08, 0xc9, 0x10, 0x45,
+ 0xca, 0x72, 0x45, 0x1a, 0x80, 0x19, 0xcc, 0x15, 0x2a, 0x91, 0x72, 0xef,
+ 0x74, 0xdf, 0xb3, 0x4a, 0x0a, 0x9f, 0x22, 0x27, 0x1a, 0xa1, 0x4f, 0xcc,
+ 0x90, 0x07, 0xc8, 0x49, 0xe1, 0x1c, 0xb7, 0x3b, 0xba, 0x20, 0xd5, 0x1e,
+ 0xd7, 0x91, 0xea, 0x88, 0xdf, 0x1d, 0x9d, 0x7f, 0x75, 0x3a, 0x3a, 0x32,
+ 0xdc, 0xe2, 0xf0, 0xe8, 0xab, 0x0f, 0xc4, 0x49, 0x68, 0xc7, 0xd8, 0x4c,
+ 0x0a, 0x40, 0x4f, 0x4e, 0xd9, 0x05, 0x50, 0x11, 0x12, 0x0e, 0x88, 0x74,
+ 0x58, 0x36, 0xe9, 0xdb, 0xf4, 0x47, 0x11, 0xbb, 0x18, 0x1b, 0x73, 0x96,
+ 0xb1, 0x5d, 0x2d, 0x47, 0xb0, 0xb6, 0x43, 0xef, 0xa5, 0x98, 0xa8, 0x82,
+ 0x20, 0xc7, 0x1b, 0x05, 0x8f, 0xd1, 0xf2, 0x71, 0xf5, 0x9e, 0x43, 0x67,
+ 0xbc, 0x65, 0x2b, 0xaa, 0x1c, 0x08, 0x57, 0xe6, 0x59, 0xcb, 0x39, 0xcb,
+ 0xd5, 0x04, 0xd9, 0x56, 0x60, 0xf6, 0x66, 0x25, 0xdf, 0x64, 0x04, 0x55,
+ 0x83, 0x73, 0x8d, 0xbb, 0x35, 0x6f, 0x70, 0xad, 0xb2, 0x90, 0x2f, 0xc5,
+ 0x95, 0x6b, 0x26, 0x38, 0xc3, 0x72, 0x38, 0x43, 0x77, 0x96, 0x79, 0x35,
+ 0xc7, 0xeb, 0x8c, 0x21, 0x9e, 0xf8, 0x26, 0x15, 0xc7, 0x23, 0xc7, 0x44,
+ 0x4a, 0x25, 0x84, 0x0d, 0x51, 0x4c, 0xef, 0x30, 0x4f, 0x29, 0xcd, 0xc7,
+ 0x35, 0x88, 0xb5, 0x40, 0x17, 0x56, 0xde, 0x0b, 0x5d, 0x10, 0xd2, 0xb9,
+ 0x5d, 0xcd, 0x0e, 0x2e, 0x78, 0xa6, 0x64, 0x7b, 0xe0, 0xcb, 0xd9, 0x47,
+ 0x52, 0xf5, 0xd1, 0x77, 0xc8, 0xe1, 0x6f, 0x85, 0x06, 0x3e, 0x4f, 0x14,
+ 0x79, 0xed, 0xa9, 0x75, 0xab, 0x8b, 0x16, 0xab, 0x84, 0x29, 0xce, 0x10,
+ 0x97, 0x74, 0xc1, 0x0c, 0x4f, 0xc2, 0x95, 0x68, 0x4b, 0x61, 0xbe, 0x66,
+ 0xe2, 0x0b, 0xcf, 0x20, 0xb7, 0xce, 0xf5, 0x8a, 0x9b, 0xfb, 0xc6, 0x37,
+ 0xf2, 0xaf, 0xad, 0xad, 0x1d, 0x1e, 0x5d, 0xec, 0x1f, 0x9f, 0x1c, 0x1d,
+ 0x26, 0xc7, 0xef, 0xdf, 0x9e, 0x9e, 0xbf, 0xdb, 0xbf, 0x10, 0xb7, 0xf7,
+ 0xa1, 0xb5, 0x92, 0xd9, 0xdc, 0x5b, 0x6b, 0x84, 0x74, 0x16, 0x34, 0x90,
+ 0xb0, 0xd9, 0xc5, 0x2b, 0x41, 0xcc, 0xe6, 0x65, 0xc8, 0x5a, 0x6b, 0xb0,
+ 0x96, 0x88, 0xbb, 0xdc, 0xa1, 0xe1, 0xd0, 0x5d, 0xbd, 0x65, 0x9d, 0x9c,
+ 0x43, 0x5d, 0x4e, 0x0b, 0xae, 0x48, 0xf5, 0xd3, 0x1e, 0x6d, 0xca, 0x16,
+ 0x89, 0xe7, 0x7b, 0x8a, 0xb6, 0x93, 0x93, 0xa4, 0x41, 0x93, 0x83, 0xe3,
+ 0xad, 0x36, 0x58, 0x28, 0x8c, 0x1f, 0x0a, 0x8e, 0x94, 0x02, 0x36, 0xc2,
+ 0x07, 0x27, 0x30, 0x14, 0x48, 0x36, 0x3f, 0xbf, 0x4d, 0x9b, 0x76, 0xaf,
+ 0x70, 0x37, 0x1c, 0x64, 0xc1, 0xd8, 0x34, 0xde, 0xfe, 0x0a, 0x44, 0x95,
+ 0xa1, 0x66, 0xa6, 0x03, 0xe0, 0x1e, 0xd6, 0x54, 0xa8, 0x5c, 0xcf, 0x3a,
+ 0xb0, 0x18, 0x2d, 0x13, 0x55, 0x4f, 0x92, 0x94, 0xfb, 0xf2, 0x9b, 0xda,
+ 0xb0, 0x8e, 0x51, 0x23, 0xc5, 0x0c, 0x8e, 0xa5, 0x10, 0x1c, 0xad, 0x05,
+ 0x41, 0x2d, 0xd3, 0xbf, 0x85, 0x83, 0x42, 0x93, 0x30, 0x3b, 0xa7, 0x85,
+ 0xe7, 0x5b, 0xb6, 0x36, 0xb7, 0x9c, 0x36, 0x77, 0x6e, 0x15, 0xdb, 0x62,
+ 0x70, 0x68, 0x1e, 0x9a, 0x2e, 0xe7, 0x0b, 0xa9, 0x24, 0xaa, 0x52, 0x2e,
+ 0xec, 0x6b, 0xba, 0x85, 0x2c, 0x48, 0x41, 0x20, 0x80, 0x31, 0xe6, 0xad,
+ 0xac, 0x01, 0xcf, 0x03, 0xf4, 0xdd, 0xa8, 0xdb, 0x8a, 0xf4, 0x56, 0xe7,
+ 0x69, 0xea, 0x96, 0x11, 0x6f, 0x4b, 0x13, 0x58, 0x90, 0x91, 0x7d, 0xb6,
+ 0x5b, 0x77, 0x3c, 0x75, 0x91, 0x20, 0x58, 0xff, 0x0d, 0x2d, 0x75, 0x40,
+ 0x24, 0x2b, 0x0d, 0x8a, 0x9a, 0x14, 0x3a, 0xca, 0x5a, 0x93, 0xf2, 0x5f,
+ 0x6c, 0xc7, 0x4e, 0xf8, 0x9c, 0x5e, 0xbb, 0x76, 0x10, 0x98, 0xdd, 0x11,
+ 0x08, 0x17, 0x37, 0xfc, 0xc4, 0x56, 0x9b, 0x27, 0xc4, 0x76, 0x46, 0xb8,
+ 0x5b, 0x93, 0x04, 0x5f, 0x1f, 0x08, 0x57, 0xc9, 0x77, 0x89, 0xb2, 0xa5,
+ 0xe5, 0x0d, 0xe9, 0xd7, 0xc8, 0x80, 0x1b, 0x3f, 0xf8, 0xb9, 0x4a, 0x1c,
+ 0xe3, 0x23, 0xc5, 0x42, 0xc0, 0xf4, 0x8a, 0x35, 0x85, 0xe7, 0xd4, 0x97,
+ 0x34, 0xd0, 0x0b, 0xdc, 0x9f, 0x91, 0xab, 0xc1, 0xe4, 0x49, 0xd1, 0xcd,
+ 0xd2, 0x1a, 0x4a, 0x0e, 0x32, 0x16, 0xf8, 0xce, 0xb0, 0xa6, 0x51, 0x87,
+ 0xcd, 0x8e, 0xcb, 0xc7, 0x43, 0xc4, 0x60, 0xc4, 0xbf, 0x94, 0x40, 0x07,
+ 0xf4, 0x50, 0x70, 0x74, 0xb2, 0x6d, 0x05, 0x77, 0x1d, 0x29, 0xb1, 0xd5,
+ 0x0c, 0x21, 0xa6, 0x12, 0x73, 0x77, 0x56, 0xd6, 0x7c, 0xde, 0x20, 0x75,
+ 0xf7, 0xb8, 0x84, 0x36, 0x91, 0x41, 0x6f, 0x71, 0x6d, 0xfa, 0xe8, 0x25,
+ 0x57, 0xa4, 0xb7, 0x8c, 0xcd, 0xd0, 0x03, 0x06, 0x3a, 0xe5, 0xc7, 0xdf,
+ 0x9c, 0xa7, 0x97, 0x69, 0x36, 0xfb, 0xd3, 0xee, 0xf6, 0x28, 0xbd, 0x5a,
+ 0xce, 0xd2, 0x7f, 0xc1, 0x8b, 0x6f, 0x9e, 0x3d, 0xdb, 0xdd, 0xfe, 0xec,
+ 0xf3, 0xed, 0x5e, 0xc7, 0x7d, 0xed, 0x45, 0xbe, 0x20, 0x94, 0x81, 0x6e,
+ 0x32, 0xf0, 0x5d, 0xf4, 0x33, 0x9c, 0x5c, 0xe5, 0x50, 0xb4, 0x48, 0x78,
+ 0x91, 0x35, 0x48, 0x59, 0xc3, 0x03, 0x9b, 0x64, 0x18, 0x32, 0xc2, 0xd3,
+ 0x34, 0x74, 0xfd, 0xc7, 0x9d, 0x3d, 0x66, 0x65, 0x57, 0x30, 0x88, 0xa7,
+ 0x4c, 0xb1, 0xc9, 0xeb, 0xbc, 0x30, 0x37, 0xd0, 0x17, 0x49, 0x93, 0x5e,
+ 0x59, 0x5a, 0x45, 0x0b, 0xd8, 0x0d, 0x1f, 0xd7, 0xf8, 0x92, 0x88, 0x3c,
+ 0x2f, 0xb8, 0xac, 0x02, 0x95, 0x0c, 0x80, 0xe0, 0xb3, 0xc8, 0x2a, 0x20,
+ 0x8a, 0x5d, 0x55, 0xe9, 0x5c, 0x23, 0xfa, 0xe9, 0x7d, 0x0a, 0x0f, 0x1a,
+ 0x2e, 0x66, 0x08, 0x36, 0xd7, 0x18, 0x1f, 0x96, 0x42, 0x99, 0xe0, 0x66,
+ 0x8b, 0xda, 0x81, 0x72, 0xf1, 0x75, 0xe3, 0x17, 0x23, 0x30, 0x8b, 0x05,
+ 0x3b, 0x47, 0x0f, 0xb3, 0x62, 0x96, 0x01, 0x6e, 0x36, 0xd5, 0x99, 0x0e,
+ 0xf1, 0x3b, 0xb2, 0xe4, 0x53, 0x46, 0x60, 0xeb, 0x2d, 0x38, 0xff, 0xd4,
+ 0x16, 0x4b, 0x67, 0x83, 0x58, 0xde, 0x9a, 0x57, 0xea, 0x22, 0xdb, 0x92,
+ 0xd7, 0x6a, 0xb9, 0xd9, 0xf9, 0xe2, 0x0d, 0x08, 0x62, 0xe7, 0x8b, 0x7f,
+ 0xb1, 0x9f, 0xed, 0xca, 0x67, 0xbb, 0x5f, 0xfc, 0xcb, 0x70, 0x88, 0xf1,
+ 0x11, 0x85, 0xac, 0xeb, 0xd7, 0xeb, 0x82, 0x49, 0x91, 0xca, 0x11, 0xe6,
+ 0xbf, 0x2c, 0x6c, 0x29, 0xef, 0x75, 0x4f, 0x7b, 0xf6, 0x57, 0xb9, 0x2f,
+ 0xde, 0x3f, 0xcb, 0xb7, 0xf2, 0xda, 0xc7, 0xa3, 0xad, 0x63, 0x8b, 0x6e,
+ 0x7d, 0x13, 0x68, 0x47, 0x82, 0xdc, 0xf0, 0xf2, 0xbf, 0x12, 0xa5, 0xfe,
+ 0xeb, 0x5a, 0x22, 0x4e, 0x3a, 0xda, 0x8e, 0x07, 0x38, 0x21, 0x94, 0x6c,
+ 0xcd, 0xa3, 0xa9, 0xd6, 0x3e, 0xa0, 0x96, 0x29, 0x4c, 0x9e, 0xee, 0x40,
+ 0xaf, 0x5e, 0xf8, 0x9f, 0x25, 0xfb, 0x9f, 0x37, 0x7c, 0x2d, 0xb1, 0xcf,
+ 0x70, 0x3a, 0x81, 0x91, 0x31, 0x1a, 0xae, 0xbe, 0x41, 0x58, 0xfc, 0x3f,
+ 0xfc, 0x20, 0x02, 0x95, 0xf9, 0x45, 0x46, 0x7e, 0x6d, 0x78, 0xd1, 0xd4,
+ 0xb0, 0xb7, 0x39, 0x6a, 0x15, 0x4b, 0x91, 0x77, 0xb9, 0xf2, 0x2f, 0x65,
+ 0xa6, 0xdc, 0x88, 0xd9, 0xda, 0xfd, 0xd1, 0xc1, 0xf1, 0x31, 0xe2, 0xf9,
+ 0xb0, 0xa8, 0x47, 0xcc, 0xc6, 0x40, 0x9b, 0x1b, 0x08, 0x47, 0x70, 0xe1,
+ 0x5f, 0x3e, 0xe9, 0xd3, 0xde, 0x61, 0xdb, 0x41, 0xfd, 0xa6, 0x31, 0x55,
+ 0x8a, 0x65, 0x2b, 0x41, 0xb3, 0x2c, 0xe5, 0xbc, 0xe9, 0xf1, 0x83, 0x57,
+ 0x79, 0x4f, 0x1c, 0x4b, 0xfc, 0x49, 0xcf, 0x81, 0x8c, 0xf0, 0x7e, 0x60,
+ 0xd3, 0xde, 0xb0, 0xe8, 0x94, 0xff, 0x23, 0x7b, 0xb3, 0xb3, 0x1d, 0x7f,
+ 0x02, 0x45, 0x09, 0x08, 0x0b, 0xf8, 0x8d, 0x73, 0xd2, 0x3d, 0xf6, 0x7c,
+ 0x3e, 0xe5, 0xa7, 0xaf, 0xf3, 0xe9, 0xd4, 0xdc, 0x09, 0xa8, 0x55, 0xff,
+ 0xa6, 0x37, 0xa6, 0x1b, 0x96, 0xfe, 0x7f, 0xc5, 0x38, 0xe0, 0x45, 0x92,
+ 0x67, 0xeb, 0xe5, 0x78, 0x9e, 0xb7, 0x06, 0xbc, 0x45, 0x13, 0xfc, 0x82,
+ 0x26, 0xfc, 0x7d, 0x66, 0xa9, 0x23, 0x23, 0xd1, 0x8e, 0x65, 0xbf, 0xf5,
+ 0xcb, 0xb2, 0x1c, 0xa7, 0xd5, 0xba, 0xb8, 0x58, 0x74, 0x9c, 0xeb, 0x3b,
+ 0xbb, 0xcf, 0x9e, 0xbf, 0x58, 0x1f, 0x8a, 0x9c, 0x06, 0x16, 0xd1, 0xf8,
+ 0xb9, 0xfc, 0xdc, 0x44, 0xca, 0x07, 0x54, 0x43, 0x52, 0x91, 0x3c, 0x1c,
+ 0x73, 0x78, 0x12, 0x17, 0xa3, 0xee, 0xde, 0x70, 0x6f, 0xff, 0x42, 0xfd,
+ 0xbc, 0x41, 0x17, 0xff, 0x92, 0x4f, 0xdf, 0xd8, 0x19, 0xfe, 0x0b, 0xcd,
+ 0xe5, 0x8d, 0x4c, 0xc2, 0xec, 0xab, 0x26, 0x6b, 0xd5, 0x7e, 0x9d, 0x84,
+ 0xa7, 0x36, 0x57, 0x37, 0x71, 0x0d, 0x93, 0x86, 0xb7, 0x7d, 0x30, 0x65,
+ 0x8f, 0x04, 0xa4, 0x55, 0x97, 0xa9, 0xb4, 0x75, 0x3f, 0x30, 0xad, 0x0c,
+ 0xa8, 0x95, 0x81, 0x63, 0xd8, 0x80, 0x70, 0x1e, 0xd0, 0x46, 0xf4, 0x25,
+ 0x5d, 0x6d, 0x06, 0xcb, 0x87, 0x88, 0x02, 0x65, 0x09, 0x5f, 0xf6, 0xc1,
+ 0xd7, 0xc7, 0xeb, 0x12, 0x24, 0xc2, 0xaa, 0x5b, 0x3f, 0x66, 0x33, 0xb6,
+ 0xb1, 0x5c, 0x93, 0x74, 0x41, 0xa7, 0x7f, 0x4d, 0x6b, 0x7a, 0xa5, 0x14,
+ 0xf3, 0x40, 0xfd, 0x72, 0x6e, 0xa9, 0xe9, 0x4c, 0x6e, 0x9d, 0x19, 0x59,
+ 0xa1, 0x2b, 0x06, 0x97, 0xf6, 0x9a, 0x01, 0xd8, 0x2a, 0x07, 0x3f, 0xc0,
+ 0x0f, 0xb3, 0xb0, 0x69, 0x69, 0x83, 0xb7, 0xd6, 0x11, 0x69, 0xd3, 0xa0,
+ 0xe4, 0x51, 0xf3, 0x15, 0xf3, 0x13, 0x65, 0x11, 0xbd, 0xa1, 0xb8, 0xcd,
+ 0x85, 0x12, 0x7c, 0xee, 0x81, 0xf4, 0xe8, 0x71, 0x26, 0xc9, 0x6c, 0x6c,
+ 0xca, 0x60, 0xc1, 0x90, 0xf8, 0xe7, 0xeb, 0x2f, 0x15, 0x9f, 0xf5, 0x8b,
+ 0x04, 0xa5, 0xf9, 0xf8, 0x2d, 0xf1, 0x05, 0x8a, 0x51, 0x88, 0xed, 0xa8,
+ 0x78, 0x49, 0xd4, 0x03, 0xeb, 0x96, 0xf2, 0x22, 0x47, 0x44, 0x30, 0xf0,
+ 0x51, 0xb4, 0xc7, 0x0f, 0x62, 0x00, 0xa0, 0x16, 0xd6, 0xff, 0x82, 0x43,
+ 0xf0, 0x9a, 0xb6, 0x01, 0x5f, 0x7f, 0xb1, 0xbe, 0x66, 0x6b, 0xa4, 0x5b,
+ 0xc9, 0xbd, 0xe3, 0xd4, 0x65, 0x02, 0xf5, 0xe7, 0x53, 0x5e, 0x5a, 0x30,
+ 0x52, 0x96, 0xc6, 0x08, 0xc6, 0x00, 0xf5, 0x6b, 0x8d, 0x34, 0x35, 0xa3,
+ 0xa4, 0xd0, 0x96, 0xd1, 0x98, 0x1b, 0xcf, 0x08, 0x23, 0x82, 0xa4, 0xc7,
+ 0x75, 0x0a, 0x0b, 0xc4, 0x7b, 0xeb, 0x16, 0xdb, 0x14, 0x76, 0x4c, 0x30,
+ 0xbc, 0x2a, 0x53, 0x58, 0xbd, 0x35, 0x49, 0x5f, 0x76, 0xd2, 0xbc, 0x3f,
+ 0xb1, 0xda, 0x13, 0x1e, 0x5c, 0x32, 0x18, 0x63, 0x7e, 0x04, 0x47, 0xe4,
+ 0x2d, 0x65, 0x5a, 0x4a, 0xa7, 0x6f, 0x68, 0xb9, 0x77, 0x86, 0x57, 0xf9,
+ 0x25, 0x2f, 0x86, 0x61, 0x91, 0x57, 0xd9, 0x96, 0xf9, 0xb3, 0x6f, 0x3e,
+ 0xdf, 0x25, 0xa9, 0x8c, 0x7e, 0x79, 0x86, 0xd8, 0x21, 0xff, 0xee, 0xf7,
+ 0xce, 0x86, 0x3d, 0x17, 0xf4, 0x4b, 0x6e, 0xef, 0x7c, 0xf1, 0xb4, 0xc8,
+ 0x28, 0x07, 0x0a, 0x62, 0xde, 0xaa, 0x46, 0xd4, 0xf7, 0xbc, 0x28, 0xc0,
+ 0xad, 0x2e, 0x21, 0x9f, 0xd4, 0x2e, 0xf4, 0x56, 0x82, 0x1b, 0x44, 0x50,
+ 0x27, 0xb9, 0x3b, 0x17, 0x93, 0x09, 0xe5, 0x4a, 0xe0, 0x66, 0xcd, 0xee,
+ 0x36, 0xfb, 0x7e, 0x48, 0xa3, 0x61, 0xef, 0xb7, 0x94, 0x7d, 0x4c, 0x88,
+ 0x06, 0x2e, 0x6f, 0x8d, 0xba, 0x47, 0x05, 0xf5, 0x35, 0x24, 0x64, 0x6a,
+ 0x3e, 0x26, 0xb6, 0x39, 0xef, 0xee, 0xa0, 0x57, 0xcd, 0x50, 0xa5, 0x4d,
+ 0xf2, 0x6a, 0x6d, 0x52, 0x37, 0xd9, 0xac, 0x86, 0xae, 0x2e, 0x80, 0x76,
+ 0xda, 0xab, 0xa2, 0xe0, 0xa2, 0xa3, 0x75, 0xff, 0xec, 0x97, 0x93, 0x26,
+ 0x33, 0xba, 0x2e, 0x01, 0x10, 0xcd, 0x99, 0xcf, 0x1d, 0xcd, 0xb9, 0xaa,
+ 0x1b, 0x48, 0x78, 0x36, 0xe0, 0xdb, 0x53, 0x44, 0xa2, 0xc1, 0xdb, 0x61,
+ 0x72, 0x82, 0xd0, 0xdc, 0x3a, 0x65, 0x1c, 0x0b, 0xbd, 0x61, 0x95, 0x1a,
+ 0x0c, 0xe9, 0xd4, 0x8a, 0xc5, 0x45, 0xef, 0x11, 0x74, 0x80, 0x92, 0x54,
+ 0xae, 0x00, 0xc7, 0x4c, 0x5c, 0x2c, 0x5f, 0x88, 0x3c, 0xd2, 0x87, 0x7d,
+ 0xda, 0x3e, 0x07, 0x3b, 0x3c, 0xdb, 0xe2, 0x90, 0x24, 0x63, 0x09, 0xd6,
+ 0x6b, 0x84, 0x03, 0x8c, 0x44, 0x00, 0xf5, 0xd8, 0xba, 0x3d, 0x04, 0x1c,
+ 0xfe, 0x97, 0xb1, 0xd1, 0x85, 0x72, 0xd8, 0x09, 0x4c, 0x03, 0x7e, 0x5a,
+ 0xd3, 0x1a, 0xa8, 0x0c, 0x78, 0xb8, 0x86, 0x8c, 0x7a, 0xd0, 0x1b, 0x67,
+ 0x99, 0x55, 0xae, 0x79, 0xaf, 0x4a, 0x1b, 0xd7, 0x0b, 0x5b, 0x8c, 0x60,
+ 0xf0, 0x5b, 0x17, 0x1a, 0x0d, 0x92, 0xc6, 0x95, 0xde, 0x9a, 0x5f, 0x48,
+ 0x38, 0x1b, 0x57, 0x66, 0xd7, 0xb3, 0x8a, 0xaf, 0x06, 0xf4, 0x8a, 0x12,
+ 0x5f, 0xe9, 0x54, 0xd4, 0x94, 0x77, 0x27, 0x89, 0xe2, 0x81, 0x5c, 0x3a,
+ 0x51, 0x51, 0xa3, 0x08, 0x31, 0x45, 0xb1, 0x8c, 0xb0, 0x3c, 0x24, 0x4f,
+ 0xf1, 0x2d, 0xc7, 0x6b, 0x4b, 0x19, 0xc5, 0x09, 0x2d, 0x4e, 0xeb, 0xc8,
+ 0x7a, 0x4f, 0xf0, 0xab, 0x6b, 0x8c, 0x5d, 0xb4, 0x4e, 0x4b, 0xb0, 0xde,
+ 0x4f, 0xd6, 0x69, 0xa8, 0xf4, 0xc5, 0x3a, 0xd6, 0x13, 0x1f, 0x7b, 0xcb,
+ 0xb7, 0x3e, 0x8c, 0x9c, 0x42, 0x7a, 0xe6, 0xcd, 0x97, 0xad, 0x55, 0xc2,
+ 0xe7, 0xda, 0xd4, 0x1b, 0x8e, 0xe6, 0x0f, 0x64, 0x6e, 0x7d, 0xd7, 0x6b,
+ 0xff, 0xcd, 0x81, 0x69, 0x05, 0xe0, 0xc3, 0x5e, 0x48, 0xe6, 0xc4, 0x7e,
+ 0x96, 0x23, 0xb3, 0x30, 0x68, 0xe8, 0xe9, 0x53, 0x7c, 0xa1, 0xac, 0xc8,
+ 0x86, 0x2b, 0x32, 0x77, 0x63, 0x12, 0x50, 0xce, 0x6b, 0x76, 0x33, 0x67,
+ 0xbd, 0xef, 0xae, 0x84, 0x95, 0x01, 0x3c, 0x67, 0x67, 0x88, 0x4c, 0x33,
+ 0x57, 0x5c, 0xd2, 0x36, 0x60, 0x95, 0xf7, 0x1e, 0x16, 0xb4, 0x67, 0x23,
+ 0x48, 0x55, 0xa5, 0xd7, 0x55, 0x8e, 0xf1, 0xae, 0x45, 0x3e, 0x01, 0xc4,
+ 0xee, 0x9b, 0x2f, 0xa7, 0xe5, 0x15, 0x71, 0xae, 0xbe, 0x39, 0x68, 0xf4,
+ 0x6f, 0x8f, 0x1e, 0xde, 0x95, 0x4e, 0x79, 0xc0, 0x38, 0x2b, 0x2c, 0xc5,
+ 0xeb, 0xdf, 0x2b, 0xc2, 0x29, 0x4d, 0xc3, 0xd3, 0x72, 0x22, 0x6d, 0xdb,
+ 0xa6, 0x79, 0x3f, 0x4c, 0xfb, 0xf6, 0x0b, 0xbf, 0x2f, 0x5d, 0x9c, 0x54,
+ 0x5a, 0x86, 0x6c, 0x64, 0x38, 0x45, 0xc3, 0x57, 0xb9, 0x2d, 0x56, 0x0f,
+ 0x03, 0x17, 0x15, 0x89, 0xe4, 0x7b, 0x6b, 0x26, 0xe9, 0x4f, 0xeb, 0x5f,
+ 0xae, 0x73, 0x30, 0xf6, 0xfa, 0xeb, 0x75, 0x70, 0x30, 0xe2, 0x4b, 0x5a,
+ 0x8f, 0x49, 0x2e, 0xa7, 0x75, 0xbe, 0x15, 0x07, 0x2c, 0x3b, 0x08, 0x2a,
+ 0x5a, 0x2b, 0x5a, 0x8e, 0x18, 0x86, 0xaa, 0x91, 0x7e, 0xa0, 0x1f, 0xcc,
+ 0x04, 0x28, 0xd5, 0x8c, 0x51, 0x11, 0xcc, 0xe3, 0xb8, 0xe1, 0xe0, 0x15,
+ 0xb9, 0x74, 0x21, 0x96, 0x01, 0x55, 0xa2, 0xa6, 0x98, 0x02, 0x36, 0x73,
+ 0x2e, 0x8b, 0x05, 0xe5, 0x10, 0x4f, 0x1a, 0xae, 0xad, 0x86, 0xb3, 0x34,
+ 0x4c, 0x3e, 0x14, 0x8c, 0x01, 0x9e, 0x91, 0xb2, 0x9c, 0x57, 0x93, 0xe5,
+ 0x9c, 0x4c, 0x15, 0x13, 0x32, 0x90, 0xe1, 0xe2, 0x61, 0xf1, 0xa0, 0xe5,
+ 0x32, 0xf7, 0x07, 0xcc, 0xc6, 0x11, 0x36, 0x62, 0x4b, 0xbf, 0x08, 0x0f,
+ 0xa1, 0xa0, 0x28, 0x31, 0x52, 0x43, 0x2a, 0xb0, 0xe8, 0x12, 0xc2, 0x80,
+ 0xc8, 0x5b, 0x77, 0xf4, 0xf6, 0xe8, 0xfc, 0xfc, 0xe8, 0x9c, 0xd6, 0x7b,
+ 0xbf, 0x68, 0x55, 0x32, 0xb2, 0x00, 0x93, 0xce, 0xfd, 0xa7, 0x21, 0xaa,
+ 0x21, 0xa4, 0x36, 0xb3, 0xc2, 0x74, 0x3a, 0x25, 0x08, 0x63, 0x68, 0x10,
+ 0x8c, 0xa7, 0xc2, 0x15, 0x63, 0x7d, 0xf3, 0x22, 0x42, 0x94, 0xad, 0x29,
+ 0xdf, 0x2f, 0x20, 0xe6, 0xc9, 0x16, 0xae, 0x85, 0x4a, 0x2a, 0xe4, 0x2d,
+ 0x35, 0x73, 0xf9, 0x3a, 0x6b, 0x89, 0xa9, 0x43, 0x89, 0x2a, 0xcd, 0xc4,
+ 0xc1, 0x3d, 0xb3, 0xf6, 0x09, 0x4c, 0xf9, 0x92, 0xce, 0x28, 0xe9, 0x4e,
+ 0x58, 0x8c, 0xba, 0x59, 0x2e, 0xf2, 0xa9, 0xb5, 0xf6, 0x9a, 0xcf, 0x8d,
+ 0xf8, 0x97, 0xf0, 0x29, 0xaf, 0x35, 0xfe, 0x04, 0x9e, 0x46, 0x35, 0x46,
+ 0xf8, 0xd6, 0xb6, 0x0e, 0xce, 0x69, 0x82, 0xb4, 0x24, 0x0e, 0xe4, 0xd2,
+ 0x6a, 0x27, 0xed, 0x1c, 0x5c, 0xa1, 0xfd, 0x0c, 0x56, 0x46, 0xe2, 0x16,
+ 0x1a, 0x12, 0xe3, 0x73, 0x06, 0xb2, 0x65, 0xcd, 0x5d, 0x6c, 0x36, 0x85,
+ 0x95, 0xed, 0x31, 0x5a, 0x04, 0x52, 0xef, 0xaa, 0xbd, 0xe4, 0xc7, 0x3a,
+ 0x9f, 0xfc, 0xec, 0x2e, 0x0f, 0xe4, 0x59, 0xb8, 0xf0, 0x69, 0xb6, 0xd0,
+ 0x9b, 0xc9, 0xcb, 0x42, 0x89, 0x32, 0xcc, 0x29, 0xaf, 0x1f, 0x46, 0x47,
+ 0xe7, 0xc9, 0xfe, 0xd7, 0x84, 0x96, 0xfa, 0xbf, 0xb9, 0xc1, 0xf4, 0x9c,
+ 0xdc, 0x0e, 0x6b, 0x12, 0xf3, 0x29, 0x18, 0x10, 0x99, 0x9a, 0xc2, 0x19,
+ 0xbf, 0xa8, 0xb5, 0xb3, 0xb9, 0x96, 0x80, 0xf5, 0x92, 0xf5, 0x5b, 0x7b,
+ 0xb8, 0x96, 0x3c, 0xb9, 0x8b, 0x9f, 0xb2, 0x87, 0x74, 0xc8, 0xfc, 0x5d,
+ 0x64, 0xf4, 0x18, 0x76, 0x49, 0xe8, 0xde, 0xc8, 0xe8, 0xeb, 0x40, 0xed,
+ 0xe4, 0x5d, 0xda, 0x4f, 0xd6, 0xdf, 0x95, 0xff, 0x30, 0xc2, 0x40, 0xba,
+ 0xf5, 0x6c, 0xb8, 0x9d, 0x6c, 0x7c, 0x9f, 0x17, 0xaf, 0x5e, 0xfc, 0x25,
+ 0x39, 0xde, 0x5c, 0x6f, 0x05, 0x9e, 0x73, 0x4d, 0xb0, 0x71, 0x5a, 0xdc,
+ 0xd8, 0x2d, 0x3b, 0xc5, 0xc9, 0xe6, 0x40, 0x37, 0x2d, 0xa8, 0xc0, 0xa5,
+ 0x4b, 0x57, 0xb6, 0x88, 0x04, 0x39, 0x89, 0x61, 0x4f, 0xbe, 0xb3, 0xe8,
+ 0xc0, 0xa4, 0xe5, 0x9b, 0xa7, 0xa6, 0xb4, 0x74, 0xaf, 0x5e, 0x04, 0x4d,
+ 0x3c, 0xb7, 0x6d, 0x7c, 0xe0, 0x36, 0x7e, 0x61, 0x13, 0xbb, 0xc3, 0xed,
+ 0xdd, 0x64, 0xe3, 0x74, 0xb4, 0xb5, 0x6b, 0x5b, 0x08, 0x9b, 0xd8, 0x45,
+ 0x13, 0xf4, 0x50, 0xfb, 0xe5, 0xe7, 0xd4, 0xff, 0x8f, 0x59, 0xf1, 0x73,
+ 0xb2, 0xf1, 0xc3, 0xce, 0x8e, 0x69, 0xe0, 0x2f, 0xc9, 0xfe, 0xf1, 0x0f,
+ 0xc9, 0xf3, 0xa1, 0x69, 0xec, 0x7d, 0x7a, 0x2b, 0xcd, 0x09, 0xe8, 0xe7,
+ 0x08, 0x8d, 0x98, 0xef, 0x83, 0x36, 0x5e, 0x74, 0xda, 0x38, 0x31, 0x7a,
+ 0xe1, 0xbd, 0xb9, 0x56, 0xb6, 0x87, 0xcf, 0x76, 0x93, 0xfc, 0xc5, 0xe7,
+ 0x2f, 0xb5, 0x21, 0x69, 0x03, 0xdf, 0xb7, 0xad, 0x95, 0x0c, 0x2b, 0x61,
+ 0x44, 0x9d, 0xa3, 0x7b, 0xc3, 0xd0, 0xc0, 0x22, 0x80, 0x9c, 0x7f, 0x9d,
+ 0x56, 0x5a, 0x4f, 0x93, 0xc0, 0xd4, 0xcd, 0x4e, 0x09, 0xdc, 0x6e, 0x06,
+ 0xb3, 0xa5, 0xb9, 0x38, 0xf7, 0x82, 0xe1, 0x90, 0x6e, 0xaa, 0x8f, 0xfe,
+ 0x25, 0x79, 0x37, 0x3a, 0x3e, 0x32, 0x33, 0xda, 0x36, 0x43, 0x73, 0x6b,
+ 0xc8, 0x03, 0xc2, 0x57, 0x58, 0xdc, 0x57, 0x40, 0x6f, 0x94, 0x36, 0xfc,
+ 0xca, 0x8f, 0x20, 0x3a, 0x73, 0x71, 0xd7, 0xe8, 0x97, 0xc2, 0x44, 0x06,
+ 0xfb, 0x57, 0xa4, 0x42, 0xf0, 0x55, 0x8b, 0xae, 0xbf, 0x2d, 0x0b, 0x73,
+ 0x4c, 0xaa, 0xb2, 0xa2, 0x68, 0xa6, 0xf5, 0x96, 0xb4, 0xf0, 0xed, 0xe1,
+ 0x11, 0xa7, 0x1e, 0xbf, 0x4b, 0x0b, 0xc3, 0x23, 0x09, 0x42, 0xa8, 0xbe,
+ 0x21, 0x9f, 0x3c, 0xbb, 0x73, 0xf8, 0xfd, 0x93, 0x87, 0xe2, 0xde, 0xec,
+ 0xe3, 0x67, 0xc3, 0x1d, 0x02, 0x70, 0x20, 0xad, 0xf7, 0xed, 0x3b, 0xf3,
+ 0xf7, 0xce, 0xf3, 0xf5, 0x84, 0xbe, 0x6a, 0x6b, 0xf0, 0x7a, 0x5e, 0xd7,
+ 0x0e, 0x4e, 0x4f, 0xbf, 0x3d, 0xe6, 0xa0, 0x8c, 0x03, 0x31, 0xab, 0x92,
+ 0x70, 0x65, 0xb5, 0x62, 0xe6, 0xae, 0x46, 0x7b, 0x73, 0x59, 0x2e, 0x70,
+ 0xc6, 0xdd, 0x64, 0xd9, 0x82, 0x22, 0x04, 0x9a, 0x0e, 0x47, 0x68, 0x84,
+ 0x47, 0xdb, 0x78, 0x23, 0x12, 0x7f, 0x5a, 0xf0, 0x47, 0x35, 0x41, 0xca,
+ 0xaa, 0x09, 0x77, 0xfc, 0x60, 0xe1, 0x0d, 0x52, 0xeb, 0x32, 0xd3, 0x3a,
+ 0x0a, 0xd2, 0x94, 0x9a, 0xa0, 0xb9, 0x08, 0x81, 0x79, 0x51, 0x74, 0xdf,
+ 0xf5, 0x91, 0x91, 0xee, 0x79, 0xd0, 0x7b, 0x62, 0xb5, 0x5d, 0xf7, 0x40,
+ 0x78, 0x21, 0xd1, 0x2e, 0xa4, 0x48, 0x07, 0x4c, 0xc7, 0x0f, 0x46, 0x96,
+ 0xc0, 0x9c, 0x84, 0x37, 0xd7, 0xb0, 0x65, 0x23, 0x64, 0xee, 0xfd, 0xfe,
+ 0xbb, 0xa3, 0x37, 0xdf, 0xed, 0x9f, 0x7c, 0x38, 0x32, 0xaf, 0xe4, 0x80,
+ 0xbb, 0xb6, 0x61, 0x75, 0x18, 0xe3, 0x3c, 0x47, 0xd5, 0xc9, 0xda, 0x88,
+ 0x07, 0xeb, 0x6b, 0x1c, 0xf2, 0x9d, 0xf4, 0xe8, 0xad, 0x1d, 0x7e, 0xcd,
+ 0xd0, 0x05, 0xfd, 0xb5, 0xcb, 0x7f, 0xed, 0xfe, 0xa5, 0xb7, 0xd9, 0x9a,
+ 0x74, 0xa0, 0x25, 0x13, 0xbd, 0xdc, 0x71, 0xa5, 0x16, 0x0a, 0xd9, 0xe1,
+ 0x3c, 0x03, 0x5e, 0x95, 0x9e, 0xfa, 0x68, 0xf4, 0x6e, 0xa3, 0x67, 0x37,
+ 0xc6, 0x0f, 0xbe, 0x0e, 0xde, 0xa3, 0x97, 0xde, 0x40, 0xc0, 0xe8, 0x6d,
+ 0xf6, 0xad, 0xc8, 0x01, 0xf7, 0x35, 0xb5, 0xa1, 0x4d, 0x64, 0xf7, 0x0b,
+ 0x8a, 0x52, 0xdc, 0xe8, 0xf1, 0x2f, 0x6f, 0x0e, 0xf7, 0x2f, 0x8e, 0xe8,
+ 0x05, 0xed, 0x5e, 0xa1, 0xdc, 0x35, 0x1b, 0x80, 0xc6, 0xb3, 0xd1, 0xe3,
+ 0x0f, 0xdf, 0xd0, 0x84, 0x7a, 0x9b, 0xec, 0xcb, 0x80, 0xa3, 0xbb, 0x33,
+ 0xae, 0xb2, 0xd0, 0x60, 0x6a, 0x97, 0xce, 0x5b, 0x6b, 0x14, 0xc9, 0x46,
+ 0x8f, 0xbf, 0xeb, 0x59, 0x0b, 0xae, 0xd4, 0x75, 0x16, 0x77, 0xe5, 0x14,
+ 0xb9, 0x02, 0x41, 0x0a, 0x23, 0x87, 0x89, 0xb9, 0xfd, 0x11, 0x67, 0x05,
+ 0x5b, 0x9c, 0x3c, 0x54, 0x62, 0xbb, 0xf1, 0x92, 0x2f, 0x4c, 0x36, 0xa6,
+ 0xb2, 0xdc, 0xd9, 0x7d, 0xf6, 0x17, 0xac, 0xe7, 0x9b, 0xde, 0x96, 0xb9,
+ 0x1b, 0x7a, 0x7f, 0xa1, 0xae, 0x73, 0x57, 0xdf, 0xd5, 0xee, 0x07, 0xe9,
+ 0x53, 0x42, 0x51, 0x1c, 0xc2, 0x42, 0xbb, 0xee, 0xa1, 0xa0, 0x60, 0x41,
+ 0xef, 0x38, 0xa3, 0x49, 0x71, 0x43, 0xd4, 0xa1, 0x8f, 0xfd, 0x1a, 0x67,
+ 0x57, 0x79, 0x81, 0x1a, 0x5d, 0x6c, 0xd4, 0x45, 0x77, 0xfe, 0xfd, 0xd1,
+ 0xe7, 0x77, 0x79, 0x8e, 0x82, 0xb3, 0x42, 0x7d, 0xce, 0x1f, 0x34, 0xe9,
+ 0x09, 0x7d, 0x49, 0x41, 0x53, 0xcc, 0xa5, 0x2b, 0x1d, 0x8c, 0xc5, 0xb6,
+ 0xa3, 0xca, 0x08, 0x64, 0x02, 0xc3, 0x5a, 0x1e, 0x20, 0x28, 0x71, 0x04,
+ 0x80, 0x17, 0xf8, 0xa0, 0x77, 0x76, 0x3a, 0xa6, 0x6c, 0x5e, 0x9b, 0xe1,
+ 0xe1, 0x69, 0xe5, 0x76, 0xe9, 0xf5, 0xf8, 0xe5, 0x1e, 0x82, 0x0d, 0x5d,
+ 0x94, 0xbc, 0x96, 0xb5, 0xb5, 0x21, 0xc1, 0xdb, 0x28, 0xcf, 0xb6, 0xf7,
+ 0xa9, 0x93, 0x3b, 0x85, 0x69, 0xb0, 0x4a, 0xcf, 0xfa, 0xb1, 0x61, 0x35,
+ 0x45, 0x56, 0x3d, 0x1a, 0xf4, 0x10, 0x71, 0x46, 0x61, 0x8a, 0x5e, 0x32,
+ 0x1e, 0xbd, 0x33, 0x1c, 0x0e, 0x5d, 0x8d, 0x5c, 0xda, 0x16, 0xf1, 0x41,
+ 0xa1, 0xb6, 0x89, 0x87, 0xb3, 0x89, 0x35, 0xde, 0x80, 0x30, 0x0f, 0x81,
+ 0x7a, 0x53, 0x82, 0x61, 0xc4, 0x4e, 0x60, 0x8f, 0x86, 0x67, 0xe3, 0x58,
+ 0x97, 0x6e, 0xd7, 0x35, 0xb9, 0xfd, 0x26, 0xb6, 0x09, 0x8f, 0x8c, 0x8d,
+ 0x6d, 0x8f, 0x52, 0x19, 0xcf, 0xf2, 0xa9, 0xd2, 0xae, 0x05, 0x51, 0x30,
+ 0x05, 0x75, 0x83, 0x4e, 0x38, 0xb5, 0x93, 0x17, 0x4d, 0x86, 0xe2, 0x0a,
+ 0x40, 0x1b, 0x51, 0x0f, 0xd9, 0xe6, 0x5c, 0x0a, 0x63, 0x51, 0x91, 0xa6,
+ 0x47, 0x6b, 0xac, 0x37, 0xc8, 0xc2, 0x8a, 0xcd, 0xd2, 0x8e, 0xc0, 0xae,
+ 0x92, 0xce, 0x0c, 0xd9, 0xbf, 0xef, 0xa0, 0x59, 0xd7, 0x50, 0xac, 0x2f,
+ 0x13, 0xed, 0xd9, 0x0c, 0x15, 0x6e, 0x2f, 0x99, 0xbc, 0x33, 0x57, 0x51,
+ 0x04, 0xd8, 0x80, 0x81, 0x2f, 0x34, 0x69, 0x4e, 0xb9, 0x87, 0x40, 0x1f,
+ 0x3c, 0xe6, 0x2f, 0x9f, 0x68, 0x8b, 0xd6, 0x59, 0xde, 0x59, 0x1b, 0x77,
+ 0x2b, 0xb7, 0x59, 0x97, 0x59, 0x51, 0xb6, 0x2e, 0x33, 0xc4, 0x80, 0xe3,
+ 0x7b, 0x49, 0x7a, 0x47, 0xb5, 0x9a, 0x33, 0x8a, 0x99, 0x44, 0xa4, 0x03,
+ 0xac, 0x32, 0x27, 0x9e, 0x9d, 0xd1, 0x81, 0xcf, 0x4a, 0x39, 0xf8, 0xd4,
+ 0x15, 0x84, 0xd7, 0xaa, 0xaf, 0x0c, 0x2b, 0xaa, 0x06, 0xbd, 0x1c, 0xb5,
+ 0x69, 0x09, 0x06, 0x52, 0x24, 0x75, 0x55, 0xcf, 0x69, 0xe4, 0x9b, 0xa8,
+ 0xde, 0xc9, 0xe2, 0x3c, 0x62, 0x05, 0xc9, 0xce, 0xc1, 0x71, 0x15, 0xba,
+ 0x5a, 0x80, 0x62, 0xb7, 0x9d, 0x58, 0xff, 0xb4, 0x98, 0x9f, 0x28, 0xe4,
+ 0xb6, 0x18, 0xd8, 0xb2, 0xdb, 0x36, 0x1e, 0xab, 0xca, 0xaf, 0xae, 0xa4,
+ 0x60, 0x68, 0x77, 0x6a, 0x71, 0x22, 0x3b, 0xa1, 0x55, 0xa1, 0xc8, 0xe4,
+ 0x87, 0x55, 0xab, 0x79, 0xa1, 0x36, 0x1f, 0xb5, 0xba, 0xb4, 0x88, 0x59,
+ 0x7d, 0x92, 0xbc, 0x6f, 0x0d, 0xaa, 0x0a, 0x23, 0x15, 0x9c, 0x92, 0x26,
+ 0xda, 0x3e, 0xe4, 0xd3, 0xf3, 0x35, 0x40, 0x71, 0x17, 0x2e, 0xf3, 0x5d,
+ 0x37, 0x1d, 0x28, 0x66, 0x2e, 0x02, 0xc5, 0x45, 0x87, 0xde, 0xd9, 0xf0,
+ 0x27, 0xae, 0xe9, 0x35, 0x4e, 0x9d, 0xca, 0xb5, 0x96, 0xb4, 0xac, 0xbd,
+ 0x54, 0x76, 0xe2, 0xb8, 0x10, 0x3e, 0x54, 0xde, 0x66, 0x0e, 0x4a, 0xcf,
+ 0x19, 0x1c, 0x1d, 0xfc, 0xa9, 0x9c, 0x7e, 0xcb, 0x4c, 0x3a, 0x0e, 0x5e,
+ 0xcb, 0xaf, 0x30, 0xc9, 0xce, 0xaa, 0xf8, 0xf5, 0x2d, 0xc4, 0x54, 0x52,
+ 0xfa, 0x2c, 0x9e, 0xc7, 0x26, 0x7e, 0x6b, 0x6d, 0x91, 0x69, 0x84, 0xa1,
+ 0x30, 0x3c, 0xd5, 0x84, 0x0b, 0x33, 0x28, 0xa2, 0xb8, 0x8d, 0x9b, 0x73,
+ 0xfe, 0x5f, 0x9d, 0x65, 0xcf, 0x6e, 0x52, 0x0f, 0x69, 0x70, 0x63, 0x21,
+ 0x02, 0xd0, 0x00, 0x09, 0x74, 0xd6, 0x85, 0xbf, 0x3f, 0x4b, 0x29, 0x88,
+ 0xa5, 0xe4, 0xe8, 0x00, 0x6c, 0x19, 0x88, 0x1a, 0xc6, 0xb4, 0x0e, 0x4f,
+ 0x0d, 0x8e, 0x9f, 0x8d, 0xd6, 0x60, 0x5a, 0x03, 0x10, 0x2a, 0x35, 0x63,
+ 0xa8, 0x04, 0x11, 0xd6, 0x13, 0xbf, 0xe8, 0xeb, 0xea, 0x24, 0xf1, 0x71,
+ 0xeb, 0x8c, 0x3e, 0x75, 0x64, 0xcf, 0xce, 0x4f, 0xbf, 0x3e, 0x3f, 0x1a,
+ 0x8d, 0x92, 0x77, 0x47, 0x17, 0xac, 0xf6, 0x4b, 0x25, 0xed, 0x2b, 0xd2,
+ 0xdc, 0x13, 0xb8, 0x1d, 0x14, 0xf4, 0x46, 0xa3, 0x4f, 0xd4, 0xa6, 0x80,
+ 0x94, 0xa4, 0x92, 0x5c, 0x6a, 0x10, 0xe5, 0xa0, 0xcf, 0xcf, 0x24, 0xa0,
+ 0xee, 0x1a, 0x86, 0x7f, 0x84, 0x37, 0xc1, 0x37, 0x69, 0xed, 0xe8, 0xce,
+ 0xa2, 0x0a, 0x19, 0x99, 0x03, 0x9e, 0xae, 0x95, 0x73, 0x39, 0x6b, 0x3a,
+ 0xdd, 0xde, 0xe6, 0x5f, 0x4c, 0xef, 0x4f, 0xc9, 0x45, 0xd9, 0x10, 0x40,
+ 0x27, 0xfd, 0x7a, 0xae, 0xf4, 0xf1, 0xa7, 0xe4, 0x07, 0xd3, 0xe6, 0xd4,
+ 0xac, 0x3a, 0x19, 0x93, 0xcd, 0x85, 0x3b, 0x42, 0xc9, 0x42, 0x57, 0x87,
+ 0x05, 0x20, 0xe3, 0x7e, 0xa5, 0xe6, 0x65, 0x55, 0x0d, 0xe3, 0x65, 0x4c,
+ 0x5a, 0x75, 0x48, 0x18, 0x27, 0x46, 0xc2, 0xeb, 0x6c, 0xcf, 0x52, 0x8b,
+ 0x34, 0x49, 0x4e, 0xb2, 0xcb, 0x06, 0x02, 0x09, 0x75, 0x67, 0x9a, 0xdb,
+ 0x26, 0xc0, 0xdc, 0x1d, 0xaa, 0xaf, 0x64, 0x7e, 0x7d, 0xf6, 0xf9, 0xcb,
+ 0xed, 0xcf, 0xf9, 0x57, 0xfd, 0xf9, 0xea, 0xf9, 0xb6, 0x00, 0x4f, 0x9b,
+ 0xbf, 0x9e, 0xef, 0x3d, 0xdf, 0xd9, 0x23, 0x3c, 0xbc, 0xed, 0xbd, 0x6d,
+ 0xf3, 0xff, 0xcf, 0xe5, 0x13, 0x02, 0xfd, 0x7b, 0xb5, 0xfb, 0xf9, 0x67,
+ 0x08, 0x8c, 0x21, 0xfa, 0x98, 0x99, 0x4e, 0x06, 0x4d, 0x39, 0x00, 0x2c,
+ 0x0f, 0x84, 0xa0, 0x3f, 0xb5, 0x8d, 0x92, 0xe4, 0x69, 0x9f, 0x90, 0x5f,
+ 0xf5, 0x8a, 0xd5, 0x9b, 0x59, 0x06, 0x3c, 0xfe, 0x4b, 0x0f, 0x6a, 0x44,
+ 0x03, 0xb8, 0x39, 0xdb, 0x58, 0xa6, 0x21, 0x6f, 0x37, 0xf8, 0x1b, 0x38,
+ 0x57, 0xad, 0x77, 0x38, 0x0e, 0xdc, 0x83, 0xd4, 0xfa, 0xa5, 0x5d, 0x6b,
+ 0xfe, 0xf3, 0x1a, 0x80, 0xb2, 0x64, 0xab, 0xe4, 0xbd, 0x89, 0x96, 0x73,
+ 0xb5, 0x4f, 0x91, 0x44, 0x38, 0xe7, 0x94, 0x81, 0x4b, 0x8e, 0x26, 0xfe,
+ 0xa5, 0xfd, 0xb1, 0x11, 0x8b, 0xde, 0x12, 0x6a, 0x48, 0xc2, 0xde, 0x6c,
+ 0xaa, 0x40, 0xa4, 0xaf, 0x16, 0xf1, 0xac, 0xb9, 0xed, 0x77, 0x2b, 0x45,
+ 0x5c, 0x4d, 0x1e, 0xb2, 0x29, 0x56, 0x5c, 0x1d, 0x33, 0x32, 0xe5, 0xa0,
+ 0x39, 0x21, 0xa3, 0x5f, 0xd0, 0x9c, 0x9b, 0x11, 0x28, 0xd8, 0xee, 0xdc,
+ 0xc0, 0xdb, 0x9c, 0x9c, 0x63, 0xdc, 0x74, 0x35, 0x2c, 0x10, 0xa3, 0xde,
+ 0x78, 0xfc, 0xaa, 0x25, 0xd9, 0x01, 0xbf, 0x21, 0xe2, 0xa7, 0x4d, 0x5b,
+ 0x93, 0xc2, 0xdc, 0xf6, 0x79, 0xa5, 0xec, 0xa0, 0x2b, 0xa2, 0x46, 0xaf,
+ 0x3f, 0xe9, 0x03, 0xe7, 0xc9, 0x1e, 0xba, 0x47, 0xa7, 0xe6, 0x42, 0xdf,
+ 0x6d, 0x6d, 0xd0, 0x0d, 0x1b, 0x4a, 0x1e, 0x3b, 0x92, 0xee, 0x39, 0x44,
+ 0x97, 0xdb, 0xe6, 0xfc, 0x8b, 0x08, 0x95, 0x61, 0x31, 0x3e, 0xe0, 0xe9,
+ 0x2c, 0x09, 0x0e, 0x7d, 0x53, 0x59, 0xd8, 0xe0, 0x8f, 0x36, 0x82, 0x0b,
+ 0xf7, 0x9a, 0x94, 0x0f, 0x4c, 0x99, 0xf2, 0x67, 0x7e, 0xaa, 0xab, 0xe5,
+ 0x76, 0xe3, 0xb4, 0x6a, 0xc1, 0x8e, 0xaf, 0x09, 0xa0, 0xfd, 0x9c, 0x30,
+ 0xbd, 0xbc, 0x1a, 0xf0, 0x7f, 0x58, 0x5b, 0x1b, 0x9d, 0x1d, 0x1d, 0x1d,
+ 0x26, 0x27, 0xc7, 0xef, 0x8e, 0x2f, 0x3c, 0x81, 0xdc, 0x5e, 0x24, 0x6a,
+ 0x74, 0xd5, 0x12, 0x3d, 0x9d, 0xe5, 0x70, 0x30, 0xb7, 0x52, 0x3a, 0x41,
+ 0xae, 0xf2, 0x79, 0x26, 0x49, 0x0e, 0xb3, 0xee, 0x7b, 0x50, 0xbd, 0x01,
+ 0xa6, 0x33, 0x4c, 0xbe, 0xf2, 0x62, 0x24, 0x93, 0xda, 0x08, 0x37, 0x13,
+ 0x5b, 0x33, 0x75, 0xf0, 0x57, 0x09, 0xd9, 0x68, 0x4b, 0x4e, 0x82, 0xd6,
+ 0x69, 0x33, 0x6e, 0x24, 0xcc, 0xb5, 0x33, 0x2a, 0x5a, 0xdb, 0x8c, 0x23,
+ 0x9f, 0x3d, 0x0b, 0x1d, 0x22, 0xf8, 0xee, 0x32, 0x24, 0xe9, 0xcf, 0x73,
+ 0x4e, 0x85, 0xf4, 0xc3, 0x8b, 0x6d, 0x19, 0xc9, 0x8b, 0x92, 0xf9, 0xb8,
+ 0xdf, 0xa3, 0x5f, 0x1f, 0x58, 0x63, 0x6b, 0xb5, 0x2f, 0xbf, 0xf0, 0xec,
+ 0xb3, 0x6d, 0x9b, 0x4d, 0xb0, 0x00, 0xcf, 0x11, 0x51, 0x9f, 0x3a, 0xdb,
+ 0x49, 0x8c, 0x3c, 0xb2, 0x24, 0xa9, 0xbe, 0x5a, 0x16, 0xc1, 0x75, 0xf7,
+ 0x57, 0x7e, 0xd7, 0xcc, 0xff, 0xe5, 0x36, 0xae, 0xb7, 0xcb, 0xb4, 0x1a,
+ 0x18, 0xc9, 0xeb, 0x61, 0xa0, 0xd6, 0x55, 0xa6, 0x08, 0x09, 0x3d, 0x66,
+ 0xd3, 0x4f, 0xe6, 0x2a, 0x56, 0x76, 0xa4, 0x45, 0x97, 0x12, 0x52, 0xc2,
+ 0x45, 0x39, 0x93, 0x03, 0x40, 0x53, 0xa7, 0x44, 0x5c, 0x35, 0x76, 0x3a,
+ 0x59, 0xc7, 0x21, 0xb9, 0xea, 0x2e, 0x3a, 0x1e, 0x45, 0x09, 0x02, 0x60,
+ 0xab, 0xd4, 0x6a, 0x4e, 0xd3, 0x94, 0xb9, 0x84, 0xa2, 0xf5, 0x3c, 0xd9,
+ 0xf9, 0x9c, 0xe6, 0xf1, 0x69, 0xf3, 0x79, 0x5b, 0x56, 0x13, 0x9b, 0xf2,
+ 0x0b, 0x75, 0xc1, 0xcb, 0xff, 0xe4, 0xac, 0x05, 0x94, 0xb7, 0xe1, 0xd5,
+ 0xd5, 0xf8, 0x58, 0xc4, 0xef, 0x91, 0x7e, 0x22, 0xae, 0x75, 0x58, 0xa6,
+ 0xe0, 0xeb, 0x66, 0x09, 0x89, 0xee, 0x1a, 0x59, 0x17, 0xb2, 0xb5, 0x72,
+ 0xfc, 0xde, 0x7a, 0x65, 0xf3, 0x43, 0x79, 0x19, 0xc8, 0x3a, 0x62, 0x68,
+ 0xed, 0x2e, 0x9f, 0x42, 0xaa, 0x76, 0x98, 0x5e, 0x66, 0xbf, 0x98, 0xf8,
+ 0x38, 0x6c, 0x1a, 0xee, 0x4b, 0xf8, 0x3d, 0xed, 0xc8, 0x44, 0x80, 0xa1,
+ 0x65, 0x2d, 0x61, 0x5c, 0xd8, 0x80, 0xfc, 0x40, 0xe9, 0xc7, 0xce, 0x45,
+ 0x40, 0xaa, 0x14, 0xb1, 0xe6, 0x9e, 0xeb, 0x85, 0x42, 0xf9, 0x9b, 0x66,
+ 0xa6, 0x76, 0x85, 0x77, 0x96, 0xb0, 0xdb, 0x73, 0x26, 0x80, 0x11, 0x6f,
+ 0xda, 0x3b, 0xdb, 0x46, 0x7e, 0x9d, 0x95, 0xdd, 0xfa, 0xd6, 0xa1, 0x52,
+ 0x8a, 0x69, 0x0d, 0xb0, 0x3a, 0x3b, 0xdb, 0xdf, 0xae, 0x5e, 0x75, 0xa0,
+ 0x82, 0x3f, 0xfa, 0xf2, 0xee, 0xf3, 0x47, 0x36, 0xed, 0xb4, 0x82, 0x5e,
+ 0x9e, 0x69, 0x38, 0x24, 0x04, 0x41, 0xe7, 0x84, 0x09, 0xb6, 0xcd, 0x10,
+ 0x7e, 0x76, 0x95, 0xd2, 0xf0, 0x1f, 0x1b, 0xbd, 0xa6, 0x6c, 0x74, 0x86,
+ 0xf2, 0x4e, 0x02, 0xb4, 0xf9, 0xcb, 0x9a, 0x2c, 0x64, 0x0b, 0x40, 0xa2,
+ 0x39, 0x35, 0xd6, 0x66, 0x7b, 0x33, 0xee, 0x84, 0xf7, 0x36, 0x73, 0xce,
+ 0x7e, 0x9b, 0x49, 0x28, 0xf5, 0x54, 0xd9, 0xd5, 0x92, 0x81, 0x1d, 0x4a,
+ 0x56, 0xfb, 0x09, 0x00, 0x58, 0xce, 0xab, 0xe1, 0xcd, 0x14, 0x49, 0xc4,
+ 0xf4, 0x04, 0xc6, 0x3b, 0x49, 0x55, 0x64, 0x65, 0x91, 0xa3, 0x7b, 0x31,
+ 0x90, 0x7d, 0x76, 0x42, 0x0e, 0x31, 0x70, 0x83, 0xb5, 0xa4, 0x5b, 0xfa,
+ 0x96, 0x11, 0xee, 0x86, 0x48, 0xc4, 0x65, 0x42, 0xb1, 0xcc, 0x9e, 0xb2,
+ 0xbe, 0xc8, 0x31, 0xd6, 0xb0, 0x87, 0x00, 0x0d, 0xf4, 0x85, 0x6a, 0xd1,
+ 0x92, 0xed, 0x8a, 0x38, 0x7e, 0xad, 0x48, 0x83, 0x8c, 0x4b, 0x4e, 0x76,
+ 0xff, 0x83, 0xd3, 0xf7, 0x6f, 0x8f, 0xbf, 0xb6, 0x08, 0x3c, 0xcc, 0xc4,
+ 0xb5, 0x26, 0x27, 0xda, 0xb4, 0x25, 0x8a, 0xad, 0xd3, 0x5b, 0x6a, 0xd7,
+ 0x49, 0x20, 0xae, 0x61, 0x4f, 0x1f, 0xfd, 0x0f, 0xc0, 0x40, 0x8a, 0x67,
+ 0x64, 0x2b, 0x67, 0x44, 0x8b, 0x7a, 0xd3, 0x59, 0x1e, 0x3a, 0xf0, 0x60,
+ 0x9c, 0xb0, 0x91, 0x56, 0xcd, 0x72, 0x61, 0xe3, 0x09, 0xbd, 0xda, 0x77,
+ 0x82, 0x58, 0xac, 0x99, 0xe2, 0xcb, 0x05, 0xb3, 0x26, 0xc9, 0xf7, 0x6c,
+ 0x19, 0x76, 0xf9, 0x0e, 0x20, 0xcb, 0x82, 0x40, 0x80, 0xc8, 0x05, 0x10,
+ 0x84, 0xe8, 0xcc, 0x08, 0xe2, 0xd0, 0x0f, 0x9d, 0x57, 0x57, 0xce, 0x14,
+ 0xd5, 0x03, 0xfd, 0xaa, 0xc5, 0x73, 0xd6, 0xcc, 0x68, 0xde, 0x28, 0x36,
+ 0x6b, 0xe3, 0x72, 0x6c, 0x20, 0xb0, 0x73, 0x15, 0xd9, 0x72, 0x41, 0x2e,
+ 0x54, 0x49, 0xb3, 0x4c, 0x53, 0x78, 0x2d, 0xe1, 0xf6, 0xc4, 0x27, 0x6f,
+ 0xc8, 0x43, 0xb3, 0x47, 0xc0, 0xdd, 0x73, 0x06, 0xf1, 0xf2, 0xb3, 0x43,
+ 0x85, 0x4b, 0x3a, 0x74, 0xed, 0xe3, 0x4b, 0x2f, 0xe1, 0x8c, 0x43, 0x06,
+ 0x95, 0xe8, 0xd8, 0x5c, 0x4c, 0xb6, 0x96, 0xf5, 0x3f, 0xae, 0x0f, 0xea,
+ 0x87, 0xf9, 0xb8, 0x9c, 0x69, 0x0e, 0x86, 0xc5, 0x77, 0xd0, 0x87, 0xb4,
+ 0x1c, 0x55, 0xca, 0x35, 0xdc, 0xd1, 0xb5, 0x67, 0xa1, 0x74, 0x61, 0x53,
+ 0x6e, 0xfc, 0x5c, 0xcf, 0x05, 0x9e, 0x22, 0x9d, 0x85, 0x45, 0x1d, 0xc9,
+ 0x8a, 0xc9, 0xac, 0x14, 0xaa, 0xa6, 0xfc, 0x6f, 0xac, 0x54, 0x7b, 0xea,
+ 0xe4, 0xfc, 0x2b, 0x97, 0x64, 0xec, 0x40, 0xad, 0x06, 0x23, 0xee, 0xf4,
+ 0x04, 0xf0, 0x02, 0x13, 0xa4, 0xb7, 0xf9, 0x0b, 0x09, 0xd0, 0x57, 0xb8,
+ 0x16, 0xd3, 0x10, 0x17, 0x77, 0x30, 0x43, 0xfd, 0x89, 0x6d, 0x8b, 0xec,
+ 0x02, 0xfc, 0xab, 0x76, 0xae, 0x8f, 0x76, 0x96, 0xde, 0xd0, 0x53, 0x5a,
+ 0x5d, 0x09, 0x32, 0x9a, 0x38, 0xd5, 0xa0, 0x24, 0xda, 0x92, 0x1b, 0xd6,
+ 0x46, 0x49, 0x42, 0x89, 0x0d, 0xa0, 0x81, 0xf8, 0xb4, 0xe4, 0x94, 0x3f,
+ 0x49, 0x88, 0x62, 0xeb, 0xa4, 0x25, 0x44, 0x8f, 0xe3, 0xfc, 0xd1, 0x86,
+ 0xa5, 0xa4, 0xee, 0x2e, 0xd3, 0x52, 0x00, 0xce, 0x54, 0x2b, 0x97, 0x99,
+ 0xf7, 0x1a, 0xd9, 0xf3, 0xa0, 0x09, 0x67, 0x62, 0x43, 0xe1, 0xae, 0x20,
+ 0x4b, 0x10, 0x28, 0x20, 0xf2, 0x80, 0xb2, 0xda, 0x35, 0xc1, 0xdf, 0xbf,
+ 0x91, 0x02, 0x40, 0xe6, 0x3c, 0x0b, 0x90, 0x89, 0x40, 0xb6, 0x7d, 0xbe,
+ 0x2d, 0x96, 0xb8, 0x46, 0x22, 0x57, 0xeb, 0x64, 0xff, 0xfc, 0xc8, 0x48,
+ 0xb6, 0x57, 0x05, 0x20, 0x24, 0x8a, 0x46, 0x73, 0xde, 0xb2, 0x42, 0x6a,
+ 0x0e, 0x15, 0x7a, 0x3e, 0xa8, 0xc3, 0x3b, 0xef, 0x4d, 0x22, 0x26, 0x89,
+ 0x11, 0xe0, 0xf4, 0x6a, 0x47, 0x72, 0x13, 0xc5, 0x5f, 0x05, 0xd7, 0x21,
+ 0x14, 0x03, 0x26, 0x29, 0xf2, 0x96, 0x98, 0xae, 0x4a, 0xc5, 0x5e, 0x3d,
+ 0x0b, 0xd8, 0xba, 0x0f, 0xba, 0xaa, 0x6b, 0x8d, 0x53, 0xed, 0xb2, 0x12,
+ 0xfe, 0xae, 0x58, 0x88, 0xd2, 0x57, 0xcb, 0x03, 0xea, 0xc8, 0xa9, 0x1f,
+ 0xb7, 0x1e, 0xfd, 0x1d, 0xf7, 0x0c, 0xc9, 0x22, 0x5d, 0xb9, 0x20, 0xb3,
+ 0xc1, 0xf6, 0x6c, 0xc8, 0x9e, 0x7a, 0xc2, 0x2f, 0x67, 0xe8, 0xa1, 0x74,
+ 0x36, 0x6c, 0xd4, 0x24, 0xfc, 0xa4, 0xb5, 0x64, 0x43, 0x89, 0x3a, 0x30,
+ 0x95, 0xb3, 0x4a, 0x54, 0x41, 0x91, 0xc3, 0x63, 0x02, 0xff, 0xb9, 0x61,
+ 0x01, 0xc0, 0xe7, 0x4f, 0x51, 0x33, 0xef, 0x1f, 0xed, 0x6c, 0xdd, 0x18,
+ 0xec, 0x97, 0xf4, 0xd1, 0x1b, 0x0b, 0x90, 0x86, 0x12, 0xe0, 0xd4, 0x11,
+ 0x58, 0x2a, 0xdc, 0xa7, 0xf4, 0x0b, 0x3e, 0x46, 0x00, 0x9c, 0x22, 0x4c,
+ 0xb6, 0xf0, 0x8c, 0xa4, 0xc8, 0x88, 0x3f, 0x10, 0xf6, 0xf1, 0x81, 0x43,
+ 0x8f, 0x7d, 0xd1, 0x78, 0xf0, 0xed, 0x96, 0x96, 0x0d, 0x25, 0x53, 0x0e,
+ 0xe5, 0xf7, 0xea, 0x81, 0xaf, 0xb3, 0x56, 0x9d, 0x51, 0x9b, 0x34, 0xd4,
+ 0x1b, 0xf4, 0xcc, 0x5a, 0xac, 0xcf, 0x66, 0x8e, 0xe1, 0xeb, 0x63, 0xb4,
+ 0xab, 0xc8, 0xaf, 0x73, 0x02, 0x93, 0xf0, 0x2e, 0x2a, 0x60, 0xf0, 0xd0,
+ 0xca, 0x76, 0xa0, 0x0a, 0x50, 0x94, 0x0c, 0x64, 0xf1, 0xa8, 0x90, 0x31,
+ 0x82, 0x78, 0x81, 0xdb, 0xbc, 0x56, 0x3f, 0xa4, 0xa1, 0xed, 0x09, 0x87,
+ 0x47, 0x34, 0x8c, 0x17, 0x90, 0x35, 0x13, 0x6f, 0x29, 0xb3, 0xc9, 0x75,
+ 0xc9, 0xe1, 0xb5, 0x66, 0xd1, 0xbc, 0x44, 0xcc, 0x5e, 0xf2, 0x9f, 0x42,
+ 0x03, 0xdf, 0xba, 0xfc, 0x3d, 0x22, 0x84, 0x21, 0x63, 0xff, 0x0d, 0x1d,
+ 0x41, 0x1c, 0xfd, 0x70, 0x71, 0xbe, 0x9f, 0x7c, 0x73, 0xb4, 0x7f, 0x78,
+ 0x74, 0x3e, 0xea, 0x5c, 0xfa, 0x12, 0x09, 0xc2, 0x12, 0x1a, 0xd9, 0x83,
+ 0x21, 0x1a, 0x2b, 0x2e, 0x80, 0x84, 0xf0, 0x2b, 0xd7, 0x33, 0xc4, 0x43,
+ 0x07, 0xc9, 0x9c, 0x0f, 0x52, 0x88, 0xd8, 0x71, 0x00, 0xa0, 0xd8, 0x1a,
+ 0xcc, 0xc6, 0xb6, 0x31, 0x31, 0x1c, 0x8a, 0xe2, 0x19, 0xd4, 0x7a, 0xee,
+ 0x27, 0xcf, 0x38, 0x88, 0x39, 0x77, 0x99, 0x4c, 0x4b, 0xcd, 0x0b, 0x6c,
+ 0xef, 0xdc, 0x37, 0x2e, 0x1d, 0xdb, 0x63, 0x5b, 0x72, 0xc9, 0x88, 0x01,
+ 0xb1, 0xf7, 0xc3, 0xc0, 0xf4, 0x3b, 0x30, 0x8b, 0x3f, 0x20, 0x5c, 0xc0,
+ 0x87, 0xac, 0xee, 0x75, 0xac, 0x81, 0xed, 0xee, 0xc1, 0xa3, 0xaf, 0xc2,
+ 0x93, 0xf4, 0x4d, 0xb4, 0x25, 0x3a, 0x5d, 0x54, 0x18, 0x37, 0xd0, 0x20,
+ 0x70, 0xa9, 0x7a, 0x42, 0xb2, 0x9c, 0xa0, 0x20, 0xd3, 0x45, 0x62, 0x95,
+ 0x9c, 0x9a, 0x29, 0xa1, 0x61, 0x18, 0x88, 0x4c, 0x01, 0xb2, 0x8e, 0x39,
+ 0x7b, 0x7c, 0xa9, 0xc3, 0x2e, 0xa2, 0x90, 0xb5, 0x66, 0x58, 0xf2, 0x90,
+ 0x7f, 0x3f, 0xc0, 0x17, 0x22, 0xe1, 0xf8, 0x75, 0xcb, 0x55, 0x2a, 0x76,
+ 0x51, 0x29, 0x87, 0x26, 0xcd, 0xd1, 0x18, 0x2c, 0xcd, 0x6b, 0x14, 0x3f,
+ 0x75, 0xa9, 0x95, 0x18, 0xe4, 0x5d, 0x0e, 0x08, 0x23, 0xa5, 0x1e, 0xa6,
+ 0x4e, 0x2e, 0xeb, 0x48, 0xef, 0xa8, 0xbc, 0xea, 0xa5, 0x05, 0xf9, 0xc4,
+ 0x8c, 0xb2, 0x51, 0x08, 0x24, 0xb7, 0xcf, 0x65, 0xc9, 0x37, 0x65, 0x8d,
+ 0xbb, 0x20, 0x7c, 0x9c, 0x2e, 0xf9, 0xd8, 0xf2, 0xe3, 0x0d, 0x71, 0x75,
+ 0x59, 0x60, 0x4e, 0xe0, 0xd8, 0x82, 0x7d, 0x9d, 0xed, 0x5f, 0x7c, 0x03,
+ 0x47, 0x2b, 0x48, 0xf8, 0x10, 0x80, 0x26, 0xea, 0x5e, 0x0b, 0xb3, 0xb3,
+ 0xac, 0x02, 0xc7, 0xf2, 0xaf, 0xe2, 0x09, 0xaa, 0x3c, 0x09, 0x47, 0x5e,
+ 0xce, 0x31, 0x49, 0x33, 0x2e, 0xa3, 0x09, 0x1e, 0xdd, 0x2a, 0x66, 0x86,
+ 0x28, 0x78, 0x9b, 0x7a, 0x67, 0x43, 0x2f, 0xd7, 0x39, 0x4f, 0x7d, 0x9d,
+ 0xe7, 0x04, 0xa2, 0x27, 0x61, 0x8e, 0x34, 0x1e, 0x1f, 0xed, 0x15, 0x5f,
+ 0x50, 0x22, 0x32, 0xfb, 0xa2, 0xa6, 0x65, 0x1c, 0xae, 0xcf, 0x3b, 0xd2,
+ 0x5f, 0xce, 0x1f, 0x86, 0x21, 0x3e, 0x4e, 0xf2, 0xd5, 0xb2, 0x69, 0xb3,
+ 0x95, 0x0e, 0xe6, 0xac, 0x95, 0x2c, 0xab, 0xb2, 0x6c, 0xbc, 0x31, 0x40,
+ 0xfa, 0x49, 0x1b, 0x39, 0xd1, 0x8c, 0xcb, 0xc8, 0x63, 0xa1, 0xa6, 0x0a,
+ 0x91, 0xbb, 0x7d, 0xc1, 0x30, 0x1d, 0xd7, 0xe5, 0x6c, 0xd9, 0x78, 0x81,
+ 0xd8, 0xbf, 0x6c, 0xcc, 0xde, 0xa0, 0x37, 0x8e, 0x87, 0x8a, 0x51, 0x49,
+ 0x55, 0x90, 0x8d, 0x10, 0x6e, 0x34, 0x7d, 0x23, 0x5e, 0xc2, 0xef, 0x58,
+ 0x95, 0x45, 0xbb, 0xde, 0x16, 0x62, 0xbe, 0x37, 0xd7, 0xd6, 0x46, 0xba,
+ 0xd9, 0x04, 0x11, 0x1a, 0x6e, 0xfa, 0xf7, 0x90, 0x26, 0x69, 0x0c, 0xec,
+ 0x37, 0x98, 0x98, 0x5f, 0x14, 0xa3, 0x2d, 0xe3, 0x3d, 0x05, 0x0b, 0xe7,
+ 0x3d, 0xce, 0xeb, 0xf6, 0xa4, 0xf0, 0x95, 0xf5, 0x5c, 0x68, 0xaa, 0xd9,
+ 0x45, 0xa9, 0xd8, 0xe7, 0xe2, 0xb9, 0x73, 0x04, 0xd1, 0x4a, 0x56, 0x8f,
+ 0xa2, 0xfa, 0xd2, 0x25, 0xa0, 0xc5, 0x59, 0x6d, 0x64, 0x2e, 0x0d, 0x72,
+ 0xeb, 0x7f, 0x6d, 0x25, 0xfd, 0x44, 0xea, 0x66, 0x47, 0x30, 0x88, 0xfe,
+ 0x2f, 0xc4, 0x60, 0x09, 0xa4, 0x2a, 0xb5, 0xd9, 0xc1, 0x21, 0x1d, 0x1a,
+ 0x15, 0xea, 0xba, 0x9a, 0x38, 0xea, 0x37, 0xd2, 0x41, 0x76, 0x47, 0xfa,
+ 0x8b, 0xea, 0x08, 0x82, 0xe6, 0xc1, 0xf5, 0x51, 0x2d, 0x3e, 0x12, 0xd0,
+ 0x30, 0x2e, 0xad, 0x55, 0x8f, 0x4a, 0x15, 0x72, 0xe1, 0x3e, 0x16, 0xeb,
+ 0x51, 0xb6, 0x46, 0x3d, 0xa8, 0x9c, 0xf0, 0x6e, 0xf5, 0xf6, 0x3a, 0xa9,
+ 0x4b, 0xfe, 0x57, 0xf3, 0x8f, 0x24, 0xc6, 0x4b, 0xc8, 0xdf, 0x2b, 0x87,
+ 0x26, 0x75, 0x44, 0x91, 0xe5, 0x24, 0xc1, 0xa7, 0x1c, 0x58, 0xa7, 0x9e,
+ 0x49, 0x1d, 0xa4, 0x4a, 0x01, 0xe4, 0xb8, 0x04, 0x1a, 0xa3, 0x00, 0x83,
+ 0x50, 0x50, 0x19, 0x21, 0xc6, 0x72, 0xfe, 0x36, 0x15, 0xba, 0x53, 0x4d,
+ 0x46, 0xaf, 0x54, 0xcd, 0xe8, 0xb0, 0x3b, 0xe5, 0x86, 0x2f, 0x77, 0x3f,
+ 0x72, 0xe4, 0xe1, 0xa4, 0xbb, 0x4b, 0x09, 0xc6, 0xcc, 0x89, 0x04, 0x3a,
+ 0x25, 0x29, 0x96, 0xc9, 0x71, 0x1c, 0x7e, 0x6c, 0x8a, 0x0b, 0xde, 0xbc,
+ 0xa2, 0x84, 0x0f, 0x31, 0x49, 0x09, 0xd4, 0x08, 0xec, 0x5f, 0xd7, 0xb9,
+ 0x84, 0x98, 0xf2, 0xaa, 0xb7, 0xcb, 0x10, 0xc2, 0xc2, 0x47, 0xd1, 0x05,
+ 0xce, 0xc1, 0x6a, 0x63, 0x20, 0x86, 0xe1, 0x81, 0x19, 0x5a, 0x30, 0x50,
+ 0xb9, 0x44, 0x8e, 0xfd, 0xf4, 0x72, 0x0e, 0xc8, 0xb0, 0x61, 0xcf, 0x9f,
+ 0xd8, 0xbb, 0xdf, 0x25, 0xc5, 0xb3, 0x16, 0x09, 0xe7, 0x92, 0x08, 0x92,
+ 0x1b, 0x5d, 0x28, 0xbb, 0x3b, 0x50, 0x4c, 0x39, 0x7c, 0x03, 0xf0, 0x9a,
+ 0xda, 0x42, 0xab, 0xe8, 0x95, 0xb7, 0xf8, 0x9b, 0x7d, 0x59, 0x25, 0x9b,
+ 0x7c, 0x2f, 0xde, 0x66, 0x96, 0x0b, 0x3d, 0xbf, 0x53, 0xab, 0xda, 0x16,
+ 0x27, 0x74, 0xd7, 0x4d, 0xb5, 0x9c, 0xb4, 0x10, 0xf4, 0x40, 0x11, 0x2d,
+ 0x2f, 0xbd, 0x5d, 0xe3, 0xd2, 0xd7, 0xed, 0x8f, 0xcf, 0x44, 0xbd, 0x67,
+ 0xed, 0x83, 0x46, 0xb6, 0x91, 0xb6, 0xf2, 0x5d, 0x6c, 0x7d, 0x44, 0xbf,
+ 0xdf, 0x4d, 0x4b, 0x65, 0x83, 0x33, 0x9b, 0x5c, 0xdf, 0xa9, 0xa6, 0x4d,
+ 0x89, 0x0a, 0xde, 0xdd, 0x2b, 0x82, 0x18, 0x04, 0x8f, 0x2a, 0x11, 0x6c,
+ 0x44, 0x88, 0x35, 0x64, 0xb2, 0x5c, 0xb3, 0xf8, 0x85, 0x66, 0x48, 0x03,
+ 0x89, 0x5a, 0x65, 0x47, 0xf0, 0x96, 0x59, 0x48, 0xad, 0xa8, 0x62, 0xab,
+ 0x09, 0xd5, 0x0e, 0x03, 0xb1, 0x13, 0xb2, 0x0a, 0x04, 0x25, 0x2b, 0x1f,
+ 0x0a, 0x96, 0x9b, 0xac, 0xdf, 0xd0, 0x56, 0xb8, 0x97, 0x1e, 0xba, 0xe2,
+ 0x44, 0x78, 0x37, 0x9e, 0x31, 0x52, 0x49, 0x40, 0x47, 0x87, 0x6a, 0x53,
+ 0x05, 0xcb, 0xc1, 0xda, 0x90, 0x66, 0xa3, 0x9b, 0x64, 0xd6, 0x55, 0xbb,
+ 0x30, 0x43, 0xa0, 0x19, 0xaf, 0xcf, 0xb2, 0xed, 0x75, 0xaf, 0x1c, 0xd2,
+ 0x06, 0xc7, 0xff, 0x97, 0xd0, 0x7e, 0x2c, 0x96, 0x20, 0x5b, 0x2f, 0x28,
+ 0xce, 0x6d, 0x33, 0x32, 0x14, 0xd3, 0xc4, 0x2f, 0x1d, 0xcc, 0xce, 0xab,
+ 0xdd, 0xe1, 0xce, 0xcb, 0xcf, 0x87, 0xdb, 0xc3, 0x9d, 0x6d, 0xe2, 0x2f,
+ 0x34, 0x14, 0x6f, 0x70, 0xbc, 0x2e, 0x91, 0xae, 0x5a, 0xef, 0x85, 0x7d,
+ 0xbe, 0x3f, 0xba, 0xf8, 0xfe, 0xf4, 0xfc, 0xdb, 0xe4, 0xf8, 0xfd, 0xc5,
+ 0xd1, 0xf9, 0xdb, 0xfd, 0x83, 0x4f, 0x05, 0x49, 0xf7, 0xcd, 0xd6, 0x5e,
+ 0x39, 0xe0, 0xcc, 0x2d, 0x4c, 0x68, 0x1b, 0x74, 0x6b, 0x96, 0x35, 0xd7,
+ 0xdb, 0x7b, 0x3b, 0x8f, 0x22, 0x29, 0x47, 0xcc, 0x83, 0xee, 0x7d, 0x9d,
+ 0xd4, 0x0e, 0x4d, 0x6a, 0x75, 0x2b, 0x16, 0x39, 0x71, 0xc4, 0x61, 0x56,
+ 0x36, 0x44, 0x17, 0x6c, 0x1e, 0xd5, 0x66, 0xf2, 0x71, 0x95, 0xaa, 0x61,
+ 0x6a, 0xcc, 0x70, 0xae, 0x9c, 0x69, 0x2b, 0x18, 0x30, 0x12, 0x8e, 0x2e,
+ 0x3c, 0x77, 0x8d, 0x4b, 0xef, 0x36, 0x62, 0x4e, 0x61, 0x74, 0xd6, 0x29,
+ 0x44, 0x3c, 0xe5, 0xca, 0x92, 0xc6, 0x46, 0xd4, 0x22, 0x05, 0x21, 0x19,
+ 0x0f, 0x70, 0x6a, 0x53, 0x46, 0x2c, 0x20, 0xc1, 0x5a, 0xe2, 0xc9, 0xe9,
+ 0x18, 0x6b, 0xbb, 0x7a, 0xb2, 0x1f, 0x49, 0xdb, 0x81, 0x46, 0xad, 0x35,
+ 0xc4, 0x19, 0x13, 0x6b, 0x99, 0x46, 0x0f, 0x64, 0x20, 0x38, 0x0d, 0xde,
+ 0x68, 0xb8, 0x2b, 0x08, 0x54, 0x0a, 0xd0, 0xdd, 0x06, 0xf6, 0xe5, 0x3b,
+ 0x0a, 0x69, 0x14, 0x2c, 0xff, 0x69, 0x25, 0x01, 0x6a, 0xbd, 0x6e, 0x61,
+ 0x08, 0x26, 0x5c, 0x01, 0xc8, 0x7f, 0x9d, 0x45, 0x6d, 0x04, 0x6a, 0x4e,
+ 0xab, 0xf4, 0x0e, 0x65, 0x2c, 0x72, 0x87, 0x08, 0xba, 0xd6, 0xae, 0x62,
+ 0x44, 0x82, 0x93, 0x5b, 0xf3, 0xe4, 0xec, 0xe8, 0xdd, 0x40, 0xeb, 0xaf,
+ 0x9a, 0xdf, 0xd9, 0x18, 0xa5, 0xf0, 0x8f, 0x9c, 0xe6, 0xb3, 0xc8, 0x0a,
+ 0x0d, 0xab, 0x01, 0x4f, 0x94, 0x38, 0x20, 0x7f, 0x02, 0x74, 0x68, 0x2c,
+ 0x40, 0xa4, 0x44, 0x8f, 0x6a, 0xf8, 0x25, 0xa7, 0x19, 0x76, 0x51, 0x33,
+ 0x69, 0x3f, 0x25, 0x76, 0x39, 0xd9, 0xb0, 0xf1, 0xba, 0xd4, 0x1f, 0x82,
+ 0x52, 0x11, 0x33, 0x60, 0xc3, 0x04, 0x4a, 0x4d, 0xc2, 0x3e, 0xfb, 0xf6,
+ 0x60, 0xf4, 0xc7, 0x9d, 0x5d, 0x19, 0xce, 0xe6, 0xd0, 0x01, 0xed, 0x06,
+ 0xf9, 0xf9, 0x60, 0xd7, 0xfe, 0x18, 0x35, 0xdb, 0x1a, 0x07, 0x1c, 0x9b,
+ 0xb1, 0x61, 0x73, 0x84, 0x36, 0x5b, 0x49, 0x42, 0x08, 0x02, 0x7b, 0xb0,
+ 0x22, 0xa6, 0xad, 0x8f, 0x4a, 0x2e, 0x11, 0x94, 0xd1, 0x91, 0x42, 0x36,
+ 0x8d, 0x8d, 0xfa, 0x4b, 0x0b, 0xfd, 0x88, 0x5b, 0x96, 0xd6, 0x90, 0x4e,
+ 0xee, 0x22, 0x5b, 0xba, 0x7b, 0x4e, 0xeb, 0xed, 0xbe, 0x25, 0x18, 0x57,
+ 0xb9, 0xd9, 0x15, 0xaf, 0xc7, 0x75, 0x83, 0x03, 0x20, 0x81, 0xec, 0x53,
+ 0x2d, 0x95, 0x55, 0xb8, 0xd2, 0x13, 0xf4, 0xf4, 0xa9, 0xd9, 0x28, 0x73,
+ 0xb2, 0x18, 0xc2, 0x81, 0x98, 0x42, 0x39, 0x23, 0xd5, 0xc5, 0x3e, 0x72,
+ 0x58, 0x51, 0x89, 0x8f, 0x05, 0x87, 0x94, 0xbe, 0x1f, 0x26, 0xdf, 0x64,
+ 0x05, 0xe5, 0xd0, 0x53, 0xf0, 0x9d, 0xa6, 0x61, 0x21, 0x44, 0x90, 0x6a,
+ 0xf5, 0xa1, 0x76, 0xd9, 0x49, 0x96, 0x0a, 0x64, 0xa6, 0xe1, 0x75, 0x35,
+ 0x6b, 0xb8, 0x5a, 0xb7, 0x27, 0xa5, 0x40, 0x3d, 0xc1, 0xf7, 0xb4, 0xb8,
+ 0x17, 0xf4, 0x00, 0x37, 0xb0, 0xd1, 0xc6, 0xbd, 0x04, 0x8c, 0x3e, 0x9a,
+ 0x93, 0x63, 0x0e, 0x5f, 0x93, 0x58, 0x95, 0xaf, 0x81, 0x02, 0x4d, 0xd6,
+ 0x42, 0xd6, 0xb8, 0x1c, 0x53, 0x99, 0x56, 0xd7, 0x64, 0xfa, 0xa8, 0xcd,
+ 0x75, 0x93, 0x16, 0x93, 0x87, 0xe1, 0xd4, 0xc8, 0xb2, 0x64, 0x3c, 0x1b,
+ 0x2e, 0x6f, 0xb6, 0xbc, 0x63, 0x4a, 0x2c, 0xff, 0x9a, 0xe1, 0x02, 0xda,
+ 0x86, 0x6f, 0xad, 0x0b, 0x1b, 0x22, 0x7b, 0xa5, 0xad, 0x33, 0x41, 0x24,
+ 0xa1, 0x89, 0xff, 0x7c, 0x3c, 0x57, 0x62, 0x60, 0x1d, 0x25, 0x16, 0x80,
+ 0x98, 0x5a, 0x18, 0x2e, 0xb2, 0xf9, 0x9e, 0x4d, 0x4c, 0x56, 0xfe, 0x20,
+ 0x95, 0x0c, 0xac, 0x62, 0xe1, 0x19, 0x69, 0x8b, 0xec, 0x6a, 0x26, 0x02,
+ 0x85, 0xaf, 0xba, 0x38, 0x40, 0xe9, 0x30, 0x1b, 0x84, 0x15, 0x1e, 0xa9,
+ 0x2a, 0x03, 0x89, 0xdd, 0xd0, 0x61, 0x23, 0xd1, 0xb5, 0xfc, 0x30, 0x0a,
+ 0xb3, 0xbb, 0x46, 0x04, 0x44, 0x04, 0x58, 0xc8, 0x24, 0x0c, 0x8b, 0x89,
+ 0x47, 0x83, 0x92, 0xc4, 0xfd, 0x44, 0x38, 0xad, 0xa0, 0x10, 0xa0, 0x8f,
+ 0x4b, 0x80, 0x34, 0x9c, 0x9f, 0x5a, 0x7b, 0x95, 0xcf, 0x8a, 0xf9, 0xfa,
+ 0xf6, 0x19, 0x59, 0xbc, 0x2f, 0x4e, 0x46, 0xea, 0x15, 0x29, 0xb2, 0x3b,
+ 0x8f, 0xb4, 0x18, 0x31, 0x5f, 0xe8, 0x8f, 0x0c, 0x40, 0x8c, 0x78, 0x0c,
+ 0xe0, 0x03, 0x8c, 0x84, 0xb9, 0x82, 0x73, 0x93, 0xb9, 0x3c, 0x08, 0x5d,
+ 0x04, 0x89, 0x28, 0xa6, 0xa1, 0x68, 0x89, 0x28, 0x16, 0x86, 0x2c, 0xe8,
+ 0x0b, 0x41, 0xeb, 0x19, 0x61, 0xe9, 0x59, 0x3f, 0x19, 0xec, 0x02, 0x4a,
+ 0x67, 0xa7, 0xbd, 0x88, 0x69, 0xc3, 0x28, 0x7e, 0xd4, 0x86, 0x69, 0x49,
+ 0x5b, 0x11, 0x76, 0xb0, 0x21, 0x24, 0x7d, 0x6b, 0xde, 0xa7, 0x7f, 0x76,
+ 0x65, 0x42, 0xb7, 0x3b, 0x08, 0xde, 0x66, 0x58, 0xc9, 0xd9, 0x43, 0x28,
+ 0x32, 0xec, 0x3e, 0xba, 0xab, 0x48, 0x93, 0xb8, 0xcb, 0x2d, 0xbe, 0x33,
+ 0x63, 0xfd, 0xc3, 0x14, 0x2a, 0x88, 0x9d, 0x3a, 0x00, 0xb3, 0x84, 0x62,
+ 0xe4, 0x2e, 0x92, 0xdb, 0x5d, 0xf5, 0x35, 0xd3, 0x37, 0xba, 0x6e, 0x6c,
+ 0xac, 0x77, 0x4c, 0x24, 0xc8, 0x60, 0xa4, 0x80, 0x37, 0x8f, 0x6a, 0x29,
+ 0x01, 0xca, 0xd0, 0xac, 0xe1, 0x22, 0x2d, 0x2e, 0x53, 0x16, 0x62, 0x56,
+ 0xe0, 0xec, 0xf7, 0xb4, 0xe0, 0xcd, 0x30, 0x72, 0xb0, 0x0b, 0x73, 0x42,
+ 0x10, 0xb8, 0x17, 0x1c, 0x79, 0x5c, 0xd8, 0x9c, 0x09, 0x31, 0xe5, 0x03,
+ 0x41, 0x0f, 0xdb, 0x7f, 0x9d, 0xb3, 0x61, 0x02, 0x61, 0xa7, 0xb8, 0xce,
+ 0xcd, 0xc9, 0x5f, 0x4f, 0xcc, 0x61, 0x5a, 0x12, 0xc7, 0x6f, 0x6c, 0xbd,
+ 0xaa, 0x11, 0x23, 0x6f, 0xae, 0xfb, 0x6c, 0x6e, 0xf0, 0x05, 0x4d, 0xa5,
+ 0x5e, 0x77, 0x73, 0x17, 0x04, 0xf2, 0xf6, 0x44, 0xc4, 0xcf, 0xa1, 0x15,
+ 0x9a, 0xce, 0x2a, 0xad, 0x43, 0xbd, 0x7e, 0x74, 0x4f, 0x32, 0xce, 0xba,
+ 0xf4, 0xc4, 0x5f, 0x73, 0x7a, 0x3f, 0xd6, 0xe8, 0xec, 0xf8, 0x3d, 0x97,
+ 0x56, 0xb6, 0x67, 0x21, 0x23, 0x64, 0xc4, 0x35, 0xae, 0x0a, 0x8e, 0xf1,
+ 0xa4, 0x02, 0x21, 0x91, 0xb0, 0xe1, 0x88, 0x68, 0x86, 0x68, 0x3c, 0x97,
+ 0xbe, 0xce, 0x97, 0xdc, 0xfb, 0x3a, 0xdd, 0x73, 0x75, 0x3d, 0x5b, 0xef,
+ 0x94, 0x0b, 0xb5, 0x7b, 0xd2, 0xb9, 0x50, 0xac, 0x45, 0x6a, 0x32, 0xf5,
+ 0x0b, 0xa0, 0x4b, 0x2b, 0x2d, 0x3e, 0xd7, 0xef, 0x24, 0x3d, 0xfa, 0xa6,
+ 0xf0, 0x3f, 0x26, 0xc3, 0x2d, 0xd3, 0x61, 0xbd, 0xa5, 0x2f, 0x2e, 0x6e,
+ 0x26, 0xb5, 0xb9, 0xe1, 0x28, 0xc3, 0xf7, 0x47, 0x0b, 0x13, 0x4f, 0x23,
+ 0x9e, 0xfe, 0x9c, 0x0c, 0x26, 0x33, 0xcc, 0x2f, 0x41, 0x6d, 0xe2, 0x1f,
+ 0xcd, 0xce, 0xd3, 0x13, 0x3f, 0xdb, 0x3d, 0x7c, 0x9b, 0xd3, 0x79, 0xbb,
+ 0xef, 0xeb, 0xd4, 0x4f, 0x59, 0x61, 0x60, 0xf8, 0xd9, 0x64, 0x7f, 0x7a,
+ 0x4b, 0xf9, 0x77, 0x53, 0xf9, 0x93, 0xe6, 0x73, 0x54, 0xa0, 0xa4, 0x23,
+ 0x66, 0x9a, 0x8e, 0xb9, 0x8a, 0xf3, 0x77, 0xb9, 0x51, 0x3a, 0x0e, 0x3a,
+ 0xf2, 0x05, 0xa5, 0x02, 0xd2, 0x00, 0xf1, 0x96, 0xf7, 0xa5, 0xe6, 0x75,
+ 0xf4, 0x25, 0x7d, 0xc1, 0x45, 0xfe, 0x11, 0x77, 0xa6, 0xad, 0x1b, 0x26,
+ 0x5f, 0x91, 0x8f, 0xb3, 0xca, 0x3c, 0x70, 0x56, 0xb9, 0xf8, 0xb8, 0xf4,
+ 0x19, 0x6d, 0x46, 0xca, 0x50, 0x14, 0x43, 0x3b, 0x93, 0x20, 0x1d, 0xc6,
+ 0xce, 0xc9, 0x7e, 0xd3, 0x9e, 0x1c, 0xc6, 0xa5, 0xd9, 0xed, 0x66, 0x2a,
+ 0x9a, 0x3a, 0x91, 0x04, 0x53, 0xf1, 0x60, 0x23, 0x79, 0x84, 0x7c, 0x61,
+ 0x4e, 0x33, 0xcd, 0xf1, 0x2f, 0x7d, 0x60, 0x15, 0xb5, 0x1c, 0xa3, 0x29,
+ 0x95, 0x08, 0x2c, 0x49, 0xe0, 0x0e, 0x77, 0xa3, 0x3e, 0xb8, 0x36, 0xac,
+ 0x39, 0xb3, 0x43, 0x1d, 0xb1, 0x49, 0x4f, 0x87, 0x38, 0xa2, 0x3b, 0x4a,
+ 0x37, 0xc1, 0x7e, 0xa9, 0x89, 0x92, 0x90, 0x42, 0xb7, 0x98, 0x77, 0x59,
+ 0xda, 0xe5, 0xd5, 0x6d, 0x4f, 0x81, 0xf2, 0x1b, 0x47, 0x1f, 0xde, 0x51,
+ 0x45, 0x0e, 0x54, 0xfa, 0xbd, 0x38, 0xdf, 0x7f, 0x3f, 0x7a, 0xcb, 0xa6,
+ 0xf1, 0x8b, 0xd2, 0xd5, 0x10, 0x16, 0x7b, 0x90, 0xf5, 0x1f, 0x5b, 0xc4,
+ 0xb8, 0x3b, 0x2e, 0x13, 0xa1, 0xa1, 0xf5, 0x52, 0x5d, 0xb8, 0xdf, 0x85,
+ 0xc3, 0xe7, 0xea, 0xc4, 0xb4, 0x1a, 0x34, 0xb4, 0x8d, 0xd1, 0xa6, 0x15,
+ 0x84, 0x6a, 0xbf, 0x0e, 0x96, 0xab, 0xf0, 0xad, 0xc0, 0xcd, 0xf2, 0x10,
+ 0x2d, 0xcb, 0x81, 0x0e, 0x46, 0x3f, 0xe5, 0xbb, 0x77, 0x25, 0x56, 0xe8,
+ 0x81, 0x51, 0x15, 0x07, 0x52, 0x60, 0xc5, 0xab, 0xfa, 0x65, 0xcd, 0xa9,
+ 0x7c, 0xf7, 0x0a, 0xaa, 0x9f, 0x6d, 0xdc, 0x4f, 0x01, 0xd5, 0xa6, 0x37,
+ 0xfe, 0x75, 0x67, 0x33, 0xde, 0xfc, 0xc5, 0x2f, 0x6d, 0x3e, 0x3e, 0x76,
+ 0xd5, 0xcd, 0x5c, 0x76, 0xd1, 0xc6, 0xbf, 0xee, 0x6e, 0x3e, 0x3a, 0x23,
+ 0x3f, 0x41, 0xd2, 0xf5, 0x69, 0xde, 0xa0, 0xc1, 0x26, 0x6f, 0xb4, 0x5e,
+ 0xbc, 0xc8, 0x4c, 0x36, 0x42, 0xc7, 0x83, 0x03, 0x6e, 0x61, 0x77, 0x50,
+ 0x04, 0xb7, 0x95, 0xd4, 0x9d, 0xe3, 0x4d, 0x12, 0x4d, 0x8e, 0xff, 0xe7,
+ 0x91, 0x8f, 0xf2, 0x58, 0xac, 0x37, 0xfe, 0x15, 0x45, 0x40, 0x01, 0x75,
+ 0x39, 0x44, 0xdf, 0xbb, 0x8f, 0xf4, 0xed, 0x66, 0xe7, 0x99, 0x25, 0xc8,
+ 0x8b, 0x4d, 0x61, 0x70, 0x0a, 0x56, 0x2d, 0xfd, 0xac, 0xb9, 0xca, 0xd4,
+ 0xab, 0xfb, 0xbb, 0x38, 0x7e, 0x77, 0x44, 0xa0, 0xd6, 0x87, 0xc7, 0x84,
+ 0x43, 0x37, 0x12, 0x24, 0x48, 0xb5, 0x40, 0x58, 0xc0, 0x5c, 0xbf, 0x4c,
+ 0x0a, 0xbb, 0x77, 0x6d, 0xb4, 0x99, 0xe5, 0x1c, 0x76, 0x27, 0xa8, 0x6b,
+ 0x09, 0x87, 0xae, 0x35, 0xe9, 0xf2, 0xf8, 0x72, 0xf0, 0xae, 0x9c, 0x42,
+ 0x4b, 0x1e, 0x8c, 0x10, 0x2a, 0x68, 0xde, 0x32, 0x1f, 0x7e, 0x28, 0xe6,
+ 0xad, 0x8f, 0x87, 0x91, 0xa4, 0xdd, 0xb5, 0x55, 0xb5, 0x64, 0xfe, 0xb1,
+ 0x35, 0x18, 0xa0, 0x34, 0x3c, 0x87, 0x75, 0x89, 0x73, 0xa7, 0x05, 0xd5,
+ 0xa1, 0xac, 0xc5, 0x2c, 0x50, 0x3e, 0x7b, 0xe0, 0x40, 0x84, 0xd4, 0x85,
+ 0x8f, 0xb9, 0x44, 0xce, 0x2b, 0x4a, 0x26, 0x73, 0x26, 0x3e, 0x36, 0xe2,
+ 0xad, 0xf9, 0xd8, 0xa2, 0x50, 0xa4, 0xb2, 0x3b, 0x17, 0xff, 0x24, 0x65,
+ 0x6e, 0xcb, 0xc5, 0x03, 0x66, 0x79, 0xd7, 0x0a, 0xad, 0x88, 0xfa, 0x57,
+ 0xff, 0xc1, 0xef, 0xb4, 0xaa, 0x27, 0x09, 0x04, 0xb4, 0x47, 0x81, 0xf2,
+ 0x89, 0x14, 0x1b, 0x3a, 0xad, 0xbc, 0xeb, 0x4a, 0x86, 0xad, 0x15, 0xc5,
+ 0x3c, 0xdc, 0x51, 0x0f, 0x26, 0xb5, 0x3d, 0x4e, 0x1f, 0xa3, 0xb5, 0xa4,
+ 0x2c, 0xd8, 0xc3, 0xd2, 0x3a, 0xc7, 0x0c, 0xdb, 0x59, 0xb4, 0x0b, 0xc9,
+ 0x66, 0x89, 0xe6, 0x7b, 0x73, 0x3a, 0xff, 0xfa, 0x60, 0x1d, 0x65, 0x13,
+ 0xf2, 0x22, 0x32, 0x99, 0xc1, 0x2f, 0x9f, 0x4d, 0xe0, 0x7a, 0x4d, 0x7a,
+ 0x97, 0x84, 0x89, 0x41, 0x7e, 0xac, 0x1e, 0x0f, 0x80, 0x21, 0x63, 0x98,
+ 0xb8, 0xcc, 0x05, 0x41, 0x7c, 0x4d, 0x15, 0x49, 0x56, 0xaa, 0x6d, 0x64,
+ 0xac, 0x35, 0x92, 0xb3, 0x55, 0x92, 0x18, 0xe9, 0x72, 0x31, 0x45, 0x50,
+ 0x06, 0x87, 0xa3, 0xfe, 0x3b, 0x61, 0x56, 0x57, 0x0f, 0xc9, 0xce, 0x6e,
+ 0x3f, 0xd9, 0xdd, 0xde, 0xd9, 0x8d, 0xcc, 0xa1, 0xf7, 0xef, 0x14, 0x14,
+ 0xb5, 0x8b, 0xaf, 0x7b, 0x9f, 0x3a, 0x0b, 0x97, 0xda, 0x80, 0x9b, 0x44,
+ 0x92, 0x80, 0x0d, 0xf3, 0x21, 0xff, 0x2c, 0x70, 0x92, 0x51, 0x5d, 0x16,
+ 0xc8, 0x76, 0xb8, 0xb6, 0xd8, 0x48, 0xa8, 0x65, 0x0d, 0x6d, 0xc5, 0x2b,
+ 0x7a, 0x62, 0x4d, 0x0a, 0x7c, 0x22, 0xf2, 0xc5, 0x5a, 0x4a, 0xd3, 0x0a,
+ 0x35, 0x1b, 0xdb, 0x7b, 0x94, 0x37, 0xba, 0x2d, 0x14, 0x5a, 0x43, 0x7b,
+ 0x63, 0xe8, 0xfd, 0xf0, 0xf8, 0xe0, 0x42, 0xa1, 0x0f, 0x2f, 0x49, 0x78,
+ 0xaa, 0x1e, 0x3e, 0xad, 0x00, 0xde, 0xa3, 0xcf, 0x4c, 0xf7, 0xae, 0x33,
+ 0x23, 0x46, 0x17, 0xe3, 0xe5, 0xd5, 0xde, 0xdf, 0xd2, 0xea, 0xaa, 0x2c,
+ 0x9e, 0x7a, 0x7e, 0x8a, 0xdc, 0xb2, 0x3d, 0xc3, 0xa1, 0x76, 0x5e, 0xed,
+ 0x3c, 0xe3, 0xc4, 0x85, 0x9c, 0xaa, 0x65, 0x82, 0x41, 0xac, 0xcf, 0xd7,
+ 0x19, 0x6b, 0x03, 0x19, 0x13, 0x16, 0x60, 0xa3, 0x98, 0xae, 0xf3, 0x75,
+ 0x9f, 0xfa, 0xcf, 0x4e, 0xe5, 0x59, 0xce, 0x42, 0x5f, 0x5f, 0xe3, 0xd2,
+ 0x25, 0xeb, 0x94, 0xb1, 0xb9, 0x5c, 0xac, 0xb7, 0x11, 0xdc, 0x9f, 0x98,
+ 0x2b, 0x75, 0x61, 0xeb, 0xfd, 0x1d, 0x58, 0x5c, 0x7a, 0x24, 0x13, 0x55,
+ 0x59, 0x7a, 0xe3, 0xca, 0xcd, 0x3a, 0x20, 0x0e, 0x75, 0x79, 0x9c, 0xbf,
+ 0x3d, 0x60, 0x30, 0x53, 0x4d, 0x9d, 0xc2, 0x52, 0x27, 0xd6, 0x34, 0xb5,
+ 0x49, 0xa3, 0x7c, 0xa2, 0x7f, 0xca, 0x6d, 0xd8, 0x9b, 0x8e, 0x3f, 0xe1,
+ 0x21, 0x73, 0xee, 0x18, 0x37, 0x6e, 0xbf, 0x5d, 0x19, 0x87, 0x14, 0x35,
+ 0x94, 0xf7, 0xd0, 0xba, 0xb2, 0x1b, 0x5c, 0xfb, 0x93, 0x3d, 0x0e, 0x34,
+ 0x34, 0xad, 0xd8, 0xab, 0xd6, 0x1d, 0x33, 0x6e, 0x2a, 0xac, 0x79, 0xb8,
+ 0x7f, 0xe6, 0x29, 0xba, 0x50, 0x24, 0x9d, 0x51, 0x8f, 0x9e, 0x23, 0x45,
+ 0x07, 0xa5, 0xab, 0xd9, 0xf6, 0xf7, 0xd0, 0x77, 0x2a, 0x4a, 0x03, 0x3e,
+ 0x49, 0xb2, 0x11, 0x02, 0xe4, 0x4b, 0xb9, 0x4f, 0x60, 0x7f, 0x42, 0xb1,
+ 0x81, 0xd9, 0x34, 0x85, 0x23, 0x54, 0x6e, 0x21, 0xc8, 0x5c, 0x68, 0x2b,
+ 0x97, 0x68, 0x28, 0xb3, 0x37, 0xf7, 0x89, 0x24, 0x71, 0x48, 0xb6, 0x8a,
+ 0x94, 0x03, 0xc1, 0x63, 0x94, 0xa0, 0xfc, 0xa0, 0x13, 0x60, 0xfe, 0x6c,
+ 0x06, 0x9f, 0xd6, 0x37, 0x86, 0x95, 0xb2, 0x03, 0xdf, 0xf4, 0x9e, 0x8b,
+ 0x0b, 0x9c, 0x8c, 0x3e, 0x39, 0x07, 0xd2, 0x90, 0xf9, 0x09, 0x90, 0x48,
+ 0xad, 0x0d, 0xe3, 0x2b, 0x88, 0x34, 0xce, 0x59, 0x9d, 0x31, 0x80, 0x61,
+ 0x72, 0x71, 0x57, 0xb2, 0x8a, 0x51, 0x6b, 0x78, 0x2d, 0x87, 0xa2, 0xd6,
+ 0xcb, 0x9c, 0xa5, 0x48, 0xb3, 0x79, 0xe0, 0x07, 0x5e, 0xe5, 0xce, 0x9e,
+ 0xb5, 0x7c, 0x1d, 0x5a, 0xbf, 0xe7, 0xe8, 0xf0, 0xdb, 0x84, 0x52, 0xeb,
+ 0xa9, 0x8f, 0x03, 0x82, 0xdb, 0xa7, 0x10, 0x86, 0x39, 0xb4, 0xbf, 0xaf,
+ 0x97, 0x74, 0xde, 0x0f, 0xae, 0xd3, 0x05, 0x29, 0x40, 0x3b, 0xdb, 0x64,
+ 0x2e, 0xf9, 0x5e, 0x93, 0xf4, 0xe8, 0xa0, 0x6a, 0x61, 0xf0, 0xba, 0xe7,
+ 0x59, 0x52, 0xa6, 0x54, 0xd7, 0x9b, 0x34, 0xa0, 0xb6, 0x91, 0xd6, 0x5c,
+ 0x9f, 0xf5, 0x16, 0x83, 0xec, 0xd7, 0x86, 0x34, 0xaa, 0x7a, 0x7a, 0xb3,
+ 0x35, 0x31, 0x3f, 0x9e, 0x6d, 0x6f, 0x01, 0x53, 0xb3, 0x81, 0x4d, 0x93,
+ 0x68, 0x72, 0x77, 0xf7, 0xc5, 0x8b, 0x7e, 0xd2, 0x23, 0x2b, 0xa3, 0x76,
+ 0x40, 0x47, 0xc2, 0x9c, 0xac, 0x5e, 0xac, 0x84, 0xe9, 0x56, 0x75, 0x39,
+ 0xa1, 0xff, 0xd1, 0x6b, 0x5a, 0x88, 0xf0, 0x42, 0xb2, 0x6e, 0xb0, 0x0e,
+ 0x85, 0x0f, 0x93, 0xc3, 0x64, 0x45, 0xdf, 0x1d, 0x5b, 0x3b, 0x12, 0x39,
+ 0x8d, 0x16, 0x59, 0xb9, 0x50, 0xef, 0xf0, 0x5c, 0xca, 0x77, 0xa0, 0x7b,
+ 0xcf, 0xa5, 0x06, 0x7f, 0x3e, 0x87, 0xc3, 0x09, 0x1e, 0x42, 0xbd, 0x1c,
+ 0x0f, 0x24, 0x31, 0x98, 0xb5, 0xca, 0xdc, 0x9c, 0x5c, 0xf3, 0xe7, 0x4c,
+ 0xcd, 0xf5, 0x01, 0x47, 0xfe, 0x2a, 0xe9, 0x09, 0x6d, 0xd1, 0x3f, 0x43,
+ 0x38, 0x77, 0xb3, 0x09, 0x4d, 0xa3, 0x7c, 0x23, 0x7f, 0xfc, 0xdb, 0xbf,
+ 0x99, 0x66, 0xff, 0x8d, 0x5a, 0x79, 0xf3, 0xaf, 0x75, 0x73, 0xed, 0x3d,
+ 0xd3, 0x13, 0x82, 0x3f, 0x76, 0xae, 0x6d, 0x84, 0xab, 0x01, 0x71, 0x16,
+ 0xf9, 0x6b, 0xef, 0x4e, 0x84, 0x23, 0xf7, 0xbd, 0xf9, 0xe5, 0xc8, 0x2c,
+ 0x64, 0x23, 0xa9, 0x8d, 0x16, 0xf9, 0x8a, 0xdc, 0xce, 0x19, 0x65, 0xa4,
+ 0x9b, 0x8b, 0x04, 0x80, 0x82, 0x9b, 0x2a, 0x62, 0x1c, 0xbd, 0xff, 0xee,
+ 0xf8, 0xfc, 0xf4, 0xfd, 0xbb, 0xa3, 0xf7, 0x17, 0xc9, 0x77, 0xfb, 0xe7,
+ 0xc7, 0xfb, 0x5f, 0x9d, 0x48, 0xe2, 0x3b, 0x4d, 0x81, 0x82, 0x7c, 0x58,
+ 0xf6, 0xee, 0x00, 0xc2, 0x7a, 0x89, 0x48, 0xd1, 0xd2, 0x1e, 0x9d, 0x4a,
+ 0xb4, 0x1f, 0x05, 0x61, 0x1c, 0x9a, 0xc8, 0x47, 0x54, 0x29, 0xea, 0x93,
+ 0xf0, 0xf9, 0x51, 0x0b, 0x16, 0x91, 0xf2, 0xf4, 0xe0, 0xa5, 0x52, 0x53,
+ 0xfc, 0x11, 0x51, 0xa9, 0xf2, 0x27, 0x57, 0xc2, 0xce, 0xd6, 0xbe, 0xf8,
+ 0x9a, 0xb3, 0xf1, 0xb5, 0x10, 0x88, 0xbe, 0x2a, 0x99, 0x61, 0xb0, 0xbb,
+ 0xd9, 0x31, 0xec, 0x9f, 0x9c, 0xb8, 0xae, 0x1e, 0xaf, 0x11, 0x23, 0x48,
+ 0x4c, 0x9c, 0xbc, 0x85, 0x46, 0xc9, 0x31, 0x78, 0x55, 0x3a, 0xb8, 0xf4,
+ 0xe2, 0xc1, 0x47, 0x46, 0xa7, 0xce, 0xcc, 0x76, 0x6c, 0x30, 0x84, 0x06,
+ 0x79, 0x89, 0xcd, 0x01, 0xca, 0xeb, 0x9b, 0x7e, 0xb2, 0xfe, 0xaf, 0xeb,
+ 0x9c, 0x54, 0x97, 0x01, 0x37, 0x98, 0x2b, 0xd0, 0x6c, 0xba, 0x41, 0xbd,
+ 0x3f, 0x75, 0x63, 0x12, 0xc7, 0xa7, 0x1d, 0x80, 0x7d, 0xd1, 0xb9, 0xad,
+ 0x6b, 0x95, 0x67, 0x10, 0x2f, 0xea, 0x1e, 0x97, 0x32, 0x0d, 0x16, 0x19,
+ 0x40, 0x68, 0x94, 0x1c, 0x5b, 0xd1, 0x77, 0xa1, 0xb5, 0xa5, 0x13, 0x0f,
+ 0x1e, 0x1a, 0x73, 0x2d, 0xc8, 0xd4, 0x61, 0x4b, 0x67, 0xa9, 0x35, 0xd0,
+ 0x2c, 0x35, 0xd9, 0xf4, 0xc4, 0x9d, 0xb8, 0xac, 0x85, 0x83, 0x82, 0xaa,
+ 0xee, 0xb7, 0xb4, 0x12, 0x0d, 0x7c, 0x8c, 0x94, 0x0f, 0x50, 0xe5, 0x53,
+ 0x81, 0x1b, 0x8c, 0x52, 0xc5, 0x10, 0xae, 0xa9, 0xf3, 0x03, 0xa0, 0xb3,
+ 0x17, 0x54, 0x4b, 0xd0, 0x55, 0xba, 0x40, 0xec, 0xb0, 0xe1, 0x22, 0x15,
+ 0x25, 0xe4, 0x15, 0x22, 0x84, 0x20, 0x1e, 0x17, 0x32, 0x7a, 0x7a, 0x55,
+ 0xaa, 0xfc, 0x9d, 0x5a, 0xa7, 0xb9, 0xad, 0x07, 0xe6, 0xc9, 0xf4, 0x16,
+ 0x43, 0xcc, 0x9a, 0x2c, 0xe1, 0x5e, 0x57, 0x07, 0x01, 0x85, 0x97, 0xd1,
+ 0x96, 0x6b, 0xd1, 0xde, 0xda, 0xcb, 0xd2, 0x76, 0xd9, 0x0b, 0xc4, 0x4b,
+ 0x38, 0x48, 0x5f, 0x41, 0xbd, 0x00, 0xa4, 0xa6, 0x59, 0xdd, 0x08, 0x74,
+ 0xc4, 0xb0, 0xe8, 0x41, 0x34, 0x29, 0x31, 0xab, 0x68, 0x52, 0x6d, 0xd7,
+ 0xe6, 0xf4, 0xcc, 0x28, 0x81, 0x4c, 0x39, 0x51, 0x9a, 0x8c, 0xf3, 0x2b,
+ 0x46, 0x07, 0xa0, 0x54, 0x74, 0xa2, 0x12, 0x80, 0xbd, 0x19, 0xc5, 0x9e,
+ 0xb6, 0x0a, 0x50, 0x6e, 0x90, 0xdd, 0xaf, 0xcb, 0x99, 0x8f, 0x37, 0xa6,
+ 0x33, 0xa9, 0xa5, 0xd2, 0x99, 0x9a, 0x3e, 0xe1, 0xfa, 0x58, 0xd2, 0x3a,
+ 0x6a, 0x34, 0x9a, 0x00, 0x95, 0x4b, 0x6c, 0x1e, 0xd9, 0xd4, 0x81, 0x9a,
+ 0x58, 0x20, 0x13, 0x48, 0xb3, 0xaa, 0xb1, 0x0e, 0x1a, 0xb7, 0x4c, 0xdc,
+ 0x02, 0x76, 0x34, 0x2a, 0x5c, 0xb8, 0x61, 0x91, 0xc6, 0xa9, 0x95, 0x09,
+ 0x63, 0xb5, 0x12, 0xd1, 0xb3, 0x47, 0xb9, 0x5d, 0xae, 0x47, 0x36, 0x4b,
+ 0x50, 0xb4, 0x0c, 0x4d, 0xd0, 0xa0, 0xcd, 0x4a, 0x6d, 0x78, 0x8c, 0xa7,
+ 0x30, 0x24, 0xc2, 0x8f, 0xb1, 0x02, 0x29, 0x7f, 0x0d, 0x6c, 0xa5, 0x31,
+ 0xf1, 0x3b, 0x6f, 0xba, 0xb8, 0x03, 0x96, 0x02, 0x88, 0x5a, 0x27, 0x52,
+ 0x1b, 0x11, 0x1e, 0x7a, 0x2a, 0xe0, 0x08, 0x68, 0xa8, 0x96, 0xed, 0x31,
+ 0xd1, 0x7c, 0x9b, 0xd9, 0xcc, 0x83, 0x1a, 0x67, 0x73, 0x44, 0x1a, 0xc8,
+ 0x1e, 0xe4, 0x1c, 0xe2, 0x34, 0x54, 0x89, 0xfc, 0x61, 0x58, 0x62, 0x6f,
+ 0x22, 0x12, 0x53, 0x4e, 0xd2, 0x59, 0xc7, 0xa4, 0xe9, 0x31, 0x34, 0xf5,
+ 0x8e, 0xfb, 0x17, 0x93, 0x54, 0xbb, 0xc8, 0xd3, 0x39, 0xcb, 0x8e, 0x8e,
+ 0xfa, 0xe6, 0x0f, 0x1c, 0x75, 0xb8, 0xb6, 0x76, 0xf0, 0x61, 0x74, 0x71,
+ 0xfa, 0x2e, 0x39, 0xfd, 0x70, 0x71, 0xf6, 0xe1, 0x42, 0x6e, 0xae, 0x31,
+ 0xc7, 0x6c, 0x73, 0xe4, 0x02, 0x0b, 0x01, 0xba, 0x99, 0x73, 0xf1, 0xef,
+ 0x23, 0xc4, 0xa4, 0x04, 0xc0, 0xa0, 0x87, 0x2d, 0x64, 0x73, 0xb2, 0x80,
+ 0xba, 0xc5, 0xc8, 0xc5, 0x58, 0xf2, 0x3b, 0xb3, 0xe4, 0xc8, 0xa7, 0x85,
+ 0x21, 0x4f, 0x53, 0xbc, 0xa0, 0xf6, 0xe8, 0x59, 0x6b, 0x57, 0x92, 0xe9,
+ 0x54, 0xc4, 0x84, 0x73, 0xbe, 0x8d, 0xe5, 0xe4, 0xe2, 0xa8, 0xd4, 0xb6,
+ 0xe3, 0x4c, 0x3f, 0x7e, 0x48, 0x27, 0x82, 0x99, 0x26, 0x8d, 0x1a, 0xa0,
+ 0x35, 0xaa, 0x16, 0xa1, 0x46, 0xed, 0xc4, 0x42, 0x3f, 0xbf, 0xb1, 0x29,
+ 0xcd, 0x0c, 0xaf, 0x6d, 0x44, 0x3c, 0x45, 0x11, 0x21, 0x12, 0x90, 0x03,
+ 0x28, 0x28, 0xe4, 0x8e, 0x35, 0x06, 0xa3, 0x07, 0x92, 0xcb, 0x22, 0xb8,
+ 0x65, 0xef, 0x92, 0xf5, 0xef, 0x33, 0xbf, 0xc1, 0x3f, 0xfd, 0x07, 0xa5,
+ 0x6d, 0x7e, 0xd4, 0x4f, 0xfe, 0x8b, 0xbb, 0xfc, 0xa9, 0x58, 0x47, 0x00,
+ 0x5d, 0xdb, 0x53, 0xfe, 0xed, 0xd1, 0xf9, 0x57, 0x47, 0xe7, 0xa7, 0x23,
+ 0xf0, 0x03, 0x35, 0x77, 0x85, 0xb4, 0x7e, 0x93, 0x55, 0xe3, 0xac, 0x2a,
+ 0xa5, 0xca, 0x95, 0xfe, 0xf5, 0x62, 0xeb, 0xeb, 0xd1, 0x68, 0xff, 0xec,
+ 0xd8, 0xd6, 0x91, 0xb1, 0x09, 0x64, 0xac, 0x22, 0x15, 0x9c, 0xe2, 0x48,
+ 0xf3, 0xd7, 0x57, 0x0c, 0x5d, 0x4c, 0x6e, 0x38, 0xb0, 0x38, 0xf0, 0x49,
+ 0xab, 0x5d, 0x9d, 0x9c, 0xd1, 0x92, 0x57, 0x48, 0x0d, 0x2b, 0x26, 0x94,
+ 0x8f, 0x3b, 0xcf, 0x00, 0xf1, 0xe4, 0x0b, 0xe8, 0xdb, 0x08, 0xbc, 0x9b,
+ 0x6a, 0x3c, 0x30, 0xd4, 0x7e, 0xa3, 0xe5, 0x86, 0x39, 0x0f, 0xc2, 0xb0,
+ 0x4a, 0x0e, 0x90, 0x76, 0xb6, 0x86, 0x1b, 0x2a, 0x3b, 0xbe, 0x75, 0x43,
+ 0xe7, 0x83, 0x6a, 0x9c, 0xcc, 0x86, 0xcc, 0xdd, 0xf9, 0x40, 0x69, 0xd4,
+ 0x2b, 0xb1, 0xd8, 0xc7, 0x70, 0x2a, 0x4c, 0x6f, 0xb6, 0x30, 0x21, 0xdb,
+ 0xbb, 0xcc, 0x27, 0xcf, 0x2d, 0x60, 0x97, 0x5f, 0x91, 0xfa, 0xd2, 0x08,
+ 0xe0, 0x8b, 0xbb, 0xa9, 0x5c, 0x22, 0xc0, 0xab, 0x2e, 0xd8, 0x3d, 0xc1,
+ 0x3c, 0xbc, 0xeb, 0xa0, 0xa2, 0xe2, 0x89, 0x48, 0xd8, 0x90, 0x70, 0xf4,
+ 0x64, 0x3c, 0x4b, 0x8b, 0x1b, 0xdc, 0x66, 0xb8, 0x9f, 0x48, 0xe5, 0x54,
+ 0x18, 0x2a, 0x2a, 0x6a, 0x09, 0x7f, 0xa4, 0x20, 0x43, 0x40, 0x08, 0x9c,
+ 0x11, 0x73, 0x7b, 0x60, 0x5b, 0xbe, 0x45, 0xdb, 0xf2, 0x3c, 0x6f, 0x38,
+ 0x4e, 0x6e, 0x11, 0xc8, 0x74, 0x74, 0x74, 0x62, 0x2e, 0x26, 0x9b, 0x64,
+ 0x02, 0x15, 0x3d, 0x9b, 0x91, 0x29, 0x58, 0x23, 0x82, 0x38, 0xaf, 0x32,
+ 0x07, 0x23, 0x63, 0xee, 0xa1, 0x50, 0xea, 0xf0, 0x1f, 0x81, 0x5c, 0x90,
+ 0x3e, 0x5a, 0xdb, 0x82, 0x23, 0xc2, 0xb9, 0x99, 0x89, 0x01, 0x27, 0xd4,
+ 0xd5, 0x1f, 0xf1, 0xab, 0xd3, 0x48, 0xb8, 0xdd, 0x81, 0x8b, 0x07, 0xb2,
+ 0xe5, 0xba, 0x78, 0x10, 0x4e, 0x2c, 0xb5, 0x1e, 0xc6, 0x56, 0x76, 0xcb,
+ 0xca, 0x6d, 0xe2, 0xd7, 0x63, 0x46, 0x00, 0x86, 0x37, 0x9b, 0x8a, 0xbf,
+ 0xc3, 0x22, 0x03, 0x69, 0xc8, 0x72, 0x3b, 0x4c, 0x58, 0x07, 0xce, 0xd1,
+ 0x00, 0x64, 0xbc, 0x9d, 0x35, 0xea, 0x34, 0x44, 0x88, 0xab, 0xdc, 0xc0,
+ 0xcd, 0x14, 0x2c, 0xa7, 0x6a, 0x81, 0xd6, 0xfa, 0xd1, 0xb9, 0x0c, 0x5e,
+ 0x01, 0xdb, 0x20, 0xe7, 0x6b, 0x40, 0x8b, 0xb1, 0xf2, 0xed, 0xe0, 0x3d,
+ 0x5d, 0x17, 0xe5, 0x60, 0xbc, 0x84, 0x5e, 0xe6, 0x95, 0xd1, 0xe2, 0x1c,
+ 0x4e, 0xaa, 0x3a, 0x0f, 0x5c, 0x35, 0x7c, 0x4f, 0xfe, 0x28, 0x64, 0xc7,
+ 0xb3, 0x8b, 0x0a, 0xe9, 0x92, 0x6d, 0xcc, 0x1d, 0x8b, 0xb4, 0xc2, 0x39,
+ 0x08, 0x88, 0xc5, 0xd6, 0xc2, 0x6b, 0x3c, 0x42, 0xd9, 0x64, 0x1b, 0x2d,
+ 0x58, 0x48, 0x11, 0x56, 0x78, 0x56, 0xda, 0x11, 0xd7, 0x8d, 0x85, 0xbe,
+ 0xbf, 0x80, 0x98, 0x90, 0x09, 0x20, 0xbc, 0x86, 0x52, 0x6b, 0xe2, 0xc6,
+ 0x6d, 0x43, 0x85, 0x9f, 0x18, 0x24, 0x22, 0x9d, 0x71, 0xc5, 0x8e, 0x95,
+ 0x57, 0x09, 0x1f, 0xa6, 0xe6, 0xe2, 0xe2, 0xaf, 0x67, 0x47, 0x6f, 0xf4,
+ 0xcd, 0xc7, 0xf6, 0x8c, 0xb1, 0xd3, 0x10, 0x33, 0x93, 0x09, 0x56, 0xa9,
+ 0x57, 0xd2, 0xd9, 0x10, 0xd9, 0xa0, 0x51, 0x5f, 0x3e, 0x77, 0x33, 0x48,
+ 0x7e, 0x38, 0x3c, 0x1e, 0x9d, 0x9d, 0x9c, 0x1e, 0xbc, 0x79, 0xfd, 0x83,
+ 0xb2, 0xe4, 0x2f, 0xc8, 0x45, 0xc0, 0x72, 0x9a, 0xfd, 0xcc, 0x61, 0x3b,
+ 0xc8, 0x7b, 0xef, 0x8f, 0xbe, 0xff, 0x68, 0xb4, 0x83, 0x37, 0x84, 0xf0,
+ 0xde, 0xbf, 0x4d, 0x67, 0xf2, 0x12, 0xa9, 0x58, 0x11, 0xd9, 0x6e, 0xd8,
+ 0x06, 0xe3, 0xeb, 0x2e, 0xac, 0xad, 0x1e, 0xea, 0xf2, 0x14, 0x1e, 0x34,
+ 0x8c, 0xce, 0x2b, 0x14, 0x95, 0xb6, 0xd2, 0x6a, 0x23, 0xb5, 0x7e, 0xdd,
+ 0xf5, 0xbf, 0xde, 0x70, 0x4c, 0x25, 0x85, 0x10, 0xf8, 0x9e, 0x79, 0xc4,
+ 0xad, 0xca, 0x37, 0x2e, 0x9e, 0x57, 0x90, 0x94, 0x2b, 0x0a, 0x60, 0xb1,
+ 0x50, 0x94, 0x52, 0x70, 0x19, 0x3e, 0x6f, 0xc1, 0xab, 0x14, 0x10, 0x26,
+ 0x0a, 0xa1, 0xd5, 0x68, 0x7a, 0xe5, 0x63, 0x22, 0xc2, 0xd8, 0xb1, 0xa4,
+ 0x5a, 0xca, 0x16, 0xb5, 0x79, 0xce, 0x8e, 0xce, 0x47, 0xc7, 0xa3, 0x0b,
+ 0x52, 0xa3, 0xa4, 0xae, 0xa2, 0xd8, 0xa0, 0xb5, 0xe8, 0x25, 0x30, 0x1b,
+ 0xda, 0xd0, 0xa3, 0x7e, 0xdd, 0x90, 0xd6, 0x89, 0xb6, 0x6c, 0xae, 0x9d,
+ 0xc4, 0x49, 0x37, 0x00, 0x67, 0x86, 0x92, 0x20, 0xca, 0x00, 0xba, 0xe9,
+ 0xa5, 0x1e, 0xe0, 0x52, 0x48, 0xa3, 0x53, 0x3e, 0x03, 0xa5, 0x6f, 0xb0,
+ 0x3b, 0xb3, 0x7c, 0xec, 0xac, 0xe6, 0x1d, 0x17, 0x32, 0x45, 0x27, 0x08,
+ 0x58, 0x87, 0x7f, 0x84, 0xd4, 0x1e, 0xee, 0x32, 0xa3, 0xa5, 0xd4, 0xae,
+ 0x5c, 0x6b, 0x92, 0xd5, 0xe8, 0xe7, 0xaf, 0x5a, 0x45, 0x15, 0xca, 0x89,
+ 0xca, 0x69, 0xf6, 0x53, 0x2f, 0x08, 0x55, 0xf0, 0x9f, 0x00, 0x5d, 0x2b,
+ 0x2c, 0x9b, 0x98, 0x72, 0xce, 0x99, 0x68, 0x64, 0x68, 0x31, 0x52, 0x0b,
+ 0x32, 0xeb, 0x11, 0x27, 0x24, 0x33, 0x0b, 0x44, 0x10, 0x11, 0x1d, 0xaf,
+ 0x28, 0x85, 0x0d, 0x20, 0x5b, 0x53, 0x92, 0xb7, 0x60, 0x81, 0xf3, 0x3b,
+ 0xd3, 0xeb, 0x94, 0x56, 0x70, 0xbc, 0xf4, 0x0b, 0xb5, 0xd9, 0xd1, 0x73,
+ 0x7d, 0x12, 0x2c, 0x3c, 0x22, 0x24, 0xd3, 0x0a, 0x28, 0x96, 0x8d, 0x80,
+ 0xc6, 0xab, 0xe2, 0x23, 0xe1, 0x8e, 0xc3, 0x36, 0x9e, 0x8f, 0xd2, 0xa5,
+ 0x16, 0x13, 0x7d, 0x6c, 0x45, 0xbd, 0xca, 0x8e, 0x44, 0xbe, 0x55, 0xa6,
+ 0x71, 0x4b, 0x6c, 0x66, 0xa8, 0xc9, 0xe1, 0x50, 0x4c, 0xec, 0x65, 0x4c,
+ 0x49, 0x47, 0xe4, 0x5f, 0xac, 0x04, 0x2b, 0xc9, 0xb0, 0x3f, 0xb2, 0x2c,
+ 0xa3, 0x1c, 0x24, 0xea, 0x24, 0x93, 0xd7, 0x4d, 0x71, 0xf4, 0x5c, 0x18,
+ 0x37, 0x2f, 0xb7, 0x47, 0x56, 0x6c, 0x5e, 0x7f, 0x90, 0x0e, 0x6d, 0x82,
+ 0xbc, 0x6e, 0x56, 0x9f, 0xf3, 0xad, 0x52, 0xa4, 0xf7, 0xa8, 0x5d, 0xd7,
+ 0x4b, 0x13, 0xad, 0x25, 0xf9, 0xd6, 0xba, 0xa7, 0xc1, 0xf0, 0x5a, 0x35,
+ 0x71, 0x69, 0x76, 0x2d, 0xd7, 0xa0, 0x91, 0x2f, 0x17, 0x28, 0xa6, 0x34,
+ 0x11, 0x34, 0x79, 0x04, 0xed, 0xda, 0x06, 0xf5, 0x12, 0x71, 0x8b, 0x65,
+ 0x56, 0xf5, 0xdd, 0x87, 0x93, 0x8b, 0xe3, 0x33, 0xdf, 0xfd, 0x98, 0x7c,
+ 0x7f, 0x7c, 0xf1, 0x8d, 0x91, 0xda, 0x47, 0xc7, 0xef, 0xbf, 0x3e, 0x21,
+ 0x1f, 0xcf, 0xbb, 0x77, 0xfb, 0xef, 0x09, 0x5d, 0xe0, 0x3d, 0x22, 0x1b,
+ 0xf7, 0xa1, 0x38, 0x10, 0x3b, 0x32, 0x4b, 0x4c, 0xb4, 0x43, 0x79, 0xe7,
+ 0xfd, 0xd0, 0xd5, 0xd0, 0x39, 0x7e, 0x5c, 0xf3, 0xb8, 0x68, 0x2f, 0xd2,
+ 0x1a, 0x2a, 0x58, 0x43, 0x33, 0x78, 0x20, 0xc3, 0x0e, 0x8e, 0x2d, 0x29,
+ 0x5b, 0xb4, 0xd0, 0x5d, 0x18, 0x79, 0xe4, 0x38, 0xb2, 0x84, 0x0e, 0x37,
+ 0x3a, 0xdf, 0xdd, 0xce, 0x7d, 0x81, 0x1d, 0xb5, 0x20, 0xb4, 0xd0, 0x63,
+ 0x8c, 0xcc, 0x54, 0x88, 0x5e, 0xc3, 0xf7, 0x65, 0x3b, 0xe7, 0xc0, 0xf4,
+ 0x88, 0x21, 0x21, 0x8e, 0xa0, 0x74, 0x16, 0x41, 0xd2, 0x38, 0x49, 0x69,
+ 0x3e, 0x3f, 0xf1, 0x2f, 0xd4, 0x76, 0x3d, 0x7a, 0x0d, 0x0f, 0xbc, 0x2a,
+ 0x33, 0x77, 0x72, 0x07, 0xa7, 0xda, 0x8c, 0x9a, 0x7f, 0xa1, 0x86, 0xf1,
+ 0xe5, 0x32, 0x20, 0xbe, 0x36, 0x30, 0x5b, 0xb2, 0x69, 0x2b, 0x0e, 0x89,
+ 0xf9, 0x6c, 0x8f, 0xc5, 0x4a, 0x0b, 0xb3, 0xac, 0xc5, 0xf3, 0x4c, 0x73,
+ 0xda, 0xb2, 0x84, 0xa2, 0x20, 0x1e, 0x5b, 0xd2, 0x9a, 0x64, 0xce, 0xe0,
+ 0x96, 0xfa, 0x58, 0x2b, 0x2b, 0x9b, 0xef, 0xbb, 0x53, 0x35, 0xed, 0x69,
+ 0x5a, 0x1b, 0x92, 0x59, 0x09, 0x7e, 0xc7, 0x79, 0x4e, 0x51, 0x64, 0xad,
+ 0x2c, 0x87, 0xd9, 0x7d, 0x46, 0x4e, 0x4e, 0xfa, 0xf5, 0x6f, 0x8b, 0x2b,
+ 0x3f, 0xe3, 0x8d, 0xcb, 0x3e, 0x2f, 0x62, 0x3b, 0x2b, 0x98, 0xce, 0x2c,
+ 0x16, 0x49, 0xa9, 0xb9, 0xd6, 0x08, 0xa4, 0x7e, 0xdc, 0xce, 0xaa, 0x0e,
+ 0xe5, 0xfb, 0xdd, 0xf0, 0xfb, 0x5d, 0x36, 0x3b, 0x1e, 0x9f, 0xdd, 0xbe,
+ 0xb4, 0x58, 0xa8, 0x9c, 0xc7, 0xed, 0x8b, 0x6f, 0x2a, 0x14, 0x10, 0x85,
+ 0xd1, 0xa3, 0x7c, 0xe7, 0xa4, 0xcc, 0x13, 0xd9, 0xf6, 0x4f, 0x11, 0x64,
+ 0xcb, 0x0a, 0xf9, 0xa9, 0x78, 0x04, 0x66, 0x62, 0x0e, 0xfb, 0x45, 0x90,
+ 0x1d, 0xf8, 0x14, 0x5d, 0x57, 0xa6, 0x41, 0xf3, 0xfd, 0x73, 0x1b, 0x8b,
+ 0xef, 0x78, 0x1a, 0xca, 0xb5, 0x49, 0x36, 0xd4, 0x20, 0x5f, 0xdc, 0x6a,
+ 0x0d, 0x5e, 0xf3, 0xeb, 0x4b, 0x5b, 0xaa, 0xa7, 0x6e, 0xf9, 0xa8, 0x5a,
+ 0xb8, 0xc3, 0xca, 0xfc, 0x31, 0x38, 0x84, 0x45, 0x12, 0x67, 0x70, 0x4a,
+ 0x46, 0x67, 0x5c, 0x59, 0x3b, 0x20, 0xdb, 0x2b, 0x22, 0x0a, 0x03, 0xf3,
+ 0x0c, 0x99, 0xb1, 0xe0, 0x47, 0x1e, 0x73, 0xf1, 0x31, 0xff, 0x65, 0xd7,
+ 0x7f, 0xdc, 0xdd, 0xde, 0xde, 0xd9, 0xdb, 0xf9, 0xfc, 0xd5, 0xf6, 0xde,
+ 0xce, 0xce, 0xce, 0xee, 0xde, 0xce, 0xde, 0xde, 0xee, 0xf6, 0xcf, 0x5b,
+ 0x64, 0x3f, 0xba, 0xcd, 0xb3, 0x3b, 0x75, 0x4c, 0x71, 0x2e, 0x1e, 0xc8,
+ 0x9a, 0x6b, 0xa9, 0x8b, 0x06, 0x2f, 0x7a, 0xae, 0x4a, 0x3e, 0x16, 0x55,
+ 0x82, 0x43, 0xe6, 0x19, 0x4c, 0x6e, 0xe1, 0x32, 0x4d, 0x71, 0x06, 0x3d,
+ 0xc0, 0x6b, 0x8c, 0xea, 0xef, 0x4b, 0x9a, 0xe9, 0x98, 0xc4, 0x01, 0xc8,
+ 0x34, 0xb5, 0xcd, 0xeb, 0xbb, 0x9a, 0x95, 0xe3, 0x31, 0x32, 0x17, 0x6c,
+ 0x6a, 0xeb, 0x30, 0x21, 0x54, 0xd5, 0x1b, 0x26, 0x09, 0xf1, 0x1c, 0x20,
+ 0xa8, 0x90, 0x0f, 0xba, 0x5b, 0x1d, 0x16, 0xbc, 0x24, 0x90, 0x7a, 0x52,
+ 0x52, 0x85, 0x81, 0x29, 0x31, 0x25, 0xb3, 0x48, 0x95, 0x4d, 0x79, 0x49,
+ 0x2e, 0xb3, 0xcf, 0xb7, 0xf7, 0xf6, 0xa8, 0x08, 0xc8, 0x9f, 0x76, 0xfa,
+ 0x12, 0x0f, 0xea, 0x07, 0xb9, 0xf7, 0xed, 0xf5, 0xc4, 0x6d, 0x90, 0xfa,
+ 0xe1, 0xcf, 0xb3, 0x58, 0xce, 0xb3, 0xca, 0x28, 0x22, 0x54, 0xda, 0x15,
+ 0x01, 0x91, 0x30, 0x7a, 0x33, 0xda, 0x1a, 0x00, 0x59, 0x3a, 0xc1, 0xf8,
+ 0x74, 0x23, 0x30, 0x6a, 0xac, 0x4d, 0x42, 0x67, 0xb8, 0x20, 0x37, 0x45,
+ 0xdb, 0x36, 0x0a, 0xe1, 0xc0, 0x8e, 0xcf, 0xa9, 0x2c, 0x9c, 0xc4, 0xc3,
+ 0xf7, 0xad, 0x70, 0x06, 0x1c, 0xae, 0x82, 0x0b, 0x8e, 0xd2, 0xe3, 0x2c,
+ 0xc3, 0xc3, 0x62, 0xe2, 0x09, 0xb7, 0x92, 0xbf, 0xf3, 0xa3, 0x37, 0xd9,
+ 0xdd, 0x17, 0x3b, 0x3f, 0x73, 0xb8, 0x22, 0x1d, 0x08, 0xb7, 0x6a, 0x52,
+ 0x18, 0x6e, 0xea, 0x67, 0x68, 0x28, 0x21, 0x6d, 0x64, 0xc3, 0xab, 0xa1,
+ 0x4a, 0x15, 0x62, 0x6d, 0xec, 0xfb, 0x41, 0xe3, 0x8c, 0x58, 0xce, 0x65,
+ 0x84, 0xa1, 0xa7, 0xa9, 0x41, 0x49, 0x0d, 0xc2, 0x6c, 0xcc, 0x6c, 0x55,
+ 0xf8, 0x31, 0x37, 0xcc, 0xd1, 0xc5, 0xbe, 0xb9, 0x3c, 0xbe, 0x0d, 0x15,
+ 0xfd, 0x77, 0x99, 0xd1, 0xca, 0x69, 0xb3, 0x37, 0x70, 0x1e, 0x6e, 0x2d,
+ 0x4e, 0x30, 0xad, 0xdd, 0xf3, 0x64, 0x83, 0x7c, 0x16, 0x2f, 0x3e, 0x7f,
+ 0xf1, 0x7c, 0x93, 0x8b, 0x32, 0xf0, 0x6b, 0x19, 0xe5, 0x87, 0xc0, 0x2a,
+ 0x29, 0xe0, 0x34, 0x64, 0x4e, 0xb6, 0x2c, 0xe9, 0xc3, 0xf9, 0x31, 0x1f,
+ 0xe9, 0x6b, 0xc6, 0x10, 0x60, 0xa5, 0xb7, 0x8b, 0x2b, 0x87, 0xfb, 0xd6,
+ 0x13, 0x32, 0xe6, 0x39, 0x61, 0x1e, 0x22, 0xf7, 0x9a, 0x2e, 0x46, 0x9b,
+ 0xfb, 0x8f, 0x1b, 0xd6, 0x1c, 0xd0, 0x12, 0xa5, 0x0a, 0xa5, 0x02, 0x14,
+ 0x06, 0x03, 0x90, 0x44, 0xc2, 0x68, 0x15, 0x3a, 0xb3, 0x1a, 0x18, 0xe9,
+ 0x41, 0xcc, 0x8f, 0x98, 0xfb, 0x77, 0x70, 0xb9, 0x37, 0xd9, 0xe3, 0x0f,
+ 0xa1, 0x90, 0xc8, 0xd0, 0x3c, 0xa8, 0xa1, 0xa3, 0x34, 0xe2, 0x56, 0x36,
+ 0x9a, 0x93, 0x36, 0x3d, 0x4c, 0x27, 0x85, 0x73, 0x11, 0x56, 0x64, 0x97,
+ 0x90, 0xdd, 0xd9, 0x0d, 0x2c, 0x8b, 0x79, 0xcb, 0xe4, 0x23, 0xb9, 0xf4,
+ 0xc8, 0x69, 0x47, 0xc8, 0xf1, 0xdc, 0x5c, 0x47, 0xd5, 0x83, 0x48, 0xd8,
+ 0x50, 0x13, 0x6c, 0x65, 0xb5, 0x4e, 0x40, 0x00, 0xa3, 0x46, 0xf8, 0x91,
+ 0xf4, 0x16, 0x34, 0x45, 0x95, 0xe6, 0xd6, 0x00, 0x5a, 0x6c, 0x7f, 0x30,
+ 0xd7, 0xaf, 0xbc, 0x78, 0x19, 0x3f, 0xbd, 0x4c, 0x7f, 0xd7, 0xe7, 0xbc,
+ 0x50, 0xca, 0xb4, 0x3b, 0xb1, 0x15, 0x43, 0x63, 0x6c, 0x4d, 0x84, 0x4f,
+ 0x59, 0xed, 0x67, 0x03, 0x23, 0xd9, 0xda, 0xda, 0x5c, 0x31, 0x1a, 0xf9,
+ 0x3a, 0xd6, 0xfb, 0x19, 0x30, 0x49, 0xbc, 0x8c, 0x4e, 0xb3, 0xe7, 0xed,
+ 0xc6, 0x69, 0x69, 0xf3, 0x9a, 0x76, 0x72, 0x2a, 0x71, 0xb1, 0x6c, 0x46,
+ 0x55, 0xf5, 0x8a, 0x07, 0xaf, 0xcc, 0xab, 0x3d, 0x09, 0x09, 0xc5, 0x51,
+ 0x8c, 0x28, 0xae, 0xf9, 0xcc, 0xee, 0xcd, 0x61, 0xb2, 0x4f, 0xd4, 0xd0,
+ 0xea, 0xd8, 0x1b, 0xb2, 0xda, 0x73, 0x15, 0x01, 0x5d, 0x85, 0x58, 0x6b,
+ 0xce, 0xeb, 0x7b, 0x5f, 0xaa, 0x98, 0xa7, 0x90, 0x00, 0xd6, 0xd8, 0x3b,
+ 0xce, 0x18, 0xfe, 0xc4, 0x72, 0x4e, 0x0f, 0xd9, 0x38, 0x2f, 0x5a, 0x25,
+ 0x43, 0xa5, 0x11, 0x38, 0xba, 0xed, 0x24, 0x00, 0x9a, 0x58, 0x29, 0x18,
+ 0xaf, 0x5f, 0x46, 0x10, 0x08, 0x04, 0x12, 0xd4, 0xce, 0x82, 0xb5, 0x25,
+ 0x62, 0xf6, 0xb6, 0x8e, 0x99, 0xbc, 0x5a, 0xeb, 0xd1, 0x67, 0x8a, 0xe7,
+ 0x20, 0x06, 0x8e, 0xb7, 0x35, 0x87, 0x84, 0x18, 0xc6, 0xfe, 0xf1, 0x09,
+ 0x45, 0xc5, 0x9d, 0x18, 0x15, 0x6f, 0xa4, 0xa2, 0x12, 0xa2, 0x44, 0x11,
+ 0xaf, 0x57, 0xe4, 0x24, 0xae, 0xf7, 0x6d, 0xe9, 0x11, 0x4d, 0x96, 0x82,
+ 0xde, 0x42, 0xce, 0x3d, 0x56, 0xfd, 0x05, 0x23, 0xd0, 0xec, 0x96, 0x91,
+ 0x97, 0x6a, 0x36, 0xda, 0x02, 0x8a, 0x97, 0x40, 0xea, 0xe1, 0x48, 0x85,
+ 0x4a, 0xcd, 0x6c, 0x1a, 0x95, 0x8f, 0xaa, 0x6c, 0x96, 0xdd, 0x8a, 0x75,
+ 0x95, 0x81, 0x4d, 0xbf, 0x16, 0x1f, 0x26, 0x97, 0x3e, 0x6d, 0x9c, 0x2b,
+ 0xb6, 0xe5, 0x26, 0xa5, 0x3e, 0xb7, 0x18, 0x13, 0xc6, 0x41, 0x7d, 0x50,
+ 0xf7, 0x0e, 0x8d, 0x5f, 0x5d, 0xc6, 0xf4, 0xde, 0x80, 0x74, 0x5c, 0x09,
+ 0x6d, 0xfd, 0x50, 0x0b, 0x9a, 0x43, 0x37, 0x56, 0x9c, 0x6d, 0x85, 0x5a,
+ 0x3c, 0x8f, 0x8d, 0xef, 0x7d, 0xc5, 0x4b, 0x66, 0x8f, 0x01, 0x5d, 0x3c,
+ 0x7d, 0x32, 0xd4, 0x72, 0x81, 0x76, 0xa3, 0x90, 0x51, 0x65, 0x8c, 0x3e,
+ 0x27, 0x8e, 0x82, 0x36, 0xca, 0x99, 0xf9, 0x13, 0xe1, 0x54, 0x1c, 0x60,
+ 0x69, 0x9e, 0x25, 0xbc, 0x57, 0x2f, 0xa2, 0xd5, 0xfc, 0xc9, 0xc9, 0x10,
+ 0xf2, 0x17, 0x9a, 0xaa, 0x96, 0x80, 0x15, 0xee, 0xf3, 0x65, 0x48, 0x4e,
+ 0xc7, 0x66, 0x32, 0xb4, 0xa3, 0x17, 0x9f, 0x3f, 0x8f, 0xff, 0x50, 0x5d,
+ 0xd2, 0x2a, 0x86, 0x94, 0x95, 0xae, 0x2e, 0xef, 0xc2, 0x98, 0x6b, 0x1d,
+ 0x7e, 0xb5, 0x24, 0x67, 0x98, 0xad, 0xe4, 0x43, 0xa3, 0x98, 0xd3, 0x55,
+ 0x94, 0x71, 0x59, 0x51, 0xdb, 0x38, 0x69, 0x74, 0x4b, 0xb3, 0xbb, 0xdc,
+ 0xfa, 0x49, 0x79, 0x47, 0x35, 0x51, 0x2f, 0x2f, 0xf3, 0x09, 0x15, 0xba,
+ 0x71, 0xf0, 0xc1, 0xc4, 0xe2, 0xf9, 0xc1, 0xb9, 0x96, 0x61, 0x32, 0x73,
+ 0x4b, 0x16, 0xcb, 0xf1, 0xcc, 0xdc, 0xd5, 0x1a, 0xcd, 0x6e, 0x0e, 0x15,
+ 0x56, 0xc9, 0x28, 0x5b, 0x68, 0x8e, 0x7d, 0xf9, 0xd0, 0x37, 0x3b, 0x11,
+ 0xd4, 0x52, 0xbc, 0x9d, 0x24, 0xf0, 0x39, 0x8a, 0xc3, 0x52, 0x98, 0xf1,
+ 0xbc, 0x2c, 0x34, 0x19, 0x66, 0x59, 0x33, 0x98, 0xa4, 0x56, 0x7a, 0x5f,
+ 0x63, 0xcf, 0x44, 0x3e, 0x13, 0xf4, 0x76, 0xd1, 0xcc, 0xf1, 0x86, 0x3f,
+ 0x99, 0xe9, 0x60, 0x71, 0xbd, 0xd0, 0x9d, 0x56, 0x79, 0x88, 0x85, 0x25,
+ 0x49, 0xbf, 0xc0, 0xc9, 0x3b, 0xfb, 0xe6, 0x6c, 0x98, 0x1c, 0x51, 0x4b,
+ 0x3c, 0x26, 0x91, 0x73, 0x61, 0xa2, 0x31, 0xdf, 0x99, 0xc9, 0x5e, 0xd1,
+ 0xfd, 0x75, 0x5a, 0xd1, 0x5f, 0x68, 0x4d, 0xbe, 0x64, 0xab, 0x2c, 0xbe,
+ 0x6d, 0xf7, 0x6a, 0x1a, 0xd2, 0x20, 0xeb, 0x33, 0xfc, 0x6e, 0x8e, 0x8a,
+ 0x91, 0xbe, 0xec, 0x36, 0xb9, 0x1e, 0xca, 0xaa, 0x05, 0xbd, 0xc3, 0x6f,
+ 0x26, 0x46, 0x28, 0x83, 0x68, 0xb5, 0x78, 0xc0, 0xfe, 0x79, 0xbc, 0x91,
+ 0xc5, 0x4f, 0x6e, 0xc0, 0x23, 0x2d, 0x21, 0x3f, 0x1b, 0xbe, 0xc7, 0xe7,
+ 0xaa, 0x62, 0xd0, 0x99, 0x2a, 0x93, 0x60, 0xc7, 0x52, 0xbc, 0xa4, 0x6c,
+ 0xd0, 0xa8, 0xb3, 0xce, 0x71, 0xf5, 0xd4, 0x37, 0xfd, 0x82, 0xb4, 0x6e,
+ 0x1a, 0x8b, 0x11, 0x5a, 0xcc, 0x16, 0x0c, 0xd7, 0xfe, 0x6f, 0x9c, 0x7c,
+ 0x7e, 0x85, 0xdf, 0x6c, 0x02, 0x00,
+};
+#define BUF_SIZE 0x10000
+static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
+{
+ (void) opaque;
+ /* not a typo, keep it calloc() */
+ return (voidpf) calloc(items, size);
+}
+static void zfree_func(voidpf opaque, voidpf ptr)
+{
+ (void) opaque;
+ free(ptr);
+}
+/* Decompress and send to stdout a gzip-compressed buffer */
+void hugehelp(void)
+{
+ unsigned char* buf;
+ int status,headerlen;
+ z_stream z;
+
+ /* Make sure no gzip options are set */
+ if (hugehelpgz[3] & 0xfe)
+ return;
+
+ headerlen = 10;
+ memset(&z, 0, sizeof(z_stream));
+ z.zalloc = (alloc_func)zalloc_func;
+ z.zfree = (free_func)zfree_func;
+ z.avail_in = (unsigned int)(sizeof(hugehelpgz) - headerlen);
+ z.next_in = (unsigned char *)hugehelpgz + headerlen;
+
+ if (inflateInit2(&z, -MAX_WBITS) != Z_OK)
+ return;
+
+ buf = malloc(BUF_SIZE);
+ if (buf) {
+ while(1) {
+ z.avail_out = BUF_SIZE;
+ z.next_out = buf;
+ status = inflate(&z, Z_SYNC_FLUSH);
+ if (status == Z_OK || status == Z_STREAM_END) {
+ fwrite(buf, BUF_SIZE - z.avail_out, 1, stdout);
+ if (status == Z_STREAM_END)
+ break;
+ }
+ else
+ break; /* Error */
+ }
+ free(buf);
+ }
+ inflateEnd(&z);
+}
+#else /* !USE_MANUAL */
+/* built-in manual is disabled, blank function */
+#include "tool_hugehelp.h"
+void hugehelp(void) {}
+#endif /* USE_MANUAL */
+#endif /* HAVE_LIBZ */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_hugehelp.h b/external/libcurl_android/jni/libcurl/src/tool_hugehelp.h
new file mode 100755
index 00000000..442579e5
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_hugehelp.h
@@ -0,0 +1,28 @@
+#ifndef HEADER_CURL_TOOL_HUGEHELP_H
+#define HEADER_CURL_TOOL_HUGEHELP_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+void hugehelp(void);
+
+#endif /* HEADER_CURL_TOOL_HUGEHELP_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_libinfo.c b/external/libcurl_android/jni/libcurl/src/tool_libinfo.c
new file mode 100755
index 00000000..81b6680c
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_libinfo.c
@@ -0,0 +1,100 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_libinfo.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* global variable definitions, for libcurl run-time info */
+
+curl_version_info_data *curlinfo = NULL;
+long built_in_protos = 0;
+
+/*
+ * libcurl_info_init: retrieves run-time information about libcurl,
+ * setting a global pointer 'curlinfo' to libcurl's run-time info
+ * struct, and a global bit pattern 'built_in_protos' composed of
+ * CURLPROTO_* bits indicating which protocols are actually built
+ * into library being used.
+ */
+
+CURLcode get_libcurl_info(void)
+{
+ static struct proto_name_pattern {
+ const char *proto_name;
+ long proto_pattern;
+ } const possibly_built_in[] = {
+ { "dict", CURLPROTO_DICT },
+ { "file", CURLPROTO_FILE },
+ { "ftp", CURLPROTO_FTP },
+ { "ftps", CURLPROTO_FTPS },
+ { "gopher", CURLPROTO_GOPHER },
+ { "http", CURLPROTO_HTTP },
+ { "https", CURLPROTO_HTTPS },
+ { "imap", CURLPROTO_IMAP },
+ { "imaps", CURLPROTO_IMAPS },
+ { "ldap", CURLPROTO_LDAP },
+ { "ldaps", CURLPROTO_LDAPS },
+ { "pop3", CURLPROTO_POP3 },
+ { "pop3s", CURLPROTO_POP3S },
+ { "rtmp", CURLPROTO_RTMP },
+ { "rtsp", CURLPROTO_RTSP },
+ { "scp", CURLPROTO_SCP },
+ { "sftp", CURLPROTO_SFTP },
+ { "smtp", CURLPROTO_SMTP },
+ { "smtps", CURLPROTO_SMTPS },
+ { "telnet", CURLPROTO_TELNET },
+ { "tftp", CURLPROTO_TFTP },
+ { NULL, 0 }
+ };
+
+ struct proto_name_pattern const *p;
+ const char *const *proto;
+
+ /* Pointer to libcurl's run-time version information */
+ curlinfo = curl_version_info(CURLVERSION_NOW);
+ if(!curlinfo)
+ return CURLE_FAILED_INIT;
+
+ /* Build CURLPROTO_* bit pattern with libcurl's built-in protocols */
+ built_in_protos = 0;
+ if(curlinfo->protocols) {
+ for(proto = curlinfo->protocols; *proto; proto++) {
+ for(p = possibly_built_in; p->proto_name; p++) {
+ if(curlx_raw_equal(*proto, p->proto_name)) {
+ built_in_protos |= p->proto_pattern;
+ break;
+ }
+ }
+ }
+ }
+
+ return CURLE_OK;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_libinfo.h b/external/libcurl_android/jni/libcurl/src/tool_libinfo.h
new file mode 100755
index 00000000..5c149d91
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_libinfo.h
@@ -0,0 +1,34 @@
+#ifndef HEADER_CURL_TOOL_LIBINFO_H
+#define HEADER_CURL_TOOL_LIBINFO_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+/* global variable declarations, for libcurl run-time info */
+
+extern curl_version_info_data *curlinfo;
+extern long built_in_protos;
+
+CURLcode get_libcurl_info(void);
+
+#endif /* HEADER_CURL_TOOL_LIBINFO_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_main.c b/external/libcurl_android/jni/libcurl/src/tool_main.c
new file mode 100755
index 00000000..8c8acc6d
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_main.c
@@ -0,0 +1,275 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include <sys/stat.h>
+
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+
+#ifdef USE_NSS
+#include <nspr.h>
+#include <plarenas.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_convert.h"
+#include "tool_msgs.h"
+#include "tool_operate.h"
+#include "tool_panykey.h"
+#include "tool_vms.h"
+#include "tool_main.h"
+#include "tool_libinfo.h"
+
+/*
+ * This is low-level hard-hacking memory leak tracking and similar. Using
+ * the library level code from this client-side is ugly, but we do this
+ * anyway for convenience.
+ */
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef __VMS
+/*
+ * vms_show is a global variable, used in main() as parameter for
+ * function vms_special_exit() to allow proper curl tool exiting.
+ * Its value may be set in other tool_*.c source files thanks to
+ * forward declaration present in tool_vms.h
+ */
+int vms_show = 0;
+#endif
+
+/* if we build a static library for unit tests, there is no main() function */
+#ifndef UNITTESTS
+
+/*
+ * Ensure that file descriptors 0, 1 and 2 (stdin, stdout, stderr) are
+ * open before starting to run. Otherwise, the first three network
+ * sockets opened by curl could be used for input sources, downloaded data
+ * or error logs as they will effectively be stdin, stdout and/or stderr.
+ */
+static void main_checkfds(void)
+{
+#ifdef HAVE_PIPE
+ int fd[2] = { STDIN_FILENO, STDIN_FILENO };
+ while(fd[0] == STDIN_FILENO ||
+ fd[0] == STDOUT_FILENO ||
+ fd[0] == STDERR_FILENO ||
+ fd[1] == STDIN_FILENO ||
+ fd[1] == STDOUT_FILENO ||
+ fd[1] == STDERR_FILENO)
+ if(pipe(fd) < 0)
+ return; /* Out of handles. This isn't really a big problem now, but
+ will be when we try to create a socket later. */
+ close(fd[0]);
+ close(fd[1]);
+#endif
+}
+
+#ifdef CURLDEBUG
+static void memory_tracking_init(void)
+{
+ char *env;
+ /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */
+ env = curlx_getenv("CURL_MEMDEBUG");
+ if(env) {
+ /* use the value as file name */
+ char fname[CURL_MT_LOGFNAME_BUFSIZE];
+ if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE)
+ env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
+ strcpy(fname, env);
+ curl_free(env);
+ curl_memdebug(fname);
+ /* this weird stuff here is to make curl_free() get called
+ before curl_memdebug() as otherwise memory tracking will
+ log a free() without an alloc! */
+ }
+ /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
+ env = curlx_getenv("CURL_MEMLIMIT");
+ if(env) {
+ char *endptr;
+ long num = strtol(env, &endptr, 10);
+ if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
+ curl_memlimit(num);
+ curl_free(env);
+ }
+}
+#else
+# define memory_tracking_init() Curl_nop_stmt
+#endif
+
+/*
+ * This is the main global constructor for the app. Call this before
+ * _any_ libcurl usage. If this fails, *NO* libcurl functions may be
+ * used, or havoc may be the result.
+ */
+static CURLcode main_init(struct GlobalConfig *config)
+{
+ CURLcode result = CURLE_OK;
+
+#if defined(__DJGPP__) || defined(__GO32__)
+ /* stop stat() wasting time */
+ _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
+#endif
+
+ /* Initialise the global config */
+ config->showerror = -1; /* Will show errors */
+ config->errors = stderr; /* Default errors to stderr */
+
+ /* Allocate the initial operate config */
+ config->first = config->last = malloc(sizeof(struct OperationConfig));
+ if(config->first) {
+ /* Perform the libcurl initialization */
+ result = curl_global_init(CURL_GLOBAL_DEFAULT);
+ if(!result) {
+ /* Get information about libcurl */
+ result = get_libcurl_info();
+
+ if(!result) {
+ /* Get a curl handle to use for all forthcoming curl transfers */
+ config->easy = curl_easy_init();
+ if(config->easy) {
+ /* Initialise the config */
+ config_init(config->first);
+ config->first->easy = config->easy;
+ config->first->global = config;
+ }
+ else {
+ helpf(stderr, "error initializing curl easy handle\n");
+ result = CURLE_FAILED_INIT;
+ free(config->first);
+ }
+ }
+ else {
+ helpf(stderr, "error retrieving curl library information\n");
+ free(config->first);
+ }
+ }
+ else {
+ helpf(stderr, "error initializing curl library\n");
+ free(config->first);
+ }
+ }
+ else {
+ helpf(stderr, "error initializing curl\n");
+ result = CURLE_FAILED_INIT;
+ }
+
+ return result;
+}
+
+static void free_config_fields(struct GlobalConfig *config)
+{
+ Curl_safefree(config->trace_dump);
+
+ if(config->errors_fopened && config->errors)
+ fclose(config->errors);
+ config->errors = NULL;
+
+ if(config->trace_fopened && config->trace_stream)
+ fclose(config->trace_stream);
+ config->trace_stream = NULL;
+
+ Curl_safefree(config->libcurl);
+}
+
+/*
+ * This is the main global destructor for the app. Call this after
+ * _all_ libcurl usage is done.
+ */
+static void main_free(struct GlobalConfig *config)
+{
+ /* Cleanup the easy handle */
+ curl_easy_cleanup(config->easy);
+ config->easy = NULL;
+
+ /* Main cleanup */
+ curl_global_cleanup();
+ convert_cleanup();
+ metalink_cleanup();
+#ifdef USE_NSS
+ if(PR_Initialized()) {
+ /* prevent valgrind from reporting still reachable mem from NSRP arenas */
+ PL_ArenaFinish();
+ /* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
+ PR_Cleanup();
+ }
+#endif
+ free_config_fields(config);
+
+ /* Free the config structures */
+ config_free(config->last);
+ config->first = NULL;
+ config->last = NULL;
+}
+
+/*
+** curl tool main function.
+*/
+int main(int argc, char *argv[])
+{
+ CURLcode result = CURLE_OK;
+ struct GlobalConfig global;
+ memset(&global, 0, sizeof(global));
+
+ main_checkfds();
+
+#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
+ (void)signal(SIGPIPE, SIG_IGN);
+#endif
+
+ /* Initialize memory tracking */
+ memory_tracking_init();
+
+ /* Initialize the curl library - do not call any libcurl functions before
+ this point */
+ result = main_init(&global);
+ if(!result) {
+ /* Start our curl operation */
+ result = operate(&global, argc, argv);
+
+#ifdef __SYMBIAN32__
+ if(global.showerror)
+ tool_pressanykey();
+#endif
+
+ /* Perform the main cleanup */
+ main_free(&global);
+ }
+
+#ifdef __NOVELL_LIBC__
+ if(getenv("_IN_NETWARE_BASH_") == NULL)
+ tool_pressanykey();
+#endif
+
+#ifdef __VMS
+ vms_special_exit(res, vms_show);
+#else
+ return (int)result;
+#endif
+}
+
+#endif /* ndef UNITTESTS */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_main.h b/external/libcurl_android/jni/libcurl/src/tool_main.h
new file mode 100755
index 00000000..9a7972fd
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_main.h
@@ -0,0 +1,44 @@
+#ifndef HEADER_CURL_TOOL_MAIN_H
+#define HEADER_CURL_TOOL_MAIN_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#define DEFAULT_MAXREDIRS 50L
+
+#define RETRY_SLEEP_DEFAULT 1000L /* ms */
+#define RETRY_SLEEP_MAX 600000L /* ms == 10 minutes */
+
+#ifndef STDIN_FILENO
+# define STDIN_FILENO fileno(stdin)
+#endif
+
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO fileno(stdout)
+#endif
+
+#ifndef STDERR_FILENO
+# define STDERR_FILENO fileno(stderr)
+#endif
+
+#endif /* HEADER_CURL_TOOL_MAIN_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_metalink.c b/external/libcurl_android/jni/libcurl/src/tool_metalink.c
new file mode 100755
index 00000000..3573b058
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_metalink.c
@@ -0,0 +1,963 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef USE_METALINK
+
+#include <sys/stat.h>
+
+#ifdef HAVE_FCNTL_H
+# 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
+#elif defined(USE_GNUTLS_NETTLE)
+# include <nettle/md5.h>
+# include <nettle/sha.h>
+# define MD5_CTX struct md5_ctx
+# define SHA_CTX struct sha1_ctx
+# define SHA256_CTX struct sha256_ctx
+#elif defined(USE_GNUTLS)
+# include <gcrypt.h>
+# define MD5_CTX gcry_md_hd_t
+# define SHA_CTX gcry_md_hd_t
+# define SHA256_CTX gcry_md_hd_t
+#elif defined(USE_NSS)
+# include <nss.h>
+# include <pk11pub.h>
+# define MD5_CTX void *
+# define SHA_CTX void *
+# define SHA256_CTX void *
+ static NSSInitContext *nss_context;
+#elif defined(USE_POLARSSL)
+# include <polarssl/md5.h>
+# include <polarssl/sha1.h>
+# include <polarssl/sha256.h>
+# define MD5_CTX md5_context
+# define SHA_CTX sha1_context
+# define SHA256_CTX sha256_context
+#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
+ (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
+ (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
+ (__IPHONE_OS_VERSION_MAX_ALLOWED >= 20000))
+/* For Apple operating systems: CommonCrypto has the functions we need.
+ The library's headers are even backward-compatible with OpenSSL's
+ headers as long as we define COMMON_DIGEST_FOR_OPENSSL first.
+
+ These functions are available on Tiger and later, as well as iOS 2.0
+ and later. If you're building for an older cat, well, sorry. */
+# define COMMON_DIGEST_FOR_OPENSSL
+# include <CommonCrypto/CommonDigest.h>
+#elif defined(_WIN32)
+/* For Windows: If no other crypto library is provided, we fallback
+ to the hash functions provided within the Microsoft Windows CryptoAPI */
+# include <wincrypt.h>
+/* Custom structure in order to store the required provider and hash handle */
+struct win32_crypto_hash {
+ HCRYPTPROV hCryptProv;
+ HCRYPTHASH hHash;
+};
+/* Custom Microsoft AES Cryptographic Provider defines required for MinGW */
+# ifndef ALG_SID_SHA_256
+# define ALG_SID_SHA_256 12
+# endif
+# ifndef CALG_SHA_256
+# define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256)
+# endif
+# define MD5_CTX struct win32_crypto_hash
+# define SHA_CTX struct win32_crypto_hash
+# define SHA256_CTX struct win32_crypto_hash
+#else
+# error "Can't compile METALINK support without a crypto library."
+#endif
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_getparam.h"
+#include "tool_paramhlp.h"
+#include "tool_cfgable.h"
+#include "tool_metalink.h"
+#include "tool_msgs.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* Copied from tool_getparam.c */
+#define GetStr(str,val) do { \
+ if(*(str)) { \
+ free(*(str)); \
+ *(str) = NULL; \
+ } \
+ if((val)) \
+ *(str) = strdup((val)); \
+ if(!(val)) \
+ return PARAM_NO_MEM; \
+} WHILE_FALSE
+
+#ifdef USE_GNUTLS_NETTLE
+
+static int MD5_Init(MD5_CTX *ctx)
+{
+ md5_init(ctx);
+ return 1;
+}
+
+static void MD5_Update(MD5_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ md5_update(ctx, inputLen, input);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
+{
+ md5_digest(ctx, 16, digest);
+}
+
+static int SHA1_Init(SHA_CTX *ctx)
+{
+ sha1_init(ctx);
+ return 1;
+}
+
+static void SHA1_Update(SHA_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ sha1_update(ctx, inputLen, input);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
+{
+ sha1_digest(ctx, 20, digest);
+}
+
+static int SHA256_Init(SHA256_CTX *ctx)
+{
+ sha256_init(ctx);
+ return 1;
+}
+
+static void SHA256_Update(SHA256_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ sha256_update(ctx, inputLen, input);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
+{
+ sha256_digest(ctx, 32, digest);
+}
+
+#elif defined(USE_GNUTLS)
+
+static int MD5_Init(MD5_CTX *ctx)
+{
+ gcry_md_open(ctx, GCRY_MD_MD5, 0);
+ return 1;
+}
+
+static void MD5_Update(MD5_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ gcry_md_write(*ctx, input, inputLen);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
+{
+ memcpy(digest, gcry_md_read(*ctx, 0), 16);
+ gcry_md_close(*ctx);
+}
+
+static int SHA1_Init(SHA_CTX *ctx)
+{
+ gcry_md_open(ctx, GCRY_MD_SHA1, 0);
+ return 1;
+}
+
+static void SHA1_Update(SHA_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ gcry_md_write(*ctx, input, inputLen);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
+{
+ memcpy(digest, gcry_md_read(*ctx, 0), 20);
+ gcry_md_close(*ctx);
+}
+
+static int SHA256_Init(SHA256_CTX *ctx)
+{
+ gcry_md_open(ctx, GCRY_MD_SHA256, 0);
+ return 1;
+}
+
+static void SHA256_Update(SHA256_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ gcry_md_write(*ctx, input, inputLen);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
+{
+ memcpy(digest, gcry_md_read(*ctx, 0), 32);
+ gcry_md_close(*ctx);
+}
+
+#elif defined(USE_NSS)
+
+static int nss_hash_init(void **pctx, SECOidTag hash_alg)
+{
+ PK11Context *ctx;
+
+ /* we have to initialize NSS if not initialized alraedy */
+ if(!NSS_IsInitialized() && !nss_context) {
+ static NSSInitParameters params;
+ params.length = sizeof params;
+ nss_context = NSS_InitContext("", "", "", "", &params, NSS_INIT_READONLY
+ | NSS_INIT_NOCERTDB | NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN
+ | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
+ }
+
+ ctx = PK11_CreateDigestContext(hash_alg);
+ if(!ctx)
+ return /* failure */ 0;
+
+ if(PK11_DigestBegin(ctx) != SECSuccess) {
+ PK11_DestroyContext(ctx, PR_TRUE);
+ return /* failure */ 0;
+ }
+
+ *pctx = ctx;
+ return /* success */ 1;
+}
+
+static void nss_hash_final(void **pctx, unsigned char *out, unsigned int len)
+{
+ PK11Context *ctx = *pctx;
+ unsigned int outlen;
+ PK11_DigestFinal(ctx, out, &outlen, len);
+ PK11_DestroyContext(ctx, PR_TRUE);
+}
+
+static int MD5_Init(MD5_CTX *pctx)
+{
+ return nss_hash_init(pctx, SEC_OID_MD5);
+}
+
+static void MD5_Update(MD5_CTX *pctx,
+ const unsigned char *input,
+ unsigned int input_len)
+{
+ PK11_DigestOp(*pctx, input, input_len);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *pctx)
+{
+ nss_hash_final(pctx, digest, 16);
+}
+
+static int SHA1_Init(SHA_CTX *pctx)
+{
+ return nss_hash_init(pctx, SEC_OID_SHA1);
+}
+
+static void SHA1_Update(SHA_CTX *pctx,
+ const unsigned char *input,
+ unsigned int input_len)
+{
+ PK11_DigestOp(*pctx, input, input_len);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *pctx)
+{
+ nss_hash_final(pctx, digest, 20);
+}
+
+static int SHA256_Init(SHA256_CTX *pctx)
+{
+ return nss_hash_init(pctx, SEC_OID_SHA256);
+}
+
+static void SHA256_Update(SHA256_CTX *pctx,
+ const unsigned char *input,
+ unsigned int input_len)
+{
+ PK11_DigestOp(*pctx, input, input_len);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *pctx)
+{
+ nss_hash_final(pctx, digest, 32);
+}
+
+#elif defined(USE_POLARSSL)
+
+static int MD5_Init(MD5_CTX *ctx)
+{
+ md5_starts(ctx);
+ return 1;
+}
+
+static void MD5_Update(MD5_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ md5_update(ctx, input, inputLen);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
+{
+ md5_finish(ctx, digest);
+}
+
+static int SHA1_Init(SHA_CTX *ctx)
+{
+ sha1_starts(ctx);
+ return 1;
+}
+
+static void SHA1_Update(SHA_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ sha1_update(ctx, input, inputLen);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
+{
+ sha1_finish(ctx, digest);
+}
+
+static int SHA256_Init(SHA256_CTX *ctx)
+{
+ sha256_starts(ctx, 0); /* 0 = sha256 */
+ return 1;
+}
+
+static void SHA256_Update(SHA256_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ sha256_update(ctx, input, inputLen);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
+{
+ sha256_finish(ctx, digest);
+}
+
+#elif defined(_WIN32) && !defined(USE_SSLEAY)
+
+static void win32_crypto_final(struct win32_crypto_hash *ctx,
+ unsigned char *digest,
+ unsigned int digestLen)
+{
+ unsigned long length;
+ CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
+ if(length == digestLen)
+ CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
+ if(ctx->hHash)
+ CryptDestroyHash(ctx->hHash);
+ if(ctx->hCryptProv)
+ CryptReleaseContext(ctx->hCryptProv, 0);
+}
+
+static int MD5_Init(MD5_CTX *ctx)
+{
+ if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL,
+ PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
+ CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash);
+ }
+ return 1;
+}
+
+static void MD5_Update(MD5_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
+{
+ win32_crypto_final(ctx, digest, 16);
+}
+
+static int SHA1_Init(SHA_CTX *ctx)
+{
+ if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL,
+ PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
+ CryptCreateHash(ctx->hCryptProv, CALG_SHA1, 0, 0, &ctx->hHash);
+ }
+ return 1;
+}
+
+static void SHA1_Update(SHA_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
+{
+ win32_crypto_final(ctx, digest, 20);
+}
+
+static int SHA256_Init(SHA256_CTX *ctx)
+{
+ if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL,
+ PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) {
+ CryptCreateHash(ctx->hCryptProv, CALG_SHA_256, 0, 0, &ctx->hHash);
+ }
+ return 1;
+}
+
+static void SHA256_Update(SHA256_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
+{
+ win32_crypto_final(ctx, digest, 32);
+}
+
+#endif /* CRYPTO LIBS */
+
+const digest_params MD5_DIGEST_PARAMS[] = {
+ {
+ (Curl_digest_init_func) MD5_Init,
+ (Curl_digest_update_func) MD5_Update,
+ (Curl_digest_final_func) MD5_Final,
+ sizeof(MD5_CTX),
+ 16
+ }
+};
+
+const digest_params SHA1_DIGEST_PARAMS[] = {
+ {
+ (Curl_digest_init_func) SHA1_Init,
+ (Curl_digest_update_func) SHA1_Update,
+ (Curl_digest_final_func) SHA1_Final,
+ sizeof(SHA_CTX),
+ 20
+ }
+};
+
+const digest_params SHA256_DIGEST_PARAMS[] = {
+ {
+ (Curl_digest_init_func) SHA256_Init,
+ (Curl_digest_update_func) SHA256_Update,
+ (Curl_digest_final_func) SHA256_Final,
+ sizeof(SHA256_CTX),
+ 32
+ }
+};
+
+static const metalink_digest_def SHA256_DIGEST_DEF[] = {
+ {"sha-256", SHA256_DIGEST_PARAMS}
+};
+
+static const metalink_digest_def SHA1_DIGEST_DEF[] = {
+ {"sha-1", SHA1_DIGEST_PARAMS}
+};
+
+static const metalink_digest_def MD5_DIGEST_DEF[] = {
+ {"md5", MD5_DIGEST_PARAMS}
+};
+
+/*
+ * The alias of supported hash functions in the order by preference
+ * (basically stronger hash comes first). We included "sha-256" and
+ * "sha256". The former is the name defined in the IANA registry named
+ * "Hash Function Textual Names". The latter is widely (and
+ * historically) used in Metalink version 3.
+ */
+static const metalink_digest_alias digest_aliases[] = {
+ {"sha-256", SHA256_DIGEST_DEF},
+ {"sha256", SHA256_DIGEST_DEF},
+ {"sha-1", SHA1_DIGEST_DEF},
+ {"sha1", SHA1_DIGEST_DEF},
+ {"md5", MD5_DIGEST_DEF},
+ {NULL, NULL}
+};
+
+digest_context *Curl_digest_init(const digest_params *dparams)
+{
+ digest_context *ctxt;
+
+ /* Create digest context */
+ ctxt = malloc(sizeof *ctxt);
+
+ if(!ctxt)
+ return ctxt;
+
+ ctxt->digest_hashctx = malloc(dparams->digest_ctxtsize);
+
+ if(!ctxt->digest_hashctx) {
+ free(ctxt);
+ return NULL;
+ }
+
+ ctxt->digest_hash = dparams;
+
+ if(dparams->digest_init(ctxt->digest_hashctx) != 1) {
+ free(ctxt);
+ return NULL;
+ }
+
+ return ctxt;
+}
+
+int Curl_digest_update(digest_context *context,
+ const unsigned char *data,
+ unsigned int len)
+{
+ (*context->digest_hash->digest_update)(context->digest_hashctx, data, len);
+
+ return 0;
+}
+
+int Curl_digest_final(digest_context *context, unsigned char *result)
+{
+ (*context->digest_hash->digest_final)(result, context->digest_hashctx);
+
+ free(context->digest_hashctx);
+ free(context);
+
+ return 0;
+}
+
+static unsigned char hex_to_uint(const char *s)
+{
+ int v[2];
+ int i;
+ for(i = 0; i < 2; ++i) {
+ v[i] = Curl_raw_toupper(s[i]);
+ if('0' <= v[i] && v[i] <= '9') {
+ v[i] -= '0';
+ }
+ else if('A' <= v[i] && v[i] <= 'Z') {
+ v[i] -= 'A'-10;
+ }
+ }
+ return (unsigned char)((v[0] << 4) | v[1]);
+}
+
+/*
+ * Check checksum of file denoted by filename. The expected hash value
+ * is given in hex_hash which is hex-encoded string.
+ *
+ * This function returns 1 if it succeeds or one of the following
+ * integers:
+ *
+ * 0:
+ * Checksum didn't match.
+ * -1:
+ * Could not open file; or could not read data from file.
+ * -2:
+ * Hash algorithm not available.
+ */
+static int check_hash(const char *filename,
+ const metalink_digest_def *digest_def,
+ const unsigned char *digest, FILE *error)
+{
+ unsigned char *result;
+ digest_context *dctx;
+ int check_ok, flags, fd;
+
+ flags = O_RDONLY;
+#ifdef O_BINARY
+ /* O_BINARY is required in order to avoid binary EOF in text mode */
+ flags |= O_BINARY;
+#endif
+
+ fd = open(filename, flags);
+ if(fd == -1) {
+ fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
+ digest_def->hash_name, strerror(errno));
+ return -1;
+ }
+
+ dctx = Curl_digest_init(digest_def->dparams);
+ if(!dctx) {
+ fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
+ digest_def->hash_name, "failed to initialize hash algorithm");
+ close(fd);
+ return -2;
+ }
+
+ result = malloc(digest_def->dparams->digest_resultlen);
+ while(1) {
+ unsigned char buf[4096];
+ ssize_t len = read(fd, buf, sizeof(buf));
+ if(len == 0) {
+ break;
+ }
+ else if(len == -1) {
+ fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
+ digest_def->hash_name, strerror(errno));
+ Curl_digest_final(dctx, result);
+ close(fd);
+ return -1;
+ }
+ Curl_digest_update(dctx, buf, (unsigned int)len);
+ }
+ Curl_digest_final(dctx, result);
+ check_ok = memcmp(result, digest,
+ digest_def->dparams->digest_resultlen) == 0;
+ /* sha*sum style verdict output */
+ if(check_ok)
+ fprintf(error, "Metalink: validating (%s) [%s] OK\n", filename,
+ digest_def->hash_name);
+ else
+ fprintf(error, "Metalink: validating (%s) [%s] FAILED (digest mismatch)\n",
+ filename, digest_def->hash_name);
+
+ free(result);
+ close(fd);
+ return check_ok;
+}
+
+int metalink_check_hash(struct GlobalConfig *config,
+ metalinkfile *mlfile,
+ const char *filename)
+{
+ int rv;
+ fprintf(config->errors, "Metalink: validating (%s)...\n", filename);
+ if(mlfile->checksum == NULL) {
+ fprintf(config->errors,
+ "Metalink: validating (%s) FAILED (digest missing)\n", filename);
+ return -2;
+ }
+ rv = check_hash(filename, mlfile->checksum->digest_def,
+ mlfile->checksum->digest, config->errors);
+ return rv;
+}
+
+static metalink_checksum *new_metalink_checksum_from_hex_digest
+(const metalink_digest_def *digest_def, const char *hex_digest)
+{
+ metalink_checksum *chksum;
+ unsigned char *digest;
+ size_t i;
+ size_t len = strlen(hex_digest);
+ digest = malloc(len/2);
+ 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;
+ return chksum;
+}
+
+static metalink_resource *new_metalink_resource(const char *url)
+{
+ metalink_resource *res;
+ res = malloc(sizeof(metalink_resource));
+ res->next = NULL;
+ res->url = strdup(url);
+ return res;
+}
+
+/* Returns nonzero if hex_digest is properly formatted; that is each
+ letter is in [0-9A-Za-z] and the length of the string equals to the
+ result length of digest * 2. */
+static int check_hex_digest(const char *hex_digest,
+ const metalink_digest_def *digest_def)
+{
+ size_t i;
+ for(i = 0; hex_digest[i]; ++i) {
+ char c = hex_digest[i];
+ if(!(('0' <= c && c <= '9') || ('a' <= c && c <= 'z') ||
+ ('A' <= c && c <= 'Z'))) {
+ return 0;
+ }
+ }
+ return digest_def->dparams->digest_resultlen * 2 == i;
+}
+
+static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
+{
+ metalinkfile *f;
+ f = (metalinkfile*)malloc(sizeof(metalinkfile));
+ f->next = NULL;
+ f->filename = strdup(fileinfo->name);
+ f->checksum = NULL;
+ f->resource = NULL;
+ if(fileinfo->checksums) {
+ const metalink_digest_alias *digest_alias;
+ for(digest_alias = digest_aliases; digest_alias->alias_name;
+ ++digest_alias) {
+ metalink_checksum_t **p;
+ for(p = fileinfo->checksums; *p; ++p) {
+ if(Curl_raw_equal(digest_alias->alias_name, (*p)->type) &&
+ check_hex_digest((*p)->hash, digest_alias->digest_def)) {
+ f->checksum =
+ new_metalink_checksum_from_hex_digest(digest_alias->digest_def,
+ (*p)->hash);
+ break;
+ }
+ }
+ if(f->checksum) {
+ break;
+ }
+ }
+ }
+ if(fileinfo->resources) {
+ metalink_resource_t **p;
+ metalink_resource root, *tail;
+ root.next = NULL;
+ tail = &root;
+ for(p = fileinfo->resources; *p; ++p) {
+ metalink_resource *res;
+ /* Filter by type if it is non-NULL. In Metalink v3, type
+ includes the type of the resource. In curl, we are only
+ interested in HTTP, HTTPS and FTP. In addition to them,
+ Metalink v3 file may contain bittorrent type URL, which
+ points to the BitTorrent metainfo file. We ignore it here.
+ In Metalink v4, type was deprecated and all
+ fileinfo->resources point to the target file. BitTorrent
+ metainfo file URL may be appeared in fileinfo->metaurls.
+ */
+ if((*p)->type == NULL ||
+ Curl_raw_equal((*p)->type, "http") ||
+ Curl_raw_equal((*p)->type, "https") ||
+ Curl_raw_equal((*p)->type, "ftp") ||
+ Curl_raw_equal((*p)->type, "ftps")) {
+ res = new_metalink_resource((*p)->url);
+ tail->next = res;
+ tail = res;
+ }
+ }
+ f->resource = root.next;
+ }
+ return f;
+}
+
+int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
+ const char *metalink_url)
+{
+ metalink_error_t r;
+ metalink_t* metalink;
+ metalink_file_t **files;
+ bool warnings = FALSE;
+
+ /* metlaink_parse_final deletes outs->metalink_parser */
+ r = metalink_parse_final(outs->metalink_parser, NULL, 0, &metalink);
+ outs->metalink_parser = NULL;
+ if(r != 0) {
+ return -1;
+ }
+ if(metalink->files == NULL) {
+ fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
+ "(missing or invalid file name)\n",
+ metalink_url);
+ metalink_delete(metalink);
+ return -1;
+ }
+ for(files = metalink->files; *files; ++files) {
+ struct getout *url;
+ /* Skip an entry which has no resource. */
+ if(!(*files)->resources) {
+ fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
+ "(missing or invalid resource)\n",
+ metalink_url, (*files)->name);
+ continue;
+ }
+ if(config->url_get ||
+ ((config->url_get = config->url_list) != NULL)) {
+ /* there's a node here, if it already is filled-in continue to
+ find an "empty" node */
+ while(config->url_get && (config->url_get->flags & GETOUT_URL))
+ config->url_get = config->url_get->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_get)
+ /* existing node */
+ url = config->url_get;
+ else
+ /* there was no free node, create one! */
+ url = new_getout(config);
+
+ if(url) {
+ metalinkfile *mlfile;
+ mlfile = new_metalinkfile(*files);
+ if(!mlfile->checksum) {
+ warnings = TRUE;
+ fprintf(config->global->errors,
+ "Metalink: parsing (%s) WARNING (digest missing)\n",
+ metalink_url);
+ }
+ /* Set name as url */
+ GetStr(&url->url, mlfile->filename);
+
+ /* set flag metalink here */
+ url->flags |= GETOUT_URL | GETOUT_METALINK;
+
+ if(config->metalinkfile_list) {
+ config->metalinkfile_last->next = mlfile;
+ config->metalinkfile_last = mlfile;
+ }
+ else {
+ config->metalinkfile_list = config->metalinkfile_last = mlfile;
+ }
+ }
+ }
+ metalink_delete(metalink);
+ return (warnings) ? -2 : 0;
+}
+
+size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
+ void *userdata)
+{
+ struct OutStruct *outs = userdata;
+ struct OperationConfig *config = outs->config;
+ int rv;
+
+ /*
+ * Once that libcurl has called back tool_write_cb() the returned value
+ * is checked against the amount that was intended to be written, if
+ * it does not match then it fails with CURLE_WRITE_ERROR. So at this
+ * point returning a value different from sz*nmemb indicates failure.
+ */
+ const size_t failure = (sz * nmemb) ? 0 : 1;
+
+ if(!config)
+ return failure;
+
+ rv = metalink_parse_update(outs->metalink_parser, buffer, sz *nmemb);
+ if(rv == 0)
+ return sz * nmemb;
+ else {
+ fprintf(config->global->errors, "Metalink: parsing FAILED\n");
+ return failure;
+ }
+}
+
+/*
+ * Returns nonzero if content_type includes mediatype.
+ */
+static int check_content_type(const char *content_type, const char *media_type)
+{
+ const char *ptr = content_type;
+ size_t media_type_len = strlen(media_type);
+ for(; *ptr && (*ptr == ' ' || *ptr == '\t'); ++ptr);
+ if(!*ptr) {
+ return 0;
+ }
+ return Curl_raw_nequal(ptr, media_type, media_type_len) &&
+ (*(ptr+media_type_len) == '\0' || *(ptr+media_type_len) == ' ' ||
+ *(ptr+media_type_len) == '\t' || *(ptr+media_type_len) == ';');
+}
+
+int check_metalink_content_type(const char *content_type)
+{
+ return check_content_type(content_type, "application/metalink+xml");
+}
+
+int count_next_metalink_resource(metalinkfile *mlfile)
+{
+ int count = 0;
+ metalink_resource *res;
+ for(res = mlfile->resource; res; res = res->next, ++count);
+ return count;
+}
+
+static void delete_metalink_checksum(metalink_checksum *chksum)
+{
+ if(chksum == NULL) {
+ return;
+ }
+ Curl_safefree(chksum->digest);
+ Curl_safefree(chksum);
+}
+
+static void delete_metalink_resource(metalink_resource *res)
+{
+ if(res == NULL) {
+ return;
+ }
+ Curl_safefree(res->url);
+ Curl_safefree(res);
+}
+
+static void delete_metalinkfile(metalinkfile *mlfile)
+{
+ metalink_resource *res;
+ if(mlfile == NULL) {
+ return;
+ }
+ Curl_safefree(mlfile->filename);
+ delete_metalink_checksum(mlfile->checksum);
+ for(res = mlfile->resource; res;) {
+ metalink_resource *next;
+ next = res->next;
+ delete_metalink_resource(res);
+ res = next;
+ }
+ Curl_safefree(mlfile);
+}
+
+void clean_metalink(struct OperationConfig *config)
+{
+ while(config->metalinkfile_list) {
+ metalinkfile *mlfile = config->metalinkfile_list;
+ config->metalinkfile_list = config->metalinkfile_list->next;
+ delete_metalinkfile(mlfile);
+ }
+ config->metalinkfile_last = 0;
+}
+
+void metalink_cleanup(void)
+{
+#ifdef USE_NSS
+ if(nss_context) {
+ NSS_ShutdownContext(nss_context);
+ nss_context = NULL;
+ }
+#endif
+}
+
+#endif /* USE_METALINK */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_metalink.h b/external/libcurl_android/jni/libcurl/src/tool_metalink.h
new file mode 100755
index 00000000..36859068
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_metalink.h
@@ -0,0 +1,167 @@
+#ifndef HEADER_CURL_TOOL_METALINK_H
+#define HEADER_CURL_TOOL_METALINK_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+struct GlobalConfig;
+struct OperationConfig;
+
+/* returns 1 for success, 0 otherwise (we use OpenSSL *_Init fncs directly) */
+typedef int (* Curl_digest_init_func)(void *context);
+
+typedef void (* Curl_digest_update_func)(void *context,
+ const unsigned char *data,
+ unsigned int len);
+typedef void (* Curl_digest_final_func)(unsigned char *result, void *context);
+
+typedef struct {
+ Curl_digest_init_func digest_init; /* Initialize context procedure */
+ Curl_digest_update_func digest_update; /* Update context with data */
+ Curl_digest_final_func digest_final; /* Get final result procedure */
+ unsigned int digest_ctxtsize; /* Context structure size */
+ unsigned int digest_resultlen; /* Result length (bytes) */
+} digest_params;
+
+typedef struct {
+ const digest_params *digest_hash; /* Hash function definition */
+ void *digest_hashctx; /* Hash function context */
+} digest_context;
+
+digest_context * Curl_digest_init(const digest_params *dparams);
+int Curl_digest_update(digest_context *context,
+ const unsigned char *data,
+ unsigned int len);
+int Curl_digest_final(digest_context *context, unsigned char *result);
+
+typedef struct {
+ const char *hash_name;
+ const digest_params *dparams;
+} metalink_digest_def;
+
+typedef struct {
+ const char *alias_name;
+ const metalink_digest_def *digest_def;
+} metalink_digest_alias;
+
+typedef struct metalink_checksum {
+ const metalink_digest_def *digest_def;
+ /* raw digest value, not ascii hex digest */
+ unsigned char *digest;
+} metalink_checksum;
+
+typedef struct metalink_resource {
+ struct metalink_resource *next;
+ char *url;
+} metalink_resource;
+
+typedef struct metalinkfile {
+ struct metalinkfile *next;
+ char *filename;
+ metalink_checksum *checksum;
+ metalink_resource *resource;
+} metalinkfile;
+
+#ifdef USE_METALINK
+
+/*
+ * curl requires libmetalink 0.1.0 or newer
+ */
+#define CURL_REQ_LIBMETALINK_MAJOR 0
+#define CURL_REQ_LIBMETALINK_MINOR 1
+#define CURL_REQ_LIBMETALINK_PATCH 0
+
+#define CURL_REQ_LIBMETALINK_VERS ((CURL_REQ_LIBMETALINK_MAJOR * 10000) + \
+ (CURL_REQ_LIBMETALINK_MINOR * 100) + \
+ CURL_REQ_LIBMETALINK_PATCH)
+
+extern const digest_params MD5_DIGEST_PARAMS[1];
+extern const digest_params SHA1_DIGEST_PARAMS[1];
+extern const digest_params SHA256_DIGEST_PARAMS[1];
+
+#include <metalink/metalink.h>
+
+/*
+ * Counts the resource in the metalinkfile.
+ */
+int count_next_metalink_resource(metalinkfile *mlfile);
+void clean_metalink(struct OperationConfig *config);
+
+/*
+ * Performs final parse operation and extracts information from
+ * Metalink and creates metalinkfile structs.
+ *
+ * This function returns 0 if it succeeds without warnings, or one of
+ * the following negative error codes:
+ *
+ * -1: Parsing failed; or no file is found
+ * -2: Parsing succeeded with some warnings.
+ */
+int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
+ const char *metalink_url);
+
+/*
+ * Callback function for CURLOPT_WRITEFUNCTION
+ */
+size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
+ void *userdata);
+
+/*
+ * Returns nonzero if content_type includes "application/metalink+xml"
+ * media-type. The check is done in case-insensitive manner.
+ */
+int check_metalink_content_type(const char *content_type);
+
+/*
+ * Check checksum of file denoted by filename.
+ *
+ * This function returns 1 if the checksum matches or one of the
+ * following integers:
+ *
+ * 0:
+ * Checksum didn't match.
+ * -1:
+ * Could not open file; or could not read data from file.
+ * -2:
+ * No checksum in Metalink supported, hash algorithm not available, or
+ * Metalink does not contain checksum.
+ */
+int metalink_check_hash(struct GlobalConfig *config,
+ metalinkfile *mlfile,
+ const char *filename);
+
+/*
+ * Release resources allocated at global scope.
+ */
+void metalink_cleanup(void);
+
+#else /* USE_METALINK */
+
+#define count_next_metalink_resource(x) 0
+#define clean_metalink(x) (void)x
+
+/* metalink_cleanup() takes no arguments */
+#define metalink_cleanup() Curl_nop_stmt
+
+#endif /* USE_METALINK */
+
+#endif /* HEADER_CURL_TOOL_METALINK_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_mfiles.c b/external/libcurl_android/jni/libcurl/src/tool_mfiles.c
new file mode 100755
index 00000000..3eda45f9
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_mfiles.c
@@ -0,0 +1,127 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#include "tool_mfiles.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static void AppendNode(struct multi_files **first,
+ struct multi_files **last,
+ struct multi_files *new)
+{
+ DEBUGASSERT(((*first) && (*last)) || ((!*first) && (!*last)));
+
+ if(*last)
+ (*last)->next = new;
+ else
+ *first = new;
+ *last = new;
+}
+
+/*
+ * AddMultiFiles: Add a new list node possibly followed with a type_name.
+ *
+ * multi_first argument is the address of a pointer to the first element
+ * of the multi_files linked list. A NULL pointer indicates empty list.
+ *
+ * multi_last argument is the address of a pointer to the last element
+ * of the multi_files linked list. A NULL pointer indicates empty list.
+ *
+ * Pointers stored in multi_first and multi_last are modified while
+ * function is executed. An out of memory condition free's the whole
+ * list and returns with pointers stored in multi_first and multi_last
+ * set to NULL and a NULL function result.
+ *
+ * Function returns same pointer as stored at multi_last.
+ */
+
+struct multi_files *AddMultiFiles(const char *file_name,
+ const char *type_name,
+ const char *show_filename,
+ struct multi_files **multi_first,
+ struct multi_files **multi_last)
+{
+ struct multi_files *multi;
+ struct multi_files *multi_type;
+ struct multi_files *multi_name;
+
+ multi = calloc(1, sizeof(struct multi_files));
+ if(multi) {
+ multi->form.option = CURLFORM_FILE;
+ multi->form.value = file_name;
+ AppendNode(multi_first, multi_last, multi);
+ }
+ else {
+ FreeMultiInfo(multi_first, multi_last);
+ return NULL;
+ }
+
+ if(type_name) {
+ multi_type = calloc(1, sizeof(struct multi_files));
+ if(multi_type) {
+ multi_type->form.option = CURLFORM_CONTENTTYPE;
+ multi_type->form.value = type_name;
+ AppendNode(multi_first, multi_last, multi_type);
+ }
+ else {
+ FreeMultiInfo(multi_first, multi_last);
+ return NULL;
+ }
+ }
+
+ if(show_filename) {
+ multi_name = calloc(1, sizeof(struct multi_files));
+ if(multi_name) {
+ multi_name->form.option = CURLFORM_FILENAME;
+ multi_name->form.value = show_filename;
+ AppendNode(multi_first, multi_last, multi_name);
+ }
+ else {
+ FreeMultiInfo(multi_first, multi_last);
+ return NULL;
+ }
+ }
+
+ return *multi_last;
+}
+
+/*
+ * FreeMultiInfo: Free the items of the list.
+ */
+
+void FreeMultiInfo(struct multi_files **multi_first,
+ struct multi_files **multi_last)
+{
+ struct multi_files *next;
+ struct multi_files *item = *multi_first;
+
+ while(item) {
+ next = item->next;
+ Curl_safefree(item);
+ item = next;
+ }
+ *multi_first = NULL;
+ if(multi_last)
+ *multi_last = NULL;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_mfiles.h b/external/libcurl_android/jni/libcurl/src/tool_mfiles.h
new file mode 100755
index 00000000..1ea6f4a4
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_mfiles.h
@@ -0,0 +1,46 @@
+#ifndef HEADER_CURL_TOOL_MFILES_H
+#define HEADER_CURL_TOOL_MFILES_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+/*
+ * Structure for storing the information needed to build
+ * a multiple files section.
+ */
+
+struct multi_files {
+ struct curl_forms form;
+ struct multi_files *next;
+};
+
+struct multi_files *AddMultiFiles(const char *file_name,
+ const char *type_name,
+ const char *show_filename,
+ struct multi_files **multi_first,
+ struct multi_files **multi_last);
+
+void FreeMultiInfo(struct multi_files **multi_first,
+ struct multi_files **multi_last);
+
+#endif /* HEADER_CURL_TOOL_MFILES_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_msgs.c b/external/libcurl_android/jni/libcurl/src/tool_msgs.c
new file mode 100755
index 00000000..3311b55f
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_msgs.c
@@ -0,0 +1,100 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#define WARN_PREFIX "Warning: "
+#define WARN_TEXTWIDTH (79 - (int)strlen(WARN_PREFIX))
+
+/*
+ * Emit warning formatted message on configured 'errors' stream unless
+ * mute (--silent) was selected.
+ */
+
+void warnf(struct OperationConfig *config, const char *fmt, ...)
+{
+ if(!config->global->mute) {
+ va_list ap;
+ int len;
+ char *ptr;
+ char print_buffer[256];
+
+ va_start(ap, fmt);
+ len = vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap);
+ va_end(ap);
+
+ ptr = print_buffer;
+ while(len > 0) {
+ fputs(WARN_PREFIX, config->global->errors);
+
+ if(len > (int)WARN_TEXTWIDTH) {
+ int cut = WARN_TEXTWIDTH-1;
+
+ while(!ISSPACE(ptr[cut]) && cut) {
+ cut--;
+ }
+ if(0 == cut)
+ /* not a single cutting position was found, just cut it at the
+ max text width then! */
+ cut = WARN_TEXTWIDTH-1;
+
+ (void)fwrite(ptr, cut + 1, 1, config->global->errors);
+ fputs("\n", config->global->errors);
+ ptr += cut+1; /* skip the space too */
+ len -= cut;
+ }
+ else {
+ fputs(ptr, config->global->errors);
+ len = 0;
+ }
+ }
+ }
+}
+
+/*
+ * Emit help formatted message on given stream.
+ */
+
+void helpf(FILE *errors, const char *fmt, ...)
+{
+ va_list ap;
+ if(fmt) {
+ va_start(ap, fmt);
+ fputs("curl: ", errors); /* prefix it */
+ vfprintf(errors, fmt, ap);
+ va_end(ap);
+ }
+ fprintf(errors, "curl: try 'curl --help' "
+#ifdef USE_MANUAL
+ "or 'curl --manual' "
+#endif
+ "for more information\n");
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_msgs.h b/external/libcurl_android/jni/libcurl/src/tool_msgs.h
new file mode 100755
index 00000000..15754690
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_msgs.h
@@ -0,0 +1,31 @@
+#ifndef HEADER_CURL_TOOL_MSGS_H
+#define HEADER_CURL_TOOL_MSGS_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+void warnf(struct OperationConfig *config, const char *fmt, ...);
+
+void helpf(FILE *errors, const char *fmt, ...);
+
+#endif /* HEADER_CURL_TOOL_MSGS_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_operate.c b/external/libcurl_android/jni/libcurl/src/tool_operate.c
new file mode 100755
index 00000000..fd2fd6dd
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_operate.c
@@ -0,0 +1,1858 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#elif defined(HAVE_SYS_UTIME_H)
+# include <sys/utime.h>
+#endif
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+#ifdef HAVE_NETINET_TCP_H
+# include <netinet/tcp.h>
+#endif
+
+#ifdef __VMS
+# include <fabdef.h>
+#endif
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_binmode.h"
+#include "tool_cfgable.h"
+#include "tool_cb_dbg.h"
+#include "tool_cb_hdr.h"
+#include "tool_cb_prg.h"
+#include "tool_cb_rea.h"
+#include "tool_cb_see.h"
+#include "tool_cb_wrt.h"
+#include "tool_dirhie.h"
+#include "tool_doswin.h"
+#include "tool_easysrc.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+#include "tool_homedir.h"
+#include "tool_libinfo.h"
+#include "tool_main.h"
+#include "tool_metalink.h"
+#include "tool_msgs.h"
+#include "tool_operate.h"
+#include "tool_operhlp.h"
+#include "tool_paramhlp.h"
+#include "tool_parsecfg.h"
+#include "tool_setopt.h"
+#include "tool_sleep.h"
+#include "tool_urlglob.h"
+#include "tool_util.h"
+#include "tool_writeenv.h"
+#include "tool_writeout.h"
+#include "tool_xattr.h"
+#include "tool_vms.h"
+#include "tool_help.h"
+#include "tool_hugehelp.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef CURLDEBUG
+/* libcurl's debug builds provide an extra function */
+CURLcode curl_easy_perform_ev(CURL *easy);
+#endif
+
+#define CURLseparator "--_curl_--"
+
+#ifndef O_BINARY
+/* since O_BINARY as used in bitmasks, setting it to zero makes it usable in
+ source code but yet it doesn't ruin anything */
+# define O_BINARY 0
+#endif
+
+#define CURL_CA_CERT_ERRORMSG1 \
+ "More details here: http://curl.haxx.se/docs/sslcerts.html\n\n" \
+ "curl performs SSL certificate verification by default, " \
+ "using a \"bundle\"\n" \
+ " of Certificate Authority (CA) public keys (CA certs). If the default\n" \
+ " bundle file isn't adequate, you can specify an alternate file\n" \
+ " using the --cacert option.\n"
+
+#define CURL_CA_CERT_ERRORMSG2 \
+ "If this HTTPS server uses a certificate signed by a CA represented in\n" \
+ " the bundle, the certificate verification probably failed due to a\n" \
+ " problem with the certificate (it might be expired, or the name might\n" \
+ " not match the domain name in the URL).\n" \
+ "If you'd like to turn off curl's verification of the certificate, use\n" \
+ " the -k (or --insecure) option.\n"
+
+static bool is_fatal_error(CURLcode code)
+{
+ switch(code) {
+ /* TODO: Should CURLE_SSL_CACERT be included as critical error ? */
+ case CURLE_FAILED_INIT:
+ case CURLE_OUT_OF_MEMORY:
+ case CURLE_UNKNOWN_OPTION:
+ case CURLE_FUNCTION_NOT_FOUND:
+ case CURLE_BAD_FUNCTION_ARGUMENT:
+ /* critical error */
+ return TRUE;
+ default:
+ break;
+ }
+
+ /* no error or not critical */
+ return FALSE;
+}
+
+#ifdef __VMS
+/*
+ * get_vms_file_size does what it takes to get the real size of the file
+ *
+ * For fixed files, find out the size of the EOF block and adjust.
+ *
+ * For all others, have to read the entire file in, discarding the contents.
+ * Most posted text files will be small, and binary files like zlib archives
+ * and CD/DVD images should be either a STREAM_LF format or a fixed format.
+ *
+ */
+static curl_off_t vms_realfilesize(const char * name,
+ const struct_stat * stat_buf)
+{
+ char buffer[8192];
+ curl_off_t count;
+ int ret_stat;
+ FILE * file;
+
+ file = fopen(name, "r");
+ if(file == NULL) {
+ return 0;
+ }
+ count = 0;
+ ret_stat = 1;
+ while(ret_stat > 0) {
+ ret_stat = fread(buffer, 1, sizeof(buffer), file);
+ if(ret_stat != 0)
+ count += ret_stat;
+ }
+ fclose(file);
+
+ return count;
+}
+
+/*
+ *
+ * VmsSpecialSize checks to see if the stat st_size can be trusted and
+ * if not to call a routine to get the correct size.
+ *
+ */
+static curl_off_t VmsSpecialSize(const char * name,
+ const struct_stat * stat_buf)
+{
+ switch(stat_buf->st_fab_rfm) {
+ case FAB$C_VAR:
+ case FAB$C_VFC:
+ return vms_realfilesize(name, stat_buf);
+ break;
+ default:
+ return stat_buf->st_size;
+ }
+}
+#endif /* __VMS */
+
+static CURLcode operate_do(struct GlobalConfig *global,
+ struct OperationConfig *config)
+{
+ char errorbuffer[CURL_ERROR_SIZE];
+ struct ProgressData progressbar;
+ struct getout *urlnode;
+
+ struct HdrCbData hdrcbdata;
+ struct OutStruct heads;
+
+ metalinkfile *mlfile_last = NULL;
+
+ CURL *curl = config->easy;
+ char *httpgetfields = NULL;
+
+ CURLcode res = CURLE_OK;
+ unsigned long li;
+
+ /* Save the values of noprogress and isatty to restore them later on */
+ bool orig_noprogress = global->noprogress;
+ bool orig_isatty = global->isatty;
+
+ errorbuffer[0] = '\0';
+
+ /* default headers output stream is stdout */
+ memset(&hdrcbdata, 0, sizeof(struct HdrCbData));
+ memset(&heads, 0, sizeof(struct OutStruct));
+ heads.stream = stdout;
+ heads.config = config;
+
+ /*
+ ** Beyond this point no return'ing from this function allowed.
+ ** Jump to label 'quit_curl' in order to abandon this function
+ ** from outside of nested loops further down below.
+ */
+
+ /* Check we have a url */
+ if(!config->url_list || !config->url_list->url) {
+ helpf(global->errors, "no URL specified!\n");
+ res = CURLE_FAILED_INIT;
+ goto quit_curl;
+ }
+
+ /* On WIN32 we can't set the path to curl-ca-bundle.crt
+ * at compile time. So we look here for the file in two ways:
+ * 1: look at the environment variable CURL_CA_BUNDLE for a path
+ * 2: if #1 isn't found, use the windows API function SearchPath()
+ * to find it along the app's path (includes app's dir and CWD)
+ *
+ * We support the environment variable thing for non-Windows platforms
+ * too. Just for the sake of it.
+ */
+ if(!config->cacert &&
+ !config->capath &&
+ !config->insecure_ok) {
+ char *env;
+ env = curlx_getenv("CURL_CA_BUNDLE");
+ if(env) {
+ config->cacert = strdup(env);
+ if(!config->cacert) {
+ curl_free(env);
+ helpf(global->errors, "out of memory\n");
+ res = CURLE_OUT_OF_MEMORY;
+ goto quit_curl;
+ }
+ }
+ else {
+ env = curlx_getenv("SSL_CERT_DIR");
+ if(env) {
+ config->capath = strdup(env);
+ if(!config->capath) {
+ curl_free(env);
+ helpf(global->errors, "out of memory\n");
+ res = CURLE_OUT_OF_MEMORY;
+ goto quit_curl;
+ }
+ }
+ else {
+ env = curlx_getenv("SSL_CERT_FILE");
+ if(env) {
+ config->cacert = strdup(env);
+ if(!config->cacert) {
+ curl_free(env);
+ helpf(global->errors, "out of memory\n");
+ res = CURLE_OUT_OF_MEMORY;
+ goto quit_curl;
+ }
+ }
+ }
+ }
+
+ if(env)
+ curl_free(env);
+#ifdef WIN32
+ else {
+ res = FindWin32CACert(config, "curl-ca-bundle.crt");
+ if(res)
+ goto quit_curl;
+ }
+#endif
+ }
+
+ if(config->postfields) {
+ if(config->use_httpget) {
+ /* Use the postfields data for a http get */
+ httpgetfields = strdup(config->postfields);
+ Curl_safefree(config->postfields);
+ if(!httpgetfields) {
+ helpf(global->errors, "out of memory\n");
+ res = CURLE_OUT_OF_MEMORY;
+ goto quit_curl;
+ }
+ if(SetHTTPrequest(config,
+ (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
+ &config->httpreq)) {
+ res = CURLE_FAILED_INIT;
+ goto quit_curl;
+ }
+ }
+ else {
+ if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq)) {
+ res = CURLE_FAILED_INIT;
+ goto quit_curl;
+ }
+ }
+ }
+
+ /* Single header file for all URLs */
+ if(config->headerfile) {
+ /* open file for output: */
+ if(!curlx_strequal(config->headerfile, "-")) {
+ FILE *newfile = fopen(config->headerfile, "wb");
+ if(!newfile) {
+ warnf(config, "Failed to open %s\n", config->headerfile);
+ res = CURLE_WRITE_ERROR;
+ goto quit_curl;
+ }
+ else {
+ heads.filename = config->headerfile;
+ heads.s_isreg = TRUE;
+ heads.fopened = TRUE;
+ heads.stream = newfile;
+ }
+ }
+ else {
+ /* always use binary mode for protocol header output */
+ set_binmode(heads.stream);
+ }
+ }
+
+ /*
+ ** Nested loops start here.
+ */
+
+ /* loop through the list of given URLs */
+
+ for(urlnode = config->url_list; urlnode; urlnode = urlnode->next) {
+
+ unsigned long up; /* upload file counter within a single upload glob */
+ char *infiles; /* might be a glob pattern */
+ char *outfiles;
+ unsigned long infilenum;
+ URLGlob *inglob;
+
+ int metalink = 0; /* nonzero for metalink download. */
+ metalinkfile *mlfile;
+ metalink_resource *mlres;
+
+ outfiles = NULL;
+ infilenum = 1;
+ inglob = NULL;
+
+ if(urlnode->flags & GETOUT_METALINK) {
+ metalink = 1;
+ if(mlfile_last == NULL) {
+ mlfile_last = config->metalinkfile_list;
+ }
+ mlfile = mlfile_last;
+ mlfile_last = mlfile_last->next;
+ mlres = mlfile->resource;
+ }
+ else {
+ mlfile = NULL;
+ mlres = NULL;
+ }
+
+ /* urlnode->url is the full URL (it might be NULL) */
+
+ if(!urlnode->url) {
+ /* This node has no URL. Free node data without destroying the
+ node itself nor modifying next pointer and continue to next */
+ Curl_safefree(urlnode->outfile);
+ Curl_safefree(urlnode->infile);
+ urlnode->flags = 0;
+ continue; /* next URL please */
+ }
+
+ /* save outfile pattern before expansion */
+ if(urlnode->outfile) {
+ outfiles = strdup(urlnode->outfile);
+ if(!outfiles) {
+ helpf(global->errors, "out of memory\n");
+ res = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ }
+
+ infiles = urlnode->infile;
+
+ if(!config->globoff && infiles) {
+ /* Unless explicitly shut off */
+ res = (CURLcode) glob_url(&inglob, infiles, &infilenum,
+ global->showerror?global->errors:NULL);
+ if(res) {
+ Curl_safefree(outfiles);
+ break;
+ }
+ }
+
+ /* Here's the loop for uploading multiple files within the same
+ single globbed string. If no upload, we enter the loop once anyway. */
+ for(up = 0 ; up < infilenum; up++) {
+
+ char *uploadfile; /* a single file, never a glob */
+ int separator;
+ URLGlob *urls;
+ unsigned long urlnum;
+
+ uploadfile = NULL;
+ urls = NULL;
+ urlnum = 0;
+
+ if(!up && !infiles)
+ Curl_nop_stmt;
+ else {
+ if(inglob) {
+ res = (CURLcode) glob_next_url(&uploadfile, inglob);
+ if(res == CURLE_OUT_OF_MEMORY)
+ helpf(global->errors, "out of memory\n");
+ }
+ else if(!up) {
+ uploadfile = strdup(infiles);
+ if(!uploadfile) {
+ helpf(global->errors, "out of memory\n");
+ res = CURLE_OUT_OF_MEMORY;
+ }
+ }
+ else
+ uploadfile = NULL;
+ if(!uploadfile)
+ break;
+ }
+
+ if(metalink) {
+ /* For Metalink download, we don't use glob. Instead we use
+ the number of resources as urlnum. */
+ urlnum = count_next_metalink_resource(mlfile);
+ }
+ else
+ if(!config->globoff) {
+ /* Unless explicitly shut off, we expand '{...}' and '[...]'
+ expressions and return total number of URLs in pattern set */
+ res = (CURLcode) glob_url(&urls, urlnode->url, &urlnum,
+ global->showerror?global->errors:NULL);
+ if(res) {
+ Curl_safefree(uploadfile);
+ break;
+ }
+ }
+ else
+ urlnum = 1; /* without globbing, this is a single URL */
+
+ /* if multiple files extracted to stdout, insert separators! */
+ separator= ((!outfiles || curlx_strequal(outfiles, "-")) && urlnum > 1);
+
+ /* Here's looping around each globbed URL */
+ for(li = 0 ; li < urlnum; li++) {
+
+ int infd;
+ bool infdopen;
+ char *outfile;
+ struct OutStruct outs;
+ struct InStruct input;
+ struct timeval retrystart;
+ curl_off_t uploadfilesize;
+ long retry_numretries;
+ long retry_sleep_default;
+ long retry_sleep;
+ char *this_url = NULL;
+ int metalink_next_res = 0;
+
+ outfile = NULL;
+ infdopen = FALSE;
+ infd = STDIN_FILENO;
+ uploadfilesize = -1; /* -1 means unknown */
+
+ /* default output stream is stdout */
+ memset(&outs, 0, sizeof(struct OutStruct));
+ outs.stream = stdout;
+ outs.config = config;
+
+ if(metalink) {
+ /* For Metalink download, use name in Metalink file as
+ filename. */
+ outfile = strdup(mlfile->filename);
+ if(!outfile) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ this_url = strdup(mlres->url);
+ if(!this_url) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ }
+ else {
+ if(urls) {
+ res = (CURLcode) glob_next_url(&this_url, urls);
+ if(res)
+ goto show_error;
+ }
+ else if(!li) {
+ this_url = strdup(urlnode->url);
+ if(!this_url) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ }
+ else
+ this_url = NULL;
+ if(!this_url)
+ break;
+
+ if(outfiles) {
+ outfile = strdup(outfiles);
+ if(!outfile) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ }
+ }
+
+ if(((urlnode->flags&GETOUT_USEREMOTE) ||
+ (outfile && !curlx_strequal("-", outfile))) &&
+ (metalink || !config->use_metalink)) {
+
+ /*
+ * We have specified a file name to store the result in, or we have
+ * decided we want to use the remote file name.
+ */
+
+ if(!outfile) {
+ /* extract the file name from the URL */
+ res = get_url_file_name(&outfile, this_url);
+ if(res)
+ goto show_error;
+ if((!outfile || !*outfile) && !config->content_disposition) {
+ helpf(global->errors, "Remote file name has no length!\n");
+ res = CURLE_WRITE_ERROR;
+ goto quit_urls;
+ }
+#if defined(MSDOS) || defined(WIN32)
+ /* For DOS and WIN32, we do some major replacing of
+ bad characters in the file name before using it */
+ outfile = sanitize_dos_name(outfile);
+ if(!outfile) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+#endif /* MSDOS || WIN32 */
+ }
+ else if(urls) {
+ /* fill '#1' ... '#9' terms from URL pattern */
+ char *storefile = outfile;
+ res = (CURLcode) glob_match_url(&outfile, storefile, urls);
+ Curl_safefree(storefile);
+ if(res) {
+ /* bad globbing */
+ warnf(config, "bad output glob!\n");
+ goto quit_urls;
+ }
+ }
+
+ /* Create the directory hierarchy, if not pre-existent to a multiple
+ file output call */
+
+ if(config->create_dirs || metalink) {
+ res = create_dir_hierarchy(outfile, global->errors);
+ /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
+ if(res == CURLE_WRITE_ERROR)
+ goto quit_urls;
+ if(res) {
+ goto show_error;
+ }
+ }
+
+ if((urlnode->flags & GETOUT_USEREMOTE)
+ && config->content_disposition) {
+ /* Our header callback MIGHT set the filename */
+ DEBUGASSERT(!outs.filename);
+ }
+
+ if(config->resume_from_current) {
+ /* We're told to continue from where we are now. Get the size
+ of the file as it is now and open it for append instead */
+ struct_stat fileinfo;
+ /* VMS -- Danger, the filesize is only valid for stream files */
+ if(0 == stat(outfile, &fileinfo))
+ /* set offset to current file size: */
+ config->resume_from = fileinfo.st_size;
+ else
+ /* let offset be 0 */
+ config->resume_from = 0;
+ }
+
+ if(config->resume_from) {
+#ifdef __VMS
+ /* open file for output, forcing VMS output format into stream
+ mode which is needed for stat() call above to always work. */
+ FILE *file = fopen(outfile, config->resume_from?"ab":"wb",
+ "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
+#else
+ /* open file for output: */
+ FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
+#endif
+ if(!file) {
+ helpf(global->errors, "Can't open '%s'!\n", outfile);
+ res = CURLE_WRITE_ERROR;
+ goto quit_urls;
+ }
+ outs.fopened = TRUE;
+ outs.stream = file;
+ outs.init = config->resume_from;
+ }
+ else {
+ outs.stream = NULL; /* open when needed */
+ }
+ outs.filename = outfile;
+ outs.s_isreg = TRUE;
+ }
+
+ if(uploadfile && !stdin_upload(uploadfile)) {
+ /*
+ * We have specified a file to upload and it isn't "-".
+ */
+ struct_stat fileinfo;
+
+ this_url = add_file_name_to_url(curl, this_url, uploadfile);
+ if(!this_url) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ /* VMS Note:
+ *
+ * Reading binary from files can be a problem... Only FIXED, VAR
+ * etc WITHOUT implied CC will work Others need a \n appended to a
+ * line
+ *
+ * - Stat gives a size but this is UNRELIABLE in VMS As a f.e. a
+ * fixed file with implied CC needs to have a byte added for every
+ * record processed, this can by derived from Filesize & recordsize
+ * for VARiable record files the records need to be counted! for
+ * every record add 1 for linefeed and subtract 2 for the record
+ * header for VARIABLE header files only the bare record data needs
+ * to be considered with one appended if implied CC
+ */
+#ifdef __VMS
+ /* Calculate the real upload site for VMS */
+ infd = -1;
+ if(stat(uploadfile, &fileinfo) == 0) {
+ fileinfo.st_size = VmsSpecialSize(uploadfile, &fileinfo);
+ switch (fileinfo.st_fab_rfm) {
+ case FAB$C_VAR:
+ case FAB$C_VFC:
+ case FAB$C_STMCR:
+ infd = open(uploadfile, O_RDONLY | O_BINARY);
+ break;
+ default:
+ infd = open(uploadfile, O_RDONLY | O_BINARY,
+ "rfm=stmlf", "ctx=stm");
+ }
+ }
+ if(infd == -1)
+#else
+ infd = open(uploadfile, O_RDONLY | O_BINARY);
+ if((infd == -1) || fstat(infd, &fileinfo))
+#endif
+ {
+ helpf(global->errors, "Can't open '%s'!\n", uploadfile);
+ if(infd != -1) {
+ close(infd);
+ infd = STDIN_FILENO;
+ }
+ res = CURLE_READ_ERROR;
+ goto quit_urls;
+ }
+ infdopen = TRUE;
+
+ /* we ignore file size for char/block devices, sockets, etc. */
+ if(S_ISREG(fileinfo.st_mode))
+ uploadfilesize = fileinfo.st_size;
+
+ }
+ else if(uploadfile && stdin_upload(uploadfile)) {
+ /* count to see if there are more than one auth bit set
+ in the authtype field */
+ int authbits = 0;
+ int bitcheck = 0;
+ while(bitcheck < 32) {
+ if(config->authtype & (1UL << bitcheck++)) {
+ authbits++;
+ if(authbits > 1) {
+ /* more than one, we're done! */
+ break;
+ }
+ }
+ }
+
+ /*
+ * If the user has also selected --anyauth or --proxy-anyauth
+ * we should warn him/her.
+ */
+ if(config->proxyanyauth || (authbits>1)) {
+ warnf(config,
+ "Using --anyauth or --proxy-anyauth with upload from stdin"
+ " involves a big risk of it not working. Use a temporary"
+ " file or a fixed auth type instead!\n");
+ }
+
+ DEBUGASSERT(infdopen == FALSE);
+ DEBUGASSERT(infd == STDIN_FILENO);
+
+ set_binmode(stdin);
+ if(curlx_strequal(uploadfile, ".")) {
+ if(curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
+ warnf(config,
+ "fcntl failed on fd=%d: %s\n", infd, strerror(errno));
+ }
+ }
+
+ if(uploadfile && config->resume_from_current)
+ config->resume_from = -1; /* -1 will then force get-it-yourself */
+
+ if(output_expected(this_url, uploadfile) && outs.stream &&
+ isatty(fileno(outs.stream)))
+ /* we send the output to a tty, therefore we switch off the progress
+ meter */
+ global->noprogress = global->isatty = TRUE;
+ else {
+ /* progress meter is per download, so restore config
+ values */
+ global->noprogress = orig_noprogress;
+ global->isatty = orig_isatty;
+ }
+
+ if(urlnum > 1 && !global->mute) {
+ fprintf(global->errors, "\n[%lu/%lu]: %s --> %s\n",
+ li+1, urlnum, this_url, outfile ? outfile : "<stdout>");
+ if(separator)
+ printf("%s%s\n", CURLseparator, this_url);
+ }
+ if(httpgetfields) {
+ char *urlbuffer;
+ /* Find out whether the url contains a file name */
+ const char *pc = strstr(this_url, "://");
+ char sep = '?';
+ if(pc)
+ pc += 3;
+ else
+ pc = this_url;
+
+ pc = strrchr(pc, '/'); /* check for a slash */
+
+ if(pc) {
+ /* there is a slash present in the URL */
+
+ if(strchr(pc, '?'))
+ /* Ouch, there's already a question mark in the URL string, we
+ then append the data with an ampersand separator instead! */
+ sep='&';
+ }
+ /*
+ * Then append ? followed by the get fields to the url.
+ */
+ if(pc)
+ urlbuffer = aprintf("%s%c%s", this_url, sep, httpgetfields);
+ else
+ /* Append / before the ? to create a well-formed url
+ if the url contains a hostname only
+ */
+ urlbuffer = aprintf("%s/?%s", this_url, httpgetfields);
+
+ if(!urlbuffer) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+
+ Curl_safefree(this_url); /* free previous URL */
+ this_url = urlbuffer; /* use our new URL instead! */
+ }
+
+ if(!global->errors)
+ global->errors = stderr;
+
+ if((!outfile || !strcmp(outfile, "-")) && !config->use_ascii) {
+ /* We get the output to stdout and we have not got the ASCII/text
+ flag, then set stdout to be binary */
+ set_binmode(stdout);
+ }
+
+ if(config->tcp_nodelay)
+ my_setopt(curl, CURLOPT_TCP_NODELAY, 1L);
+
+ /* where to store */
+ my_setopt(curl, CURLOPT_WRITEDATA, &outs);
+ if(metalink || !config->use_metalink)
+ /* what call to write */
+ my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb);
+#ifdef USE_METALINK
+ else
+ /* Set Metalink specific write callback function to parse
+ XML data progressively. */
+ my_setopt(curl, CURLOPT_WRITEFUNCTION, metalink_write_cb);
+#endif /* USE_METALINK */
+
+ /* for uploads */
+ input.fd = infd;
+ input.config = config;
+ /* Note that if CURLOPT_READFUNCTION is fread (the default), then
+ * lib/telnet.c will Curl_poll() on the input file descriptor
+ * rather then calling the READFUNCTION at regular intervals.
+ * The circumstances in which it is preferable to enable this
+ * behaviour, by omitting to set the READFUNCTION & READDATA options,
+ * have not been determined.
+ */
+ my_setopt(curl, CURLOPT_READDATA, &input);
+ /* what call to read */
+ my_setopt(curl, CURLOPT_READFUNCTION, tool_read_cb);
+
+ /* in 7.18.0, the CURLOPT_SEEKFUNCTION/DATA pair is taking over what
+ CURLOPT_IOCTLFUNCTION/DATA pair previously provided for seeking */
+ my_setopt(curl, CURLOPT_SEEKDATA, &input);
+ my_setopt(curl, CURLOPT_SEEKFUNCTION, tool_seek_cb);
+
+ if(config->recvpersecond)
+ /* tell libcurl to use a smaller sized buffer as it allows us to
+ make better sleeps! 7.9.9 stuff! */
+ my_setopt(curl, CURLOPT_BUFFERSIZE, (long)config->recvpersecond);
+
+ /* size of uploaded file: */
+ if(uploadfilesize != -1)
+ my_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
+ my_setopt_str(curl, CURLOPT_URL, this_url); /* what to fetch */
+ my_setopt(curl, CURLOPT_NOPROGRESS, global->noprogress?1L:0L);
+ if(config->no_body) {
+ my_setopt(curl, CURLOPT_NOBODY, 1L);
+ my_setopt(curl, CURLOPT_HEADER, 1L);
+ }
+ /* If --metalink is used, we ignore --include (headers in
+ output) option because mixing headers to the body will
+ confuse XML parser and/or hash check will fail. */
+ else if(!config->use_metalink)
+ my_setopt(curl, CURLOPT_HEADER, config->include_headers?1L:0L);
+
+ if(config->xoauth2_bearer)
+ my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->xoauth2_bearer);
+
+#if !defined(CURL_DISABLE_PROXY)
+ {
+ /* TODO: Make this a run-time check instead of compile-time one. */
+
+ my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
+ my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
+
+ /* new in libcurl 7.3 */
+ my_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, config->proxytunnel?1L:0L);
+
+ /* new in libcurl 7.5 */
+ if(config->proxy)
+ my_setopt_enum(curl, CURLOPT_PROXYTYPE, (long)config->proxyver);
+
+ /* new in libcurl 7.10 */
+ if(config->socksproxy) {
+ my_setopt_str(curl, CURLOPT_PROXY, config->socksproxy);
+ my_setopt_enum(curl, CURLOPT_PROXYTYPE, (long)config->socksver);
+ }
+
+ /* new in libcurl 7.10.6 */
+ if(config->proxyanyauth)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_ANY);
+ else if(config->proxynegotiate)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_GSSNEGOTIATE);
+ else if(config->proxyntlm)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_NTLM);
+ else if(config->proxydigest)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_DIGEST);
+ else if(config->proxybasic)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_BASIC);
+
+ /* new in libcurl 7.19.4 */
+ my_setopt(curl, CURLOPT_NOPROXY, config->noproxy);
+ }
+#endif
+
+ my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror?1L:0L);
+ my_setopt(curl, CURLOPT_UPLOAD, uploadfile?1L:0L);
+ my_setopt(curl, CURLOPT_DIRLISTONLY, config->dirlistonly?1L:0L);
+ my_setopt(curl, CURLOPT_APPEND, config->ftp_append?1L:0L);
+
+ if(config->netrc_opt)
+ my_setopt_enum(curl, CURLOPT_NETRC, (long)CURL_NETRC_OPTIONAL);
+ else if(config->netrc || config->netrc_file)
+ my_setopt_enum(curl, CURLOPT_NETRC, (long)CURL_NETRC_REQUIRED);
+ else
+ my_setopt_enum(curl, CURLOPT_NETRC, (long)CURL_NETRC_IGNORED);
+
+ if(config->netrc_file)
+ my_setopt(curl, CURLOPT_NETRC_FILE, config->netrc_file);
+
+ my_setopt(curl, CURLOPT_TRANSFERTEXT, config->use_ascii?1L:0L);
+ if(config->login_options)
+ my_setopt_str(curl, CURLOPT_LOGIN_OPTIONS, config->login_options);
+ my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
+ my_setopt_str(curl, CURLOPT_RANGE, config->range);
+ my_setopt(curl, CURLOPT_ERRORBUFFER, errorbuffer);
+ my_setopt(curl, CURLOPT_TIMEOUT_MS, (long)(config->timeout * 1000));
+
+ if(built_in_protos & CURLPROTO_HTTP) {
+
+ long postRedir = 0;
+
+ my_setopt(curl, CURLOPT_FOLLOWLOCATION,
+ config->followlocation?1L:0L);
+ my_setopt(curl, CURLOPT_UNRESTRICTED_AUTH,
+ config->unrestricted_auth?1L:0L);
+
+ switch(config->httpreq) {
+ case HTTPREQ_SIMPLEPOST:
+ my_setopt_str(curl, CURLOPT_POSTFIELDS,
+ config->postfields);
+ my_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,
+ config->postfieldsize);
+ break;
+ case HTTPREQ_POST:
+ my_setopt_httppost(curl, CURLOPT_HTTPPOST, config->httppost);
+ break;
+ default:
+ break;
+ }
+
+ my_setopt_str(curl, CURLOPT_REFERER, config->referer);
+ my_setopt(curl, CURLOPT_AUTOREFERER, config->autoreferer?1L:0L);
+ my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent);
+ my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);
+
+ /* new in libcurl 7.36.0 */
+ if(config->proxyheaders) {
+ my_setopt_slist(curl, CURLOPT_PROXYHEADER, config->proxyheaders);
+ my_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE);
+ }
+
+ /* new in libcurl 7.5 */
+ my_setopt(curl, CURLOPT_MAXREDIRS, config->maxredirs);
+
+ /* new in libcurl 7.9.1 */
+ if(config->httpversion)
+ my_setopt_enum(curl, CURLOPT_HTTP_VERSION, config->httpversion);
+
+ /* new in libcurl 7.10.6 (default is Basic) */
+ if(config->authtype)
+ my_setopt_bitmask(curl, CURLOPT_HTTPAUTH, (long)config->authtype);
+
+ /* curl 7.19.1 (the 301 version existed in 7.18.2),
+ 303 was added in 7.26.0 */
+ if(config->post301)
+ postRedir |= CURL_REDIR_POST_301;
+ if(config->post302)
+ postRedir |= CURL_REDIR_POST_302;
+ if(config->post303)
+ postRedir |= CURL_REDIR_POST_303;
+ my_setopt(curl, CURLOPT_POSTREDIR, postRedir);
+
+ /* new in libcurl 7.21.6 */
+ if(config->encoding)
+ my_setopt_str(curl, CURLOPT_ACCEPT_ENCODING, "");
+
+ /* new in libcurl 7.21.6 */
+ if(config->tr_encoding)
+ my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L);
+
+ } /* (built_in_protos & CURLPROTO_HTTP) */
+
+ my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
+ my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
+ config->low_speed_limit);
+ my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time);
+ my_setopt(curl, CURLOPT_MAX_SEND_SPEED_LARGE,
+ config->sendpersecond);
+ my_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE,
+ config->recvpersecond);
+
+ if(config->use_resume)
+ my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, config->resume_from);
+ else
+ my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, CURL_OFF_T_C(0));
+
+ my_setopt_str(curl, CURLOPT_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)) {
+
+ /* SSH and SSL private key uses same command-line option */
+ /* new in libcurl 7.16.1 */
+ my_setopt_str(curl, CURLOPT_SSH_PRIVATE_KEYFILE, config->key);
+ /* new in libcurl 7.16.1 */
+ my_setopt_str(curl, CURLOPT_SSH_PUBLIC_KEYFILE, config->pubkey);
+
+ /* new in libcurl 7.17.1: SSH host key md5 checking allows us
+ to fail if we are not talking to who we think we should */
+ my_setopt_str(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
+ config->hostpubmd5);
+ }
+
+ if(config->cacert)
+ my_setopt_str(curl, CURLOPT_CAINFO, config->cacert);
+ if(config->capath)
+ my_setopt_str(curl, CURLOPT_CAPATH, config->capath);
+ if(config->crlfile)
+ my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
+
+ if(curlinfo->features & CURL_VERSION_SSL) {
+ if(config->insecure_ok) {
+ my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+ my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ }
+ else {
+ my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+ /* libcurl default is strict verifyhost -> 2L */
+ /* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); */
+ }
+ }
+
+ if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
+ if(!config->insecure_ok) {
+ char *home;
+ char *file;
+ res = CURLE_OUT_OF_MEMORY;
+ home = homedir();
+ if(home) {
+ file = aprintf("%s/%sssh/known_hosts", home, DOT_CHAR);
+ if(file) {
+ /* new in curl 7.19.6 */
+ res = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, file);
+ curl_free(file);
+ if(res == CURLE_UNKNOWN_OPTION)
+ /* libssh2 version older than 1.1.1 */
+ res = CURLE_OK;
+ }
+ Curl_safefree(home);
+ }
+ if(res)
+ goto show_error;
+ }
+ }
+
+ if(config->no_body || config->remote_time) {
+ /* no body or use remote time */
+ my_setopt(curl, CURLOPT_FILETIME, 1L);
+ }
+
+ my_setopt(curl, CURLOPT_CRLF, config->crlf?1L:0L);
+ my_setopt_slist(curl, CURLOPT_QUOTE, config->quote);
+ my_setopt_slist(curl, CURLOPT_POSTQUOTE, config->postquote);
+ my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);
+
+#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
+ if(config->cookie)
+ my_setopt_str(curl, CURLOPT_COOKIE, config->cookie);
+
+ if(config->cookiefile)
+ my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile);
+
+ /* new in libcurl 7.9 */
+ if(config->cookiejar)
+ my_setopt_str(curl, CURLOPT_COOKIEJAR, config->cookiejar);
+
+ /* new in libcurl 7.9.7 */
+ my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
+#else
+ if(config->cookie || config->cookiefile || config->cookiejar) {
+ warnf(config, "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);
+ my_setopt(curl, CURLOPT_STDERR, global->errors);
+
+ /* three new ones in libcurl 7.3: */
+ my_setopt_str(curl, CURLOPT_INTERFACE, config->iface);
+ my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel);
+
+ progressbarinit(&progressbar, config);
+ if((global->progressmode == CURL_PROGRESS_BAR) &&
+ !global->noprogress && !global->mute) {
+ /* we want the alternative style, then we have to implement it
+ ourselves! */
+ my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb);
+ my_setopt(curl, CURLOPT_XFERINFODATA, &progressbar);
+ }
+
+ /* new in libcurl 7.24.0: */
+ if(config->dns_servers)
+ my_setopt_str(curl, CURLOPT_DNS_SERVERS, config->dns_servers);
+
+ /* new in libcurl 7.33.0: */
+ if(config->dns_interface)
+ my_setopt_str(curl, CURLOPT_DNS_INTERFACE, config->dns_interface);
+ if(config->dns_ipv4_addr)
+ my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP4, config->dns_ipv4_addr);
+ if(config->dns_ipv6_addr)
+ my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP6, config->dns_ipv6_addr);
+
+ /* new in libcurl 7.6.2: */
+ my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options);
+
+ /* new in libcurl 7.7: */
+ my_setopt_str(curl, CURLOPT_RANDOM_FILE, config->random_file);
+ my_setopt_str(curl, CURLOPT_EGDSOCKET, config->egd_file);
+ my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS,
+ (long)(config->connecttimeout * 1000));
+
+ if(config->cipher_list)
+ my_setopt_str(curl, CURLOPT_SSL_CIPHER_LIST, config->cipher_list);
+
+ /* new in libcurl 7.9.2: */
+ if(config->disable_epsv)
+ /* disable it */
+ my_setopt(curl, CURLOPT_FTP_USE_EPSV, 0L);
+
+ /* new in libcurl 7.10.5 */
+ if(config->disable_eprt)
+ /* disable it */
+ my_setopt(curl, CURLOPT_FTP_USE_EPRT, 0L);
+
+ if(global->tracetype != TRACE_NONE) {
+ my_setopt(curl, CURLOPT_DEBUGFUNCTION, tool_debug_cb);
+ my_setopt(curl, CURLOPT_DEBUGDATA, config);
+ my_setopt(curl, CURLOPT_VERBOSE, 1L);
+ }
+
+ /* new in curl 7.9.3 */
+ if(config->engine) {
+ res = res_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
+ if(res)
+ goto show_error;
+ my_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L);
+ }
+
+ /* new in curl 7.10.7, extended in 7.19.4 but this only sets 0 or 1 */
+ my_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
+ config->ftp_create_dirs?1L:0L);
+
+ /* new in curl 7.10.8 */
+ if(config->max_filesize)
+ my_setopt(curl, CURLOPT_MAXFILESIZE_LARGE,
+ config->max_filesize);
+
+ if(4 == config->ip_version)
+ my_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
+ else if(6 == config->ip_version)
+ my_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
+ else
+ my_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_WHATEVER);
+
+ /* new in curl 7.15.5 */
+ if(config->ftp_ssl_reqd)
+ my_setopt_enum(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
+
+ /* new in curl 7.11.0 */
+ else if(config->ftp_ssl)
+ my_setopt_enum(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_TRY);
+
+ /* new in curl 7.16.0 */
+ else if(config->ftp_ssl_control)
+ my_setopt_enum(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_CONTROL);
+
+ /* new in curl 7.16.1 */
+ if(config->ftp_ssl_ccc)
+ my_setopt_enum(curl, CURLOPT_FTP_SSL_CCC,
+ (long)config->ftp_ssl_ccc_mode);
+
+#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_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);
+
+ my_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, config->ignorecl?1L:0L);
+
+ /* curl 7.14.2 */
+ my_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, config->ftp_skip_ip?1L:0L);
+
+ /* curl 7.15.1 */
+ my_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long)config->ftp_filemethod);
+
+ /* curl 7.15.2 */
+ if(config->localport) {
+ my_setopt(curl, CURLOPT_LOCALPORT, (long)config->localport);
+ my_setopt_str(curl, CURLOPT_LOCALPORTRANGE,
+ (long)config->localportrange);
+ }
+
+ /* curl 7.15.5 */
+ my_setopt_str(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER,
+ config->ftp_alternative_to_user);
+
+ /* curl 7.16.0 */
+ if(config->disable_sessionid)
+ /* disable it */
+ my_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L);
+
+ /* curl 7.16.2 */
+ if(config->raw) {
+ my_setopt(curl, CURLOPT_HTTP_CONTENT_DECODING, 0L);
+ my_setopt(curl, CURLOPT_HTTP_TRANSFER_DECODING, 0L);
+ }
+
+ /* curl 7.17.1 */
+ if(!config->nokeepalive) {
+ my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+ if(config->alivetime != 0) {
+#if !defined(TCP_KEEPIDLE) || !defined(TCP_KEEPINTVL)
+ warnf(config, "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);
+ }
+ }
+ else
+ my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 0L);
+
+ /* curl 7.20.0 */
+ if(config->tftp_blksize)
+ my_setopt(curl, CURLOPT_TFTP_BLKSIZE, config->tftp_blksize);
+
+ if(config->mail_from)
+ my_setopt_str(curl, CURLOPT_MAIL_FROM, config->mail_from);
+
+ if(config->mail_rcpt)
+ my_setopt_slist(curl, CURLOPT_MAIL_RCPT, config->mail_rcpt);
+
+ /* curl 7.20.x */
+ if(config->ftp_pret)
+ my_setopt(curl, CURLOPT_FTP_USE_PRET, 1L);
+
+ if(config->proto_present)
+ my_setopt_flags(curl, CURLOPT_PROTOCOLS, config->proto);
+ if(config->proto_redir_present)
+ my_setopt_flags(curl, CURLOPT_REDIR_PROTOCOLS, config->proto_redir);
+
+ if(config->content_disposition
+ && (urlnode->flags & GETOUT_USEREMOTE)
+ && (checkprefix("http://", this_url) ||
+ checkprefix("https://", this_url)))
+ hdrcbdata.honor_cd_filename = TRUE;
+ else
+ hdrcbdata.honor_cd_filename = FALSE;
+
+ hdrcbdata.outs = &outs;
+ hdrcbdata.heads = &heads;
+
+ my_setopt(curl, CURLOPT_HEADERFUNCTION, tool_header_cb);
+ my_setopt(curl, CURLOPT_HEADERDATA, &hdrcbdata);
+
+ if(config->resolve)
+ /* new in 7.21.3 */
+ my_setopt_slist(curl, CURLOPT_RESOLVE, config->resolve);
+
+ /* new in 7.21.4 */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
+ if(config->tls_username)
+ my_setopt_str(curl, CURLOPT_TLSAUTH_USERNAME,
+ config->tls_username);
+ if(config->tls_password)
+ my_setopt_str(curl, CURLOPT_TLSAUTH_PASSWORD,
+ config->tls_password);
+ if(config->tls_authtype)
+ my_setopt_str(curl, CURLOPT_TLSAUTH_TYPE,
+ config->tls_authtype);
+ }
+
+ /* new in 7.22.0 */
+ if(config->gssapi_delegation)
+ 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);
+
+ if(config->mail_auth)
+ my_setopt_str(curl, CURLOPT_MAIL_AUTH, config->mail_auth);
+
+ /* new in 7.31.0 */
+ if(config->sasl_ir)
+ my_setopt(curl, CURLOPT_SASL_IR, 1L);
+
+ if(config->nonpn) {
+ my_setopt(curl, CURLOPT_SSL_ENABLE_NPN, 0L);
+ }
+
+ if(config->noalpn) {
+ my_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L);
+ }
+
+ /* initialize retry vars for loop below */
+ retry_sleep_default = (config->retry_delay) ?
+ config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
+
+ retry_numretries = config->req_retry;
+ retry_sleep = retry_sleep_default; /* ms */
+ retrystart = tvnow();
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+ res = easysrc_perform();
+ if(res) {
+ goto show_error;
+ }
+#endif
+
+ for(;;) {
+#ifdef USE_METALINK
+ if(!metalink && config->use_metalink) {
+ /* If outs.metalink_parser is non-NULL, delete it first. */
+ if(outs.metalink_parser)
+ metalink_parser_context_delete(outs.metalink_parser);
+ outs.metalink_parser = metalink_parser_context_new();
+ if(outs.metalink_parser == NULL) {
+ res = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ fprintf(config->global->errors,
+ "Metalink: parsing (%s) metalink/XML...\n", this_url);
+ }
+ else if(metalink)
+ fprintf(config->global->errors,
+ "Metalink: fetching (%s) from (%s)...\n",
+ mlfile->filename, this_url);
+#endif /* USE_METALINK */
+
+#ifdef CURLDEBUG
+ if(config->test_event_based)
+ res = curl_easy_perform_ev(curl);
+ else
+#endif
+ res = curl_easy_perform(curl);
+
+ if(outs.is_cd_filename && outs.stream && !global->mute &&
+ outs.filename)
+ printf("curl: Saved to filename '%s'\n", outs.filename);
+
+ /* if retry-max-time is non-zero, make sure we haven't exceeded the
+ time */
+ if(retry_numretries &&
+ (!config->retry_maxtime ||
+ (tvdiff(tvnow(), retrystart) <
+ config->retry_maxtime*1000L)) ) {
+ enum {
+ RETRY_NO,
+ RETRY_TIMEOUT,
+ RETRY_HTTP,
+ RETRY_FTP,
+ RETRY_LAST /* not used */
+ } retry = RETRY_NO;
+ long response;
+ if((CURLE_OPERATION_TIMEDOUT == res) ||
+ (CURLE_COULDNT_RESOLVE_HOST == res) ||
+ (CURLE_COULDNT_RESOLVE_PROXY == res) ||
+ (CURLE_FTP_ACCEPT_TIMEOUT == res))
+ /* retry timeout always */
+ retry = RETRY_TIMEOUT;
+ else if((CURLE_OK == res) ||
+ (config->failonerror &&
+ (CURLE_HTTP_RETURNED_ERROR == res))) {
+ /* If it returned OK. _or_ failonerror was enabled and it
+ returned due to such an error, check for HTTP transient
+ errors to retry on. */
+ char *effective_url = NULL;
+ curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
+ if(effective_url &&
+ checkprefix("http", effective_url)) {
+ /* This was HTTP(S) */
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+
+ switch(response) {
+ case 500: /* Internal Server Error */
+ case 502: /* Bad Gateway */
+ case 503: /* Service Unavailable */
+ case 504: /* Gateway Timeout */
+ retry = RETRY_HTTP;
+ /*
+ * At this point, we have already written data to the output
+ * file (or terminal). If we write to a file, we must rewind
+ * or close/re-open the file so that the next attempt starts
+ * over from the beginning.
+ *
+ * TODO: similar action for the upload case. We might need
+ * to start over reading from a previous point if we have
+ * uploaded something when this was returned.
+ */
+ break;
+ }
+ }
+ } /* if CURLE_OK */
+ else if(res) {
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+
+ if(response/100 == 4)
+ /*
+ * This is typically when the FTP server only allows a certain
+ * amount of users and we are not one of them. All 4xx codes
+ * are transient.
+ */
+ retry = RETRY_FTP;
+ }
+
+ if(retry) {
+ static const char * const m[]={
+ NULL, "timeout", "HTTP error", "FTP error"
+ };
+ warnf(config, "Transient problem: %s "
+ "Will retry in %ld seconds. "
+ "%ld retries left.\n",
+ m[retry], retry_sleep/1000L, retry_numretries);
+
+ tool_go_sleep(retry_sleep);
+ retry_numretries--;
+ if(!config->retry_delay) {
+ retry_sleep *= 2;
+ if(retry_sleep > RETRY_SLEEP_MAX)
+ retry_sleep = RETRY_SLEEP_MAX;
+ }
+ if(outs.bytes && outs.filename) {
+ /* We have written data to a output file, we truncate file
+ */
+ if(!global->mute)
+ fprintf(global->errors, "Throwing away %"
+ CURL_FORMAT_CURL_OFF_T " bytes\n",
+ outs.bytes);
+ fflush(outs.stream);
+ /* truncate file at the position where we started appending */
+#ifdef HAVE_FTRUNCATE
+ if(ftruncate( fileno(outs.stream), outs.init)) {
+ /* when truncate fails, we can't just append as then we'll
+ create something strange, bail out */
+ if(!global->mute)
+ fprintf(global->errors,
+ "failed to truncate, exiting\n");
+ res = CURLE_WRITE_ERROR;
+ goto quit_urls;
+ }
+ /* now seek to the end of the file, the position where we
+ just truncated the file in a large file-safe way */
+ fseek(outs.stream, 0, SEEK_END);
+#else
+ /* ftruncate is not available, so just reposition the file
+ to the location we would have truncated it. This won't
+ work properly with large files on 32-bit systems, but
+ most of those will have ftruncate. */
+ fseek(outs.stream, (long)outs.init, SEEK_SET);
+#endif
+ outs.bytes = 0; /* clear for next round */
+ }
+ continue; /* curl_easy_perform loop */
+ }
+ } /* if retry_numretries */
+ else if(metalink) {
+ /* Metalink: Decide to try the next resource or
+ not. Basically, we want to try the next resource if
+ download was not successful. */
+ long response;
+ if(CURLE_OK == res) {
+ /* TODO We want to try next resource when download was
+ not successful. How to know that? */
+ char *effective_url = NULL;
+ curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
+ if(effective_url &&
+ curlx_strnequal(effective_url, "http", 4)) {
+ /* This was HTTP(S) */
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+ if(response != 200 && response != 206) {
+ metalink_next_res = 1;
+ fprintf(global->errors,
+ "Metalink: fetching (%s) from (%s) FAILED "
+ "(HTTP status code %d)\n",
+ mlfile->filename, this_url, response);
+ }
+ }
+ }
+ else {
+ metalink_next_res = 1;
+ fprintf(global->errors,
+ "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
+ mlfile->filename, this_url,
+ (errorbuffer[0]) ?
+ errorbuffer : curl_easy_strerror((CURLcode)res));
+ }
+ }
+ if(metalink && !metalink_next_res)
+ fprintf(global->errors, "Metalink: fetching (%s) from (%s) OK\n",
+ mlfile->filename, this_url);
+
+ /* In all ordinary cases, just break out of loop here */
+ break; /* curl_easy_perform loop */
+
+ }
+
+ if((global->progressmode == CURL_PROGRESS_BAR) &&
+ progressbar.calls)
+ /* if the custom progress bar has been displayed, we output a
+ newline here */
+ fputs("\n", progressbar.out);
+
+ if(config->writeout)
+ ourWriteOut(curl, &outs, config->writeout);
+
+ if(config->writeenv)
+ ourWriteEnv(curl);
+
+ /*
+ ** Code within this loop may jump directly here to label 'show_error'
+ ** in order to display an error message for CURLcode stored in 'res'
+ ** variable and exit loop once that necessary writing and cleanup
+ ** in label 'quit_urls' has been done.
+ */
+
+ show_error:
+
+#ifdef __VMS
+ if(is_vms_shell()) {
+ /* VMS DCL shell behavior */
+ if(!global->showerror)
+ vms_show = VMSSTS_HIDE;
+ }
+ else
+#endif
+ if(res && global->showerror) {
+ fprintf(global->errors, "curl: (%d) %s\n", res, (errorbuffer[0]) ?
+ errorbuffer : curl_easy_strerror((CURLcode)res));
+ if(res == CURLE_SSL_CACERT)
+ fprintf(global->errors, "%s%s",
+ CURL_CA_CERT_ERRORMSG1, CURL_CA_CERT_ERRORMSG2);
+ }
+
+ /* Fall through comment to 'quit_urls' label */
+
+ /*
+ ** Upon error condition and always that a message has already been
+ ** displayed, code within this loop may jump directly here to label
+ ** 'quit_urls' otherwise it should jump to 'show_error' label above.
+ **
+ ** When 'res' variable is _not_ CURLE_OK loop will exit once that
+ ** all code following 'quit_urls' has been executed. Otherwise it
+ ** will loop to the beginning from where it may exit if there are
+ ** no more urls left.
+ */
+
+ quit_urls:
+
+ /* Set file extended attributes */
+ if(!res && config->xattr && outs.fopened && outs.stream) {
+ int rc = fwrite_xattr(curl, fileno(outs.stream));
+ if(rc)
+ warnf(config, "Error setting extended attributes: %s\n",
+ strerror(errno));
+ }
+
+ /* Close the file */
+ if(outs.fopened && outs.stream) {
+ int rc = fclose(outs.stream);
+ if(!res && rc) {
+ /* something went wrong in the writing process */
+ res = CURLE_WRITE_ERROR;
+ fprintf(global->errors, "(%d) Failed writing body\n", res);
+ }
+ }
+ else if(!outs.s_isreg && outs.stream) {
+ /* Dump standard stream buffered data */
+ int rc = fflush(outs.stream);
+ if(!res && rc) {
+ /* something went wrong in the writing process */
+ res = CURLE_WRITE_ERROR;
+ fprintf(global->errors, "(%d) Failed writing body\n", res);
+ }
+ }
+
+#ifdef __AMIGA__
+ if(!res && outs.s_isreg && outs.filename) {
+ /* Set the url (up to 80 chars) as comment for the file */
+ if(strlen(url) > 78)
+ url[79] = '\0';
+ SetComment(outs.filename, url);
+ }
+#endif
+
+#ifdef HAVE_UTIME
+ /* File time can only be set _after_ the file has been closed */
+ if(!res && config->remote_time && outs.s_isreg && outs.filename) {
+ /* Ask libcurl if we got a remote file time */
+ long filetime = -1;
+ curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
+ if(filetime >= 0) {
+ struct utimbuf times;
+ times.actime = (time_t)filetime;
+ times.modtime = (time_t)filetime;
+ utime(outs.filename, &times); /* set the time we got */
+ }
+ }
+#endif
+
+#ifdef USE_METALINK
+ if(!metalink && config->use_metalink && res == CURLE_OK) {
+ int rv = parse_metalink(config, &outs, this_url);
+ if(rv == 0)
+ fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
+ this_url);
+ else if(rv == -1)
+ fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
+ this_url);
+ }
+ else if(metalink && res == CURLE_OK && !metalink_next_res) {
+ int rv = metalink_check_hash(global, mlfile, outs.filename);
+ if(rv == 0) {
+ metalink_next_res = 1;
+ }
+ }
+#endif /* USE_METALINK */
+
+ /* No more business with this output struct */
+ if(outs.alloc_filename)
+ Curl_safefree(outs.filename);
+#ifdef USE_METALINK
+ if(outs.metalink_parser)
+ metalink_parser_context_delete(outs.metalink_parser);
+#endif /* USE_METALINK */
+ memset(&outs, 0, sizeof(struct OutStruct));
+ hdrcbdata.outs = NULL;
+
+ /* Free loop-local allocated memory and close loop-local opened fd */
+
+ Curl_safefree(outfile);
+ Curl_safefree(this_url);
+
+ if(infdopen)
+ close(infd);
+
+ if(metalink) {
+ /* Should exit if error is fatal. */
+ if(is_fatal_error(res)) {
+ break;
+ }
+ if(!metalink_next_res)
+ break;
+ mlres = mlres->next;
+ if(mlres == NULL)
+ /* TODO If metalink_next_res is 1 and mlres is NULL,
+ * set res to error code
+ */
+ break;
+ }
+ else
+ if(urlnum > 1) {
+ /* when url globbing, exit loop upon critical error */
+ if(is_fatal_error(res))
+ break;
+ }
+ else if(res)
+ /* when not url globbing, exit loop upon any error */
+ break;
+
+ } /* loop to the next URL */
+
+ /* Free loop-local allocated memory */
+
+ Curl_safefree(uploadfile);
+
+ if(urls) {
+ /* Free list of remaining URLs */
+ glob_cleanup(urls);
+ urls = NULL;
+ }
+
+ if(infilenum > 1) {
+ /* when file globbing, exit loop upon critical error */
+ if(is_fatal_error(res))
+ break;
+ }
+ else if(res)
+ /* when not file globbing, exit loop upon any error */
+ break;
+
+ } /* loop to the next globbed upload file */
+
+ /* Free loop-local allocated memory */
+
+ Curl_safefree(outfiles);
+
+ if(inglob) {
+ /* Free list of globbed upload files */
+ glob_cleanup(inglob);
+ inglob = NULL;
+ }
+
+ /* Free this URL node data without destroying the
+ the node itself nor modifying next pointer. */
+ Curl_safefree(urlnode->url);
+ Curl_safefree(urlnode->outfile);
+ Curl_safefree(urlnode->infile);
+ urlnode->flags = 0;
+
+ /*
+ ** Bail out upon critical errors
+ */
+ if(is_fatal_error(res))
+ goto quit_curl;
+
+ } /* for-loop through all URLs */
+
+ /*
+ ** Nested loops end here.
+ */
+
+ quit_curl:
+
+ /* Reset the global config variables */
+ global->noprogress = orig_noprogress;
+ global->isatty = orig_isatty;
+
+ /* Free function-local referenced allocated memory */
+ Curl_safefree(httpgetfields);
+
+ /* Free list of given URLs */
+ clean_getout(config);
+
+ hdrcbdata.heads = NULL;
+
+ /* Close function-local opened file descriptors */
+ if(heads.fopened && heads.stream)
+ fclose(heads.stream);
+
+ if(heads.alloc_filename)
+ Curl_safefree(heads.filename);
+
+ /* Release metalink related resources here */
+ clean_metalink(config);
+
+ return res;
+}
+
+CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
+{
+ CURLcode result = CURLE_OK;
+
+ /* Setup proper locale from environment */
+#ifdef HAVE_SETLOCALE
+ setlocale(LC_ALL, "");
+#endif
+
+ /* Parse .curlrc if necessary */
+ if((argc == 1) || (!curlx_strequal(argv[1], "-q"))) {
+ parseconfig(NULL, config); /* ignore possible failure */
+
+ /* If we had no arguments then make sure a url was specified in .curlrc */
+ if((argc < 2) && (!config->first->url_list)) {
+ helpf(config->errors, NULL);
+ result = CURLE_FAILED_INIT;
+ }
+ }
+
+ if(!result) {
+ /* Parse the command line arguments */
+ ParameterError res = parse_args(config, argc, argv);
+ if(res) {
+ result = CURLE_OK;
+
+ /* Check if we were asked for the help */
+ if(res == PARAM_HELP_REQUESTED)
+ tool_help();
+ /* Check if we were asked for the manual */
+ else if(res == PARAM_MANUAL_REQUESTED)
+ hugehelp();
+ /* Check if we were asked for the version information */
+ else if(res == PARAM_VERSION_INFO_REQUESTED)
+ tool_version_info();
+ /* Check if we were asked to list the SSL engines */
+ else if(res == PARAM_ENGINES_REQUESTED)
+ tool_list_engines(config->easy);
+ else
+ result = CURLE_FAILED_INIT;
+ }
+ else {
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+ /* Initialise the libcurl source output */
+ result = easysrc_init();
+#endif
+
+ /* Perform the main operations */
+ if(!result) {
+ size_t count = 0;
+ struct OperationConfig *operation = config->first;
+
+ /* Get the required aguments for each operation */
+ while(!result && operation) {
+ result = get_args(operation, count++);
+
+ operation = operation->next;
+ }
+
+ /* Set the current operation pointer */
+ config->current = config->first;
+
+ /* Perform each operation */
+ while(!result && config->current) {
+ result = operate_do(config, config->current);
+
+ config->current = config->current->next;
+ }
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+ /* Cleanup the libcurl source output */
+ easysrc_cleanup();
+
+ /* Dump the libcurl code if previously enabled */
+ dumpeasysrc(config);
+#endif
+ }
+ else
+ helpf(config->errors, "out of memory\n");
+ }
+ }
+
+ return result;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_operate.h b/external/libcurl_android/jni/libcurl/src/tool_operate.h
new file mode 100755
index 00000000..1d5c1a96
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_operate.h
@@ -0,0 +1,29 @@
+#ifndef HEADER_CURL_TOOL_OPERATE_H
+#define HEADER_CURL_TOOL_OPERATE_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
+
+#endif /* HEADER_CURL_TOOL_OPERATE_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_operhlp.c b/external/libcurl_android/jni/libcurl/src/tool_operhlp.c
new file mode 100755
index 00000000..15eefabe
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_operhlp.c
@@ -0,0 +1,171 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_convert.h"
+#include "tool_operhlp.h"
+#include "tool_metalink.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void clean_getout(struct OperationConfig *config)
+{
+ struct getout *next;
+ struct getout *node = config->url_list;
+
+ while(node) {
+ next = node->next;
+ Curl_safefree(node->url);
+ Curl_safefree(node->outfile);
+ Curl_safefree(node->infile);
+ Curl_safefree(node);
+ node = next;
+ }
+ config->url_list = NULL;
+}
+
+bool output_expected(const char *url, const char *uploadfile)
+{
+ if(!uploadfile)
+ return TRUE; /* download */
+ if(checkprefix("http://", url) || checkprefix("https://", url))
+ return TRUE; /* HTTP(S) upload */
+
+ return FALSE; /* non-HTTP upload, probably no output should be expected */
+}
+
+bool stdin_upload(const char *uploadfile)
+{
+ return (curlx_strequal(uploadfile, "-") ||
+ curlx_strequal(uploadfile, ".")) ? TRUE : FALSE;
+}
+
+/*
+ * Adds the file name to the URL if it doesn't already have one.
+ * url will be freed before return if the returned pointer is different
+ */
+char *add_file_name_to_url(CURL *curl, char *url, const char *filename)
+{
+ /* If no file name part is given in the URL, we add this file name */
+ char *ptr = strstr(url, "://");
+ if(ptr)
+ ptr += 3;
+ else
+ ptr = url;
+ ptr = strrchr(ptr, '/');
+ if(!ptr || !strlen(++ptr)) {
+ /* The URL has no file name part, add the local file name. In order
+ to be able to do so, we have to create a new URL in another
+ buffer.*/
+
+ /* We only want the part of the local path that is on the right
+ side of the rightmost slash and backslash. */
+ const char *filep = strrchr(filename, '/');
+ char *file2 = strrchr(filep?filep:filename, '\\');
+ char *encfile;
+
+ if(file2)
+ filep = file2 + 1;
+ else if(filep)
+ filep++;
+ else
+ filep = filename;
+
+ /* URL encode the file name */
+ encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
+ if(encfile) {
+ char *urlbuffer;
+ if(ptr)
+ /* there is a trailing slash on the URL */
+ urlbuffer = aprintf("%s%s", url, encfile);
+ else
+ /* there is no trailing slash on the URL */
+ urlbuffer = aprintf("%s/%s", url, encfile);
+
+ curl_free(encfile);
+ Curl_safefree(url);
+
+ if(!urlbuffer)
+ return NULL;
+
+ url = urlbuffer; /* use our new URL instead! */
+ }
+ else
+ Curl_safefree(url);
+ }
+ return url;
+}
+
+/* Extracts the name portion of the URL.
+ * Returns a pointer to a heap-allocated string or NULL if
+ * no name part, at location indicated by first argument.
+ */
+CURLcode get_url_file_name(char **filename, const char *url)
+{
+ const char *pc;
+
+ *filename = NULL;
+
+ /* Find and get the remote file name */
+ pc = strstr(url, "://");
+ if(pc)
+ pc += 3;
+ else
+ pc = url;
+ pc = strrchr(pc, '/');
+
+ if(pc) {
+ /* duplicate the string beyond the slash */
+ pc++;
+ if(*pc) {
+ *filename = strdup(pc);
+ if(!*filename)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+
+ /* in case we built debug enabled, we allow an environment variable
+ * named CURL_TESTDIR to prefix the given file name to put it into a
+ * specific directory
+ */
+#ifdef DEBUGBUILD
+ {
+ char *tdir = curlx_getenv("CURL_TESTDIR");
+ if(tdir) {
+ char buffer[512]; /* suitably large */
+ snprintf(buffer, sizeof(buffer), "%s/%s", tdir, *filename);
+ Curl_safefree(*filename);
+ *filename = strdup(buffer); /* clone the buffer */
+ curl_free(tdir);
+ }
+ }
+#endif
+
+ return CURLE_OK;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_operhlp.h b/external/libcurl_android/jni/libcurl/src/tool_operhlp.h
new file mode 100755
index 00000000..8fcaad69
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_operhlp.h
@@ -0,0 +1,39 @@
+#ifndef HEADER_CURL_TOOL_OPERHLP_H
+#define HEADER_CURL_TOOL_OPERHLP_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+struct OperationConfig;
+
+void clean_getout(struct OperationConfig *config);
+
+bool output_expected(const char *url, const char *uploadfile);
+
+bool stdin_upload(const char *uploadfile);
+
+char *add_file_name_to_url(CURL *curl, char *url, const char *filename);
+
+CURLcode get_url_file_name(char **filename, const char *url);
+
+#endif /* HEADER_CURL_TOOL_OPERHLP_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_panykey.c b/external/libcurl_android/jni/libcurl/src/tool_panykey.c
new file mode 100755
index 00000000..d8718e32
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_panykey.c
@@ -0,0 +1,48 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#if defined(__SYMBIAN32__) || defined(NETWARE)
+
+#ifdef NETWARE
+# ifdef __NOVELL_LIBC__
+# include <screen.h>
+# else
+# include <nwconio.h>
+# endif
+#endif
+
+#include "tool_panykey.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void tool_pressanykey(void)
+{
+#if defined(__SYMBIAN32__)
+ getchar();
+#elif defined(NETWARE)
+ pressanykey();
+#endif
+}
+
+#endif /* __SYMBIAN32__ || NETWARE */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_panykey.h b/external/libcurl_android/jni/libcurl/src/tool_panykey.h
new file mode 100755
index 00000000..50b15d2d
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_panykey.h
@@ -0,0 +1,37 @@
+#ifndef HEADER_CURL_TOOL_PANYKEY_H
+#define HEADER_CURL_TOOL_PANYKEY_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#if defined(__SYMBIAN32__) || defined(NETWARE)
+
+void tool_pressanykey(void);
+
+#else
+
+#define tool_pressanykey() Curl_nop_stmt
+
+#endif
+
+#endif /* HEADER_CURL_TOOL_PANYKEY_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_paramhlp.c b/external/libcurl_android/jni/libcurl/src/tool_paramhlp.c
new file mode 100755
index 00000000..18da0265
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_paramhlp.c
@@ -0,0 +1,513 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "rawstr.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_getparam.h"
+#include "tool_getpass.h"
+#include "tool_homedir.h"
+#include "tool_msgs.h"
+#include "tool_paramhlp.h"
+#include "tool_version.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+struct getout *new_getout(struct OperationConfig *config)
+{
+ struct getout *node = calloc(1, sizeof(struct getout));
+ struct getout *last = config->url_last;
+ if(node) {
+ /* append this new node last in the list */
+ if(last)
+ last->next = node;
+ else
+ config->url_list = node; /* first node */
+
+ /* move the last pointer */
+ config->url_last = node;
+
+ node->flags = config->default_node_flags;
+ }
+ return node;
+}
+
+ParameterError file2string(char **bufp, FILE *file)
+{
+ char buffer[256];
+ char *ptr;
+ char *string = NULL;
+ size_t stringlen = 0;
+ size_t buflen;
+
+ if(file) {
+ while(fgets(buffer, sizeof(buffer), file)) {
+ if((ptr = strchr(buffer, '\r')) != NULL)
+ *ptr = '\0';
+ if((ptr = strchr(buffer, '\n')) != NULL)
+ *ptr = '\0';
+ buflen = strlen(buffer);
+ if((ptr = realloc(string, stringlen+buflen+1)) == NULL) {
+ Curl_safefree(string);
+ return PARAM_NO_MEM;
+ }
+ string = ptr;
+ strcpy(string+stringlen, buffer);
+ stringlen += buflen;
+ }
+ }
+ *bufp = string;
+ return PARAM_OK;
+}
+
+ParameterError file2memory(char **bufp, size_t *size, FILE *file)
+{
+ char *newbuf;
+ char *buffer = NULL;
+ size_t alloc = 512;
+ size_t nused = 0;
+ size_t nread;
+
+ if(file) {
+ do {
+ if(!buffer || (alloc == nused)) {
+ /* size_t overflow detection for huge files */
+ if(alloc+1 > ((size_t)-1)/2) {
+ Curl_safefree(buffer);
+ return PARAM_NO_MEM;
+ }
+ alloc *= 2;
+ /* allocate an extra char, reserved space, for null termination */
+ if((newbuf = realloc(buffer, alloc+1)) == NULL) {
+ Curl_safefree(buffer);
+ return PARAM_NO_MEM;
+ }
+ buffer = newbuf;
+ }
+ nread = fread(buffer+nused, 1, alloc-nused, file);
+ nused += nread;
+ } while(nread);
+ /* null terminate the buffer in case it's used as a string later */
+ buffer[nused] = '\0';
+ /* free trailing slack space, if possible */
+ if(alloc != nused) {
+ if((newbuf = realloc(buffer, nused+1)) == NULL) {
+ Curl_safefree(buffer);
+ return PARAM_NO_MEM;
+ }
+ buffer = newbuf;
+ }
+ /* discard buffer if nothing was read */
+ if(!nused) {
+ Curl_safefree(buffer); /* no string */
+ }
+ }
+ *size = nused;
+ *bufp = buffer;
+ return PARAM_OK;
+}
+
+void cleanarg(char *str)
+{
+#ifdef HAVE_WRITABLE_ARGV
+ /* now that GetStr has copied the contents of nextarg, wipe the next
+ * argument out so that the username:password isn't displayed in the
+ * system process list */
+ if(str) {
+ size_t len = strlen(str);
+ memset(str, ' ', len);
+ }
+#else
+ (void)str;
+#endif
+}
+
+/*
+ * Parse the string and write the long in the given address. Return PARAM_OK
+ * on success, otherwise a parameter specific error enum.
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2num(long *val, const char *str)
+{
+ if(str) {
+ char *endptr;
+ long num = strtol(str, &endptr, 10);
+ if((endptr != str) && (endptr == str + strlen(str))) {
+ *val = num;
+ return PARAM_OK; /* Ok */
+ }
+ }
+ return PARAM_BAD_NUMERIC; /* badness */
+}
+
+/*
+ * Parse the string and write the long in the given address. Return PARAM_OK
+ * on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2unum(long *val, const char *str)
+{
+ ParameterError result = str2num(val, str);
+ if(result != PARAM_OK)
+ return result;
+ if(*val < 0)
+ return PARAM_NEGATIVE_NUMERIC;
+
+ return PARAM_OK;
+}
+
+/*
+ * Parse the string and write the double in the given address. Return PARAM_OK
+ * on success, otherwise a parameter specific error enum.
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2double(double *val, const char *str)
+{
+ if(str) {
+ char *endptr;
+ double num = strtod(str, &endptr);
+ if((endptr != str) && (endptr == str + strlen(str))) {
+ *val = num;
+ return PARAM_OK; /* Ok */
+ }
+ }
+ return PARAM_BAD_NUMERIC; /* badness */
+}
+
+/*
+ * Parse the string and write the double in the given address. Return PARAM_OK
+ * on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2udouble(double *val, const char *str)
+{
+ ParameterError result = str2double(val, str);
+ if(result != PARAM_OK)
+ return result;
+ if(*val < 0)
+ return PARAM_NEGATIVE_NUMERIC;
+
+ return PARAM_OK;
+}
+
+/*
+ * Parse the string and modify the long in the given address. Return
+ * non-zero on failure, zero on success.
+ *
+ * The string is a list of protocols
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+long proto2num(struct OperationConfig *config, long *val, const char *str)
+{
+ char *buffer;
+ const char *sep = ",";
+ char *token;
+
+ static struct sprotos {
+ const char *name;
+ long bit;
+ } const protos[] = {
+ { "all", CURLPROTO_ALL },
+ { "http", CURLPROTO_HTTP },
+ { "https", CURLPROTO_HTTPS },
+ { "ftp", CURLPROTO_FTP },
+ { "ftps", CURLPROTO_FTPS },
+ { "scp", CURLPROTO_SCP },
+ { "sftp", CURLPROTO_SFTP },
+ { "telnet", CURLPROTO_TELNET },
+ { "ldap", CURLPROTO_LDAP },
+ { "ldaps", CURLPROTO_LDAPS },
+ { "dict", CURLPROTO_DICT },
+ { "file", CURLPROTO_FILE },
+ { "tftp", CURLPROTO_TFTP },
+ { "imap", CURLPROTO_IMAP },
+ { "imaps", CURLPROTO_IMAPS },
+ { "pop3", CURLPROTO_POP3 },
+ { "pop3s", CURLPROTO_POP3S },
+ { "smtp", CURLPROTO_SMTP },
+ { "smtps", CURLPROTO_SMTPS },
+ { "rtsp", CURLPROTO_RTSP },
+ { "gopher", CURLPROTO_GOPHER },
+ { NULL, 0 }
+ };
+
+ if(!str)
+ return 1;
+
+ buffer = strdup(str); /* because strtok corrupts it */
+ if(!buffer)
+ return 1;
+
+ for(token = strtok(buffer, sep);
+ token;
+ token = strtok(NULL, sep)) {
+ enum e_action { allow, deny, set } action = allow;
+
+ struct sprotos const *pp;
+
+ /* Process token modifiers */
+ while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
+ switch (*token++) {
+ case '=':
+ action = set;
+ break;
+ case '-':
+ action = deny;
+ break;
+ case '+':
+ action = allow;
+ break;
+ default: /* Includes case of terminating NULL */
+ Curl_safefree(buffer);
+ return 1;
+ }
+ }
+
+ for(pp=protos; pp->name; pp++) {
+ if(curlx_raw_equal(token, pp->name)) {
+ switch (action) {
+ case deny:
+ *val &= ~(pp->bit);
+ break;
+ case allow:
+ *val |= pp->bit;
+ break;
+ case set:
+ *val = pp->bit;
+ break;
+ }
+ break;
+ }
+ }
+
+ if(!(pp->name)) { /* unknown protocol */
+ /* If they have specified only this protocol, we say treat it as
+ if no protocols are allowed */
+ if(action == set)
+ *val = 0;
+ warnf(config, "unrecognized protocol '%s'\n", token);
+ }
+ }
+ Curl_safefree(buffer);
+ return 0;
+}
+
+/**
+ * Parses the given string looking for an offset (which may be a
+ * larger-than-integer value). The offset CANNOT be negative!
+ *
+ * @param val the offset to populate
+ * @param str the buffer containing the offset
+ * @return PARAM_OK if successful, a parameter specific error enum if failure.
+ */
+ParameterError str2offset(curl_off_t *val, const char *str)
+{
+ char *endptr;
+ if(str[0] == '-')
+ /* offsets aren't negative, this indicates weird input */
+ return PARAM_NEGATIVE_NUMERIC;
+
+#if(CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
+ *val = curlx_strtoofft(str, &endptr, 0);
+ if((*val == CURL_OFF_T_MAX || *val == CURL_OFF_T_MIN) && (ERRNO == ERANGE))
+ return PARAM_BAD_NUMERIC;
+#else
+ *val = strtol(str, &endptr, 0);
+ if((*val == LONG_MIN || *val == LONG_MAX) && ERRNO == ERANGE)
+ return PARAM_BAD_NUMERIC;
+#endif
+ if((endptr != str) && (endptr == str + strlen(str)))
+ return PARAM_OK;
+
+ return PARAM_BAD_NUMERIC;
+}
+
+static CURLcode checkpasswd(const char *kind, /* for what purpose */
+ const size_t i, /* operation index */
+ const bool last, /* TRUE if last operation */
+ char **userpwd) /* pointer to allocated string */
+{
+ char *psep;
+ char *osep;
+
+ if(!*userpwd)
+ return CURLE_OK;
+
+ /* Attempt to find the password separator */
+ psep = strchr(*userpwd, ':');
+
+ /* Attempt to find the options separator */
+ osep = strchr(*userpwd, ';');
+
+ if(!psep && **userpwd != ';') {
+ /* no password present, prompt for one */
+ char passwd[256] = "";
+ char prompt[256];
+ size_t passwdlen;
+ size_t userlen = strlen(*userpwd);
+ char *passptr;
+
+ if(osep)
+ *osep = '\0';
+
+ /* build a nice-looking prompt */
+ if(!i && last)
+ curlx_msnprintf(prompt, sizeof(prompt),
+ "Enter %s password for user '%s':",
+ kind, *userpwd);
+ else
+ curlx_msnprintf(prompt, sizeof(prompt),
+ "Enter %s password for user '%s' on URL #%"
+ CURL_FORMAT_CURL_OFF_TU ":",
+ kind, *userpwd, i + 1);
+
+ /* get password */
+ getpass_r(prompt, passwd, sizeof(passwd));
+ passwdlen = strlen(passwd);
+
+ if(osep)
+ *osep = ';';
+
+ /* extend the allocated memory area to fit the password too */
+ passptr = realloc(*userpwd,
+ passwdlen + 1 + /* an extra for the colon */
+ userlen + 1); /* an extra for the zero */
+ if(!passptr)
+ return CURLE_OUT_OF_MEMORY;
+
+ /* append the password separated with a colon */
+ passptr[userlen] = ':';
+ memcpy(&passptr[userlen+1], passwd, passwdlen+1);
+ *userpwd = passptr;
+ }
+
+ return CURLE_OK;
+}
+
+ParameterError add2list(struct curl_slist **list, const char *ptr)
+{
+ struct curl_slist *newlist = curl_slist_append(*list, ptr);
+ if(newlist)
+ *list = newlist;
+ else
+ return PARAM_NO_MEM;
+
+ return PARAM_OK;
+}
+
+int ftpfilemethod(struct OperationConfig *config, const char *str)
+{
+ if(curlx_raw_equal("singlecwd", str))
+ return CURLFTPMETHOD_SINGLECWD;
+ if(curlx_raw_equal("nocwd", str))
+ return CURLFTPMETHOD_NOCWD;
+ if(curlx_raw_equal("multicwd", str))
+ return CURLFTPMETHOD_MULTICWD;
+ warnf(config, "unrecognized ftp file method '%s', using default\n", str);
+ return CURLFTPMETHOD_MULTICWD;
+}
+
+int ftpcccmethod(struct OperationConfig *config, const char *str)
+{
+ if(curlx_raw_equal("passive", 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);
+ return CURLFTPSSL_CCC_PASSIVE;
+}
+
+long delegation(struct OperationConfig *config, char *str)
+{
+ if(curlx_raw_equal("none", str))
+ return CURLGSSAPI_DELEGATION_NONE;
+ if(curlx_raw_equal("policy", 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);
+ return CURLGSSAPI_DELEGATION_NONE;
+}
+
+/*
+ * my_useragent: returns allocated string with default user agent
+ */
+static char *my_useragent(void)
+{
+ return strdup(CURL_NAME "/" CURL_VERSION);
+}
+
+CURLcode get_args(struct OperationConfig *config, const size_t i)
+{
+ CURLcode result = CURLE_OK;
+ bool last = (config->next ? FALSE : TRUE);
+
+ /* Check we have a password for the given host user */
+ if(config->userpwd && !config->xoauth2_bearer) {
+ result = checkpasswd("host", i, last, &config->userpwd);
+ if(result)
+ return result;
+ }
+
+ /* Check we have a password for the given proxy user */
+ if(config->proxyuserpwd) {
+ result = checkpasswd("proxy", i, last, &config->proxyuserpwd);
+ if(result)
+ return result;
+ }
+
+ /* Check we have a user agent */
+ if(!config->useragent) {
+ config->useragent = my_useragent();
+ if(!config->useragent) {
+ helpf(config->global->errors, "out of memory\n");
+ result = CURLE_OUT_OF_MEMORY;
+ }
+ }
+
+ return result;
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_paramhlp.h b/external/libcurl_android/jni/libcurl/src/tool_paramhlp.h
new file mode 100755
index 00000000..69d7fd42
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_paramhlp.h
@@ -0,0 +1,54 @@
+#ifndef HEADER_CURL_TOOL_PARAMHLP_H
+#define HEADER_CURL_TOOL_PARAMHLP_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+struct getout *new_getout(struct OperationConfig *config);
+
+ParameterError file2string(char **bufp, FILE *file);
+
+ParameterError file2memory(char **bufp, size_t *size, FILE *file);
+
+void cleanarg(char *str);
+
+ParameterError str2num(long *val, const char *str);
+ParameterError str2unum(long *val, const char *str);
+ParameterError str2double(double *val, const char *str);
+ParameterError str2udouble(double *val, const char *str);
+
+long proto2num(struct OperationConfig *config, long *val, const char *str);
+
+ParameterError str2offset(curl_off_t *val, const char *str);
+
+CURLcode get_args(struct OperationConfig *config, const size_t i);
+
+ParameterError add2list(struct curl_slist **list, const char *ptr);
+
+int ftpfilemethod(struct OperationConfig *config, const char *str);
+
+int ftpcccmethod(struct OperationConfig *config, const char *str);
+
+long delegation(struct OperationConfig *config, char *str);
+
+#endif /* HEADER_CURL_TOOL_PARAMHLP_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_parsecfg.c b/external/libcurl_android/jni/libcurl/src/tool_parsecfg.c
new file mode 100755
index 00000000..7a161c3b
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_parsecfg.c
@@ -0,0 +1,362 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+#include "tool_homedir.h"
+#include "tool_msgs.h"
+#include "tool_parsecfg.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#define CURLRC DOT_CHAR "curlrc"
+
+/* only acknowledge colon or equals as separators if the option was not
+ specified with an initial dash! */
+#define ISSEP(x,dash) (!dash && (((x) == '=') || ((x) == ':')))
+
+static const char *unslashquote(const char *line, char *param);
+static char *my_get_line(FILE *fp);
+
+/* return 0 on everything-is-fine, and non-zero otherwise */
+int parseconfig(const char *filename, struct GlobalConfig *global)
+{
+ int res;
+ FILE *file;
+ char filebuffer[512];
+ bool usedarg;
+ char *home;
+ int rc = 0;
+ struct OperationConfig *operation = global->first;
+
+ if(!filename || !*filename) {
+ /* NULL or no file name attempts to load .curlrc from the homedir! */
+
+#ifndef __AMIGA__
+ filename = CURLRC; /* sensible default */
+ home = homedir(); /* portable homedir finder */
+ if(home) {
+ if(strlen(home) < (sizeof(filebuffer) - strlen(CURLRC))) {
+ snprintf(filebuffer, sizeof(filebuffer),
+ "%s%s%s", home, DIR_CHAR, CURLRC);
+
+#ifdef WIN32
+ /* Check if the file exists - if not, try CURLRC in the same
+ * directory as our executable
+ */
+ file = fopen(filebuffer, "r");
+ if(file != NULL) {
+ fclose(file);
+ filename = filebuffer;
+ }
+ else {
+ /* Get the filename of our executable. GetModuleFileName is
+ * already declared via inclusions done in setup header file.
+ * We assume that we are using the ASCII version here.
+ */
+ int n = GetModuleFileName(0, filebuffer, sizeof(filebuffer));
+ if(n > 0 && n < (int)sizeof(filebuffer)) {
+ /* We got a valid filename - get the directory part */
+ char *lastdirchar = strrchr(filebuffer, '\\');
+ if(lastdirchar) {
+ size_t remaining;
+ *lastdirchar = 0;
+ /* If we have enough space, build the RC filename */
+ remaining = sizeof(filebuffer) - strlen(filebuffer);
+ if(strlen(CURLRC) < remaining - 1) {
+ snprintf(lastdirchar, remaining,
+ "%s%s", DIR_CHAR, CURLRC);
+ /* Don't bother checking if it exists - we do
+ * that later
+ */
+ filename = filebuffer;
+ }
+ }
+ }
+ }
+#else /* WIN32 */
+ filename = filebuffer;
+#endif /* WIN32 */
+ }
+ Curl_safefree(home); /* we've used it, now free it */
+ }
+
+# else /* __AMIGA__ */
+ /* On AmigaOS all the config files are into env:
+ */
+ filename = "ENV:" CURLRC;
+
+#endif
+ }
+
+ if(strcmp(filename,"-"))
+ file = fopen(filename, "r");
+ else
+ file = stdin;
+
+ if(file) {
+ char *line;
+ char *aline;
+ char *option;
+ char *param;
+ int lineno = 0;
+ bool alloced_param;
+ bool dashed_option;
+
+ while(NULL != (aline = my_get_line(file))) {
+ lineno++;
+ line = aline;
+ alloced_param=FALSE;
+
+ /* line with # in the first non-blank column is a comment! */
+ while(*line && ISSPACE(*line))
+ line++;
+
+ switch(*line) {
+ case '#':
+ case '/':
+ case '\r':
+ case '\n':
+ case '*':
+ case '\0':
+ Curl_safefree(aline);
+ continue;
+ }
+
+ /* the option keywords starts here */
+ option = line;
+
+ /* the option starts with a dash? */
+ dashed_option = option[0]=='-'?TRUE:FALSE;
+
+ while(*line && !ISSPACE(*line) && !ISSEP(*line, dashed_option))
+ line++;
+ /* ... and has ended here */
+
+ if(*line)
+ *line++ = '\0'; /* zero terminate, we have a local copy of the data */
+
+#ifdef DEBUG_CONFIG
+ fprintf(stderr, "GOT: %s\n", option);
+#endif
+
+ /* pass spaces and separator(s) */
+ while(*line && (ISSPACE(*line) || ISSEP(*line, dashed_option)))
+ line++;
+
+ /* the parameter starts here (unless quoted) */
+ if(*line == '\"') {
+ /* quoted parameter, do the quote dance */
+ line++;
+ param = malloc(strlen(line) + 1); /* parameter */
+ if(!param) {
+ /* out of memory */
+ Curl_safefree(aline);
+ rc = 1;
+ break;
+ }
+ alloced_param = TRUE;
+ (void)unslashquote(line, param);
+ }
+ else {
+ 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++;
+
+ 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);
+ }
+ }
+
+ if(param && !*param) {
+ /* do this so getparameter can check for required parameters.
+ Otherwise it always thinks there's a parameter. */
+ if(alloced_param)
+ Curl_safefree(param);
+ param = NULL;
+ }
+
+#ifdef DEBUG_CONFIG
+ fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
+#endif
+ res = getparameter(option, param, &usedarg, global, operation);
+
+ if(param && *param && !usedarg)
+ /* we passed in a parameter that wasn't used! */
+ res = PARAM_GOT_EXTRA_PARAMETER;
+
+ if(res == PARAM_NEXT_OPERATION) {
+ if(operation->url_list && operation->url_list->url) {
+ /* Allocate the next config */
+ operation->next = malloc(sizeof(struct OperationConfig));
+ if(operation->next) {
+ /* Initialise the newly created config */
+ config_init(operation->next);
+
+ /* Copy the easy handle */
+ operation->next->easy = global->easy;
+
+ /* Set the global config pointer */
+ operation->next->global = global;
+
+ /* Update the last operation pointer */
+ global->last = operation->next;
+
+ /* Move onto the new config */
+ operation->next->prev = operation;
+ operation = operation->next;
+ }
+ else
+ res = PARAM_NO_MEM;
+ }
+ }
+
+ if(res != PARAM_OK && res != PARAM_NEXT_OPERATION) {
+ /* the help request isn't really an error */
+ if(!strcmp(filename, "-")) {
+ filename = (char *)"<stdin>";
+ }
+ if(res != PARAM_HELP_REQUESTED &&
+ res != PARAM_MANUAL_REQUESTED &&
+ res != PARAM_VERSION_INFO_REQUESTED &&
+ res != PARAM_ENGINES_REQUESTED) {
+ const char *reason = param2text(res);
+ warnf(operation, "%s:%d: warning: '%s' %s\n",
+ filename, lineno, option, reason);
+ }
+ }
+
+ if(alloced_param)
+ Curl_safefree(param);
+
+ Curl_safefree(aline);
+ }
+ if(file != stdin)
+ fclose(file);
+ }
+ else
+ rc = 1; /* couldn't open the file */
+
+ return rc;
+}
+
+/*
+ * Copies the string from line to the buffer at param, unquoting
+ * backslash-quoted characters and NUL-terminating the output string.
+ * Stops at the first non-backslash-quoted double quote character or the
+ * end of the input string. param must be at least as long as the input
+ * string. Returns the pointer after the last handled input character.
+ */
+static const char *unslashquote(const char *line, char *param)
+{
+ while(*line && (*line != '\"')) {
+ if(*line == '\\') {
+ char out;
+ line++;
+
+ /* default is to output the letter after the backslash */
+ switch(out = *line) {
+ case '\0':
+ continue; /* this'll break out of the loop */
+ case 't':
+ out = '\t';
+ break;
+ case 'n':
+ out = '\n';
+ break;
+ case 'r':
+ out = '\r';
+ break;
+ case 'v':
+ out = '\v';
+ break;
+ }
+ *param++ = out;
+ line++;
+ }
+ else
+ *param++ = *line++;
+ }
+ *param = '\0'; /* always zero terminate */
+ return line;
+}
+
+/*
+ * Reads a line from the given file, ensuring is NUL terminated.
+ * The pointer must be freed by the caller.
+ * NULL is returned on an out of memory condition.
+ */
+static char *my_get_line(FILE *fp)
+{
+ char buf[4096];
+ char *nl = NULL;
+ char *line = NULL;
+
+ do {
+ if(NULL == fgets(buf, sizeof(buf), fp))
+ break;
+ if(!line) {
+ line = strdup(buf);
+ if(!line)
+ return NULL;
+ }
+ else {
+ char *ptr;
+ size_t linelen = strlen(line);
+ ptr = realloc(line, linelen + strlen(buf) + 1);
+ if(!ptr) {
+ Curl_safefree(line);
+ return NULL;
+ }
+ line = ptr;
+ strcpy(&line[linelen], buf);
+ }
+ nl = strchr(line, '\n');
+ } while(!nl);
+
+ if(nl)
+ *nl = '\0';
+
+ return line;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_parsecfg.h b/external/libcurl_android/jni/libcurl/src/tool_parsecfg.h
new file mode 100755
index 00000000..c3b19d54
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_parsecfg.h
@@ -0,0 +1,29 @@
+#ifndef HEADER_CURL_TOOL_PARSECFG_H
+#define HEADER_CURL_TOOL_PARSECFG_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+int parseconfig(const char *filename, struct GlobalConfig *config);
+
+#endif /* HEADER_CURL_TOOL_PARSECFG_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_sdecls.h b/external/libcurl_android/jni/libcurl/src/tool_sdecls.h
new file mode 100755
index 00000000..e74020f7
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_sdecls.h
@@ -0,0 +1,153 @@
+#ifndef HEADER_CURL_TOOL_SDECLS_H
+#define HEADER_CURL_TOOL_SDECLS_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#ifdef USE_METALINK
+# include <metalink/metalink.h>
+#endif /* USE_METALINK */
+
+/*
+ * OutStruct variables keep track of information relative to curl's
+ * output writing, which may take place to a standard stream or a file.
+ *
+ * 'filename' member is either a pointer to a file name string or NULL
+ * when dealing with a standard stream.
+ *
+ * 'alloc_filename' member is TRUE when string pointed by 'filename' has been
+ * dynamically allocated and 'belongs' to this OutStruct, otherwise FALSE.
+ *
+ * 'is_cd_filename' member is TRUE when string pointed by 'filename' has been
+ * set using a server-specified Content-Disposition filename, otherwise FALSE.
+ *
+ * 's_isreg' member is TRUE when output goes to a regular file, this also
+ * implies that output is 'seekable' and 'appendable' and also that member
+ * 'filename' points to file name's string. For any standard stream member
+ * 's_isreg' will be FALSE.
+ *
+ * 'fopened' member is TRUE when output goes to a regular file and it
+ * has been fopen'ed, requiring it to be closed later on. In any other
+ * case this is FALSE.
+ *
+ * 'stream' member is a pointer to a stream controlling object as returned
+ * from a 'fopen' call or a standard stream.
+ *
+ * 'config' member is a pointer to associated 'OperationConfig' struct.
+ *
+ * 'bytes' member represents amount written so far.
+ *
+ * 'init' member holds original file size or offset at which truncation is
+ * taking place. Always zero unless appending to a non-empty regular file.
+ *
+ * 'metalink_parser' member is a pointer to Metalink XML parser
+ * context.
+ */
+
+struct OutStruct {
+ char *filename;
+ bool alloc_filename;
+ bool is_cd_filename;
+ bool s_isreg;
+ bool fopened;
+ FILE *stream;
+ struct OperationConfig *config;
+ curl_off_t bytes;
+ curl_off_t init;
+#ifdef USE_METALINK
+ metalink_parser_context_t *metalink_parser;
+#endif /* USE_METALINK */
+};
+
+
+/*
+ * InStruct variables keep track of information relative to curl's
+ * input reading, which may take place from stdin or from some file.
+ *
+ * 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
+ * or a file descriptor as returned from an 'open' call for some file.
+ *
+ * 'config' member is a pointer to associated 'OperationConfig' struct.
+ */
+
+struct InStruct {
+ int fd;
+ struct OperationConfig *config;
+};
+
+
+/*
+ * A linked list of these 'getout' nodes contain URL's to fetch,
+ * as well as information relative to where URL contents should
+ * be stored or which file should be uploaded.
+ */
+
+struct getout {
+ struct getout *next; /* next one */
+ char *url; /* the URL we deal with */
+ char *outfile; /* where to store the output */
+ char *infile; /* file to upload, if GETOUT_UPLOAD is set */
+ int flags; /* options - composed of GETOUT_* bits */
+};
+
+#define GETOUT_OUTFILE (1<<0) /* set when outfile is deemed done */
+#define GETOUT_URL (1<<1) /* set when URL is deemed done */
+#define GETOUT_USEREMOTE (1<<2) /* use remote file name locally */
+#define GETOUT_UPLOAD (1<<3) /* if set, -T has been used */
+#define GETOUT_NOUPLOAD (1<<4) /* if set, -T "" has been used */
+#define GETOUT_METALINK (1<<5) /* set when Metalink download */
+
+/*
+ * 'trace' enumeration represents curl's output look'n feel possibilities.
+ */
+
+typedef enum {
+ TRACE_NONE, /* no trace/verbose output at all */
+ TRACE_BIN, /* tcpdump inspired look */
+ TRACE_ASCII, /* like *BIN but without the hex output */
+ TRACE_PLAIN /* -v/--verbose type */
+} trace;
+
+
+/*
+ * 'HttpReq' enumeration represents HTTP request types.
+ */
+
+typedef enum {
+ HTTPREQ_UNSPEC, /* first in list */
+ HTTPREQ_GET,
+ HTTPREQ_HEAD,
+ HTTPREQ_POST,
+ HTTPREQ_SIMPLEPOST,
+ HTTPREQ_CUSTOM,
+ HTTPREQ_LAST /* last in list */
+} HttpReq;
+
+
+/*
+ * Complete struct declarations which have OperationConfig struct members,
+ * just in case this header is directly included in some source file.
+ */
+
+#include "tool_cfgable.h"
+
+#endif /* HEADER_CURL_TOOL_SDECLS_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_setopt.c b/external/libcurl_android/jni/libcurl/src/tool_setopt.c
new file mode 100755
index 00000000..62d94a65
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_setopt.c
@@ -0,0 +1,565 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_easysrc.h"
+#include "tool_setopt.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* Lookup tables for converting setopt values back to symbols */
+/* For enums, values may be in any order. */
+/* For bit masks, put combinations first, then single bits, */
+/* and finally any "NONE" value. */
+
+#define NV(e) {#e, e}
+#define NV1(e, v) {#e, (v)}
+#define NVEND {NULL, 0} /* sentinel to mark end of list */
+
+const NameValue setopt_nv_CURLPROXY[] = {
+ NV(CURLPROXY_HTTP),
+ NV(CURLPROXY_HTTP_1_0),
+ NV(CURLPROXY_SOCKS4),
+ NV(CURLPROXY_SOCKS5),
+ NV(CURLPROXY_SOCKS4A),
+ NV(CURLPROXY_SOCKS5_HOSTNAME),
+ NVEND,
+};
+
+const NameValueUnsigned setopt_nv_CURLAUTH[] = {
+ NV(CURLAUTH_ANY), /* combination */
+ NV(CURLAUTH_ANYSAFE), /* combination */
+ NV(CURLAUTH_BASIC),
+ NV(CURLAUTH_DIGEST),
+ NV(CURLAUTH_GSSNEGOTIATE),
+ NV(CURLAUTH_NTLM),
+ NV(CURLAUTH_DIGEST_IE),
+ NV(CURLAUTH_NTLM_WB),
+ NV(CURLAUTH_ONLY),
+ NV(CURLAUTH_NONE),
+ NVEND,
+};
+
+const NameValue setopt_nv_CURL_HTTP_VERSION[] = {
+ NV(CURL_HTTP_VERSION_NONE),
+ NV(CURL_HTTP_VERSION_1_0),
+ NV(CURL_HTTP_VERSION_1_1),
+ NVEND,
+};
+
+const NameValue setopt_nv_CURL_SSLVERSION[] = {
+ NV(CURL_SSLVERSION_DEFAULT),
+ NV(CURL_SSLVERSION_TLSv1),
+ NV(CURL_SSLVERSION_SSLv2),
+ NV(CURL_SSLVERSION_SSLv3),
+ NV(CURL_SSLVERSION_TLSv1_0),
+ NV(CURL_SSLVERSION_TLSv1_1),
+ NV(CURL_SSLVERSION_TLSv1_2),
+ NVEND,
+};
+
+const NameValue setopt_nv_CURL_TIMECOND[] = {
+ NV(CURL_TIMECOND_IFMODSINCE),
+ NV(CURL_TIMECOND_IFUNMODSINCE),
+ NV(CURL_TIMECOND_LASTMOD),
+ NV(CURL_TIMECOND_NONE),
+ NVEND,
+};
+
+const NameValue setopt_nv_CURLFTPSSL_CCC[] = {
+ NV(CURLFTPSSL_CCC_NONE),
+ NV(CURLFTPSSL_CCC_PASSIVE),
+ NV(CURLFTPSSL_CCC_ACTIVE),
+ NVEND,
+};
+
+const NameValue setopt_nv_CURLUSESSL[] = {
+ NV(CURLUSESSL_NONE),
+ NV(CURLUSESSL_TRY),
+ NV(CURLUSESSL_CONTROL),
+ NV(CURLUSESSL_ALL),
+ NVEND,
+};
+
+const NameValue setopt_nv_CURL_NETRC[] = {
+ NV(CURL_NETRC_IGNORED),
+ NV(CURL_NETRC_OPTIONAL),
+ NV(CURL_NETRC_REQUIRED),
+ NVEND,
+};
+
+/* These mappings essentially triplicated - see
+ * tool_libinfo.c and tool_paramhlp.c */
+const NameValue setopt_nv_CURLPROTO[] = {
+ NV(CURLPROTO_ALL), /* combination */
+ NV(CURLPROTO_DICT),
+ NV(CURLPROTO_FILE),
+ NV(CURLPROTO_FTP),
+ NV(CURLPROTO_FTPS),
+ NV(CURLPROTO_GOPHER),
+ NV(CURLPROTO_HTTP),
+ NV(CURLPROTO_HTTPS),
+ NV(CURLPROTO_IMAP),
+ NV(CURLPROTO_IMAPS),
+ NV(CURLPROTO_LDAP),
+ NV(CURLPROTO_LDAPS),
+ NV(CURLPROTO_POP3),
+ NV(CURLPROTO_POP3S),
+ NV(CURLPROTO_RTSP),
+ NV(CURLPROTO_SCP),
+ NV(CURLPROTO_SFTP),
+ NV(CURLPROTO_SMTP),
+ NV(CURLPROTO_SMTPS),
+ NV(CURLPROTO_TELNET),
+ NV(CURLPROTO_TFTP),
+ NVEND,
+};
+
+/* These options have non-zero default values. */
+static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
+ NV1(CURLOPT_SSL_VERIFYPEER, 1),
+ NV1(CURLOPT_SSL_VERIFYHOST, 1),
+ NV1(CURLOPT_SSL_ENABLE_NPN, 1),
+ NV1(CURLOPT_SSL_ENABLE_ALPN, 1),
+ NVEND
+};
+
+/* Format and add code; jump to nomem on malloc error */
+#define ADD(args) do { \
+ ret = easysrc_add args; \
+ if(ret) \
+ goto nomem; \
+} WHILE_FALSE
+#define ADDF(args) do { \
+ ret = easysrc_addf args; \
+ if(ret) \
+ goto nomem; \
+} WHILE_FALSE
+
+#define DECL0(s) ADD((&easysrc_decl, s))
+#define DECL1(f,a) ADDF((&easysrc_decl, f,a))
+
+#define DATA0(s) ADD((&easysrc_data, s))
+#define DATA1(f,a) ADDF((&easysrc_data, f,a))
+#define DATA2(f,a,b) ADDF((&easysrc_data, f,a,b))
+#define DATA3(f,a,b,c) ADDF((&easysrc_data, f,a,b,c))
+
+#define CODE0(s) ADD((&easysrc_code, s))
+#define CODE1(f,a) ADDF((&easysrc_code, f,a))
+#define CODE2(f,a,b) ADDF((&easysrc_code, f,a,b))
+#define CODE3(f,a,b,c) ADDF((&easysrc_code, f,a,b,c))
+
+#define CLEAN0(s) ADD((&easysrc_clean, s))
+#define CLEAN1(f,a) ADDF((&easysrc_clean, f,a))
+
+#define REM0(s) ADD((&easysrc_toohard, s))
+#define REM1(f,a) ADDF((&easysrc_toohard, f,a))
+#define REM2(f,a,b) ADDF((&easysrc_toohard, f,a,b))
+
+/* Escape string to C string syntax. Return NULL if out of memory.
+ * Is this correct for those wacky EBCDIC guys? */
+static char *c_escape(const char *str)
+{
+ size_t len = 0;
+ const char *s;
+ unsigned char c;
+ char *escaped, *e;
+ /* Allocate space based on worst-case */
+ len = strlen(str);
+ escaped = malloc(4 * len + 1);
+ if(!escaped)
+ return NULL;
+
+ e = escaped;
+ for(s=str; (c=*s) != '\0'; s++) {
+ if(c=='\n') {
+ strcpy(e, "\\n");
+ e += 2;
+ }
+ else if(c=='\r') {
+ strcpy(e, "\\r");
+ e += 2;
+ }
+ else if(c=='\t') {
+ strcpy(e, "\\t");
+ e += 2;
+ }
+ else if(c=='\\') {
+ strcpy(e, "\\\\");
+ e += 2;
+ }
+ else if(c=='"') {
+ strcpy(e, "\\\"");
+ e += 2;
+ }
+ else if(! isprint(c)) {
+ snprintf(e, 4, "\\%03o", c);
+ e += 4;
+ }
+ else
+ *e++ = c;
+ }
+ *e = '\0';
+ return escaped;
+}
+
+/* setopt wrapper for enum types */
+CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const NameValue *nvlist, long lval)
+{
+ CURLcode ret = CURLE_OK;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(!lval)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+ const NameValue *nv = NULL;
+ for(nv=nvlist; nv->name; nv++) {
+ if(nv->value == lval) break; /* found it */
+ }
+ if(! nv->name) {
+ /* If no definition was found, output an explicit value.
+ * This could happen if new values are defined and used
+ * but the NameValue list is not updated. */
+ CODE2("curl_easy_setopt(hnd, %s, %ldL);", name, lval);
+ }
+ else {
+ CODE2("curl_easy_setopt(hnd, %s, (long)%s);", name, nv->name);
+ }
+ }
+
+ nomem:
+ return ret;
+}
+
+/* setopt wrapper for flags */
+CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const NameValue *nvlist, long lval)
+{
+ CURLcode ret = CURLE_OK;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(!lval)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+ char preamble[80]; /* should accommodate any symbol name */
+ long rest = lval; /* bits not handled yet */
+ const NameValue *nv = NULL;
+ snprintf(preamble, sizeof(preamble),
+ "curl_easy_setopt(hnd, %s, ", name);
+ for(nv=nvlist; nv->name; nv++) {
+ if((nv->value & ~ rest) == 0) {
+ /* all value flags contained in rest */
+ rest &= ~ nv->value; /* remove bits handled here */
+ CODE3("%s(long)%s%s",
+ preamble, nv->name, rest ? " |" : ");");
+ if(!rest)
+ break; /* handled them all */
+ /* replace with all spaces for continuation line */
+ snprintf(preamble, sizeof(preamble), "%*s", strlen(preamble), "");
+ }
+ }
+ /* If any bits have no definition, output an explicit value.
+ * This could happen if new bits are defined and used
+ * but the NameValue list is not updated. */
+ if(rest)
+ CODE2("%s%ldL);", preamble, rest);
+ }
+
+ nomem:
+ return ret;
+}
+
+/* setopt wrapper for bitmasks */
+CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const NameValueUnsigned *nvlist,
+ long lval)
+{
+ CURLcode ret = CURLE_OK;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(!lval)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+ char preamble[80];
+ unsigned long rest = (unsigned long)lval;
+ const NameValueUnsigned *nv = NULL;
+ snprintf(preamble, sizeof(preamble),
+ "curl_easy_setopt(hnd, %s, ", name);
+ for(nv=nvlist; nv->name; nv++) {
+ if((nv->value & ~ rest) == 0) {
+ /* all value flags contained in rest */
+ rest &= ~ nv->value; /* remove bits handled here */
+ CODE3("%s(long)%s%s",
+ preamble, nv->name, rest ? " |" : ");");
+ if(!rest)
+ break; /* handled them all */
+ /* replace with all spaces for continuation line */
+ snprintf(preamble, sizeof(preamble), "%*s", strlen(preamble), "");
+ }
+ }
+ /* If any bits have no definition, output an explicit value.
+ * This could happen if new bits are defined and used
+ * but the NameValue list is not updated. */
+ if(rest)
+ CODE2("%s%luUL);", preamble, rest);
+ }
+
+ nomem:
+ return ret;
+}
+
+/* setopt wrapper for CURLOPT_HTTPPOST */
+CURLcode tool_setopt_httppost(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ struct curl_httppost *post)
+{
+ CURLcode ret = CURLE_OK;
+ char *escaped = NULL;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, post);
+ if(!post)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ struct curl_httppost *pp, *p;
+ int i;
+ /* May use several httppost lists, if multiple POST actions */
+ i = ++ easysrc_form_count;
+ DECL1("struct curl_httppost *post%d;", i);
+ DATA1("post%d = NULL;", i);
+ CLEAN1("curl_formfree(post%d);", i);
+ CLEAN1("post%d = NULL;", i);
+ if(i == 1)
+ DECL0("struct curl_httppost *postend;");
+ DATA0("postend = NULL;");
+ for(p=post; p; p=p->next) {
+ DATA1("curl_formadd(&post%d, &postend,", i);
+ DATA1(" CURLFORM_COPYNAME, \"%s\",", p->name);
+ for(pp=p; pp; pp=pp->more) {
+ /* May be several files uploaded for one name;
+ * these are linked through the 'more' pointer */
+ Curl_safefree(escaped);
+ escaped = c_escape(pp->contents);
+ if(!escaped) {
+ ret = CURLE_OUT_OF_MEMORY;
+ goto nomem;
+ }
+ if(pp->flags & HTTPPOST_FILENAME) {
+ /* file upload as for -F @filename */
+ DATA1(" CURLFORM_FILE, \"%s\",", escaped);
+ }
+ else if(pp->flags & HTTPPOST_READFILE) {
+ /* content from file as for -F <filename */
+ DATA1(" CURLFORM_FILECONTENT, \"%s\",", escaped);
+ }
+ else
+ DATA1(" CURLFORM_COPYCONTENTS, \"%s\",", escaped);
+ if(pp->showfilename) {
+ Curl_safefree(escaped);
+ escaped = c_escape(pp->showfilename);
+ if(!escaped) {
+ ret = CURLE_OUT_OF_MEMORY;
+ goto nomem;
+ }
+ DATA1(" CURLFORM_FILENAME, \"%s\",", escaped);
+ }
+ if(pp->contenttype) {
+ Curl_safefree(escaped);
+ escaped = c_escape(pp->contenttype);
+ if(!escaped) {
+ ret = CURLE_OUT_OF_MEMORY;
+ goto nomem;
+ }
+ DATA1(" CURLFORM_CONTENTTYPE, \"%s\",", escaped);
+ }
+ }
+ DATA0(" CURLFORM_END);");
+ }
+ CODE2("curl_easy_setopt(hnd, %s, post%d);", name, i);
+ }
+
+ nomem:
+ Curl_safefree(escaped);
+ return ret;
+}
+
+/* setopt wrapper for curl_slist options */
+CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ struct curl_slist *list)
+{
+ CURLcode ret = CURLE_OK;
+ char *escaped = NULL;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, list);
+ if(!list)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ struct curl_slist *s;
+ int i;
+ /* May need several slist variables, so invent name */
+ i = ++ easysrc_slist_count;
+ DECL1("struct curl_slist *slist%d;", i);
+ DATA1("slist%d = NULL;", i);
+ CLEAN1("curl_slist_free_all(slist%d);", i);
+ CLEAN1("slist%d = NULL;", i);
+ for(s=list; s; s=s->next) {
+ Curl_safefree(escaped);
+ escaped = c_escape(s->data);
+ if(!escaped) {
+ ret = CURLE_OUT_OF_MEMORY;
+ goto nomem;
+ }
+ DATA3("slist%d = curl_slist_append(slist%d, \"%s\");", i, i, escaped);
+ }
+ CODE2("curl_easy_setopt(hnd, %s, slist%d);", name, i);
+ }
+
+ nomem:
+ Curl_safefree(escaped);
+ return ret;
+}
+
+/* generic setopt wrapper for all other options.
+ * Some type information is encoded in the tag value. */
+CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
+ const char *name, CURLoption tag, ...)
+{
+ va_list arg;
+ char buf[256];
+ const char *value = NULL;
+ bool remark = FALSE;
+ bool skip = FALSE;
+ bool escape = FALSE;
+ char *escaped = NULL;
+ CURLcode ret = CURLE_OK;
+
+ va_start(arg, tag);
+
+ if(tag < CURLOPTTYPE_OBJECTPOINT) {
+ /* Value is expected to be a long */
+ long lval = va_arg(arg, long);
+ long defval = 0L;
+ const NameValue *nv = NULL;
+ for(nv=setopt_nv_CURLNONZERODEFAULTS; nv->name; nv++) {
+ if(!strcmp(name, nv->name)) {
+ defval = nv->value;
+ break; /* found it */
+ }
+ }
+
+ snprintf(buf, sizeof(buf), "%ldL", lval);
+ value = buf;
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(lval == defval)
+ skip = TRUE;
+ }
+ else if(tag < CURLOPTTYPE_OFF_T) {
+ /* Value is some sort of object pointer */
+ void *pval = va_arg(arg, void *);
+
+ /* function pointers are never printable */
+ if(tag >= CURLOPTTYPE_FUNCTIONPOINT) {
+ if(pval) {
+ value = "functionpointer";
+ remark = TRUE;
+ }
+ else
+ skip = TRUE;
+ }
+
+ else if(pval && str) {
+ value = (char *)pval;
+ escape = TRUE;
+ }
+ else if(pval) {
+ value = "objectpointer";
+ remark = TRUE;
+ }
+ else
+ skip = TRUE;
+
+ ret = curl_easy_setopt(curl, tag, pval);
+
+ }
+ else {
+ /* Value is expected to be curl_off_t */
+ curl_off_t oval = va_arg(arg, curl_off_t);
+ snprintf(buf, sizeof(buf),
+ "(curl_off_t)%" CURL_FORMAT_CURL_OFF_T, oval);
+ value = buf;
+ ret = curl_easy_setopt(curl, tag, oval);
+
+ if(!oval)
+ skip = TRUE;
+ }
+
+ va_end(arg);
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+
+ if(remark)
+ REM2("%s set to a %s", name, value);
+ else {
+ if(escape) {
+ escaped = c_escape(value);
+ if(!escaped) {
+ ret = CURLE_OUT_OF_MEMORY;
+ goto nomem;
+ }
+ CODE2("curl_easy_setopt(hnd, %s, \"%s\");", name, escaped);
+ }
+ else
+ CODE2("curl_easy_setopt(hnd, %s, %s);", name, value);
+ }
+ }
+
+ nomem:
+ Curl_safefree(escaped);
+ return ret;
+}
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_setopt.h b/external/libcurl_android/jni/libcurl/src/tool_setopt.h
new file mode 100755
index 00000000..cd144bc0
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_setopt.h
@@ -0,0 +1,148 @@
+#ifndef HEADER_CURL_TOOL_SETOPT_H
+#define HEADER_CURL_TOOL_SETOPT_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/*
+ * Macros used in operate()
+ */
+
+#define SETOPT_CHECK(v) do { \
+ res = (v); \
+ if(res) \
+ goto show_error; \
+} WHILE_FALSE
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+/* Associate symbolic names with option values */
+typedef struct {
+ const char *name;
+ long value;
+} NameValue;
+
+typedef struct {
+ const char *name;
+ unsigned long value;
+} NameValueUnsigned;
+
+extern const NameValue setopt_nv_CURLPROXY[];
+extern const NameValue setopt_nv_CURL_HTTP_VERSION[];
+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 NameValue setopt_nv_CURL_NETRC[];
+extern const NameValue setopt_nv_CURLPROTO[];
+extern const NameValueUnsigned setopt_nv_CURLAUTH[];
+
+/* Map options to NameValue sets */
+#define setopt_nv_CURLOPT_HTTP_VERSION setopt_nv_CURL_HTTP_VERSION
+#define setopt_nv_CURLOPT_HTTPAUTH setopt_nv_CURLAUTH
+#define setopt_nv_CURLOPT_SSLVERSION setopt_nv_CURL_SSLVERSION
+#define setopt_nv_CURLOPT_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_NETRC setopt_nv_CURL_NETRC
+#define setopt_nv_CURLOPT_PROTOCOLS setopt_nv_CURLPROTO
+#define setopt_nv_CURLOPT_REDIR_PROTOCOLS setopt_nv_CURLPROTO
+#define setopt_nv_CURLOPT_PROXYTYPE setopt_nv_CURLPROXY
+#define setopt_nv_CURLOPT_PROXYAUTH setopt_nv_CURLAUTH
+
+/* Intercept setopt calls for --libcurl */
+
+CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const NameValue *nv, long lval);
+CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const NameValue *nv, long lval);
+CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const NameValueUnsigned *nv, long lval);
+CURLcode tool_setopt_httppost(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ struct curl_httppost *httppost);
+CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ struct curl_slist *list);
+CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
+ const char *name, CURLoption tag, ...);
+
+#define my_setopt(x,y,z) \
+ SETOPT_CHECK(tool_setopt(x, FALSE, global, #y, y, z))
+
+#define my_setopt_str(x,y,z) \
+ SETOPT_CHECK(tool_setopt(x, TRUE, global, #y, y, z))
+
+#define my_setopt_enum(x,y,z) \
+ SETOPT_CHECK(tool_setopt_enum(x, global, #y, y, setopt_nv_ ## y, z))
+
+#define my_setopt_flags(x,y,z) \
+ SETOPT_CHECK(tool_setopt_flags(x, global, #y, y, setopt_nv_ ## y, z))
+
+#define my_setopt_bitmask(x,y,z) \
+ SETOPT_CHECK(tool_setopt_bitmask(x, global, #y, y, setopt_nv_ ## y, z))
+
+#define my_setopt_httppost(x,y,z) \
+ SETOPT_CHECK(tool_setopt_httppost(x, global, #y, y, z))
+
+#define my_setopt_slist(x,y,z) \
+ SETOPT_CHECK(tool_setopt_slist(x, global, #y, y, z))
+
+#define res_setopt(x,y,z) tool_setopt(x, FALSE, global, #y, y, z)
+
+#define res_setopt_str(x,y,z) tool_setopt(x, TRUE, global, #y, y, z)
+
+#else /* CURL_DISABLE_LIBCURL_OPTION */
+
+/* No --libcurl, so pass options directly to library */
+
+#define my_setopt(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define my_setopt_str(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define my_setopt_enum(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define my_setopt_flags(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define my_setopt_bitmask(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define my_setopt_httppost(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define my_setopt_slist(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z))
+
+#define res_setopt(x,y,z) curl_easy_setopt(x,y,z)
+
+#define res_setopt_str(x,y,z) curl_easy_setopt(x,y,z)
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
+
+#endif /* HEADER_CURL_TOOL_SETOPT_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_setup.h b/external/libcurl_android/jni/libcurl/src/tool_setup.h
new file mode 100755
index 00000000..c94686f9
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_setup.h
@@ -0,0 +1,75 @@
+#ifndef HEADER_CURL_TOOL_SETUP_H
+#define HEADER_CURL_TOOL_SETUP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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.
+ *
+ ***************************************************************************/
+
+#define CURL_NO_OLDIES
+
+/*
+ * curl_setup.h may define preprocessor macros such as _FILE_OFFSET_BITS and
+ * _LARGE_FILES in order to support files larger than 2 GB. On platforms
+ * where this happens it is mandatory that these macros are defined before
+ * any system header file is included, otherwise file handling function
+ * prototypes will be misdeclared and curl tool may not build properly;
+ * therefore we must include curl_setup.h before curl.h when building curl.
+ */
+
+#include "curl_setup.h" /* from the lib directory */
+
+/*
+ * curl tool certainly uses libcurl's external interface.
+ */
+
+#include <curl/curl.h> /* external interface */
+
+/*
+ * Platform specific stuff.
+ */
+
+#if defined(macintosh) && defined(__MRC__)
+# define main(x,y) curl_main(x,y)
+#endif
+
+#ifdef TPF
+# undef select
+ /* change which select is used for the curl command line tool */
+# define select(a,b,c,d,e) tpf_select_bsd(a,b,c,d,e)
+ /* and turn off the progress meter */
+# define CONF_DEFAULT (0|CONF_NOPROGRESS)
+#endif
+
+#ifndef OS
+# define OS "unknown"
+#endif
+
+#ifndef UNPRINTABLE_CHAR
+ /* define what to use for unprintable characters */
+# define UNPRINTABLE_CHAR '.'
+#endif
+
+#ifndef HAVE_STRDUP
+# include "strdup.h"
+# define strdup(ptr) curlx_strdup(ptr)
+#endif
+
+#endif /* HEADER_CURL_TOOL_SETUP_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_sleep.c b/external/libcurl_android/jni/libcurl/src/tool_sleep.c
new file mode 100755
index 00000000..49cdc71b
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_sleep.c
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#endif
+
+#ifdef HAVE_SYS_POLL_H
+# include <sys/poll.h>
+#elif defined(HAVE_POLL_H)
+# include <poll.h>
+#endif
+
+#ifdef MSDOS
+# include <dos.h>
+#endif
+
+#include "tool_sleep.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void tool_go_sleep(long ms)
+{
+#if defined(MSDOS)
+ delay(ms);
+#elif defined(WIN32)
+ Sleep(ms);
+#elif defined(HAVE_POLL_FINE)
+ poll((void *)0, 0, (int)ms);
+#else
+ struct timeval timeout;
+ timeout.tv_sec = ms / 1000L;
+ ms = ms % 1000L;
+ timeout.tv_usec = ms * 1000L;
+ select(0, NULL, NULL, NULL, &timeout);
+#endif
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_sleep.h b/external/libcurl_android/jni/libcurl/src/tool_sleep.h
new file mode 100755
index 00000000..115a4e40
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_sleep.h
@@ -0,0 +1,29 @@
+#ifndef HEADER_CURL_TOOL_SLEEP_H
+#define HEADER_CURL_TOOL_SLEEP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+void tool_go_sleep(long ms);
+
+#endif /* HEADER_CURL_TOOL_SLEEP_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_urlglob.c b/external/libcurl_android/jni/libcurl/src/tool_urlglob.c
new file mode 100755
index 00000000..36e83c33
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_urlglob.c
@@ -0,0 +1,674 @@
+/***************************************************************************
+ * _ _ ____ _
+ * 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.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define _MPRINTF_REPLACE /* we want curl-functions instead of native ones */
+#include <curl/mprintf.h>
+
+#include "tool_urlglob.h"
+#include "tool_vms.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+typedef enum {
+ GLOB_OK,
+ GLOB_NO_MEM = CURLE_OUT_OF_MEMORY,
+ GLOB_ERROR = CURLE_URL_MALFORMAT
+} GlobCode;
+
+#define GLOBERROR(string, column, code) \
+ glob->error = string, glob->pos = column, code
+
+void glob_cleanup(URLGlob* glob);
+
+static GlobCode glob_fixed(URLGlob *glob, char *fixed, size_t len)
+{
+ URLPattern *pat = &glob->pattern[glob->size];
+ pat->type = UPTSet;
+ pat->content.Set.size = 1;
+ pat->content.Set.ptr_s = 0;
+ pat->globindex = -1;
+
+ pat->content.Set.elements = malloc(sizeof(char*));
+
+ if(!pat->content.Set.elements)
+ return GLOBERROR("out of memory", 0, GLOB_NO_MEM);
+
+ pat->content.Set.elements[0] = malloc(len+1);
+ if(!pat->content.Set.elements[0])
+ return GLOBERROR("out of memory", 0, GLOB_NO_MEM);
+
+ memcpy(pat->content.Set.elements[0], fixed, len);
+ pat->content.Set.elements[0][len] = 0;
+
+ return GLOB_OK;
+}
+
+/* multiply
+ *
+ * Multiplies and checks for overflow.
+ */
+static int multiply(unsigned long *amount, long with)
+{
+ unsigned long sum = *amount * with;
+ if(sum/with != *amount)
+ return 1; /* didn't fit, bail out */
+ *amount = sum;
+ return 0;
+}
+
+static GlobCode glob_set(URLGlob *glob, char **patternp,
+ size_t *posp, unsigned long *amount,
+ int globindex)
+{
+ /* processes a set expression with the point behind the opening '{'
+ ','-separated elements are collected until the next closing '}'
+ */
+ URLPattern *pat;
+ bool done = FALSE;
+ char *buf = glob->glob_buffer;
+ char *pattern = *patternp;
+ char *opattern = pattern;
+ size_t opos = *posp-1;
+
+ pat = &glob->pattern[glob->size];
+ /* patterns 0,1,2,... correspond to size=1,3,5,... */
+ pat->type = UPTSet;
+ pat->content.Set.size = 0;
+ pat->content.Set.ptr_s = 0;
+ pat->content.Set.elements = NULL;
+ pat->globindex = globindex;
+
+ while(!done) {
+ switch (*pattern) {
+ case '\0': /* URL ended while set was still open */
+ return GLOBERROR("unmatched brace", opos, GLOB_ERROR);
+
+ case '{':
+ case '[': /* no nested expressions at this time */
+ return GLOBERROR("nested brace", *posp, GLOB_ERROR);
+
+ case '}': /* set element completed */
+ if(opattern == pattern)
+ return GLOBERROR("empty string within braces", *posp, GLOB_ERROR);
+
+ /* add 1 to size since it'll be incremented below */
+ if(multiply(amount, pat->content.Set.size+1))
+ return GLOBERROR("range overflow", 0, GLOB_ERROR);
+
+ /* fall-through */
+ case ',':
+
+ *buf = '\0';
+ if(pat->content.Set.elements) {
+ char **new_arr = realloc(pat->content.Set.elements,
+ (pat->content.Set.size + 1) * sizeof(char*));
+ if(!new_arr)
+ return GLOBERROR("out of memory", 0, GLOB_NO_MEM);
+
+ pat->content.Set.elements = new_arr;
+ }
+ else
+ pat->content.Set.elements = malloc(sizeof(char*));
+
+ if(!pat->content.Set.elements)
+ return GLOBERROR("out of memory", 0, GLOB_NO_MEM);
+
+ pat->content.Set.elements[pat->content.Set.size] =
+ strdup(glob->glob_buffer);
+ if(!pat->content.Set.elements[pat->content.Set.size])
+ return GLOBERROR("out of memory", 0, GLOB_NO_MEM);
+ ++pat->content.Set.size;
+
+ if(*pattern == '}') {
+ pattern++; /* pass the closing brace */
+ done = TRUE;
+ continue;
+ }
+
+ buf = glob->glob_buffer;
+ ++pattern;
+ ++(*posp);
+ break;
+
+ case ']': /* illegal closing bracket */
+ return GLOBERROR("unexpected close bracket", *posp, GLOB_ERROR);
+
+ case '\\': /* escaped character, skip '\' */
+ if(pattern[1]) {
+ ++pattern;
+ ++(*posp);
+ }
+ /* intentional fallthrough */
+ default:
+ *buf++ = *pattern++; /* copy character to set element */
+ ++(*posp);
+ }
+ }
+
+ *patternp = pattern; /* return with the new position */
+ return GLOB_OK;
+}
+
+static GlobCode glob_range(URLGlob *glob, char **patternp,
+ size_t *posp, unsigned long *amount,
+ int globindex)
+{
+ /* processes a range expression with the point behind the opening '['
+ - char range: e.g. "a-z]", "B-Q]"
+ - num range: e.g. "0-9]", "17-2000]"
+ - num range with leading zeros: e.g. "001-999]"
+ expression is checked for well-formedness and collected until the next ']'
+ */
+ URLPattern *pat;
+ int rc;
+ char *pattern = *patternp;
+ char *c;
+
+ pat = &glob->pattern[glob->size];
+ pat->globindex = globindex;
+
+ if(ISALPHA(*pattern)) {
+ /* character range detected */
+ char min_c;
+ char max_c;
+ int step=1;
+
+ pat->type = UPTCharRange;
+
+ rc = sscanf(pattern, "%c-%c", &min_c, &max_c);
+
+ if((rc == 2) && (pattern[3] == ':')) {
+ char *endp;
+ unsigned long lstep;
+ errno = 0;
+ lstep = strtoul(&pattern[3], &endp, 10);
+ if(errno || (*endp != ']'))
+ step = -1;
+ else {
+ pattern = endp+1;
+ step = (int)lstep;
+ if(step > (max_c - min_c))
+ step = -1;
+ }
+ }
+ else
+ pattern += 4;
+
+ *posp += (pattern - *patternp);
+
+ if((rc != 2) || (min_c >= max_c) || ((max_c - min_c) > ('z' - 'a')) ||
+ (step < 0) )
+ /* the pattern is not well-formed */
+ return GLOBERROR("bad range", *posp, GLOB_ERROR);
+
+ /* if there was a ":[num]" thing, use that as step or else use 1 */
+ pat->content.CharRange.step = step;
+ pat->content.CharRange.ptr_c = pat->content.CharRange.min_c = min_c;
+ pat->content.CharRange.max_c = max_c;
+
+ if(multiply(amount, (pat->content.CharRange.max_c -
+ pat->content.CharRange.min_c + 1)))
+ return GLOBERROR("range overflow", *posp, GLOB_ERROR);
+ }
+ else if(ISDIGIT(*pattern)) {
+ /* numeric range detected */
+ unsigned long min_n;
+ unsigned long max_n = 0;
+ unsigned long step_n = 0;
+ char *endp;
+
+ pat->type = UPTNumRange;
+ pat->content.NumRange.padlength = 0;
+
+ if(*pattern == '0') {
+ /* leading zero specified, count them! */
+ c = pattern;
+ while(ISDIGIT(*c)) {
+ c++;
+ ++pat->content.NumRange.padlength; /* padding length is set for all
+ instances of this pattern */
+ }
+ }
+
+ errno = 0;
+ min_n = strtoul(pattern, &endp, 10);
+ if(errno || (endp == pattern))
+ endp=NULL;
+ else {
+ if(*endp != '-')
+ endp = NULL;
+ else {
+ pattern = endp+1;
+ errno = 0;
+ max_n = strtoul(pattern, &endp, 10);
+ if(errno || (*endp == ':')) {
+ pattern = endp+1;
+ errno = 0;
+ step_n = strtoul(pattern, &endp, 10);
+ if(errno)
+ /* over/underflow situation */
+ endp = NULL;
+ }
+ else
+ step_n = 1;
+ if(endp && (*endp == ']')) {
+ pattern= endp+1;
+ }
+ else
+ endp = NULL;
+ }
+ }
+
+ *posp += (pattern - *patternp);
+
+ if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)))
+ /* the pattern is not well-formed */
+ return GLOBERROR("bad range", *posp, GLOB_ERROR);
+
+ /* typecasting to ints are fine here since we make sure above that we
+ are within 31 bits */
+ pat->content.NumRange.ptr_n = pat->content.NumRange.min_n = min_n;
+ pat->content.NumRange.max_n = max_n;
+ pat->content.NumRange.step = step_n;
+
+ if(multiply(amount, (pat->content.NumRange.max_n -
+ pat->content.NumRange.min_n + 1)))
+ return GLOBERROR("range overflow", *posp, GLOB_ERROR);
+ }
+ else
+ return GLOBERROR("bad range specification", *posp, GLOB_ERROR);
+
+ *patternp = pattern;
+ return GLOB_OK;
+}
+
+static bool peek_ipv6(const char *str, size_t *skip)
+{
+ /*
+ * Scan for a potential IPv6 literal.
+ * - Valid globs contain a hyphen and <= 1 colon.
+ * - IPv6 literals contain no hyphens and >= 2 colons.
+ */
+ size_t i = 0;
+ size_t colons = 0;
+ if(str[i++] != '[') {
+ return FALSE;
+ }
+ for(;;) {
+ const char c = str[i++];
+ if(ISALNUM(c) || c == '.' || c == '%') {
+ /* ok */
+ }
+ else if(c == ':') {
+ colons++;
+ }
+ else if(c == ']') {
+ *skip = i;
+ return colons >= 2 ? TRUE : FALSE;
+ }
+ else {
+ return FALSE;
+ }
+ }
+}
+
+static GlobCode glob_parse(URLGlob *glob, char *pattern,
+ size_t pos, unsigned long *amount)
+{
+ /* processes a literal string component of a URL
+ special characters '{' and '[' branch to set/range processing functions
+ */
+ GlobCode res = GLOB_OK;
+ int globindex = 0; /* count "actual" globs */
+
+ *amount = 1;
+
+ while(*pattern && !res) {
+ char *buf = glob->glob_buffer;
+ size_t sublen = 0;
+ while(*pattern && *pattern != '{') {
+ if(*pattern == '[') {
+ /* Skip over potential IPv6 literals. */
+ size_t skip;
+ if(peek_ipv6(pattern, &skip)) {
+ memcpy(buf, pattern, skip);
+ buf += skip;
+ pattern += skip;
+ sublen += skip;
+ continue;
+ }
+ break;
+ }
+ if(*pattern == '}' || *pattern == ']')
+ return GLOBERROR("unmatched close brace/bracket", pos, GLOB_ERROR);
+
+ /* only allow \ to escape known "special letters" */
+ if(*pattern == '\\' &&
+ (*(pattern+1) == '{' || *(pattern+1) == '[' ||
+ *(pattern+1) == '}' || *(pattern+1) == ']') ) {
+
+ /* escape character, skip '\' */
+ ++pattern;
+ ++pos;
+ }
+ *buf++ = *pattern++; /* copy character to literal */
+ ++pos;
+ sublen++;
+ }
+ if(sublen) {
+ /* we got a literal string, add it as a single-item list */
+ *buf = '\0';
+ res = glob_fixed(glob, glob->glob_buffer, sublen);
+ }
+ else {
+ switch (*pattern) {
+ case '\0': /* done */
+ break;
+
+ case '{':
+ /* process set pattern */
+ pattern++;
+ pos++;
+ res = glob_set(glob, &pattern, &pos, amount, globindex++);
+ break;
+
+ case '[':
+ /* process range pattern */
+ pattern++;
+ pos++;
+ res = glob_range(glob, &pattern, &pos, amount, globindex++);
+ break;
+ }
+ }
+
+ if(++glob->size > GLOB_PATTERN_NUM)
+ return GLOBERROR("too many globs", pos, GLOB_ERROR);
+ }
+ return res;
+}
+
+int glob_url(URLGlob** glob, char* url, unsigned long *urlnum, FILE *error)
+{
+ /*
+ * We can deal with any-size, just make a buffer with the same length
+ * as the specified URL!
+ */
+ URLGlob *glob_expand;
+ unsigned long amount = 0;
+ char *glob_buffer;
+ GlobCode res;
+
+ *glob = NULL;
+
+ glob_buffer = malloc(strlen(url) + 1);
+ if(!glob_buffer)
+ return CURLE_OUT_OF_MEMORY;
+
+ glob_expand = calloc(1, sizeof(URLGlob));
+ if(!glob_expand) {
+ Curl_safefree(glob_buffer);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ glob_expand->urllen = strlen(url);
+ glob_expand->glob_buffer = glob_buffer;
+
+ res = glob_parse(glob_expand, url, 1, &amount);
+ if(!res)
+ *urlnum = amount;
+ else {
+ if(error && glob_expand->error) {
+ char text[128];
+ const char *t;
+ if(glob_expand->pos) {
+ snprintf(text, sizeof(text), "%s in column %zu", glob_expand->error,
+ glob_expand->pos);
+ t = text;
+ }
+ else
+ t = glob_expand->error;
+
+ /* send error description to the error-stream */
+ fprintf(error, "curl: (%d) [globbing] %s\n", res, t);
+ }
+ /* it failed, we cleanup */
+ glob_cleanup(glob_expand);
+ *urlnum = 1;
+ return res;
+ }
+
+ *glob = glob_expand;
+ return CURLE_OK;
+}
+
+void glob_cleanup(URLGlob* glob)
+{
+ size_t i;
+ int elem;
+
+ /* the < condition is required since i underflows! */
+ for(i = glob->size - 1; i < glob->size; --i) {
+ if((glob->pattern[i].type == UPTSet) &&
+ (glob->pattern[i].content.Set.elements)) {
+ for(elem = glob->pattern[i].content.Set.size - 1;
+ elem >= 0;
+ --elem) {
+ Curl_safefree(glob->pattern[i].content.Set.elements[elem]);
+ }
+ Curl_safefree(glob->pattern[i].content.Set.elements);
+ }
+ }
+ Curl_safefree(glob->glob_buffer);
+ Curl_safefree(glob);
+}
+
+int glob_next_url(char **globbed, URLGlob *glob)
+{
+ URLPattern *pat;
+ size_t i;
+ size_t j;
+ size_t len;
+ size_t buflen = glob->urllen + 1;
+ char *buf = glob->glob_buffer;
+
+ *globbed = NULL;
+
+ if(!glob->beenhere)
+ glob->beenhere = 1;
+ else {
+ bool carry = TRUE;
+
+ /* implement a counter over the index ranges of all patterns,
+ starting with the rightmost pattern */
+ /* the < condition is required since i underflows! */
+ for(i = glob->size - 1; carry && (i < glob->size); --i) {
+ carry = FALSE;
+ pat = &glob->pattern[i];
+ switch (pat->type) {
+ case UPTSet:
+ if((pat->content.Set.elements) &&
+ (++pat->content.Set.ptr_s == pat->content.Set.size)) {
+ pat->content.Set.ptr_s = 0;
+ carry = TRUE;
+ }
+ break;
+ case UPTCharRange:
+ pat->content.CharRange.ptr_c = (char)(pat->content.CharRange.step +
+ (int)((unsigned char)pat->content.CharRange.ptr_c));
+ if(pat->content.CharRange.ptr_c > pat->content.CharRange.max_c) {
+ pat->content.CharRange.ptr_c = pat->content.CharRange.min_c;
+ carry = TRUE;
+ }
+ break;
+ case UPTNumRange:
+ pat->content.NumRange.ptr_n += pat->content.NumRange.step;
+ if(pat->content.NumRange.ptr_n > pat->content.NumRange.max_n) {
+ pat->content.NumRange.ptr_n = pat->content.NumRange.min_n;
+ carry = TRUE;
+ }
+ break;
+ default:
+ printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
+ return CURLE_FAILED_INIT;
+ }
+ }
+ if(carry) { /* first pattern ptr has run into overflow, done! */
+ /* TODO: verify if this should actally return CURLE_OK. */
+ return CURLE_OK; /* CURLE_OK to match previous behavior */
+ }
+ }
+
+ for(j = 0; j < glob->size; ++j) {
+ pat = &glob->pattern[j];
+ switch(pat->type) {
+ case UPTSet:
+ if(pat->content.Set.elements) {
+ len = strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
+ snprintf(buf, buflen, "%s",
+ pat->content.Set.elements[pat->content.Set.ptr_s]);
+ buf += len;
+ buflen -= len;
+ }
+ break;
+ case UPTCharRange:
+ *buf++ = pat->content.CharRange.ptr_c;
+ break;
+ case UPTNumRange:
+ len = snprintf(buf, buflen, "%0*ld",
+ pat->content.NumRange.padlength,
+ pat->content.NumRange.ptr_n);
+ buf += len;
+ buflen -= len;
+ break;
+ default:
+ printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
+ return CURLE_FAILED_INIT;
+ }
+ }
+ *buf = '\0';
+
+ *globbed = strdup(glob->glob_buffer);
+ if(!*globbed)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_OK;
+}
+
+int glob_match_url(char **result, char *filename, URLGlob *glob)
+{
+ char *target;
+ size_t allocsize;
+ char numbuf[18];
+ char *appendthis = NULL;
+ size_t appendlen = 0;
+ size_t stringlen = 0;
+
+ *result = NULL;
+
+ /* We cannot use the glob_buffer for storage here since the filename may
+ * be longer than the URL we use. We allocate a good start size, then
+ * we need to realloc in case of need.
+ */
+ allocsize = strlen(filename) + 1; /* make it at least one byte to store the
+ trailing zero */
+ target = malloc(allocsize);
+ if(!target)
+ return CURLE_OUT_OF_MEMORY;
+
+ while(*filename) {
+ if(*filename == '#' && ISDIGIT(filename[1])) {
+ unsigned long i;
+ char *ptr = filename;
+ unsigned long num = strtoul(&filename[1], &filename, 10);
+ URLPattern *pat =NULL;
+
+ if(num < glob->size) {
+ num--; /* make it zero based */
+ /* find the correct glob entry */
+ for(i=0; i<glob->size; i++) {
+ if(glob->pattern[i].globindex == (int)num) {
+ pat = &glob->pattern[i];
+ break;
+ }
+ }
+ }
+
+ if(pat) {
+ switch (pat->type) {
+ case UPTSet:
+ if(pat->content.Set.elements) {
+ appendthis = pat->content.Set.elements[pat->content.Set.ptr_s];
+ appendlen =
+ strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
+ }
+ break;
+ case UPTCharRange:
+ numbuf[0] = pat->content.CharRange.ptr_c;
+ numbuf[1] = 0;
+ appendthis = numbuf;
+ appendlen = 1;
+ break;
+ case UPTNumRange:
+ snprintf(numbuf, sizeof(numbuf), "%0*d",
+ pat->content.NumRange.padlength,
+ pat->content.NumRange.ptr_n);
+ appendthis = numbuf;
+ appendlen = strlen(numbuf);
+ break;
+ default:
+ fprintf(stderr, "internal error: invalid pattern type (%d)\n",
+ (int)pat->type);
+ Curl_safefree(target);
+ return CURLE_FAILED_INIT;
+ }
+ }
+ else {
+ /* #[num] out of range, use the #[num] in the output */
+ filename = ptr;
+ appendthis = filename++;
+ appendlen = 1;
+ }
+ }
+ else {
+ appendthis = filename++;
+ appendlen = 1;
+ }
+ if(appendlen + stringlen >= allocsize) {
+ char *newstr;
+ /* we append a single byte to allow for the trailing byte to be appended
+ at the end of this function outside the while() loop */
+ allocsize = (appendlen + stringlen) * 2;
+ newstr = realloc(target, allocsize + 1);
+ if(!newstr) {
+ Curl_safefree(target);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ target = newstr;
+ }
+ memcpy(&target[stringlen], appendthis, appendlen);
+ stringlen += appendlen;
+ }
+ target[stringlen]= '\0';
+ *result = target;
+ return CURLE_OK;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_urlglob.h b/external/libcurl_android/jni/libcurl/src/tool_urlglob.h
new file mode 100755
index 00000000..9fa6f83b
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_urlglob.h
@@ -0,0 +1,77 @@
+#ifndef HEADER_CURL_TOOL_URLGLOB_H
+#define HEADER_CURL_TOOL_URLGLOB_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, 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 "tool_setup.h"
+
+typedef enum {
+ UPTSet = 1,
+ UPTCharRange,
+ UPTNumRange
+} URLPatternType;
+
+typedef struct {
+ URLPatternType type;
+ int globindex; /* the number of this particular glob or -1 if not used
+ within {} or [] */
+ union {
+ struct {
+ char **elements;
+ int size;
+ int ptr_s;
+ } Set;
+ struct {
+ char min_c;
+ char max_c;
+ char ptr_c;
+ int step;
+ } CharRange;
+ struct {
+ unsigned long min_n;
+ unsigned long max_n;
+ int padlength;
+ unsigned long ptr_n;
+ unsigned long step;
+ } NumRange ;
+ } content;
+} URLPattern;
+
+/* the total number of globs supported */
+#define GLOB_PATTERN_NUM 100
+
+typedef struct {
+ URLPattern pattern[GLOB_PATTERN_NUM];
+ size_t size;
+ size_t urllen;
+ char *glob_buffer;
+ char beenhere;
+ const char *error; /* error message */
+ size_t pos; /* column position of error or 0 */
+} URLGlob;
+
+int glob_url(URLGlob**, char*, unsigned long *, FILE *);
+int glob_next_url(char **, URLGlob *);
+int glob_match_url(char **, char*, URLGlob *);
+void glob_cleanup(URLGlob* glob);
+
+#endif /* HEADER_CURL_TOOL_URLGLOB_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_util.c b/external/libcurl_android/jni/libcurl/src/tool_util.c
new file mode 100755
index 00000000..00d205eb
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_util.c
@@ -0,0 +1,138 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#include "tool_util.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#if defined(WIN32) && !defined(MSDOS)
+
+struct timeval tool_tvnow(void)
+{
+ /*
+ ** GetTickCount() is available on _all_ Windows versions from W95 up
+ ** to nowadays. Returns milliseconds elapsed since last system boot,
+ ** increases monotonically and wraps once 49.7 days have elapsed.
+ */
+ struct timeval now;
+ DWORD milliseconds = GetTickCount();
+ now.tv_sec = milliseconds / 1000;
+ now.tv_usec = (milliseconds % 1000) * 1000;
+ return now;
+}
+
+#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
+
+struct timeval tool_tvnow(void)
+{
+ /*
+ ** clock_gettime() is granted to be increased monotonically when the
+ ** monotonic clock is queried. Time starting point is unspecified, it
+ ** could be the system start-up time, the Epoch, or something else,
+ ** in any case the time starting point does not change once that the
+ ** system has started up.
+ */
+ struct timeval now;
+ struct timespec tsnow;
+ if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
+ now.tv_sec = tsnow.tv_sec;
+ now.tv_usec = tsnow.tv_nsec / 1000;
+ }
+ /*
+ ** Even when the configure process has truly detected monotonic clock
+ ** availability, it might happen that it is not actually available at
+ ** run-time. When this occurs simply fallback to other time source.
+ */
+#ifdef HAVE_GETTIMEOFDAY
+ else
+ (void)gettimeofday(&now, NULL);
+#else
+ else {
+ now.tv_sec = (long)time(NULL);
+ now.tv_usec = 0;
+ }
+#endif
+ return now;
+}
+
+#elif defined(HAVE_GETTIMEOFDAY)
+
+struct timeval tool_tvnow(void)
+{
+ /*
+ ** gettimeofday() is not granted to be increased monotonically, due to
+ ** clock drifting and external source time synchronization it can jump
+ ** forward or backward in time.
+ */
+ struct timeval now;
+ (void)gettimeofday(&now, NULL);
+ return now;
+}
+
+#else
+
+struct timeval tool_tvnow(void)
+{
+ /*
+ ** time() returns the value of time in seconds since the Epoch.
+ */
+ struct timeval now;
+ now.tv_sec = (long)time(NULL);
+ now.tv_usec = 0;
+ return now;
+}
+
+#endif
+
+/*
+ * Make sure that the first argument is the more recent time, as otherwise
+ * we'll get a weird negative time-diff back...
+ *
+ * Returns: the time difference in number of milliseconds.
+ */
+long tool_tvdiff(struct timeval newer, struct timeval older)
+{
+ return (newer.tv_sec-older.tv_sec)*1000+
+ (newer.tv_usec-older.tv_usec)/1000;
+}
+
+/*
+ * Same as tool_tvdiff but with full usec resolution.
+ *
+ * Returns: the time difference in seconds with subsecond resolution.
+ */
+double tool_tvdiff_secs(struct timeval newer, struct timeval older)
+{
+ if(newer.tv_sec != older.tv_sec)
+ return (double)(newer.tv_sec-older.tv_sec)+
+ (double)(newer.tv_usec-older.tv_usec)/1000000.0;
+ else
+ return (double)(newer.tv_usec-older.tv_usec)/1000000.0;
+}
+
+/* return the number of seconds in the given input timeval struct */
+long tool_tvlong(struct timeval t1)
+{
+ return t1.tv_sec;
+}
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_util.h b/external/libcurl_android/jni/libcurl/src/tool_util.h
new file mode 100755
index 00000000..d8bb0366
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_util.h
@@ -0,0 +1,56 @@
+#ifndef HEADER_CURL_TOOL_UTIL_H
+#define HEADER_CURL_TOOL_UTIL_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+struct timeval tool_tvnow(void);
+
+/*
+ * Make sure that the first argument (t1) is the more recent time and t2 is
+ * the older time, as otherwise you get a weird negative time-diff back...
+ *
+ * Returns: the time difference in number of milliseconds.
+ */
+long tool_tvdiff(struct timeval t1, struct timeval t2);
+
+/*
+ * Same as tool_tvdiff but with full usec resolution.
+ *
+ * Returns: the time difference in seconds with subsecond resolution.
+ */
+double tool_tvdiff_secs(struct timeval t1, struct timeval t2);
+
+long tool_tvlong(struct timeval t1);
+
+#undef tvnow
+#undef tvdiff
+#undef tvdiff_secs
+#undef tvlong
+
+#define tvnow() tool_tvnow()
+#define tvdiff(a,b) tool_tvdiff((a), (b))
+#define tvdiff_secs(a,b) tool_tvdiff_secs((a), (b))
+#define tvlong(a) tool_tvlong((a))
+
+#endif /* HEADER_CURL_TOOL_UTIL_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_version.h b/external/libcurl_android/jni/libcurl/src/tool_version.h
new file mode 100755
index 00000000..0c09149e
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_version.h
@@ -0,0 +1,34 @@
+#ifndef HEADER_CURL_TOOL_VERSION_H
+#define HEADER_CURL_TOOL_VERSION_H
+/***************************************************************************
+ * _ _ ____ _
+ * 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 <curl/curlver.h>
+
+#define CURL_NAME "curl"
+#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
+#define CURL_VERSION "7.38.0"
+#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
+#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
+#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
+#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "
+
+#endif /* HEADER_CURL_TOOL_VERSION_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_vms.c b/external/libcurl_android/jni/libcurl/src/tool_vms.c
new file mode 100755
index 00000000..4a6a6f58
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_vms.c
@@ -0,0 +1,219 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef __VMS
+
+#if defined(__DECC) && !defined(__VAX) && \
+ defined(__CRTL_VER) && (__CRTL_VER >= 70301000)
+#include <unixlib.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+#include "curlx.h"
+
+#include "curlmsg_vms.h"
+#include "tool_vms.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void decc$__posix_exit(int __status);
+void decc$exit(int __status);
+
+static int vms_shell = -1;
+
+/* VMS has a DCL shell and and also has Unix shells ported to it.
+ * When curl is running under a Unix shell, we want it to be as much
+ * like Unix as possible.
+ */
+int is_vms_shell(void)
+{
+ char *shell;
+
+ /* Have we checked the shell yet? */
+ if(vms_shell >= 0)
+ return vms_shell;
+
+ shell = getenv("SHELL");
+
+ /* No shell, means DCL */
+ if(shell == NULL) {
+ vms_shell = 1;
+ return 1;
+ }
+
+ /* Have to make sure some one did not set shell to DCL */
+ if(strcmp(shell, "DCL") == 0) {
+ vms_shell = 1;
+ return 1;
+ }
+
+ vms_shell = 0;
+ return 0;
+}
+
+/*
+ * VMS has two exit() routines. When running under a Unix style shell, then
+ * Unix style and the __posix_exit() routine is used.
+ *
+ * When running under the DCL shell, then the VMS encoded codes and decc$exit()
+ * is used.
+ *
+ * We can not use exit() or return a code from main() because the actual
+ * routine called depends on both the compiler version, compile options, and
+ * feature macro settings, and one of the exit routines is hidden at compile
+ * time.
+ *
+ * Since we want Curl to work properly under the VMS DCL shell and Unix
+ * shells under VMS, this routine should compile correctly regardless of
+ * the settings.
+ */
+
+void vms_special_exit(int code, int vms_show)
+{
+ int vms_code;
+
+ /* The Posix exit mode is only available after VMS 7.0 */
+#if __CRTL_VER >= 70000000
+ if(is_vms_shell() == 0) {
+ decc$__posix_exit(code);
+ }
+#endif
+
+ if(code > CURL_LAST) { /* If CURL_LAST exceeded then */
+ vms_code = CURL_LAST; /* curlmsg.h is out of sync. */
+ }
+ else {
+ vms_code = vms_cond[code] | vms_show;
+ }
+ decc$exit(vms_code);
+}
+
+#if defined(__DECC) && !defined(__VAX) && \
+ defined(__CRTL_VER) && (__CRTL_VER >= 70301000)
+
+/*
+ * 2004-09-19 SMS.
+ *
+ * decc_init()
+ *
+ * On non-VAX systems, use LIB$INITIALIZE to set a collection of C
+ * RTL features without using the DECC$* logical name method, nor
+ * requiring the user to define the corresponding logical names.
+ */
+
+/* Structure to hold a DECC$* feature name and its desired value. */
+typedef struct {
+ char *name;
+ int value;
+} decc_feat_t;
+
+/* Array of DECC$* feature names and their desired values. */
+static decc_feat_t decc_feat_array[] = {
+ /* Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED */
+ { "DECC$ARGV_PARSE_STYLE", 1 },
+ /* Preserve case for file names on ODS5 disks. */
+ { "DECC$EFS_CASE_PRESERVE", 1 },
+ /* Enable multiple dots (and most characters) in ODS5 file names,
+ while preserving VMS-ness of ";version". */
+ { "DECC$EFS_CHARSET", 1 },
+ /* List terminator. */
+ { (char *)NULL, 0 }
+};
+
+/* Flag to sense if decc_init() was called. */
+static int decc_init_done = -1;
+
+/* LIB$INITIALIZE initialization function. */
+static void decc_init(void)
+{
+ int feat_index;
+ int feat_value;
+ int feat_value_max;
+ int feat_value_min;
+ int i;
+ int sts;
+
+ /* Set the global flag to indicate that LIB$INITIALIZE worked. */
+ decc_init_done = 1;
+
+ /* Loop through all items in the decc_feat_array[]. */
+ for(i = 0; decc_feat_array[i].name != NULL; i++) {
+
+ /* Get the feature index. */
+ feat_index = decc$feature_get_index( decc_feat_array[i].name);
+
+ if(feat_index >= 0) {
+ /* Valid item. Collect its properties. */
+ feat_value = decc$feature_get_value( feat_index, 1);
+ feat_value_min = decc$feature_get_value( feat_index, 2);
+ feat_value_max = decc$feature_get_value( feat_index, 3);
+
+ if((decc_feat_array[i].value >= feat_value_min) &&
+ (decc_feat_array[i].value <= feat_value_max)) {
+ /* Valid value. Set it if necessary. */
+ if(feat_value != decc_feat_array[i].value) {
+ sts = decc$feature_set_value( feat_index, 1,
+ decc_feat_array[i].value);
+ }
+ }
+ else {
+ /* Invalid DECC feature value. */
+ printf(" INVALID DECC FEATURE VALUE, %d: %d <= %s <= %d.\n",
+ feat_value,
+ feat_value_min, decc_feat_array[i].name, feat_value_max);
+ }
+ }
+ else {
+ /* Invalid DECC feature name. */
+ printf(" UNKNOWN DECC FEATURE: %s.\n", decc_feat_array[i].name);
+ }
+
+ }
+}
+
+/* Get "decc_init()" into a valid, loaded LIB$INITIALIZE PSECT. */
+
+#pragma nostandard
+
+/* Establish the LIB$INITIALIZE PSECTs, with proper alignment and
+ other attributes. Note that "nopic" is significant only on VAX. */
+#pragma extern_model save
+#pragma extern_model strict_refdef "LIB$INITIALIZ" 2, nopic, nowrt
+const int spare[8] = {0};
+#pragma extern_model strict_refdef "LIB$INITIALIZE" 2, nopic, nowrt
+void (*const x_decc_init)() = decc_init;
+#pragma extern_model restore
+
+/* Fake reference to ensure loading the LIB$INITIALIZE PSECT. */
+#pragma extern_model save
+int LIB$INITIALIZE(void);
+#pragma extern_model strict_refdef
+int dmy_lib$initialize = (int) LIB$INITIALIZE;
+#pragma extern_model restore
+
+#pragma standard
+
+#endif /* __DECC && !__VAX && __CRTL_VER && __CRTL_VER >= 70301000 */
+
+#endif /* __VMS */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_vms.h b/external/libcurl_android/jni/libcurl/src/tool_vms.h
new file mode 100755
index 00000000..1afd75ec
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_vms.h
@@ -0,0 +1,47 @@
+#ifndef HEADER_CURL_TOOL_VMS_H
+#define HEADER_CURL_TOOL_VMS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef __VMS
+
+/*
+ * Forward-declaration of global variable vms_show defined
+ * in tool_main.c, used in main() as parameter for function
+ * vms_special_exit() to allow proper curl tool exiting.
+ */
+extern int vms_show;
+
+int is_vms_shell(void);
+void vms_special_exit(int code, int vms_show);
+
+#undef exit
+#define exit(__code) vms_special_exit((__code), (0))
+
+#define VMS_STS(c,f,e,s) (((c&0xF)<<28)|((f&0xFFF)<<16)|((e&0x1FFF)<3)|(s&7))
+#define VMSSTS_HIDE VMS_STS(1,0,0,0)
+
+#endif /* __VMS */
+
+#endif /* HEADER_CURL_TOOL_VMS_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_writeenv.c b/external/libcurl_android/jni/libcurl/src/tool_writeenv.c
new file mode 100755
index 00000000..a9462d00
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_writeenv.c
@@ -0,0 +1,116 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef USE_ENVIRONMENT
+
+#ifdef __riscos__
+# 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
+{
+ const char * name;
+ CURLINFO id;
+ enum {
+ writeenv_NONE,
+ writeenv_DOUBLE,
+ writeenv_LONG,
+ writeenv_STRING
+ } type;
+} variables[14] =
+{
+ {"curl_url_effective", CURLINFO_EFFECTIVE_URL, writeenv_STRING},
+ {"curl_http_code", CURLINFO_RESPONSE_CODE, writeenv_LONG},
+ {"curl_time_total", CURLINFO_TOTAL_TIME, writeenv_DOUBLE},
+ {"curl_time_namelookup", CURLINFO_NAMELOOKUP_TIME, writeenv_DOUBLE},
+ {"curl_time_connect", CURLINFO_CONNECT_TIME, writeenv_DOUBLE},
+ {"curl_time_pretransfer", CURLINFO_PRETRANSFER_TIME, writeenv_DOUBLE},
+ {"curl_time_starttransfer", CURLINFO_STARTTRANSFER_TIME, writeenv_DOUBLE},
+ {"curl_size_header", CURLINFO_HEADER_SIZE, writeenv_LONG},
+ {"curl_size_request", CURLINFO_REQUEST_SIZE, writeenv_LONG},
+ {"curl_size_download", CURLINFO_SIZE_DOWNLOAD, writeenv_DOUBLE},
+ {"curl_size_upload", CURLINFO_SIZE_UPLOAD, writeenv_DOUBLE},
+ {"curl_speed_download", CURLINFO_SPEED_DOWNLOAD, writeenv_DOUBLE},
+ {"curl_speed_upload", CURLINFO_SPEED_UPLOAD, writeenv_DOUBLE},
+ {NULL, 0, writeenv_NONE}
+ };
+
+static void internalSetEnv(const char * name, char * value)
+{
+ /* Add your OS-specific code here. */
+#ifdef __riscos__
+ _kernel_setenv(name, value);
+#elif defined (CURLDEBUG)
+ curl_memlog("ENV %s = %s\n", name, value);
+#endif
+ return;
+}
+
+void ourWriteEnv(CURL *curl)
+{
+ unsigned int i;
+ char *string, numtext[10];
+ long longinfo;
+ double doubleinfo;
+
+ for(i=0; variables[i].name; i++) {
+ switch (variables[i].type) {
+ case writeenv_STRING:
+ if(curl_easy_getinfo(curl, variables[i].id, &string) == CURLE_OK)
+ internalSetEnv(variables[i].name, string);
+ else
+ internalSetEnv(variables[i].name, NULL);
+ break;
+
+ case writeenv_LONG:
+ if(curl_easy_getinfo(curl, variables[i].id, &longinfo) == CURLE_OK) {
+ curl_msprintf(numtext, "%5ld", longinfo);
+ internalSetEnv(variables[i].name, numtext);
+ }
+ else
+ internalSetEnv(variables[i].name, NULL);
+ break;
+ case writeenv_DOUBLE:
+ if(curl_easy_getinfo(curl, variables[i].id, &doubleinfo) == CURLE_OK) {
+ curl_msprintf(numtext, "%6.2f", doubleinfo);
+ internalSetEnv(variables[i].name, numtext);
+ }
+ else
+ internalSetEnv(variables[i].name, NULL);
+ break;
+ default:
+ break;
+ }
+ }
+
+ return;
+}
+
+#endif
diff --git a/external/libcurl_android/jni/libcurl/src/tool_writeenv.h b/external/libcurl_android/jni/libcurl/src/tool_writeenv.h
new file mode 100755
index 00000000..c0a952fe
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_writeenv.h
@@ -0,0 +1,35 @@
+#ifndef HEADER_CURL_TOOL_WRITEENV_H
+#define HEADER_CURL_TOOL_WRITEENV_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#ifdef USE_ENVIRONMENT
+
+void ourWriteEnv(CURL *curl);
+
+#else
+# define ourWriteEnv(x) Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_TOOL_WRITEENV_H */
+
diff --git a/external/libcurl_android/jni/libcurl/src/tool_writeout.c b/external/libcurl_android/jni/libcurl/src/tool_writeout.c
new file mode 100755
index 00000000..f29d1ac3
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_writeout.c
@@ -0,0 +1,327 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+#define _MPRINTF_REPLACE /* we want curl-functions instead of native ones */
+#include <curl/mprintf.h>
+
+#include "tool_cfgable.h"
+#include "tool_writeout.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+typedef enum {
+ VAR_NONE, /* must be the first */
+ VAR_TOTAL_TIME,
+ VAR_NAMELOOKUP_TIME,
+ VAR_CONNECT_TIME,
+ VAR_APPCONNECT_TIME,
+ VAR_PRETRANSFER_TIME,
+ VAR_STARTTRANSFER_TIME,
+ VAR_SIZE_DOWNLOAD,
+ VAR_SIZE_UPLOAD,
+ VAR_SPEED_DOWNLOAD,
+ VAR_SPEED_UPLOAD,
+ VAR_HTTP_CODE,
+ VAR_HTTP_CODE_PROXY,
+ VAR_HEADER_SIZE,
+ VAR_REQUEST_SIZE,
+ VAR_EFFECTIVE_URL,
+ VAR_CONTENT_TYPE,
+ VAR_NUM_CONNECTS,
+ VAR_REDIRECT_TIME,
+ VAR_REDIRECT_COUNT,
+ VAR_FTP_ENTRY_PATH,
+ VAR_REDIRECT_URL,
+ VAR_SSL_VERIFY_RESULT,
+ VAR_EFFECTIVE_FILENAME,
+ VAR_PRIMARY_IP,
+ VAR_PRIMARY_PORT,
+ VAR_LOCAL_IP,
+ VAR_LOCAL_PORT,
+ VAR_NUM_OF_VARS /* must be the last */
+} replaceid;
+
+struct variable {
+ const char *name;
+ replaceid id;
+};
+
+
+static const struct variable replacements[]={
+ {"url_effective", VAR_EFFECTIVE_URL},
+ {"http_code", VAR_HTTP_CODE},
+ {"response_code", VAR_HTTP_CODE},
+ {"http_connect", VAR_HTTP_CODE_PROXY},
+ {"time_total", VAR_TOTAL_TIME},
+ {"time_namelookup", VAR_NAMELOOKUP_TIME},
+ {"time_connect", VAR_CONNECT_TIME},
+ {"time_appconnect", VAR_APPCONNECT_TIME},
+ {"time_pretransfer", VAR_PRETRANSFER_TIME},
+ {"time_starttransfer", VAR_STARTTRANSFER_TIME},
+ {"size_header", VAR_HEADER_SIZE},
+ {"size_request", VAR_REQUEST_SIZE},
+ {"size_download", VAR_SIZE_DOWNLOAD},
+ {"size_upload", VAR_SIZE_UPLOAD},
+ {"speed_download", VAR_SPEED_DOWNLOAD},
+ {"speed_upload", VAR_SPEED_UPLOAD},
+ {"content_type", VAR_CONTENT_TYPE},
+ {"num_connects", VAR_NUM_CONNECTS},
+ {"time_redirect", VAR_REDIRECT_TIME},
+ {"num_redirects", VAR_REDIRECT_COUNT},
+ {"ftp_entry_path", VAR_FTP_ENTRY_PATH},
+ {"redirect_url", VAR_REDIRECT_URL},
+ {"ssl_verify_result", VAR_SSL_VERIFY_RESULT},
+ {"filename_effective", VAR_EFFECTIVE_FILENAME},
+ {"remote_ip", VAR_PRIMARY_IP},
+ {"remote_port", VAR_PRIMARY_PORT},
+ {"local_ip", VAR_LOCAL_IP},
+ {"local_port", VAR_LOCAL_PORT},
+ {NULL, VAR_NONE}
+};
+
+void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
+{
+ FILE *stream = stdout;
+ const char *ptr = writeinfo;
+ char *stringp = NULL;
+ long longinfo;
+ double doubleinfo;
+
+ while(ptr && *ptr) {
+ if('%' == *ptr) {
+ if('%' == ptr[1]) {
+ /* an escaped %-letter */
+ fputc('%', stream);
+ ptr += 2;
+ }
+ else {
+ /* this is meant as a variable to output */
+ char *end;
+ char keepit;
+ int i;
+ if(('{' == ptr[1]) && ((end = strchr(ptr, '}')) != NULL)) {
+ bool match = FALSE;
+ ptr += 2; /* pass the % and the { */
+ keepit = *end;
+ *end = 0; /* zero terminate */
+ for(i = 0; replacements[i].name; i++) {
+ if(curl_strequal(ptr, replacements[i].name)) {
+ match = TRUE;
+ switch(replacements[i].id) {
+ case VAR_EFFECTIVE_URL:
+ if((CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &stringp))
+ && stringp)
+ fputs(stringp, stream);
+ break;
+ case VAR_HTTP_CODE:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &longinfo))
+ fprintf(stream, "%03ld", longinfo);
+ break;
+ case VAR_HTTP_CODE_PROXY:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_HTTP_CONNECTCODE,
+ &longinfo))
+ fprintf(stream, "%03ld", longinfo);
+ break;
+ case VAR_HEADER_SIZE:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ case VAR_REQUEST_SIZE:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ case VAR_NUM_CONNECTS:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_NUM_CONNECTS, &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ case VAR_REDIRECT_COUNT:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ case VAR_REDIRECT_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME,
+ &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_TOTAL_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_NAMELOOKUP_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME,
+ &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_CONNECT_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_APPCONNECT_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME,
+ &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_PRETRANSFER_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME,
+ &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_STARTTRANSFER_TIME:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME,
+ &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_SIZE_UPLOAD:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &doubleinfo))
+ fprintf(stream, "%.0f", doubleinfo);
+ break;
+ case VAR_SIZE_DOWNLOAD:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD,
+ &doubleinfo))
+ fprintf(stream, "%.0f", doubleinfo);
+ break;
+ case VAR_SPEED_DOWNLOAD:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD,
+ &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_SPEED_UPLOAD:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &doubleinfo))
+ fprintf(stream, "%.3f", doubleinfo);
+ break;
+ case VAR_CONTENT_TYPE:
+ if((CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &stringp))
+ && stringp)
+ fputs(stringp, stream);
+ break;
+ case VAR_FTP_ENTRY_PATH:
+ if((CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_FTP_ENTRY_PATH, &stringp))
+ && stringp)
+ fputs(stringp, stream);
+ break;
+ case VAR_REDIRECT_URL:
+ if((CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &stringp))
+ && stringp)
+ fputs(stringp, stream);
+ break;
+ case VAR_SSL_VERIFY_RESULT:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT,
+ &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ case VAR_EFFECTIVE_FILENAME:
+ if(outs->filename)
+ fprintf(stream, "%s", outs->filename);
+ break;
+ case VAR_PRIMARY_IP:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP,
+ &stringp))
+ fprintf(stream, "%s", stringp);
+ break;
+ case VAR_PRIMARY_PORT:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT,
+ &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ case VAR_LOCAL_IP:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_LOCAL_IP,
+ &stringp))
+ fprintf(stream, "%s", stringp);
+ break;
+ case VAR_LOCAL_PORT:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_LOCAL_PORT,
+ &longinfo))
+ fprintf(stream, "%ld", longinfo);
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+ }
+ if(!match) {
+ fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);
+ }
+ ptr = end + 1; /* pass the end */
+ *end = keepit;
+ }
+ else {
+ /* illegal syntax, then just output the characters that are used */
+ fputc('%', stream);
+ fputc(ptr[1], stream);
+ ptr += 2;
+ }
+ }
+ }
+ else if('\\' == *ptr) {
+ switch(ptr[1]) {
+ case 'r':
+ fputc('\r', stream);
+ break;
+ case 'n':
+ fputc('\n', stream);
+ break;
+ case 't':
+ fputc('\t', stream);
+ break;
+ default:
+ /* unknown, just output this */
+ fputc(*ptr, stream);
+ fputc(ptr[1], stream);
+ break;
+ }
+ ptr += 2;
+ }
+ else {
+ fputc(*ptr, stream);
+ ptr++;
+ }
+ }
+
+}
diff --git a/external/libcurl_android/jni/libcurl/src/tool_writeout.h b/external/libcurl_android/jni/libcurl/src/tool_writeout.h
new file mode 100755
index 00000000..4dd3a75a
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_writeout.h
@@ -0,0 +1,28 @@
+#ifndef HEADER_CURL_TOOL_WRITEOUT_H
+#define HEADER_CURL_TOOL_WRITEOUT_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo);
+
+#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
diff --git a/external/libcurl_android/jni/libcurl/src/tool_xattr.c b/external/libcurl_android/jni/libcurl/src/tool_xattr.c
new file mode 100755
index 00000000..b2666d97
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_xattr.c
@@ -0,0 +1,87 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, 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 "tool_setup.h"
+
+#ifdef HAVE_FSETXATTR
+# include <sys/xattr.h> /* header from libc, not from libattr */
+# define USE_XATTR
+#elif defined(__FreeBSD_version) && (__FreeBSD_version > 500000)
+# include <sys/types.h>
+# include <sys/extattr.h>
+# define USE_XATTR
+#endif
+
+#include "tool_xattr.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef USE_XATTR
+
+/* mapping table of curl metadata to extended attribute names */
+static const struct xattr_mapping {
+ const char *attr; /* name of the xattr */
+ CURLINFO info;
+} mappings[] = {
+ /* mappings proposed by
+ * http://freedesktop.org/wiki/CommonExtendedAttributes
+ */
+ { "user.xdg.origin.url", CURLINFO_EFFECTIVE_URL },
+ { "user.mime_type", CURLINFO_CONTENT_TYPE },
+ { NULL, CURLINFO_NONE } /* last element, abort loop here */
+};
+
+/* store metadata from the curl request alongside the downloaded
+ * file using extended attributes
+ */
+int fwrite_xattr(CURL *curl, int fd)
+{
+ int i = 0;
+ int err = 0;
+ /* loop through all xattr-curlinfo pairs and abort on a set error */
+ while(err == 0 && mappings[i].attr != NULL) {
+ char *value = NULL;
+ CURLcode rc = curl_easy_getinfo(curl, mappings[i].info, &value);
+ if(rc == CURLE_OK && value) {
+#ifdef HAVE_FSETXATTR_6
+ err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0, 0);
+#elif defined(HAVE_FSETXATTR_5)
+ err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
+#elif defined(__FreeBSD_version)
+ err = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER, mappings[i].attr, value,
+ strlen(value));
+ /* FreeBSD's extattr_set_fd returns the length of the extended attribute
+ */
+ err = err < 0 ? err : 0;
+#endif
+ }
+ i++;
+ }
+ return err;
+}
+#else
+int fwrite_xattr(CURL *curl, int fd)
+{
+ (void)curl;
+ (void)fd;
+ return 0;
+}
+#endif
diff --git a/external/libcurl_android/jni/libcurl/src/tool_xattr.h b/external/libcurl_android/jni/libcurl/src/tool_xattr.h
new file mode 100755
index 00000000..3f8f585e
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/tool_xattr.h
@@ -0,0 +1,28 @@
+#ifndef HEADER_CURL_TOOL_XATTR_H
+#define HEADER_CURL_TOOL_XATTR_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 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 "tool_setup.h"
+
+int fwrite_xattr(CURL *curl, int fd);
+
+#endif /* HEADER_CURL_TOOL_XATTR_H */
diff --git a/external/libcurl_android/jni/libcurl/src/version.h b/external/libcurl_android/jni/libcurl/src/version.h
new file mode 100755
index 00000000..9260aa5d
--- /dev/null
+++ b/external/libcurl_android/jni/libcurl/src/version.h
@@ -0,0 +1,35 @@
+#ifndef HEADER_CURL_VERSION_H
+#define HEADER_CURL_VERSION_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, 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/curlver.h>
+
+#define CURL_NAME "curl"
+#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
+#define CURL_VERSION "7.22.0"
+#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
+#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
+#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
+#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "
+
+#endif /* HEADER_CURL_VERSION_H */